changeset 2567:8a3fa8aba5d0 draft

Merge pull request #1308 from Diapolo/polish_verifymessage GUI: adapt user-experience from messagepage for verifymessagedialog
author Wladimir J. van der Laan <laanwj@gmail.com>
date Mon, 14 May 2012 23:15:38 -0700
parents 63ea7bb14249 (current diff) 9bd5915eef6d (diff)
children 3590f6244af0 6ea35c8e27eb b4fce94edbae 3572eaee5a37 7ca3e8370524
files
diffstat 3 files changed, 72 insertions(+), 66 deletions(-) [+]
line wrap: on
line diff
--- a/src/qt/forms/verifymessagedialog.ui
+++ b/src/qt/forms/verifymessagedialog.ui
@@ -17,7 +17,7 @@
    <item>
     <widget class="QLabel" name="label">
      <property name="text">
-      <string>Enter the message and signature below (be careful to correctly copy newlines, spaces, tabs, and other invisible characters), and press apply to obtain the bitcoin address used to sign the message.</string>
+      <string>Enter the message and signature below (be careful to correctly copy newlines, spaces, tabs and other invisible characters) to obtain the Bitcoin address used to sign the message.</string>
      </property>
      <property name="alignment">
       <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
@@ -35,9 +35,6 @@
      <property name="text">
       <string/>
      </property>
-     <property name="placeholderText">
-      <string>Signature</string>
-     </property>
     </widget>
    </item>
    <item>
@@ -48,9 +45,6 @@
      <property name="readOnly">
       <bool>true</bool>
      </property>
-     <property name="placeholderText">
-      <string>Address</string>
-     </property>
     </widget>
    </item>
    <item>
@@ -63,6 +57,20 @@
    <item>
     <layout class="QHBoxLayout" name="horizontalLayout">
      <item>
+      <widget class="QPushButton" name="verifyMessage">
+       <property name="toolTip">
+        <string>Verify a message and obtain the Bitcoin address used to sign the message</string>
+       </property>
+       <property name="text">
+        <string>&amp;Verify Message</string>
+       </property>
+       <property name="icon">
+        <iconset resource="../bitcoin.qrc">
+         <normaloff>:/icons/transaction_0</normaloff>:/icons/transaction_0</iconset>
+       </property>
+      </widget>
+     </item>
+     <item>
       <widget class="QPushButton" name="copyToClipboard">
        <property name="enabled">
         <bool>false</bool>
@@ -80,6 +88,20 @@
       </widget>
      </item>
      <item>
+      <widget class="QPushButton" name="clearButton">
+       <property name="toolTip">
+        <string>Reset all verify message fields</string>
+       </property>
+       <property name="text">
+        <string>Clear &amp;All</string>
+       </property>
+       <property name="icon">
+        <iconset resource="../bitcoin.qrc">
+         <normaloff>:/icons/remove</normaloff>:/icons/remove</iconset>
+       </property>
+      </widget>
+     </item>
+     <item>
       <spacer name="horizontalSpacer">
        <property name="orientation">
         <enum>Qt::Horizontal</enum>
@@ -92,19 +114,6 @@
        </property>
       </spacer>
      </item>
-     <item>
-      <widget class="QDialogButtonBox" name="buttonBox">
-       <property name="orientation">
-        <enum>Qt::Horizontal</enum>
-       </property>
-       <property name="standardButtons">
-        <set>QDialogButtonBox::Apply|QDialogButtonBox::Close</set>
-       </property>
-       <property name="centerButtons">
-        <bool>false</bool>
-       </property>
-      </widget>
-     </item>
     </layout>
    </item>
   </layout>
@@ -112,38 +121,5 @@
  <resources>
   <include location="../bitcoin.qrc"/>
  </resources>
- <connections>
-  <connection>
-   <sender>buttonBox</sender>
-   <signal>accepted()</signal>
-   <receiver>VerifyMessageDialog</receiver>
-   <slot>accept()</slot>
-   <hints>
-    <hint type="sourcelabel">
-     <x>248</x>
-     <y>254</y>
-    </hint>
-    <hint type="destinationlabel">
-     <x>157</x>
-     <y>274</y>
-    </hint>
-   </hints>
-  </connection>
-  <connection>
-   <sender>buttonBox</sender>
-   <signal>rejected()</signal>
-   <receiver>VerifyMessageDialog</receiver>
-   <slot>reject()</slot>
-   <hints>
-    <hint type="sourcelabel">
-     <x>316</x>
-     <y>260</y>
-    </hint>
-    <hint type="destinationlabel">
-     <x>286</x>
-     <y>274</y>
-    </hint>
-   </hints>
-  </connection>
- </connections>
+ <connections/>
 </ui>
--- a/src/qt/verifymessagedialog.cpp
+++ b/src/qt/verifymessagedialog.cpp
@@ -22,7 +22,16 @@
 {
     ui->setupUi(this);
 
+#if (QT_VERSION >= 0x040700)
+    /* Do not move this to the XML file, Qt before 4.7 will choke on it */
+    ui->lnSig->setPlaceholderText(tr("Enter Bitcoin signature"));
+    ui->lnAddress->setPlaceholderText(tr("Click \"Apply\" to obtain address"));
+#endif
+
     GUIUtil::setupAddressWidget(ui->lnAddress, this);
+    ui->lnAddress->installEventFilter(this);
+
+    ui->edMessage->setFocus();
 }
 
 VerifyMessageDialog::~VerifyMessageDialog()
@@ -63,13 +72,33 @@
     return true;
 }
 
-void VerifyMessageDialog::on_buttonBox_clicked(QAbstractButton *button)
+void VerifyMessageDialog::on_verifyMessage_clicked()
 {
-    if(ui->buttonBox->buttonRole(button) == QDialogButtonBox::ApplyRole)
-        checkAddress();
+    checkAddress();
 }
 
 void VerifyMessageDialog::on_copyToClipboard_clicked()
 {
     QApplication::clipboard()->setText(ui->lnAddress->text());
 }
+
+void VerifyMessageDialog::on_clearButton_clicked()
+{
+    ui->edMessage->clear();
+    ui->lnSig->clear();
+    ui->lnAddress->clear();
+    ui->lblStatus->clear();
+
+    ui->edMessage->setFocus();
+}
+
+bool VerifyMessageDialog::eventFilter(QObject *object, QEvent *event)
+{
+    if(object == ui->lnAddress && (event->type() == QEvent::MouseButtonPress ||
+                                   event->type() == QEvent::FocusIn))
+    {
+        ui->lnAddress->selectAll();
+        return true;
+    }
+    return QDialog::eventFilter(object, event);
+}
--- a/src/qt/verifymessagedialog.h
+++ b/src/qt/verifymessagedialog.h
@@ -3,16 +3,14 @@
 
 #include <QDialog>
 
+namespace Ui {
+    class VerifyMessageDialog;
+}
 class AddressTableModel;
 
 QT_BEGIN_NAMESPACE
-class QAbstractButton;
 QT_END_NAMESPACE
 
-namespace Ui {
-    class VerifyMessageDialog;
-}
-
 class VerifyMessageDialog : public QDialog
 {
     Q_OBJECT
@@ -21,16 +19,19 @@
     explicit VerifyMessageDialog(AddressTableModel *addressModel, QWidget *parent = 0);
     ~VerifyMessageDialog();
 
-private slots:
-    void on_buttonBox_clicked(QAbstractButton *button);
-
-    void on_copyToClipboard_clicked();
+protected:
+    bool eventFilter(QObject *object, QEvent *event);
 
 private:
     bool checkAddress();
 
     Ui::VerifyMessageDialog *ui;
     AddressTableModel *model;
+
+private slots:
+    void on_verifyMessage_clicked();
+    void on_copyToClipboard_clicked();
+    void on_clearButton_clicked();
 };
 
 #endif // VERIFYMESSAGEDIALOG_H