From 45155d3010a3bbbe3cfbba670538ae18b9772a39 Mon Sep 17 00:00:00 2001 From: "Wladimir J. van der Laan" Date: Fri, 12 Apr 2013 12:24:41 +0200 Subject: [PATCH] qt: move export button to tabs Having the export button at the top was confusing people into thinking the entire wallet was exported. This commit moves the export button to the address book, receiving addresses and transaction tabs separately. --- src/qt/addressbookpage.cpp | 4 +++- src/qt/addressbookpage.h | 3 ++- src/qt/bitcoingui.cpp | 8 -------- src/qt/bitcoingui.h | 2 -- src/qt/forms/addressbookpage.ui | 14 ++++++++++++++ src/qt/walletview.cpp | 30 ++++++++++++------------------ 6 files changed, 31 insertions(+), 30 deletions(-) diff --git a/src/qt/addressbookpage.cpp b/src/qt/addressbookpage.cpp index 23c69fef..8529c88b 100644 --- a/src/qt/addressbookpage.cpp +++ b/src/qt/addressbookpage.cpp @@ -33,6 +33,7 @@ AddressBookPage::AddressBookPage(Mode mode, Tabs tab, QWidget *parent) : ui->deleteAddress->setIcon(QIcon()); ui->verifyMessage->setIcon(QIcon()); ui->signMessage->setIcon(QIcon()); + ui->exportButton->setIcon(QIcon()); #endif #ifndef USE_QRCODE @@ -45,6 +46,7 @@ AddressBookPage::AddressBookPage(Mode mode, Tabs tab, QWidget *parent) : connect(ui->tableView, SIGNAL(doubleClicked(QModelIndex)), this, SLOT(accept())); ui->tableView->setEditTriggers(QAbstractItemView::NoEditTriggers); ui->tableView->setFocus(); + ui->exportButton->hide(); break; case ForEditing: ui->buttonBox->setVisible(false); @@ -323,7 +325,7 @@ void AddressBookPage::done(int retval) QDialog::done(retval); } -void AddressBookPage::exportClicked() +void AddressBookPage::on_exportButton_clicked() { // CSV is currently the only supported format QString filename = GUIUtil::getSaveFileName( diff --git a/src/qt/addressbookpage.h b/src/qt/addressbookpage.h index 06317816..34465aa6 100644 --- a/src/qt/addressbookpage.h +++ b/src/qt/addressbookpage.h @@ -43,7 +43,6 @@ public: public slots: void done(int retval); - void exportClicked(); private: Ui::AddressBookPage *ui; @@ -76,6 +75,8 @@ private slots: void onCopyLabelAction(); /** Edit currently selected address entry (no button) */ void onEditAction(); + /** Export button clicked */ + void on_exportButton_clicked(); /** Set button states based on selected tab and selection */ void selectionChanged(); diff --git a/src/qt/bitcoingui.cpp b/src/qt/bitcoingui.cpp index 27272e69..ada55c45 100644 --- a/src/qt/bitcoingui.cpp +++ b/src/qt/bitcoingui.cpp @@ -236,9 +236,6 @@ void BitcoinGUI::createActions() verifyMessageAction = new QAction(QIcon(":/icons/transaction_0"), tr("&Verify message..."), this); verifyMessageAction->setStatusTip(tr("Verify messages to ensure they were signed with specified Bitcoin addresses")); - exportAction = new QAction(QIcon(":/icons/export"), tr("&Export..."), this); - exportAction->setStatusTip(tr("Export the data in the current tab to a file")); - exportAction->setToolTip(exportAction->statusTip()); openRPCConsoleAction = new QAction(QIcon(":/icons/debugwindow"), tr("&Debug window"), this); openRPCConsoleAction->setStatusTip(tr("Open debugging and diagnostic console")); @@ -267,7 +264,6 @@ void BitcoinGUI::createMenuBar() // Configure the menus QMenu *file = appMenuBar->addMenu(tr("&File")); file->addAction(backupWalletAction); - file->addAction(exportAction); file->addAction(signMessageAction); file->addAction(verifyMessageAction); file->addSeparator(); @@ -295,10 +291,6 @@ void BitcoinGUI::createToolBars() toolbar->addAction(receiveCoinsAction); toolbar->addAction(historyAction); toolbar->addAction(addressBookAction); - - QToolBar *toolbar2 = addToolBar(tr("Actions toolbar")); - toolbar2->setToolButtonStyle(Qt::ToolButtonTextBesideIcon); - toolbar2->addAction(exportAction); } void BitcoinGUI::setClientModel(ClientModel *clientModel) diff --git a/src/qt/bitcoingui.h b/src/qt/bitcoingui.h index 5f7ef746..f361a62a 100644 --- a/src/qt/bitcoingui.h +++ b/src/qt/bitcoingui.h @@ -67,7 +67,6 @@ public: QAction * getAddressBookAction() { return addressBookAction; } QAction * getReceiveCoinsAction() { return receiveCoinsAction; } QAction * getSendCoinsAction() { return sendCoinsAction; } - QAction * getExportAction() { return exportAction; } protected: void changeEvent(QEvent *e); @@ -98,7 +97,6 @@ private: QAction *receiveCoinsAction; QAction *optionsAction; QAction *toggleHideAction; - QAction *exportAction; QAction *encryptWalletAction; QAction *backupWalletAction; QAction *changePassphraseAction; diff --git a/src/qt/forms/addressbookpage.ui b/src/qt/forms/addressbookpage.ui index 3cf30738..a2a7da34 100644 --- a/src/qt/forms/addressbookpage.ui +++ b/src/qt/forms/addressbookpage.ui @@ -148,6 +148,20 @@ + + + + Export the data in the current tab to a file + + + &Export + + + + :/icons/export:/icons/export + + + diff --git a/src/qt/walletview.cpp b/src/qt/walletview.cpp index 1d02b81f..727b48de 100644 --- a/src/qt/walletview.cpp +++ b/src/qt/walletview.cpp @@ -23,6 +23,7 @@ #include #include #include +#include WalletView::WalletView(QWidget *parent, BitcoinGUI *_gui): QStackedWidget(parent), @@ -35,8 +36,17 @@ WalletView::WalletView(QWidget *parent, BitcoinGUI *_gui): transactionsPage = new QWidget(this); QVBoxLayout *vbox = new QVBoxLayout(); + QHBoxLayout *hbox_buttons = new QHBoxLayout(); transactionView = new TransactionView(this); vbox->addWidget(transactionView); + QPushButton *exportButton = new QPushButton("&Export", this); + exportButton->setToolTip(tr("Export the data in the current tab to a file")); +#ifndef Q_OS_MAC // Icons on push buttons are very uncommon on Mac + exportButton->setIcon(QIcon(":/icons/export")); +#endif + hbox_buttons->addStretch(); + hbox_buttons->addWidget(exportButton); + vbox->addLayout(hbox_buttons); transactionsPage->setLayout(vbox); addressBookPage = new AddressBookPage(AddressBookPage::ForEditing, AddressBookPage::SendingTab); @@ -66,6 +76,8 @@ WalletView::WalletView(QWidget *parent, BitcoinGUI *_gui): connect(addressBookPage, SIGNAL(verifyMessage(QString)), this, SLOT(gotoVerifyMessageTab(QString))); // Clicking on "Sign Message" in the receive coins page opens the sign message tab in the Sign/Verify Message dialog connect(receiveCoinsPage, SIGNAL(signMessage(QString)), this, SLOT(gotoSignMessageTab(QString))); + // Clicking on "Export" allows to export the transaction list + connect(exportButton, SIGNAL(clicked()), transactionView, SLOT(exportClicked())); gotoOverviewPage(); } @@ -142,39 +154,24 @@ void WalletView::gotoOverviewPage() { gui->getOverviewAction()->setChecked(true); setCurrentWidget(overviewPage); - - gui->getExportAction()->setEnabled(false); - disconnect(gui->getExportAction(), SIGNAL(triggered()), 0, 0); } void WalletView::gotoHistoryPage() { gui->getHistoryAction()->setChecked(true); setCurrentWidget(transactionsPage); - - gui->getExportAction()->setEnabled(true); - disconnect(gui->getExportAction(), SIGNAL(triggered()), 0, 0); - connect(gui->getExportAction(), SIGNAL(triggered()), transactionView, SLOT(exportClicked())); } void WalletView::gotoAddressBookPage() { gui->getAddressBookAction()->setChecked(true); setCurrentWidget(addressBookPage); - - gui->getExportAction()->setEnabled(true); - disconnect(gui->getExportAction(), SIGNAL(triggered()), 0, 0); - connect(gui->getExportAction(), SIGNAL(triggered()), addressBookPage, SLOT(exportClicked())); } void WalletView::gotoReceiveCoinsPage() { gui->getReceiveCoinsAction()->setChecked(true); setCurrentWidget(receiveCoinsPage); - - gui->getExportAction()->setEnabled(true); - disconnect(gui->getExportAction(), SIGNAL(triggered()), 0, 0); - connect(gui->getExportAction(), SIGNAL(triggered()), receiveCoinsPage, SLOT(exportClicked())); } void WalletView::gotoSendCoinsPage(QString addr) @@ -182,9 +179,6 @@ void WalletView::gotoSendCoinsPage(QString addr) gui->getSendCoinsAction()->setChecked(true); setCurrentWidget(sendCoinsPage); - gui->getExportAction()->setEnabled(false); - disconnect(gui->getExportAction(), SIGNAL(triggered()), 0, 0); - if (!addr.isEmpty()) sendCoinsPage->setAddress(addr); }