mysitenews/auth.cpp

72 lines
2.5 KiB
C++

#include "auth.h"
#include <QMessageBox>
#include <QSettings>
#include <QSqlError>
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);
_vbox->addWidget (_passwordEdit);
_vbox->addWidget (_addressLabel);
_vbox->addWidget (_addressEdit);
_vbox->addWidget (_portLabel);
_vbox->addWidget (_portEdit);
_vbox->addWidget (_okButton);
_vbox->addWidget (_quitButton);
connect (_okButton, &QPushButton::clicked, this, &auth::onAuth);
connect (_quitButton, &QPushButton::clicked, this, &auth::close);
setLayout (_vbox);
}
void
auth::onAuth ()
{
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();
}