X-Git-Url: https://git.novaco.in/?a=blobdiff_plain;f=src%2Fqt%2Ftransactiontablemodel.h;h=9608948a24061348368ee1d31fe2614a3cb993fb;hb=f8ea0dd6459856f2df18ca2ad532d49432a087dd;hp=804f004e38bb1238b000190a5220be1db85ffcc8;hpb=249300aebe682dc1a7398794b14f0d6ebde0aee7;p=novacoin.git diff --git a/src/qt/transactiontablemodel.h b/src/qt/transactiontablemodel.h index 804f004..9608948 100644 --- a/src/qt/transactiontablemodel.h +++ b/src/qt/transactiontablemodel.h @@ -4,53 +4,84 @@ #include #include +class CWallet; class TransactionTablePriv; class TransactionRecord; +class WalletModel; +/** UI model for the transaction table of a wallet. + */ class TransactionTableModel : public QAbstractTableModel { Q_OBJECT public: - explicit TransactionTableModel(QObject *parent = 0); + explicit TransactionTableModel(CWallet* wallet, WalletModel *parent = 0); ~TransactionTableModel(); - enum { + enum ColumnIndex { Status = 0, Date = 1, - Description = 2, - Debit = 3, - Credit = 4 - } ColumnIndex; + Type = 2, + ToAddress = 3, + Amount = 4 + }; - enum { + /** Roles to get specific information from a transaction row. + These are independent of column. + */ + enum RoleIndex { + /** Type of transaction */ TypeRole = Qt::UserRole, - LongDescriptionRole = Qt::UserRole+1 - } RoleIndex; - - /* TypeRole values */ - static const QString Sent; - static const QString Received; - static const QString Other; + /** Date and time this transaction was created */ + DateRole, + /** Long description (HTML format) */ + LongDescriptionRole, + /** Address of transaction */ + AddressRole, + /** Label of address related to transaction */ + LabelRole, + /** Net amount of transaction */ + AmountRole, + /** Unique identifier */ + TxIDRole, + /** Transaction hash */ + TxHashRole, + /** Is transaction confirmed? */ + ConfirmedRole, + /** Formatted amount, without brackets when unconfirmed */ + FormattedAmountRole + }; int rowCount(const QModelIndex &parent) const; int columnCount(const QModelIndex &parent) const; QVariant data(const QModelIndex &index, int role) const; QVariant headerData(int section, Qt::Orientation orientation, int role) const; - Qt::ItemFlags flags(const QModelIndex &index) const; QModelIndex index(int row, int column, const QModelIndex & parent = QModelIndex()) const; + void refresh(); private: + CWallet* wallet; + WalletModel *walletModel; QStringList columns; TransactionTablePriv *priv; + int cachedNumBlocks; - QVariant formatTxStatus(const TransactionRecord *wtx) const; - QVariant formatTxDate(const TransactionRecord *wtx) const; - QVariant formatTxDescription(const TransactionRecord *wtx) const; - QVariant formatTxDebit(const TransactionRecord *wtx) const; - QVariant formatTxCredit(const TransactionRecord *wtx) const; - QVariant formatTxDecoration(const TransactionRecord *wtx) const; + QString lookupAddress(const std::string &address, bool tooltip) const; + QVariant addressColor(const TransactionRecord *wtx) const; + QString formatTxStatus(const TransactionRecord *wtx) const; + QString formatTxDate(const TransactionRecord *wtx) const; + QString formatTxType(const TransactionRecord *wtx) const; + QString formatTxToAddress(const TransactionRecord *wtx, bool tooltip) const; + QString formatTxAmount(const TransactionRecord *wtx, bool showUnconfirmed=true) const; + QString formatTooltip(const TransactionRecord *rec) const; + QVariant txStatusDecoration(const TransactionRecord *wtx) const; + QVariant txAddressDecoration(const TransactionRecord *wtx) const; -private slots: - void update(); +public slots: + void updateTransaction(const QString &hash, int status); + void updateConfirmations(); + void updateDisplayUnit(); + /** Updates the column title to "Amount (DisplayUnit)" and emits headerDataChanged() signal for table headers to react. */ + void updateAmountColumnTitle(); friend class TransactionTablePriv; };