изменения базового класса для CoinControl
authorfsb4000 <fsb4000@yandex.ru>
Fri, 23 Jan 2015 10:20:04 +0000 (16:20 +0600)
committerfsb4000 <fsb4000@yandex.ru>
Fri, 23 Jan 2015 10:20:04 +0000 (16:20 +0600)
src/qt/coincontroldialog.cpp
src/qt/coincontroldialog.h
src/qt/coincontroltreewidget.cpp
src/qt/forms/coincontroldialog.ui
src/qt/sendcoinsdialog.cpp
src/qt/sendcoinsdialog.h

index f5a8c6a..8c85814 100644 (file)
 #include <QString>
 #include <QTreeWidget>
 #include <QTreeWidgetItem>
+#include <QKeyEvent>
 
 using namespace std;
 QList<qint64> CoinControlDialog::payAmounts;
 CCoinControl* CoinControlDialog::coinControl = new CCoinControl();
 
 CoinControlDialog::CoinControlDialog(QWidget *parent) :
-    QDialog(parent, DIALOGWINDOWHINTS),
+    QWidget(parent, DIALOGWINDOWHINTS),
     ui(new Ui::CoinControlDialog),
     model(0)
 {
@@ -153,10 +154,9 @@ QString CoinControlDialog::strPad(QString s, int nPadLength, QString sPadding)
 }
 
 // ok button
-void CoinControlDialog::buttonBoxClicked(QAbstractButton* button)
+void CoinControlDialog::on_buttonBox_accepted()
 {
-    if (ui->buttonBox->buttonRole(button) == QDialogButtonBox::AcceptRole)
-        done(QDialog::Accepted); // closes the dialog
+    close(); // closes the dialog
 }
 
 // (un)select all
@@ -416,7 +416,7 @@ QString CoinControlDialog::getPriorityLabel(double dPriority)
     else ui->labelLocked->setVisible(false);
 }*/
 
-void CoinControlDialog::updateLabels(WalletModel *model, QDialog* dialog)
+void CoinControlDialog::updateLabels(WalletModel *model, QWidget* dialog)
 {
     if (!model) return;
 
@@ -737,3 +737,18 @@ void CoinControlDialog::updateView()
     sortView(sortColumn, sortOrder);
     ui->treeWidget->setEnabled(true);
 }
+
+void CoinControlDialog::keyPressEvent(QKeyEvent *event)
+{
+#ifdef ANDROID
+    if(event->key() == Qt::Key_Back)
+    {
+        close();
+    }
+#else
+    if(event->key() == Qt::Key_Escape)
+    {
+        close();
+    }
+#endif
+}
\ No newline at end of file
index 28d8f4a..1301fb9 100644 (file)
@@ -3,7 +3,7 @@
 
 #include <QAbstractButton>
 #include <QAction>
-#include <QDialog>
+#include <QWidget>
 #include <QList>
 #include <QMenu>
 #include <QPoint>
@@ -16,7 +16,7 @@ namespace Ui {
 class WalletModel;
 class CCoinControl;
 
-class CoinControlDialog : public QDialog
+class CoinControlDialog : public QWidget
 {
     Q_OBJECT
 
@@ -27,7 +27,7 @@ public:
     void setModel(WalletModel *model);
 
     // static because also called from sendcoinsdialog
-    static void updateLabels(WalletModel*, QDialog*);
+    static void updateLabels(WalletModel*, QWidget*);
     static QString getPriorityLabel(double);
 
     static QList<qint64> payAmounts;
@@ -49,6 +49,8 @@ private:
     void sortView(int, Qt::SortOrder);
     void updateView();
 
+    void keyPressEvent(QKeyEvent *);
+
     enum
     {
         COLUMN_CHECKBOX,
@@ -85,7 +87,7 @@ private slots:
     void radioListMode(bool);
     void viewItemChanged(QTreeWidgetItem*, int);
     void headerSectionClicked(int);
-    void buttonBoxClicked(QAbstractButton*);
+    void on_buttonBox_accepted();
     void buttonSelectAllClicked();
     //void updateLabelLocked();
 };
index 2b7e6ef..f1f177e 100644 (file)
@@ -16,11 +16,15 @@ void CoinControlTreeWidget::keyPressEvent(QKeyEvent *event)
         if(this->currentItem())
             this->currentItem()->setCheckState(COLUMN_CHECKBOX, ((this->currentItem()->checkState(COLUMN_CHECKBOX) == Qt::Checked) ? Qt::Unchecked : Qt::Checked));
     }
+#ifdef ANDROID
+    else if (event->key() == Qt::Key_Back) // press back -> close dialog
+#else
     else if (event->key() == Qt::Key_Escape) // press esc -> close dialog
+#endif
     {
         event->ignore();
         CoinControlDialog *coinControlDialog = (CoinControlDialog*)this->parentWidget();
-        coinControlDialog->done(QDialog::Accepted);
+        coinControlDialog->close();
     }
     else
     {
index 0e5e999..b1cd268 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <ui version="4.0">
  <class>CoinControlDialog</class>
- <widget class="QDialog" name="CoinControlDialog">
+ <widget class="QWidget" name="CoinControlDialog">
   <property name="geometry">
    <rect>
     <x>0</x>
index 5dee144..b1b59eb 100644 (file)
@@ -26,7 +26,8 @@
 SendCoinsDialog::SendCoinsDialog(QWidget *parent) :
     QDialog(parent, DIALOGWINDOWHINTS),
     ui(new Ui::SendCoinsDialog),
-    model(0)
+    model(0),
+    coinControl(0)
 {
     ui->setupUi(this);
 
@@ -78,6 +79,10 @@ SendCoinsDialog::SendCoinsDialog(QWidget *parent) :
     ui->labelCoinControlChange->addAction(clipboardChangeAction);
 
     fNewRecipientAllowed = true;
+
+    coinControl = new CoinControlDialog(0);
+    QAction *updateLabes = new QAction(coinControl);
+    connect(updateLabes, SIGNAL(close()), this, SLOT(coinControlUpdateLabels()));
 }
 
 void SendCoinsDialog::setModel(WalletModel *model)
@@ -109,6 +114,7 @@ void SendCoinsDialog::setModel(WalletModel *model)
 
 SendCoinsDialog::~SendCoinsDialog()
 {
+    delete coinControl;
     delete ui;
 }
 
@@ -444,10 +450,9 @@ void SendCoinsDialog::coinControlFeatureChanged(bool checked)
 // Coin Control: button inputs -> show actual coin control dialog
 void SendCoinsDialog::coinControlButtonClicked()
 {
-    CoinControlDialog dlg;
-    dlg.setModel(model);
-    dlg.exec();
-    coinControlUpdateLabels();
+    coinControl->setModel(model);
+    coinControl->setWindowModality(Qt::ApplicationModal);
+    coinControl->show();
 }
 
 // Coin Control: checkbox custom change address
index 6810ff4..73e42e4 100644 (file)
@@ -10,6 +10,7 @@ namespace Ui {
 class WalletModel;
 class SendCoinsEntry;
 class SendCoinsRecipient;
+class CoinControlDialog;
 
 QT_BEGIN_NAMESPACE
 class QUrl;
@@ -48,6 +49,7 @@ private:
     Ui::SendCoinsDialog *ui;
     WalletModel *model;
     bool fNewRecipientAllowed;
+    CoinControlDialog *coinControl;
 
 private slots:
     void on_sendButton_clicked();