diff --git a/auth.cpp b/auth.cpp index 2873849..06289fe 100644 --- a/auth.cpp +++ b/auth.cpp @@ -1,20 +1,35 @@ #include "auth.h" -auth::auth (QWidget *parent) - : QWidget{ parent }, _nicknameLabel (new QLabel ("nickname:")), - _nicknameEdit (new QLineEdit ()), - _passwordLabel (new QLabel ("passwprd:")), - _passwordEdit (new QLineEdit ()), - _addressLabel (new QLabel ("address:")), _addressEdit (new QLineEdit ()), - _portLabel (new QLabel ("port:")), _portEdit (new QLineEdit ()), - _okButton (new QPushButton ("&OK")), - _quitButton (new QPushButton ("&QUIT")), _vbox (new QVBoxLayout (parent)) +#include +#include +#include + +auth::auth(QWidget *parent) + : QWidget{parent} + , _nicknameLabel(new QLabel("nickname:")) + , _nicknameEdit(new QLineEdit()) + , _passwordLabel(new QLabel("passwprd:")) + , _passwordEdit(new QLineEdit()) + , _addressLabel(new QLabel("address:")) + , _addressEdit(new QLineEdit()) + , _portLabel(new QLabel("port:")) + , _portEdit(new QLineEdit()) + , _okButton(new QPushButton("&OK")) + , _quitButton(new QPushButton("&QUIT")) + , _vbox(new QVBoxLayout(this)) + , _db(QSqlDatabase::addDatabase("QPSQL")) { _nicknameLabel->setAlignment (Qt::AlignHCenter); _passwordLabel->setAlignment (Qt::AlignHCenter); _addressLabel->setAlignment (Qt::AlignHCenter); _portLabel->setAlignment (Qt::AlignHCenter); _passwordEdit->setEchoMode (QLineEdit::Password); + + QSettings settings ("mysitenews", "mysitenews"); + _nicknameEdit->setText (settings.value ("db/user").toString ()); + _passwordEdit->setText (settings.value ("db/password").toString ()); + _addressEdit->setText (settings.value ("db/host").toString ()); + _portEdit->setText (settings.value ("db/port", "5432").toString ()); _vbox->addWidget (_nicknameLabel); _vbox->addWidget (_nicknameEdit); _vbox->addWidget (_passwordLabel); @@ -33,16 +48,24 @@ auth::auth (QWidget *parent) void auth::onAuth () { - QSqlDatabase *db = new QSqlDatabase(QSqlDatabase::addDatabase("QPSQL")); - db->setHostName(_addressEdit->text()); - db->setPort(_portEdit->text().toInt()); - db->setDatabaseName("cards"); - db->setUserName(_nicknameEdit->text()); - db->setPassword(_passwordEdit->text()); - bool ok = db->open(); - if (ok) { - emit dbOpenned(db); + QSettings settings ("mysitenews", "mysitenews"); + _db.setHostName(_addressEdit->text()); + _db.setPort(_portEdit->text().toInt()); + _db.setDatabaseName(settings.value ("db/database", "cards").toString ()); + _db.setUserName(_nicknameEdit->text()); + _db.setPassword(_passwordEdit->text()); + if (!_db.open()) { + QMessageBox::critical(this, tr("Ошибка подключения"), + _db.lastError().text()); + return; } + settings.setValue ("db/host", _db.hostName ()); + settings.setValue ("db/port", _db.port ()); + settings.setValue ("db/database", _db.databaseName ()); + settings.setValue ("db/user", _db.userName ()); + settings.setValue ("db/password", _db.password ()); + + emit dbOpenned(_db); close(); } diff --git a/auth.h b/auth.h index 0a21548..78f3402 100644 --- a/auth.h +++ b/auth.h @@ -26,10 +26,11 @@ private: QPushButton *_okButton = nullptr; QPushButton *_quitButton = nullptr; QVBoxLayout *_vbox = nullptr; -public slots: + QSqlDatabase _db; + public slots: void onAuth (); signals: - void dbOpenned(QSqlDatabase *); + void dbOpenned(const QSqlDatabase &); }; #endif // AUTH_H