From: APTX Date: Mon, 3 Jun 2013 23:50:27 +0000 (+0200) Subject: A more complete connection settings dialog. X-Git-Url: https://gitweb.tyo.aptx.org/?a=commitdiff_plain;h=b390de480d93554efd92f5ffe2085f34ff293242;p=localmylist.git A more complete connection settings dialog. The settings aren't set yet. --- diff --git a/localmylist-management/databaseconnectiondialog.cpp b/localmylist-management/databaseconnectiondialog.cpp index efffcc8..2a735f5 100644 --- a/localmylist-management/databaseconnectiondialog.cpp +++ b/localmylist-management/databaseconnectiondialog.cpp @@ -1,14 +1,87 @@ #include "databaseconnectiondialog.h" #include "ui_databaseconnectiondialog.h" +#include +#include + +#include "database.h" + +#include + +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); +} diff --git a/localmylist-management/databaseconnectiondialog.h b/localmylist-management/databaseconnectiondialog.h index b5a25f6..e8dec67 100644 --- a/localmylist-management/databaseconnectiondialog.h +++ b/localmylist-management/databaseconnectiondialog.h @@ -2,6 +2,7 @@ #define DATABASECONNECTIONDIALOG_H #include +#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 diff --git a/localmylist-management/databaseconnectiondialog.ui b/localmylist-management/databaseconnectiondialog.ui index f02d333..6c0c40b 100644 --- a/localmylist-management/databaseconnectiondialog.ui +++ b/localmylist-management/databaseconnectiondialog.ui @@ -7,17 +7,39 @@ 0 0 400 - 300 + 292 Dialog + + + + Local Host + + + + + + Host Name: + + + hostName + + + + + + + + + - Connection Details + Database Connection Details @@ -26,14 +48,14 @@ Host: - host + databaseHost - + - + Port: @@ -43,10 +65,17 @@ - - + + + + Default + + + 65536 + + - + User: @@ -56,10 +85,10 @@ - + - + Pass: @@ -69,30 +98,32 @@ - - + + + + QLineEdit::Password + + - - - - - - - Client Details - - - - + + - Name: + <html><head/><body><p><span style=" font-style:italic;">Leave Host field empty to use local socket.</span></p></body></html> + + + + + + + Database: - clientName + databaseName - - + + @@ -111,23 +142,35 @@ - - - Qt::Horizontal - - - QDialogButtonBox::Cancel|QDialogButtonBox::Ok - - + + + + + Test Connection + + + + + + + Qt::Horizontal + + + QDialogButtonBox::Cancel|QDialogButtonBox::Ok|QDialogButtonBox::Reset + + + + - host + hostName + databaseHost port user pass - clientName + databaseName buttonBox @@ -139,8 +182,8 @@ accept() - 227 - 282 + 236 + 273 157 @@ -155,8 +198,8 @@ reject() - 295 - 288 + 304 + 273 286 diff --git a/localmylist-management/mainwindow.cpp b/localmylist-management/mainwindow.cpp index eb6548d..bbd4e56 100644 --- a/localmylist-management/mainwindow.cpp +++ b/localmylist-management/mainwindow.cpp @@ -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; +} diff --git a/localmylist-management/mainwindow.h b/localmylist-management/mainwindow.h index de79e61..c369333 100644 --- a/localmylist-management/mainwindow.h +++ b/localmylist-management/mainwindow.h @@ -77,6 +77,8 @@ private slots: void on_actionAboutLocalMyList_triggered(); + void on_actionConnection_triggered(); + protected: void dragEnterEvent(QDragEnterEvent *event); void dropEvent(QDropEvent *event);