11// Author: Kang Lin <kl222@126.com>
22
3+ #include < QMessageBox>
34#include < QSqlDatabase>
45#include < QLoggingCategory>
56#include < QSet>
1213#include " ParameterUser.h"
1314#include " ParameterDatabaseUI.h"
1415#include " ui_ParameterDatabaseUI.h"
16+ #include " ParameterGlobal.h"
1517
1618static Q_LOGGING_CATEGORY (log, " Para.Database.UI" )
1719CParameterDatabaseUI::CParameterDatabaseUI(QWidget *parent)
1820 : CParameterUI(parent)
1921 , ui(new Ui::CParameterDatabaseUI)
20- , m_pPara(nullptr )
22+ , m_pParaDB(nullptr )
23+ , m_pParaGlobal(nullptr )
2124{
2225 bool check = false ;
2326 ui->setupUi (this );
@@ -47,26 +50,73 @@ CParameterDatabaseUI::~CParameterDatabaseUI()
4750
4851int CParameterDatabaseUI::SetParameter (CParameter *pParameter)
4952{
50- m_pPara = qobject_cast<CParameterDatabase*>(pParameter);
51- if (!m_pPara) return -1 ;
53+ m_pParaGlobal = qobject_cast<CParameterGlobal*>(pParameter);
54+ if (!m_pParaGlobal) return -1 ;
55+
56+ m_pParaDB = &m_pParaGlobal->m_Database ;
57+ if (!m_pParaDB) return -1 ;
58+
59+ ui->wNet ->SetParameter (&m_pParaDB->m_Net );
60+
61+ ui->cbType ->setCurrentText (m_pParaDB->GetType ());
62+ ui->leDatabaseName ->setText (m_pParaDB->GetDatabaseName ());
63+ ui->leOptions ->setText (m_pParaDB->GetOptions ());
64+
65+ switch (m_pParaGlobal->GetSaveSettingsType ()) {
66+ case CParameterGlobal::SaveSettingsType::Local:
67+ ui->rbSaveSettingsToLocal ->setChecked (true );
68+ break ;
69+ case CParameterGlobal::SaveSettingsType::Database:
70+ ui->rbSaveSettingsToDatabase ->setChecked (true );
71+ break ;
72+ }
73+ ui->lbDatabaseWarn ->setVisible (
74+ m_pParaGlobal->GetSaveSettingsType ()
75+ == CParameterGlobal::SaveSettingsType::Database);
5276
53- ui->wNet ->SetParameter (&m_pPara->m_Net );
77+ return 0 ;
78+ }
5479
55- ui-> cbType -> setCurrentText (m_pPara-> GetType ());
56- ui-> leDatabaseName -> setText (m_pPara-> GetDatabaseName ());
57- ui-> leOptions -> setText (m_pPara-> GetOptions ()) ;
80+ bool CParameterDatabaseUI::CheckValidity ( bool validity)
81+ {
82+ if (!validity) return true ;
5883
59- return 0 ;
84+ if (ui->cbType ->currentText () == " QMYSQL" ) {
85+ if (!ui->wNet ->CheckValidity (validity)) {
86+ return false ;
87+ }
88+ }
89+
90+ if (ui->rbSaveSettingsToLocal ->isChecked ()) {
91+ if (ui->cbType ->currentText () != " QSQLITE" ) {
92+ QString szErr = tr (" Save operate settings to:" ) + " \" " + tr (" Locale" ) + " \" . " + tr (" but the database is not set local database \" QSQLITE\" ." );
93+ szErr += " \n\n " ;
94+ szErr += tr (" Please modify databse \" Type\" to \" QSQLITE\" " ) + " " ;
95+ szErr += tr (" or modify " ) + tr (" Save operate settings to:" ) + " " + tr (" Database" );
96+ QMessageBox::critical (this , tr (" Error" ), szErr);
97+ qCritical (log) << szErr;
98+ ui->rbSaveSettingsToDatabase ->setFocus ();
99+ return false ;
100+ }
101+ }
102+
103+ return true ;
60104}
61105
62106int CParameterDatabaseUI::Accept ()
63107{
64108 ui->wNet ->Accept ();
65- m_pPara->SetType (ui->cbType ->currentText ());
66-
67- m_pPara->SetDatabaseName (ui->leDatabaseName ->text ());
68- m_pPara->SetOptions (ui->leOptions ->text ());
69-
109+ m_pParaDB->SetType (ui->cbType ->currentText ());
110+
111+ m_pParaDB->SetDatabaseName (ui->leDatabaseName ->text ());
112+ m_pParaDB->SetOptions (ui->leOptions ->text ());
113+
114+ if (ui->rbSaveSettingsToLocal ->isChecked ()) {
115+ m_pParaGlobal->SetSaveSettingsType (CParameterGlobal::SaveSettingsType::Local);
116+ } else if (ui->rbSaveSettingsToDatabase ->isChecked ()) {
117+ m_pParaGlobal->SetSaveSettingsType (CParameterGlobal::SaveSettingsType::Database);
118+ }
119+
70120 return 0 ;
71121}
72122
@@ -88,8 +138,8 @@ void CParameterDatabaseUI::slotTypeCurrentTextChanged(const QString &text)
88138 bNet = false ;
89139 } else if (" QMYSQL" == text) {
90140 bNet = true ;
91- if (m_pPara ) {
92- auto &net = m_pPara ->m_Net ;
141+ if (m_pParaDB ) {
142+ auto &net = m_pParaDB ->m_Net ;
93143 if (0 == net.GetPort ()) {
94144 net.SetPort (3306 );
95145 ui->wNet ->SetParameter (&net);
@@ -133,3 +183,8 @@ bool CParameterDatabaseUI::eventFilter(QObject *watched, QEvent *event)
133183 }
134184 return QWidget::eventFilter (watched, event);
135185}
186+
187+ void CParameterDatabaseUI::on_rbSaveSettingsToDatabase_toggled (bool checked)
188+ {
189+ ui->lbDatabaseWarn ->setVisible (checked);
190+ }
0 commit comments