]> Some of my projects - localmylist.git/commitdiff
A more complete connection settings dialog.
authorAPTX <marek321@gmail.com>
Mon, 3 Jun 2013 23:50:27 +0000 (01:50 +0200)
committerAPTX <marek321@gmail.com>
Mon, 3 Jun 2013 23:50:27 +0000 (01:50 +0200)
The settings aren't set yet.

localmylist-management/databaseconnectiondialog.cpp
localmylist-management/databaseconnectiondialog.h
localmylist-management/databaseconnectiondialog.ui
localmylist-management/mainwindow.cpp
localmylist-management/mainwindow.h

index efffcc81959756b6cb740cc612914a9a8d488ac1..2a735f54fd5e4da6887122256d41b8109f784022 100644 (file)
@@ -1,14 +1,87 @@
 #include "databaseconnectiondialog.h"
 #include "ui_databaseconnectiondialog.h"
 
+#include <QMessageBox>
+#include <QSqlError>
+
+#include "database.h"
+
+#include <QDebug>
+
+using namespace LocalMyList;
+
 DatabaseConnectionDialog::DatabaseConnectionDialog(QWidget *parent) :
-    QDialog(parent),
-    ui(new Ui::DatabaseConnectionDialog)
+       QDialog(parent),
+       ui(new Ui::DatabaseConnectionDialog)
 {
        ui->setupUi(this);
+       setWindowTitle(tr("Connection Settings"));
+
+       connect(ui->connectionTestButton, SIGNAL(clicked()), this, SLOT(testConnectionSettings()));
+
+       QPushButton *resetButton = ui->buttonBox->button(QDialogButtonBox::Reset);
+       connect(resetButton, SIGNAL(clicked()), this, SLOT(reset()));
 }
 
 DatabaseConnectionDialog::~DatabaseConnectionDialog()
 {
        delete ui;
 }
+
+QString DatabaseConnectionDialog::hostName() const
+{
+       return ui->hostName->text();
+}
+
+void DatabaseConnectionDialog::setHostName(const QString &hostName)
+{
+       ui->hostName->setText(hostName);
+       originalHost = hostName;
+}
+
+DatabaseConnectionSettings DatabaseConnectionDialog::databaseConnectionSettings() const
+{
+       DatabaseConnectionSettings dbs;
+       dbs.host = ui->databaseHost->text();
+       dbs.port = quint16(ui->port->value());
+       dbs.user = ui->user->text();
+       dbs.pass = ui->pass->text();
+       dbs.database = ui->databaseName->text();
+       return dbs;
+}
+
+void DatabaseConnectionDialog::setDatabaseConnectionSettings(const DatabaseConnectionSettings &dbs)
+{
+       ui->databaseHost->setText(dbs.host);
+       ui->port->setValue(dbs.port);
+       ui->user->setText(dbs.user);
+       ui->pass->setText(dbs.pass);
+       ui->databaseName->setText(dbs.database);
+
+       originalDatabaseSettings = dbs;
+}
+
+void DatabaseConnectionDialog::testConnectionSettings()
+{
+       Database *d = new Database("testConnection");
+       d->setConnectionSettings(databaseConnectionSettings());
+
+       if (d->connect())
+       {
+               QMessageBox::information(this, tr("Database Connection Test"),
+                                                                tr("Connection Successful"));
+       }
+       else
+       {
+               QMessageBox::warning(this, tr("Database Connection Test"),
+                                                        tr("Connection Error:\n%1").arg(
+                                                                d->connection().lastError().text()));
+       }
+       delete d;
+}
+
+void DatabaseConnectionDialog::reset()
+{
+       setHostName(originalHost);
+       setDatabaseConnectionSettings(originalDatabaseSettings);
+}
index b5a25f60ca5abfadb8769d2764ee4a823f87f7c3..e8dec67b2dfdf6c703d5bca71d92ca229d9015de 100644 (file)
@@ -2,6 +2,7 @@
 #define DATABASECONNECTIONDIALOG_H
 
 #include <QDialog>
+#include "databaseclasses.h"
 
 namespace Ui {
 class DatabaseConnectionDialog;
@@ -10,13 +11,32 @@ class DatabaseConnectionDialog;
 class DatabaseConnectionDialog : public QDialog
 {
        Q_OBJECT
-       
+       Q_PROPERTY(QString hostName READ hostName WRITE setHostName)
+       Q_PROPERTY(LocalMyList::DatabaseConnectionSettings databaseConnectionSettings
+                          READ databaseConnectionSettings
+                          WRITE setDatabaseConnectionSettings)
+
 public:
        explicit DatabaseConnectionDialog(QWidget *parent = 0);
        ~DatabaseConnectionDialog();
-       
+
+       QString hostName() const;
+
+       LocalMyList::DatabaseConnectionSettings databaseConnectionSettings() const;
+
+public slots:
+       void setHostName(const QString &hostName);
+       void setDatabaseConnectionSettings(const LocalMyList::DatabaseConnectionSettings &databaseConnectionSettings);
+
+       void testConnectionSettings();
+
+       void reset();
+
 private:
        Ui::DatabaseConnectionDialog *ui;
+
+       QString originalHost;
+       LocalMyList::DatabaseConnectionSettings originalDatabaseSettings;
 };
 
 #endif // DATABASECONNECTIONDIALOG_H
index f02d3336a1a2e888901ff7eafb61477725613fc5..6c0c40bafdca115139aa53878e3de8d91856c863 100644 (file)
@@ -7,17 +7,39 @@
     <x>0</x>
     <y>0</y>
     <width>400</width>
-    <height>300</height>
+    <height>292</height>
    </rect>
   </property>
   <property name="windowTitle">
    <string>Dialog</string>
   </property>
   <layout class="QVBoxLayout" name="verticalLayout">
+   <item>
+    <widget class="QGroupBox" name="groupBox_2">
+     <property name="title">
+      <string>Local Host</string>
+     </property>
+     <layout class="QFormLayout" name="formLayout_2">
+      <item row="0" column="0">
+       <widget class="QLabel" name="label_5">
+        <property name="text">
+         <string>Host Name:</string>
+        </property>
+        <property name="buddy">
+         <cstring>hostName</cstring>
+        </property>
+       </widget>
+      </item>
+      <item row="0" column="1">
+       <widget class="QLineEdit" name="hostName"/>
+      </item>
+     </layout>
+    </widget>
+   </item>
    <item>
     <widget class="QGroupBox" name="groupBox">
      <property name="title">
-      <string>Connection Details</string>
+      <string>Database Connection Details</string>
      </property>
      <layout class="QFormLayout" name="formLayout">
       <item row="0" column="0">
          <string>Host:</string>
         </property>
         <property name="buddy">
-         <cstring>host</cstring>
+         <cstring>databaseHost</cstring>
         </property>
        </widget>
       </item>
       <item row="0" column="1">
-       <widget class="QLineEdit" name="host"/>
+       <widget class="QLineEdit" name="databaseHost"/>
       </item>
-      <item row="1" column="0">
+      <item row="2" column="0">
        <widget class="QLabel" name="label_2">
         <property name="text">
          <string>Port:</string>
         </property>
        </widget>
       </item>
-      <item row="1" column="1">
-       <widget class="QSpinBox" name="port"/>
+      <item row="2" column="1">
+       <widget class="QSpinBox" name="port">
+        <property name="specialValueText">
+         <string>Default</string>
+        </property>
+        <property name="maximum">
+         <number>65536</number>
+        </property>
+       </widget>
       </item>
-      <item row="2" column="0">
+      <item row="3" column="0">
        <widget class="QLabel" name="label_3">
         <property name="text">
          <string>User:</string>
         </property>
        </widget>
       </item>
-      <item row="2" column="1">
+      <item row="3" column="1">
        <widget class="QLineEdit" name="user"/>
       </item>
-      <item row="3" column="0">
+      <item row="4" column="0">
        <widget class="QLabel" name="label_4">
         <property name="text">
          <string>Pass:</string>
         </property>
        </widget>
       </item>
-      <item row="3" column="1">
-       <widget class="QLineEdit" name="pass"/>
+      <item row="4" column="1">
+       <widget class="QLineEdit" name="pass">
+        <property name="echoMode">
+         <enum>QLineEdit::Password</enum>
+        </property>
+       </widget>
       </item>
-     </layout>
-    </widget>
-   </item>
-   <item>
-    <widget class="QGroupBox" name="groupBox_2">
-     <property name="title">
-      <string>Client Details</string>
-     </property>
-     <layout class="QFormLayout" name="formLayout_2">
-      <item row="0" column="0">
-       <widget class="QLabel" name="label_5">
+      <item row="1" column="1">
+       <widget class="QLabel" name="label_6">
         <property name="text">
-         <string>Name:</string>
+         <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-style:italic;&quot;&gt;Leave Host field empty to use local socket.&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+        </property>
+       </widget>
+      </item>
+      <item row="5" column="0">
+       <widget class="QLabel" name="label_7">
+        <property name="text">
+         <string>Database:</string>
         </property>
         <property name="buddy">
-         <cstring>clientName</cstring>
+         <cstring>databaseName</cstring>
         </property>
        </widget>
       </item>
-      <item row="0" column="1">
-       <widget class="QLineEdit" name="clientName"/>
+      <item row="5" column="1">
+       <widget class="QLineEdit" name="databaseName"/>
       </item>
      </layout>
     </widget>
     </spacer>
    </item>
    <item>
-    <widget class="QDialogButtonBox" name="buttonBox">
-     <property name="orientation">
-      <enum>Qt::Horizontal</enum>
-     </property>
-     <property name="standardButtons">
-      <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
-     </property>
-    </widget>
+    <layout class="QHBoxLayout" name="horizontalLayout">
+     <item>
+      <widget class="QPushButton" name="connectionTestButton">
+       <property name="text">
+        <string>Test Connection</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QDialogButtonBox" name="buttonBox">
+       <property name="orientation">
+        <enum>Qt::Horizontal</enum>
+       </property>
+       <property name="standardButtons">
+        <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok|QDialogButtonBox::Reset</set>
+       </property>
+      </widget>
+     </item>
+    </layout>
    </item>
   </layout>
  </widget>
  <tabstops>
-  <tabstop>host</tabstop>
+  <tabstop>hostName</tabstop>
+  <tabstop>databaseHost</tabstop>
   <tabstop>port</tabstop>
   <tabstop>user</tabstop>
   <tabstop>pass</tabstop>
-  <tabstop>clientName</tabstop>
+  <tabstop>databaseName</tabstop>
   <tabstop>buttonBox</tabstop>
  </tabstops>
  <resources/>
    <slot>accept()</slot>
    <hints>
     <hint type="sourcelabel">
-     <x>227</x>
-     <y>282</y>
+     <x>236</x>
+     <y>273</y>
     </hint>
     <hint type="destinationlabel">
      <x>157</x>
    <slot>reject()</slot>
    <hints>
     <hint type="sourcelabel">
-     <x>295</x>
-     <y>288</y>
+     <x>304</x>
+     <y>273</y>
     </hint>
     <hint type="destinationlabel">
      <x>286</x>
index eb6548d397cbea7708ba5d792f424a2807b6ee10..bbd4e56695187a402ef95fc2e08bb4456caa8dbf 100644 (file)
@@ -26,6 +26,7 @@
 #ifndef LOCALMYLIST_NO_ANIDBUDPCLIENT
 #      include "renamesettingsdialog.h"
 #endif
+#include "databaseconnectiondialog.h"
 #include "reporteditordialog.h"
 #include "versiondialog.h"
 
@@ -350,3 +351,13 @@ void MainWindow::showMessage(const QString &message)
 {
        ui->statusBar->showMessage(message);
 }
+
+void MainWindow::on_actionConnection_triggered()
+{
+       DatabaseConnectionDialog d;
+       d.setHostName(MyList::instance()->hostName());
+       d.setDatabaseConnectionSettings(MyList::instance()->database()->connectionSettings());
+
+       if (!d.exec())
+               return;
+}
index de79e614083b9111e40d0e475fd7ade345519dfa..c36933364b9f9da419e9a13c5ac812bdafdd06a1 100644 (file)
@@ -77,6 +77,8 @@ private slots:
 
        void on_actionAboutLocalMyList_triggered();
 
+       void on_actionConnection_triggered();
+
 protected:
        void dragEnterEvent(QDragEnterEvent *event);
        void dropEvent(QDropEvent *event);