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
7 #include "libmythbase/mythdb.h"
10 
11 #include "dbsettings.h"
12 #include "mythcontext.h"
13 
14 DatabaseSettings::DatabaseSettings(QString DBhostOverride) :
15  m_dbHostOverride(std::move(DBhostOverride))
16 {
17  setLabel(DatabaseSettings::tr("Database Configuration"));
18 
20  if (query.isConnected())
21  {
23  DatabaseSettings::tr("All database settings take effect when "
24  "you restart this program."));
25  }
26  else
27  {
29  DatabaseSettings::tr("MythTV could not connect to the database. "
30  "Please verify your database settings "
31  "below."));
32  }
33 
35  m_dbHostName->setLabel(DatabaseSettings::tr("Hostname"));
37  DatabaseSettings::tr("The host name or IP address of "
38  "the machine hosting the database. "
39  "This information is required."));
41 
42  // Ping database host is no longer used
43 
45  m_dbPort->setLabel(DatabaseSettings::tr("Port"));
47  DatabaseSettings::tr("The port number the database is running "
48  "on. Leave blank if using the default "
49  "port (3306)."));
51 
53  m_dbName->setLabel(QCoreApplication::translate("(Common)",
54  "Database name"));
56  DatabaseSettings::tr("The name of the database. "
57  "This information is required."));
59 
61  m_dbUserName->setLabel(QCoreApplication::translate("(Common)", "User"));
63  DatabaseSettings::tr("The user name to use while "
64  "connecting to the database. "
65  "This information is required."));
67 
69  m_dbPassword->setLabel(DatabaseSettings::tr("Password"));
71  DatabaseSettings::tr("The password to use while "
72  "connecting to the database. "
73  "This information is required."));
75 
78  DatabaseSettings::tr("Use custom identifier for frontend "
79  "preferences"));
81  DatabaseSettings::tr("If this frontend's host name "
82  "changes often, check this box "
83  "and provide a network-unique "
84  "name to identify it. "
85  "If unchecked, the frontend "
86  "machine's local host name will "
87  "be used to save preferences in "
88  "the database."));
90 
92  m_localHostName->setLabel(DatabaseSettings::tr("Custom identifier"));
94  DatabaseSettings::tr("An identifier to use while "
95  "saving the settings for this "
96  "frontend."));
98 
101  DatabaseSettings::tr("Enable database server wakeup"));
103  DatabaseSettings::tr("If enabled, the frontend will use "
104  "database wakeup parameters to "
105  "reconnect to the database server."));
107 
108  m_wolReconnect = new TransMythUISpinBoxSetting(0, 60, 1, 1);
109  m_wolReconnect->setLabel(DatabaseSettings::tr("Reconnect time"));
111  DatabaseSettings::tr("The time in seconds to wait for "
112  "the server to wake up."));
114 
115  m_wolRetry = new TransMythUISpinBoxSetting(1, 10, 1, 1);
116  m_wolRetry->setLabel(DatabaseSettings::tr("Retry attempts"));
118  DatabaseSettings::tr("The number of retries to wake the "
119  "server before the frontend gives "
120  "up."));
122 
124  m_wolCommand->setLabel(DatabaseSettings::tr("Wake command or MAC"));
126  DatabaseSettings::tr("The command executed on this "
127  "frontend or server MAC to wake up the database "
128  "server (eg. sudo /etc/init.d/mysql "
129  "restart or 32:D2:86:00:17:A8)."));
131 }
132 
134 {
135  DatabaseParams params = GetMythDB()->GetDatabaseParams();
136 
137  if (params.m_dbHostName.isEmpty() ||
138  params.m_dbUserName.isEmpty() ||
139  params.m_dbPassword.isEmpty() ||
140  params.m_dbName.isEmpty())
141  {
142  setHelpText(getHelpText() + "\n" +
143  DatabaseSettings::tr("Required fields are"
144  " marked with an asterisk (*)."));
145  }
146 
147  if (params.m_dbHostName.isEmpty())
148  {
151  }
152  else
153  {
155  }
156 
157  if (params.m_dbPort)
158  m_dbPort->setValue(QString::number(params.m_dbPort));
159 
161  if (params.m_dbUserName.isEmpty())
164  if (params.m_dbPassword.isEmpty())
166  m_dbName->setValue(params.m_dbName);
167  if (params.m_dbName.isEmpty())
168  m_dbName->setLabel("* " + m_dbName->getLabel());
169 
172 
174  m_wolReconnect->setValue(params.m_wolReconnect.count());
175  m_wolRetry->setValue(params.m_wolRetry);
177  //set all the children's m_haveChanged to false
179 }
181 {
182  DatabaseParams params = GetMythDB()->GetDatabaseParams();
183 
184  params.m_dbHostName = m_dbHostName->getValue();
185  // Ping database host is no longer used
186  params.m_dbHostPing = false;
187  params.m_dbPort = m_dbPort->getValue().toInt();
188  params.m_dbUserName = m_dbUserName->getValue();
189  params.m_dbPassword = m_dbPassword->getValue();
190  params.m_dbName = m_dbName->getValue();
191  params.m_dbType = "QMYSQL";
192 
195 
196  params.m_wolEnabled = m_wolEnabled->boolValue();
197  params.m_wolReconnect = std::chrono::seconds(m_wolReconnect->intValue());
198  params.m_wolRetry = m_wolRetry->intValue();
199  params.m_wolCommand = m_wolCommand->getValue();
200 
201  GetMythDB()->SaveDatabaseParams(params, false);
202  //set all the children's m_haveChanged to false
204 }
205 
207 {
208  emit isClosing();
209 }
DatabaseSettings::DatabaseSettings
DatabaseSettings(QString DBhostOverride=QString())
Definition: dbsettings.cpp:14
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:28
DatabaseParams::m_dbHostName
QString m_dbHostName
database server
Definition: mythdbparams.h:21
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:169
mythdb.h
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
StandardSetting::addTargetedChild
void addTargetedChild(const QString &value, StandardSetting *setting)
Definition: standardsettings.cpp:116
DatabaseSettings::isClosing
void isClosing(void)
DatabaseParams::m_dbType
QString m_dbType
database type (MySQL, Postgres, etc.)
Definition: mythdbparams.h:27
GetMythDB
MythDB * GetMythDB(void)
Definition: mythdb.cpp:51
DatabaseSettings::m_dbName
TransTextEditSetting * m_dbName
Definition: dbsettings.h:31
DatabaseSettings::m_wolReconnect
TransMythUISpinBoxSetting * m_wolReconnect
Definition: dbsettings.h:37
DatabaseSettings::m_localHostName
TransTextEditSetting * m_localHostName
Definition: dbsettings.h:35
DatabaseParams::m_wolReconnect
std::chrono::seconds m_wolReconnect
seconds to wait for reconnect
Definition: mythdbparams.h:34
DatabaseSettings::m_dbHostOverride
QString m_dbHostOverride
Definition: dbsettings.h:40
StandardSetting::addChild
virtual void addChild(StandardSetting *child)
Definition: standardsettings.cpp:70
DatabaseParams::m_dbPort
int m_dbPort
database port
Definition: mythdbparams.h:23
DatabaseSettings::m_dbPort
TransTextEditSetting * m_dbPort
Definition: dbsettings.h:30
DatabaseParams::m_dbHostPing
bool m_dbHostPing
No longer used.
Definition: mythdbparams.h:22
DatabaseSettings::m_wolRetry
TransMythUISpinBoxSetting * m_wolRetry
Definition: dbsettings.h:38
DatabaseSettings::m_dbPassword
TransTextEditSetting * m_dbPassword
Definition: dbsettings.h:33
MSqlQuery::InitCon
static MSqlQueryInfo InitCon(ConnectionReuse _reuse=kNormalConnection)
Only use this in combination with MSqlQuery constructor.
Definition: mythdbcon.cpp:550
MythUISpinBoxSetting::intValue
int intValue()
Definition: standardsettings.cpp:685
StandardSetting::Load
virtual void Load(void)
Definition: standardsettings.cpp:213
StandardSetting::setHelpText
virtual void setHelpText(const QString &str)
Definition: standardsettings.h:37
StandardSetting::Save
virtual void Save(void)
Definition: standardsettings.cpp:232
StandardSetting::getValue
virtual QString getValue(void) const
Definition: standardsettings.h:52
DatabaseParams::m_dbPassword
QString m_dbPassword
DB password.
Definition: mythdbparams.h:25
DatabaseParams::m_wolRetry
int m_wolRetry
times to retry to reconnect
Definition: mythdbparams.h:35
DatabaseParams::m_dbName
QString m_dbName
database name
Definition: mythdbparams.h:26
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:39
StandardSetting::setLabel
virtual void setLabel(QString str)
Definition: standardsettings.h:34
DatabaseSettings::Save
void Save(void) override
Definition: dbsettings.cpp:180
DatabaseParams::m_wolCommand
QString m_wolCommand
command to use for wake-on-lan
Definition: mythdbparams.h:36
DatabaseParams::m_dbUserName
QString m_dbUserName
DB user name.
Definition: mythdbparams.h:24
DatabaseSettings::Load
void Load(void) override
Definition: dbsettings.cpp:133
StandardSetting::getHelpText
QString getHelpText(void) const
Definition: standardsettings.h:38
mythcontext.h
DatabaseSettings::m_wolEnabled
TransMythUICheckBoxSetting * m_wolEnabled
Definition: dbsettings.h:36
DatabaseSettings::m_localEnabled
TransMythUICheckBoxSetting * m_localEnabled
Definition: dbsettings.h:34
DatabaseParams::m_localEnabled
bool m_localEnabled
true if localHostName is not default
Definition: mythdbparams.h:29
DatabaseSettings::~DatabaseSettings
~DatabaseSettings() override
Definition: dbsettings.cpp:206
DatabaseParams::m_wolEnabled
bool m_wolEnabled
true if wake-on-lan params are used
Definition: mythdbparams.h:33
MythUICheckBoxSetting::setValue
void setValue(const QString &newValue) override
Definition: standardsettings.cpp:732
DatabaseParams::m_localHostName
QString m_localHostName
name used for loading/saving settings
Definition: mythdbparams.h:30
DatabaseSettings::m_dbUserName
TransTextEditSetting * m_dbUserName
Definition: dbsettings.h:32
mythdbparams.h
MythUICheckBoxSetting::boolValue
bool boolValue()
Definition: standardsettings.h:403