more improvements
authorWladimir J. van der Laan <laanwj@gmail.com>
Fri, 13 May 2011 20:00:27 +0000 (22:00 +0200)
committerWladimir J. van der Laan <laanwj@gmail.com>
Fri, 13 May 2011 20:00:27 +0000 (22:00 +0200)
13 files changed:
addressbookdialog.cpp
addressbookdialog.h
addressbookdialog.ui
addresstablemodel.cpp
bitcoin.pro
bitcoinaddressvalidator.cpp [new file with mode: 0644]
bitcoinaddressvalidator.h [new file with mode: 0644]
bitcoingui.h
optionsdialog.cpp
optionsdialog.h
sendcoinsdialog.cpp
sendcoinsdialog.h
sendcoinsdialog.ui

index 72b0da3..71543f1 100644 (file)
@@ -5,6 +5,7 @@
 #include "editaddressdialog.h"
 
 #include <QSortFilterProxyModel>
+#include <QDebug>
 
 AddressBookDialog::AddressBookDialog(QWidget *parent) :
     QDialog(parent),
@@ -62,14 +63,23 @@ void AddressBookDialog::setTab(int tab)
     ui->tabWidget->setCurrentIndex(tab);
 }
 
-void AddressBookDialog::on_OKButton_clicked()
+QTableView *AddressBookDialog::getCurrentTable()
 {
-    accept();
+    switch(ui->tabWidget->currentIndex())
+    {
+    case SendingTab:
+        return ui->sendTableView;
+    case ReceivingTab:
+        return ui->receiveTableView;
+    default:
+        return 0;
+    }
 }
 
 void AddressBookDialog::on_copyToClipboard_clicked()
 {
-   /* Copy currently selected address to clipboard */
+    /* Copy currently selected address to clipboard */
+
 }
 
 void AddressBookDialog::on_editButton_clicked()
@@ -84,3 +94,39 @@ void AddressBookDialog::on_newAddressButton_clicked()
     EditAddressDialog dlg;
     dlg.exec();
 }
+
+void AddressBookDialog::on_tabWidget_currentChanged(int index)
+{
+    switch(index)
+    {
+    case SendingTab:
+        ui->deleteButton->show();
+        break;
+    case ReceivingTab:
+        ui->deleteButton->hide();
+        break;
+    }
+}
+
+void AddressBookDialog::on_deleteButton_clicked()
+{
+    QTableView *table = getCurrentTable();
+    QModelIndexList indexes = table->selectionModel()->selectedRows();
+
+    foreach (QModelIndex index, indexes) {
+        table->model()->removeRow(index.row());
+    }
+}
+
+void AddressBookDialog::on_buttonBox_accepted()
+{
+    QTableView *table = getCurrentTable();
+    QModelIndexList indexes = table->selectionModel()->selectedRows(AddressTableModel::Address);
+
+    foreach (QModelIndex index, indexes) {
+        QVariant address = table->model()->data(index);
+        returnValue = address.toString();
+    }
+
+    accept();
+}
index d075c9b..bf7c2a6 100644 (file)
@@ -8,6 +8,10 @@ namespace Ui {
 }
 class AddressTableModel;
 
+QT_BEGIN_NAMESPACE
+class QTableView;
+QT_END_NAMESPACE
+
 class AddressBookDialog : public QDialog
 {
     Q_OBJECT
@@ -23,15 +27,21 @@ public:
 
     void setModel(AddressTableModel *model);
     void setTab(int tab);
+    const QString &getReturnValue() const { return returnValue; }
 private:
     Ui::AddressBookDialog *ui;
     AddressTableModel *model;
+    QString returnValue;
+
+    QTableView *getCurrentTable();
 
 private slots:
+    void on_buttonBox_accepted();
+    void on_deleteButton_clicked();
+    void on_tabWidget_currentChanged(int index);
     void on_newAddressButton_clicked();
     void on_editButton_clicked();
     void on_copyToClipboard_clicked();
-    void on_OKButton_clicked();
 };
 
 #endif // ADDRESSBOOKDIALOG_H
index 0aa093e..d66962a 100644 (file)
@@ -26,6 +26,9 @@
       <layout class="QVBoxLayout" name="verticalLayout_2">
        <item>
         <widget class="QTableView" name="sendTableView">
+         <property name="selectionMode">
+          <enum>QAbstractItemView::SingleSelection</enum>
+         </property>
          <property name="selectionBehavior">
           <enum>QAbstractItemView::SelectRows</enum>
          </property>
@@ -56,6 +59,9 @@
        </item>
        <item>
         <widget class="QTableView" name="receiveTableView">
+         <property name="selectionMode">
+          <enum>QAbstractItemView::SingleSelection</enum>
+         </property>
          <property name="selectionBehavior">
           <enum>QAbstractItemView::SelectRows</enum>
          </property>
       </spacer>
      </item>
      <item>
+      <widget class="QPushButton" name="newAddressButton">
+       <property name="text">
+        <string>&amp;New Address...</string>
+       </property>
+      </widget>
+     </item>
+     <item>
       <widget class="QPushButton" name="copyToClipboard">
        <property name="text">
-        <string>Copy to Clipboard</string>
+        <string>&amp;Copy to Clipboard</string>
        </property>
       </widget>
      </item>
      <item>
       <widget class="QPushButton" name="editButton">
        <property name="text">
-        <string>Edit...</string>
+        <string>&amp;Edit...</string>
        </property>
       </widget>
      </item>
      <item>
-      <widget class="QPushButton" name="newAddressButton">
+      <widget class="QPushButton" name="deleteButton">
        <property name="text">
-        <string>New Address...</string>
+        <string>&amp;Delete</string>
        </property>
       </widget>
      </item>
      <item>
-      <widget class="QPushButton" name="OKButton">
-       <property name="text">
-        <string>OK</string>
+      <widget class="QDialogButtonBox" name="buttonBox">
+       <property name="sizePolicy">
+        <sizepolicy hsizetype="Maximum" vsizetype="Fixed">
+         <horstretch>0</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
+       </property>
+       <property name="standardButtons">
+        <set>QDialogButtonBox::Ok</set>
        </property>
       </widget>
      </item>
index e8746c2..d985bce 100644 (file)
@@ -29,7 +29,7 @@ QVariant AddressTableModel::data(const QModelIndex &index, int role) const
         /* index.row(), index.column() */
         /* Return QString */
         if(index.column() == Address)
-            return "1PC9aZC4hNX2rmmrt7uHTfYAS3hRbph4UN";
+            return "1PC9aZC4hNX2rmmrt7uHTfYAS3hRbph4UN" + QString::number(index.row());
         else
             return "Description";
     } else if (role == Qt::UserRole)
index d0b9512..b34f562 100644 (file)
@@ -16,7 +16,8 @@ HEADERS += bitcoingui.h \
     sendcoinsdialog.h \
     addressbookdialog.h \
     aboutdialog.h \
-    editaddressdialog.h
+    editaddressdialog.h \
+    bitcoinaddressvalidator.h
 SOURCES += bitcoin.cpp bitcoingui.cpp \
     transactiontablemodel.cpp \
     addresstablemodel.cpp \
@@ -25,7 +26,8 @@ SOURCES += bitcoin.cpp bitcoingui.cpp \
     sendcoinsdialog.cpp \
     addressbookdialog.cpp \
     aboutdialog.cpp \
-    editaddressdialog.cpp
+    editaddressdialog.cpp \
+    bitcoinaddressvalidator.cpp
 
 RESOURCES += \
     bitcoin.qrc
diff --git a/bitcoinaddressvalidator.cpp b/bitcoinaddressvalidator.cpp
new file mode 100644 (file)
index 0000000..408027b
--- /dev/null
@@ -0,0 +1,8 @@
+#include "bitcoinaddressvalidator.h"
+
+const QString BitcoinAddressValidator::valid_chars = "123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ";
+
+BitcoinAddressValidator::BitcoinAddressValidator(QObject *parent) :
+    QRegExpValidator(QRegExp("^["+valid_chars+"]+"), parent)
+{
+}
diff --git a/bitcoinaddressvalidator.h b/bitcoinaddressvalidator.h
new file mode 100644 (file)
index 0000000..f6a2ac0
--- /dev/null
@@ -0,0 +1,19 @@
+#ifndef BITCOINADDRESSVALIDATOR_H
+#define BITCOINADDRESSVALIDATOR_H
+
+#include <QRegExpValidator>
+
+class BitcoinAddressValidator : public QRegExpValidator
+{
+    Q_OBJECT
+public:
+    explicit BitcoinAddressValidator(QObject *parent = 0);
+
+    static const QString valid_chars;
+signals:
+
+public slots:
+
+};
+
+#endif // BITCOINADDRESSVALIDATOR_H
index 12bbf58..9142b6b 100644 (file)
@@ -6,8 +6,11 @@
 
 /* Forward declarations */
 class TransactionTableModel;
+
+QT_BEGIN_NAMESPACE
 class QLabel;
 class QLineEdit;
+QT_END_NAMESPACE
 
 class BitcoinGUI : public QMainWindow
 {
index e609e54..70dd863 100644 (file)
@@ -4,6 +4,8 @@
 #include <QHBoxLayout>
 #include <QVBoxLayout>
 #include <QPushButton>
+#include <QListWidget>
+#include <QStackedWidget>
 
 OptionsDialog::OptionsDialog(QWidget *parent) :
     QDialog(parent), contents_widget(0), pages_widget(0)
index 2a4beac..501c82e 100644 (file)
@@ -2,8 +2,12 @@
 #define OPTIONSDIALOG_H
 
 #include <QDialog>
-#include <QStackedWidget>
-#include <QListWidget>
+
+QT_BEGIN_NAMESPACE
+class QStackedWidget;
+class QListWidget;
+class QListWidgetItem;
+QT_END_NAMESPACE
 
 class OptionsDialog : public QDialog
 {
index d8ef781..6f459fb 100644 (file)
@@ -2,6 +2,7 @@
 #include "ui_sendcoinsdialog.h"
 
 #include "addressbookdialog.h"
+#include "bitcoinaddressvalidator.h"
 
 #include <QApplication>
 #include <QClipboard>
@@ -11,6 +12,8 @@ SendCoinsDialog::SendCoinsDialog(QWidget *parent) :
     ui(new Ui::SendCoinsDialog)
 {
     ui->setupUi(this);
+    ui->payTo->setValidator(new BitcoinAddressValidator(this));
+    ui->payAmount->setValidator(new QDoubleValidator(this));
 }
 
 SendCoinsDialog::~SendCoinsDialog()
@@ -23,11 +26,6 @@ void SendCoinsDialog::on_sendButton_clicked()
     accept();
 }
 
-void SendCoinsDialog::on_cancelButton_clicked()
-{
-    reject();
-}
-
 void SendCoinsDialog::on_pasteButton_clicked()
 {
     /* Paste text from clipboard into recipient field */
@@ -38,4 +36,10 @@ void SendCoinsDialog::on_addressBookButton_clicked()
 {
     AddressBookDialog dlg;
     dlg.exec();
+    ui->payTo->setText(dlg.getReturnValue());
+}
+
+void SendCoinsDialog::on_buttonBox_rejected()
+{
+    reject();
 }
index e3ffd1d..a2fcdd0 100644 (file)
@@ -19,9 +19,9 @@ private:
     Ui::SendCoinsDialog *ui;
 
 private slots:
+    void on_buttonBox_rejected();
     void on_addressBookButton_clicked();
     void on_pasteButton_clicked();
-    void on_cancelButton_clicked();
     void on_sendButton_clicked();
 };
 
index ef7eaf3..f14ec2a 100644 (file)
       </widget>
      </item>
      <item row="3" column="1">
-      <widget class="QLineEdit" name="payTo"/>
+      <widget class="QLineEdit" name="payTo">
+       <property name="maxLength">
+        <number>34</number>
+       </property>
+      </widget>
      </item>
      <item row="4" column="1">
       <widget class="QLineEdit" name="payAmount">
        <property name="text">
         <string>&amp;Send</string>
        </property>
+       <property name="icon">
+        <iconset resource="bitcoin.qrc">
+         <normaloff>:/icons/send</normaloff>:/icons/send</iconset>
+       </property>
       </widget>
      </item>
      <item>
-      <widget class="QPushButton" name="cancelButton">
-       <property name="text">
-        <string>Cancel</string>
+      <widget class="QDialogButtonBox" name="buttonBox">
+       <property name="sizePolicy">
+        <sizepolicy hsizetype="Maximum" vsizetype="Fixed">
+         <horstretch>0</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
+       </property>
+       <property name="standardButtons">
+        <set>QDialogButtonBox::Cancel</set>
        </property>
       </widget>
      </item>
    </item>
   </layout>
  </widget>
- <resources/>
- <connections/>
+ <resources>
+  <include location="bitcoin.qrc"/>
+ </resources>
+ <connections>
+  <connection>
+   <sender>payAmount</sender>
+   <signal>returnPressed()</signal>
+   <receiver>sendButton</receiver>
+   <slot>click()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>191</x>
+     <y>65</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>570</x>
+     <y>121</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
 </ui>