/* * This file is part of the Flowee project * Copyright (C) 2020-2021 Tom Zander * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef WALLETHSTORYMODEL_H #define WALLETHSTORYMODEL_H #include class Wallet; class WalletHistoryModel : public QAbstractListModel { Q_OBJECT Q_PROPERTY(int lastSyncIndicator READ lastSyncIndicator WRITE setLastSyncIndicator RESET resetLastSyncIndicator NOTIFY lastSyncIndicatorChanged) public: explicit WalletHistoryModel(Wallet *wallet, QObject *parent = nullptr); enum { TxId = Qt::UserRole, NewTransaction, ///< bool, if this transaction is newer than lastSyncIndicator MinedHeight, ///< int, height of block this tx was mined at. MinedDate, ///< A date-time object when the item was mined FundsIn, ///< value (in sats) of the funds we own being spent FundsOut, ///< value (in sats) of the outputs created we own WalletIndex, ///< wallet-internal index for this transaction. // Comment, // TODO (also: make editable) // SavedFiatRate, // TODO }; int rowCount(const QModelIndex &parent = QModelIndex()) const override; QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override; QHash roleNames() const override; /** * Return a formatted date for an item in our list. * @param offset a real number that is between 0.0 and 1.0, indicating the location of the item. * The value 0.0 is the most recent item. */ Q_INVOKABLE QString dateForItem(qreal offset) const; int lastSyncIndicator() const; void setLastSyncIndicator(int x); void resetLastSyncIndicator(); signals: void lastSyncIndicatorChanged(); private slots: void appendTransactions(int firstNew, int count); void transactionConfirmed(int txIndex); private: void createMap(); QVector m_rowsProxy; Wallet *m_wallet; int m_lastSyncIndicator = 0; }; #endif