Go to the documentation of this file.
2 #include <QCoreApplication>
18 #define LOC QString("SGE(%1): ").arg(m_groupname)
23 m_group(
std::move(group))
33 dispGroup = tr(
"Default",
"Default storage group");
35 dispGroup = QCoreApplication::translate(
"(StorageGroups)",
36 m_group.toLatin1().constData());
40 setLabel(tr(
"'%1' Storage Group Directories").arg(dispGroup));
44 setLabel(tr(
"Local '%1' Storage Group Directories").arg(dispGroup));
53 for (
int i = 0; i < actions.size() && !handled; i++)
55 QString
action = actions[i];
79 dispGroup = tr(
"Default",
"Default storage group");
81 dispGroup = QCoreApplication::translate(
"(StorageGroups)",
82 m_group.toLatin1().constData());
84 QString message = tr(
"Delete '%1' Storage Group?").arg(dispGroup);
89 message = tr(
"Delete '%1' Storage Group?\n(from remote hosts)").arg(dispGroup);
93 message = tr(
"Delete '%1' Storage Group?\n(from all hosts)").arg(dispGroup);
99 if (confirmDelete->Create())
106 delete confirmDelete;
115 QString sql =
"DELETE FROM storagegroup "
116 "WHERE groupname = :NAME";
123 sql.append(
" AND hostname != :HOSTNAME");
129 sql.append(
" AND hostname = :HOSTNAME");
134 if (!is_master_host || (
m_group ==
"Default"))
146 m_group(
std::move(group))
152 QString dirnameTag(
":SETDIRNAME");
154 QString query(
"dirname = " + dirnameTag);
163 QString hostnameTag(
":WHEREHOST");
164 QString idTag(
":WHEREID");
166 QString query(
"hostname = " + hostnameTag +
" AND id = " + idTag);
169 bindings.insert(idTag,
m_id);
176 m_id(id), m_group(group)
186 for (
int i = 0; i < actions.size() && !handled; i++)
188 QString
action = actions[i];
202 tr(
"Remove '%1'\nDirectory From Storage Group?").arg(
getValue());
206 if (confirmDelete->Create())
213 delete confirmDelete;
221 query.
prepare(
"DELETE FROM storagegroup "
222 "WHERE groupname = :NAME "
223 "AND dirname = :DIRNAME "
224 "AND hostname = :HOSTNAME;");
244 query.
prepare(
"SELECT dirname, id FROM storagegroup "
245 "WHERE groupname = :NAME AND hostname = :HOSTNAME "
260 dirname = QString::fromUtf8(query.
value(0)
261 .toByteArray().constData());
284 settingdialog->SetTypeFilter(QDir::AllDirs | QDir::Drives);
286 if (settingdialog->Create())
288 settingdialog->SetReturnEvent(
this,
"editsetting");
292 delete settingdialog;
302 QString resultid = dce->
GetId();
304 if (resultid ==
"editsetting")
306 QString dirname = dce->GetResultText();
308 if (dirname.isEmpty())
311 if (!dirname.endsWith(
"/"))
315 query.
prepare(
"INSERT INTO storagegroup (groupname, hostname, dirname) "
316 "VALUES (:NAME, :HOSTNAME, :DIRNAME);");
342 setLabel(tr(
"Storage Groups (directories for new recordings)"));
344 setLabel(tr(
"Local Storage Groups (directories for new recordings)"));
348 const QString &value)
351 button->setLabel(label);
358 QStringList masterNames;
359 bool createAddDefaultButton =
false;
364 query.
prepare(
"SELECT distinct groupname "
366 "WHERE hostname = :HOSTNAME "
367 "ORDER BY groupname;");
377 names << query.
value(0).toString();
380 query.
prepare(
"SELECT distinct groupname "
382 "ORDER BY groupname;");
391 masterNames << query.
value(0).toString();
396 if (isMaster || names.contains(
"Default"))
402 createAddDefaultButton =
true;
409 if (names.contains(groupName))
412 createAddSpecialGroupButton[curGroup] =
false;
415 createAddSpecialGroupButton[curGroup] =
true;
420 while (curName < names.size())
422 if ((names[curName] !=
"Default") &&
428 if (createAddDefaultButton)
437 if (createAddSpecialGroupButton[curGroup])
440 .arg(QCoreApplication::translate(
"(StorageGroups)",
441 groupName.toLatin1().constData())),
456 while (curName < masterNames.size())
458 if ((masterNames[curName] !=
"Default") &&
460 (!names.contains(masterNames[curName])))
463 .arg(masterNames[curName]),
464 masterNames[curName]);
478 tr(
"Enter the name of the new storage group"));
480 if (settingdialog->Create())
488 delete settingdialog;
495 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 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.