eec7757445
Introduce a PlatformStyle to handle platform-specific customization of the UI. This replaces 'scicon', as well as #ifdefs to determine whether to place icons on buttons. The selected PlatformStyle defaults to the platform that the application was compiled on, but can be overridden from the command line with `-uiplatform=<x>`. Also fixes the warning from #6328.
117 lines
2.8 KiB
C++
117 lines
2.8 KiB
C++
// Copyright (c) 2011-2013 The Bitcoin Core developers
|
|
// Distributed under the MIT software license, see the accompanying
|
|
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
|
|
|
#ifndef BITCOIN_QT_TRANSACTIONVIEW_H
|
|
#define BITCOIN_QT_TRANSACTIONVIEW_H
|
|
|
|
#include "guiutil.h"
|
|
|
|
#include <QWidget>
|
|
#include <QKeyEvent>
|
|
|
|
class PlatformStyle;
|
|
class TransactionFilterProxy;
|
|
class WalletModel;
|
|
|
|
QT_BEGIN_NAMESPACE
|
|
class QComboBox;
|
|
class QDateTimeEdit;
|
|
class QFrame;
|
|
class QLineEdit;
|
|
class QMenu;
|
|
class QModelIndex;
|
|
class QSignalMapper;
|
|
class QTableView;
|
|
QT_END_NAMESPACE
|
|
|
|
/** Widget showing the transaction list for a wallet, including a filter row.
|
|
Using the filter row, the user can view or export a subset of the transactions.
|
|
*/
|
|
class TransactionView : public QWidget
|
|
{
|
|
Q_OBJECT
|
|
|
|
public:
|
|
explicit TransactionView(const PlatformStyle *platformStyle, QWidget *parent = 0);
|
|
|
|
void setModel(WalletModel *model);
|
|
|
|
// Date ranges for filter
|
|
enum DateEnum
|
|
{
|
|
All,
|
|
Today,
|
|
ThisWeek,
|
|
ThisMonth,
|
|
LastMonth,
|
|
ThisYear,
|
|
Range
|
|
};
|
|
|
|
enum ColumnWidths {
|
|
STATUS_COLUMN_WIDTH = 30,
|
|
WATCHONLY_COLUMN_WIDTH = 23,
|
|
DATE_COLUMN_WIDTH = 120,
|
|
TYPE_COLUMN_WIDTH = 113,
|
|
AMOUNT_MINIMUM_COLUMN_WIDTH = 120,
|
|
MINIMUM_COLUMN_WIDTH = 23
|
|
};
|
|
|
|
private:
|
|
WalletModel *model;
|
|
TransactionFilterProxy *transactionProxyModel;
|
|
QTableView *transactionView;
|
|
|
|
QComboBox *dateWidget;
|
|
QComboBox *typeWidget;
|
|
QComboBox *watchOnlyWidget;
|
|
QLineEdit *addressWidget;
|
|
QLineEdit *amountWidget;
|
|
|
|
QMenu *contextMenu;
|
|
QSignalMapper *mapperThirdPartyTxUrls;
|
|
|
|
QFrame *dateRangeWidget;
|
|
QDateTimeEdit *dateFrom;
|
|
QDateTimeEdit *dateTo;
|
|
|
|
QWidget *createDateRangeWidget();
|
|
|
|
GUIUtil::TableViewLastColumnResizingFixer *columnResizingFixer;
|
|
|
|
virtual void resizeEvent(QResizeEvent* event);
|
|
|
|
bool eventFilter(QObject *obj, QEvent *event);
|
|
|
|
private Q_SLOTS:
|
|
void contextualMenu(const QPoint &);
|
|
void dateRangeChanged();
|
|
void showDetails();
|
|
void copyAddress();
|
|
void editLabel();
|
|
void copyLabel();
|
|
void copyAmount();
|
|
void copyTxID();
|
|
void openThirdPartyTxUrl(QString url);
|
|
void updateWatchOnlyColumn(bool fHaveWatchOnly);
|
|
|
|
Q_SIGNALS:
|
|
void doubleClicked(const QModelIndex&);
|
|
|
|
/** Fired when a message should be reported to the user */
|
|
void message(const QString &title, const QString &message, unsigned int style);
|
|
|
|
public Q_SLOTS:
|
|
void chooseDate(int idx);
|
|
void chooseType(int idx);
|
|
void chooseWatchonly(int idx);
|
|
void changedPrefix(const QString &prefix);
|
|
void changedAmount(const QString &amount);
|
|
void exportClicked();
|
|
void focusTransaction(const QModelIndex&);
|
|
|
|
};
|
|
|
|
#endif // BITCOIN_QT_TRANSACTIONVIEW_H
|