Go to the documentation of this file.
2 #include <QCoreApplication>
17 #define LOC QString("SGE(%1): ").arg(m_groupname)
22 m_group(std::move(group))
32 dispGroup = tr(
"Default",
"Default storage group");
34 dispGroup = QCoreApplication::translate(
"(StorageGroups)",
35 m_group.toLatin1().constData());
39 setLabel(tr(
"'%1' Storage Group Directories").arg(dispGroup));
43 setLabel(tr(
"Local '%1' Storage Group Directories").arg(dispGroup));
52 for (
int i = 0; i < actions.size() && !handled; i++)
54 const QString&
action = actions[i];
78 dispGroup = tr(
"Default",
"Default storage group");
80 dispGroup = QCoreApplication::translate(
"(StorageGroups)",
81 m_group.toLatin1().constData());
83 QString message = tr(
"Delete '%1' Storage Group?").arg(dispGroup);
88 message = tr(
"Delete '%1' Storage Group?\n(from remote hosts)").arg(dispGroup);
92 message = tr(
"Delete '%1' Storage Group?\n(from all hosts)").arg(dispGroup);
98 if (confirmDelete->Create())
106 delete confirmDelete;
116 QString sql =
"DELETE FROM storagegroup "
117 "WHERE groupname = :NAME";
124 sql.append(
" AND hostname != :HOSTNAME");
130 sql.append(
" AND hostname = :HOSTNAME");
135 if (!is_master_host || (
m_group ==
"Default"))
147 m_group(std::move(group))
153 QString dirnameTag(
":SETDIRNAME");
155 QString query(
"dirname = " + dirnameTag);
164 QString hostnameTag(
":WHEREHOST");
165 QString idTag(
":WHEREID");
167 QString query(
"hostname = " + hostnameTag +
" AND id = " + idTag);
170 bindings.insert(idTag,
m_id);
177 m_id(id), m_group(group)
187 for (
int i = 0; i < actions.size() && !handled; i++)
189 const QString&
action = actions[i];
203 tr(
"Remove '%1'\nDirectory From Storage Group?").arg(
getValue());
207 if (confirmDelete->Create())
215 delete confirmDelete;
224 query.
prepare(
"DELETE FROM storagegroup "
225 "WHERE groupname = :NAME "
226 "AND dirname = :DIRNAME "
227 "AND hostname = :HOSTNAME;");
247 query.
prepare(
"SELECT dirname, id FROM storagegroup "
248 "WHERE groupname = :NAME AND hostname = :HOSTNAME "
263 dirname = QString::fromUtf8(query.
value(0)
264 .toByteArray().constData());
287 settingdialog->SetTypeFilter(QDir::AllDirs | QDir::Drives);
289 if (settingdialog->Create())
291 settingdialog->SetReturnEvent(
this,
"editsetting");
296 delete settingdialog;
307 QString resultid = dce->
GetId();
309 if (resultid ==
"editsetting")
311 QString dirname = dce->GetResultText();
313 if (dirname.isEmpty())
316 if (!dirname.endsWith(
"/"))
320 query.
prepare(
"INSERT INTO storagegroup (groupname, hostname, dirname) "
321 "VALUES (:NAME, :HOSTNAME, :DIRNAME);");
347 setLabel(tr(
"Storage Groups (directories for new recordings)"));
349 setLabel(tr(
"Local Storage Groups (directories for new recordings)"));
353 const QString &value)
356 button->setLabel(label);
363 QStringList masterNames;
364 bool createAddDefaultButton =
false;
369 query.
prepare(
"SELECT distinct groupname "
371 "WHERE hostname = :HOSTNAME "
372 "ORDER BY groupname;");
382 names << query.
value(0).toString();
385 query.
prepare(
"SELECT distinct groupname "
387 "ORDER BY groupname;");
396 masterNames << query.
value(0).toString();
401 if (isMaster || names.contains(
"Default"))
408 createAddDefaultButton =
true;
416 if (names.contains(groupName))
419 createAddSpecialGroupButton[curGroup] =
false;
423 createAddSpecialGroupButton[curGroup] =
true;
429 while (curName < names.size())
431 if ((names[curName] !=
"Default") &&
437 if (createAddDefaultButton)
446 if (createAddSpecialGroupButton[curGroup])
449 .arg(QCoreApplication::translate(
"(StorageGroups)",
450 groupName.toLatin1().constData())),
465 while (curName < masterNames.size())
467 if ((masterNames[curName] !=
"Default") &&
469 (!names.contains(masterNames[curName])))
472 .arg(masterNames[curName]),
473 masterNames[curName]);
487 tr(
"Enter the name of the new storage group"));
489 if (settingdialog->Create())
497 delete settingdialog;
504 button->setLabel(name + tr(
" Storage Group Directories"));
QMap< QString, QVariant > MSqlBindings
typedef for a map of string -> string bindings for generic queries.
bool isActive(void) const
bool next(void)
Wrap QSqlQuery::next() so we can display the query results.
QSqlQuery wrapper that fetches a DB connection from the connection pool.
virtual void setValue(const QString &newValue)
StorageGroupDirSetting(int id, const QString &group)
StorageGroupDirStorage(StorageUser *_user, int id, QString group)
QVariant lastInsertId()
Return the id of the last inserted row.
QVariant value(int i) const
bool exec(void)
Wrap QSqlQuery::exec() so we can display SQL.
virtual void clearSettings()
virtual QString GetDBValue(void) const =0
QString GetWhereClause(MSqlBindings &bindings) const override
void DoDeleteSlot(bool doDelete)
bool canDelete(void) override
void AddSelection(const QString &label, const QString &value)
void settingsChanged(StandardSetting *selectedSetting=nullptr)
virtual void addChild(StandardSetting *child)
StorageGroupEditor(QString group)
bool TranslateKeyPress(const QString &Context, QKeyEvent *Event, QStringList &Actions, bool AllowJumps=true)
Get a list of actions for a keypress in the given context.
static MSqlQueryInfo InitCon(ConnectionReuse _reuse=kNormalConnection)
Only use this in combination with MSqlQuery constructor.
StandardSetting * getParent() const
static void DBError(const QString &where, const MSqlQuery &query)
bool keyPressEvent(QKeyEvent *event) override
virtual QString getValue(void) const
virtual bool keyPressEvent(QKeyEvent *event)
MythCoreContext * gCoreContext
This global variable contains the MythCoreContext instance for the app.
bool keyPressEvent(QKeyEvent *event) override
void SetTypeFilter(QDir::Filters filter)
void DoDeleteSlot(bool doDelete)
virtual void setLabel(QString str)
Dialog asking for user confirmation. Ok and optional Cancel button.
virtual void removeChild(StandardSetting *child)
void bindValue(const QString &placeholder, const QVariant &val)
Add a single binding.
Event dispatched from MythUI modal dialogs to a listening class containing a result of some form.
static const Type kEventType
static const QStringList kSpecialGroups
MythMainWindow * GetMythMainWindow(void)
void customEvent(QEvent *event) override
QString GetSetClause(MSqlBindings &bindings) const override
MythScreenStack * GetStack(const QString &Stackname)
QString GetHostName(void)
bool IsMasterHost(void)
is this the same host as the master
void CreateNewGroup(const QString &name)
Dialog prompting the user to enter a text string.
virtual void AddScreen(MythScreenType *screen, bool allowFade=true)
void ShowNewGroupDialog(void) const
StorageGroupListEditor(void)
void ShowFileBrowser(void)
bool prepare(const QString &query)
QSqlQuery::prepare() is not thread safe in Qt <= 3.3.2.