#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);
+}
#define DATABASECONNECTIONDIALOG_H
#include <QDialog>
+#include "databaseclasses.h"
namespace Ui {
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
<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><html><head/><body><p><span style=" font-style:italic;">Leave Host field empty to use local socket.</span></p></body></html></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>