mirror of
https://git.wownero.com/wowlet/wowlet.git
synced 2024-08-15 01:03:14 +00:00
106 lines
3.6 KiB
C++
106 lines
3.6 KiB
C++
|
// SPDX-License-Identifier: BSD-3-Clause
|
||
|
// Copyright (c) 2020, The Monero Project.
|
||
|
|
||
|
#include "XmrToModel.h"
|
||
|
#include "model/ModelUtils.h"
|
||
|
#include "utils/xmrto.h"
|
||
|
|
||
|
XmrToModel::XmrToModel(QList<XmrToOrder*> *orders, QObject *parent)
|
||
|
: QAbstractTableModel(parent),
|
||
|
orders(orders)
|
||
|
{
|
||
|
}
|
||
|
|
||
|
void XmrToModel::update() {
|
||
|
beginResetModel();
|
||
|
endResetModel();
|
||
|
}
|
||
|
|
||
|
int XmrToModel::rowCount(const QModelIndex &) const {
|
||
|
return this->orders->count();
|
||
|
}
|
||
|
|
||
|
int XmrToModel::columnCount(const QModelIndex &) const {
|
||
|
return COUNT;
|
||
|
}
|
||
|
|
||
|
QVariant XmrToModel::data(const QModelIndex &index, int role) const {
|
||
|
const int _row = index.row();
|
||
|
const int _col = index.column();
|
||
|
const auto order = this->orders->at(_row);
|
||
|
|
||
|
if (role == Qt::DisplayRole){
|
||
|
switch(index.column()){
|
||
|
case Status:
|
||
|
{
|
||
|
QString status = XmrTo::stateMap[(OrderState) order->state];
|
||
|
|
||
|
if (order->state == OrderState::Status_OrderUnpaid)
|
||
|
return QString("%1 (%2)").arg(status, QString::number(order->countdown));
|
||
|
|
||
|
return status;
|
||
|
}
|
||
|
case ID:
|
||
|
return !order->uuid.isEmpty() ? order->uuid.split("-")[1] : "-";
|
||
|
case Destination:
|
||
|
return ModelUtils::displayAddress(order->btc_dest_address, 1);
|
||
|
case Conversion:
|
||
|
if(order->state <= OrderState::Status_OrderToBeCreated)
|
||
|
return "";
|
||
|
|
||
|
return QString("%1 XMR ⟶ %2 BTC").arg(QString::number(order->incoming_amount_total), QString::number(order->btc_amount));
|
||
|
case Rate:
|
||
|
return order->incoming_price_btc ? QString::number(order->incoming_price_btc, 'f', 6) : "";
|
||
|
case ErrorMsg:
|
||
|
if(order->errorMsg.isEmpty()) return "";
|
||
|
return order->errorMsg;
|
||
|
default: return {};
|
||
|
}
|
||
|
}
|
||
|
|
||
|
else if(role == Qt::BackgroundRole) {
|
||
|
if (_col == 0) {
|
||
|
if (order->state == OrderState::Status_OrderPaid || order->state == OrderState::Status_OrderPaidUnconfirmed)
|
||
|
return QBrush(Qt::darkGreen);
|
||
|
else if (order->state == OrderState::Status_OrderCreating || order->state == OrderState::Status_OrderToBeCreated)
|
||
|
return QBrush(Qt::yellow);
|
||
|
else if (order->state == OrderState::Status_OrderUnpaid)
|
||
|
return QBrush(Qt::cyan);
|
||
|
else if (order->state == OrderState::Status_OrderBTCSent)
|
||
|
return QBrush(Qt::green);
|
||
|
else if (order->state == OrderState::Status_OrderFailed || order->state == OrderState::Status_OrderTimedOut)
|
||
|
return QBrush(QColor(191, 255, 0)); // lime
|
||
|
}
|
||
|
}
|
||
|
else if (role == Qt::FontRole) {
|
||
|
switch(index.column()) {
|
||
|
case ID:
|
||
|
case Destination:
|
||
|
return ModelUtils::getMonospaceFont();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return QVariant();
|
||
|
}
|
||
|
|
||
|
QVariant XmrToModel::headerData(int section, Qt::Orientation orientation, int role) const {
|
||
|
if (role == Qt::DisplayRole && orientation == Qt::Horizontal) {
|
||
|
switch (section) {
|
||
|
case Status:
|
||
|
return QString("Status");
|
||
|
case ID:
|
||
|
return QString("ID");
|
||
|
case Destination:
|
||
|
return QString("Address");
|
||
|
case Conversion:
|
||
|
return QString("Conversion");
|
||
|
case Rate:
|
||
|
return QString("Rate");
|
||
|
case ErrorMsg:
|
||
|
return QString("Message");
|
||
|
default:
|
||
|
return QVariant();
|
||
|
}
|
||
|
}
|
||
|
return QVariant();
|
||
|
}
|