MythTV  master
dbsettings.cpp
Go to the documentation of this file.
1 // Qt headers
2 #include <QFile>
3 #include <QDir>
4 #include <QObject>
5 
6 // MythTV headers
9 
10 #include "dbsettings.h"
11 #include "mythcontext.h"
12 
13 DatabaseSettings::DatabaseSettings(QString DBhostOverride) :
14  m_dbHostOverride(std::move(DBhostOverride))
15 {
16  setLabel(DatabaseSettings::tr("Database Configuration"));
17 
19  if (query.isConnected())
20  {
22  DatabaseSettings::tr("All database settings take effect when "
23  "you restart this program."));
24  }
25  else
26  {
28  DatabaseSettings::tr("MythTV could not connect to the database. "
29  "Please verify your database settings "
30  "below."));
31  }
32 
34  m_dbHostName->setLabel(DatabaseSettings::tr("Hostname"));
36  DatabaseSettings::tr("The host name or IP address of "
37  "the machine hosting the database. "
38  "This information is required."));
40 
42  m_dbHostPing->setLabel(DatabaseSettings::tr("Ping test server?"));
44  DatabaseSettings::tr("Test basic host connectivity using "
45  "the ping command. Turn off if your "
46  "host or network don't support ping "
47  "(ICMP ECHO) packets"));
49 
51  m_dbPort->setLabel(DatabaseSettings::tr("Port"));
53  DatabaseSettings::tr("The port number the database is running "
54  "on. Leave blank if using the default "
55  "port (3306)."));
57 
59  m_dbName->setLabel(QCoreApplication::translate("(Common)",
60  "Database name"));
62  DatabaseSettings::tr("The name of the database. "
63  "This information is required."));
65 
67  m_dbUserName->setLabel(QCoreApplication::translate("(Common)", "User"));
69  DatabaseSettings::tr("The user name to use while "
70  "connecting to the database. "
71  "This information is required."));
73 
75  m_dbPassword->setLabel(DatabaseSettings::tr("Password"));
77  DatabaseSettings::tr("The password to use while "
78  "connecting to the database. "
79  "This information is required."));
81 
84  DatabaseSettings::tr("Use custom identifier for frontend "
85  "preferences"));
87  DatabaseSettings::tr("If this frontend's host name "
88  "changes often, check this box "
89  "and provide a network-unique "
90  "name to identify it. "
91  "If unchecked, the frontend "
92  "machine's local host name will "
93  "be used to save preferences in "
94  "the database."));
96 
98  m_localHostName->setLabel(DatabaseSettings::tr("Custom identifier"));
100  DatabaseSettings::tr("An identifier to use while "
101  "saving the settings for this "
102  "frontend."));
104 
107  DatabaseSettings::tr("Enable database server wakeup"));
109  DatabaseSettings::tr("If enabled, the frontend will use "
110  "database wakeup parameters to "
111  "reconnect to the database server."));
113 
114  m_wolReconnect = new TransMythUISpinBoxSetting(0, 60, 1, 1);
115  m_wolReconnect->setLabel(DatabaseSettings::tr("Reconnect time"));
117  DatabaseSettings::tr("The time in seconds to wait for "
118  "the server to wake up."));
120 
121  m_wolRetry = new TransMythUISpinBoxSetting(1, 10, 1, 1);
122  m_wolRetry->setLabel(DatabaseSettings::tr("Retry attempts"));
124  DatabaseSettings::tr("The number of retries to wake the "
125  "server before the frontend gives "
126  "up."));
128 
130  m_wolCommand->setLabel(DatabaseSettings::tr("Wake command or MAC"));
132  DatabaseSettings::tr("The command executed on this "
133  "frontend or server MAC to wake up the database "
134  "server (eg. sudo /etc/init.d/mysql "
135  "restart or 32:D2:86:00:17:A8)."));
137 }
138 
140 {
141  DatabaseParams params = GetMythDB()->GetDatabaseParams();
142 
143  if (params.m_dbHostName.isEmpty() ||
144  params.m_dbUserName.isEmpty() ||
145  params.m_dbPassword.isEmpty() ||
146  params.m_dbName.isEmpty())
147  {
148  setHelpText(getHelpText() + "\n" +
149  DatabaseSettings::tr("Required fields are"
150  " marked with an asterisk (*)."));
151  }
152 
153  if (params.m_dbHostName.isEmpty())
154  {
157  }
158  else
160 
162 
163  if (params.m_dbPort)
164  m_dbPort->setValue(QString::number(params.m_dbPort));
165 
167  if (params.m_dbUserName.isEmpty())
170  if (params.m_dbPassword.isEmpty())
172  m_dbName->setValue(params.m_dbName);
173  if (params.m_dbName.isEmpty())
174  m_dbName->setLabel("* " + m_dbName->getLabel());
175 
178 
180  m_wolReconnect->setValue(params.m_wolReconnect.count());
181  m_wolRetry->setValue(params.m_wolRetry);
183  //set all the children's m_haveChanged to false
185 }
187 {
188  DatabaseParams params = GetMythDB()->GetDatabaseParams();
189 
190  params.m_dbHostName = m_dbHostName->getValue();
191  params.m_dbHostPing = m_dbHostPing->boolValue();
192  params.m_dbPort = m_dbPort->getValue().toInt();
193  params.m_dbUserName = m_dbUserName->getValue();
194  params.m_dbPassword = m_dbPassword->getValue();
195  params.m_dbName = m_dbName->getValue();
196  params.m_dbType = "QMYSQL";
197 
200 
201  params.m_wolEnabled = m_wolEnabled->boolValue();
202  params.m_wolReconnect = std::chrono::seconds(m_wolReconnect->intValue());
203  params.m_wolRetry = m_wolRetry->intValue();
204  params.m_wolCommand = m_wolCommand->getValue();
205 
206  gContext->SaveDatabaseParams(params);
207  //set all the children's m_haveChanged to false
209 }
210 
212 {
213  emit isClosing();
214 }
DatabaseSettings::DatabaseSettings
DatabaseSettings(QString DBhostOverride=QString())
Definition: dbsettings.cpp:13
MSqlQuery
QSqlQuery wrapper that fetches a DB connection from the connection pool.
Definition: mythdbcon.h:127
DatabaseSettings::m_dbHostName
TransTextEditSetting * m_dbHostName
Definition: dbsettings.h:26
DatabaseParams::m_dbHostName
QString m_dbHostName
database server
Definition: mythdbparams.h:22
TransMythUICheckBoxSetting
Definition: standardsettings.h:411
StandardSetting::getLabel
QString getLabel(void) const
Definition: standardsettings.h:35
StandardSetting::setValue
virtual void setValue(const QString &newValue)
Definition: standardsettings.cpp:170
TransTextEditSetting
Definition: standardsettings.h:161
DatabaseParams
Structure containing the basic Database parameters.
Definition: mythdbparams.h:10
dbsettings.h
TransMythUISpinBoxSetting
Definition: standardsettings.h:353
mythdbcon.h
MythContext::SaveDatabaseParams
bool SaveDatabaseParams(const DatabaseParams &params, bool force=false)
Definition: mythcontext.cpp:1727
StandardSetting::addTargetedChild
void addTargetedChild(const QString &value, StandardSetting *setting)
Definition: standardsettings.cpp:117
DatabaseSettings::isClosing
void isClosing(void)
DatabaseParams::m_dbType
QString m_dbType
database type (MySQL, Postgres, etc.)
Definition: mythdbparams.h:28
GetMythDB
MythDB * GetMythDB(void)
Definition: mythdb.cpp:50
DatabaseSettings::m_dbName
TransTextEditSetting * m_dbName
Definition: dbsettings.h:29
DatabaseSettings::m_wolReconnect
TransMythUISpinBoxSetting * m_wolReconnect
Definition: dbsettings.h:35
DatabaseSettings::m_localHostName
TransTextEditSetting * m_localHostName
Definition: dbsettings.h:33
DatabaseParams::m_wolReconnect
std::chrono::seconds m_wolReconnect
seconds to wait for reconnect
Definition: mythdbparams.h:35
DatabaseSettings::m_dbHostOverride
QString m_dbHostOverride
Definition: dbsettings.h:38
StandardSetting::addChild
virtual void addChild(StandardSetting *child)
Definition: standardsettings.cpp:71
DatabaseParams::m_dbPort
int m_dbPort
database port
Definition: mythdbparams.h:24
DatabaseSettings::m_dbPort
TransTextEditSetting * m_dbPort
Definition: dbsettings.h:28
DatabaseParams::m_dbHostPing
bool m_dbHostPing
Can we test connectivity using ping?
Definition: mythdbparams.h:23
DatabaseSettings::m_wolRetry
TransMythUISpinBoxSetting * m_wolRetry
Definition: dbsettings.h:36
DatabaseSettings::m_dbPassword
TransTextEditSetting * m_dbPassword
Definition: dbsettings.h:31
MSqlQuery::InitCon
static MSqlQueryInfo InitCon(ConnectionReuse _reuse=kNormalConnection)
Only use this in combination with MSqlQuery constructor.
Definition: mythdbcon.cpp:551
MythUISpinBoxSetting::intValue
int intValue()
Definition: standardsettings.cpp:676
StandardSetting::Load
virtual void Load(void)
Definition: standardsettings.cpp:214
StandardSetting::setHelpText
virtual void setHelpText(const QString &str)
Definition: standardsettings.h:37
StandardSetting::Save
virtual void Save(void)
Definition: standardsettings.cpp:233
StandardSetting::getValue
virtual QString getValue(void) const
Definition: standardsettings.h:52
DatabaseParams::m_dbPassword
QString m_dbPassword
DB password.
Definition: mythdbparams.h:26
DatabaseParams::m_wolRetry
int m_wolRetry
times to retry to reconnect
Definition: mythdbparams.h:36
DatabaseParams::m_dbName
QString m_dbName
database name
Definition: mythdbparams.h:27
MSqlQuery::isConnected
bool isConnected(void) const
Only updated once during object creation.
Definition: mythdbcon.h:137
DatabaseSettings::m_wolCommand
TransTextEditSetting * m_wolCommand
Definition: dbsettings.h:37
StandardSetting::setLabel
virtual void setLabel(QString str)
Definition: standardsettings.h:34
DatabaseSettings::Save
void Save(void) override
Definition: dbsettings.cpp:186
DatabaseSettings::m_dbHostPing
TransMythUICheckBoxSetting * m_dbHostPing
Definition: dbsettings.h:27
DatabaseParams::m_wolCommand
QString m_wolCommand
command to use for wake-on-lan
Definition: mythdbparams.h:37
std
Definition: mythchrono.h:23
DatabaseParams::m_dbUserName
QString m_dbUserName
DB user name.
Definition: mythdbparams.h:25
DatabaseSettings::Load
void Load(void) override
Definition: dbsettings.cpp:139
StandardSetting::getHelpText
QString getHelpText(void) const
Definition: standardsettings.h:38
mythcontext.h
DatabaseSettings::m_wolEnabled
TransMythUICheckBoxSetting * m_wolEnabled
Definition: dbsettings.h:34
DatabaseSettings::m_localEnabled
TransMythUICheckBoxSetting * m_localEnabled
Definition: dbsettings.h:32
DatabaseParams::m_localEnabled
bool m_localEnabled
true if localHostName is not default
Definition: mythdbparams.h:30
DatabaseSettings::~DatabaseSettings
~DatabaseSettings() override
Definition: dbsettings.cpp:211
DatabaseParams::m_wolEnabled
bool m_wolEnabled
true if wake-on-lan params are used
Definition: mythdbparams.h:34
MythUICheckBoxSetting::setValue
void setValue(const QString &newValue) override
Definition: standardsettings.cpp:721
DatabaseParams::m_localHostName
QString m_localHostName
name used for loading/saving settings
Definition: mythdbparams.h:31
gContext
MythContext * gContext
This global variable contains the MythContext instance for the application.
Definition: mythcontext.cpp:64
DatabaseSettings::m_dbUserName
TransTextEditSetting * m_dbUserName
Definition: dbsettings.h:30
mythdbparams.h
MythUICheckBoxSetting::boolValue
bool boolValue()
Definition: standardsettings.h:403