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)
192 for (
int i = 0; i < actions.size() && !handled; i++)
194 const QString&
action = actions[i];
208 tr(
"Remove '%1'\nDirectory From Storage Group?").arg(
getValue());
212 if (confirmDelete->Create())
220 delete confirmDelete;
229 query.
prepare(
"DELETE FROM storagegroup "
230 "WHERE groupname = :NAME "
231 "AND dirname = :DIRNAME "
232 "AND hostname = :HOSTNAME;");
252 query.
prepare(
"SELECT dirname, id FROM storagegroup "
253 "WHERE groupname = :NAME AND hostname = :HOSTNAME "
268 dirname = QString::fromUtf8(query.
value(0)
269 .toByteArray().constData());
292 settingdialog->SetTypeFilter(QDir::AllDirs | QDir::Drives);
294 if (settingdialog->Create())
296 settingdialog->SetReturnEvent(
this,
"editsetting");
301 delete settingdialog;
312 QString resultid = dce->
GetId();
314 if (resultid ==
"editsetting")
316 QString dirname = dce->GetResultText();
318 if (dirname.isEmpty())
321 if (!dirname.endsWith(
"/"))
325 query.
prepare(
"INSERT INTO storagegroup (groupname, hostname, dirname) "
326 "VALUES (:NAME, :HOSTNAME, :DIRNAME);");
352 setLabel(tr(
"Storage Groups (directories for new recordings)"));
354 setLabel(tr(
"Local Storage Groups (directories for new recordings)"));
358 const QString &value)
361 button->setLabel(label);
368 QStringList masterNames;
369 bool createAddDefaultButton =
false;
374 query.
prepare(
"SELECT distinct groupname "
376 "WHERE hostname = :HOSTNAME "
377 "ORDER BY groupname;");
387 names << query.
value(0).toString();
390 query.
prepare(
"SELECT distinct groupname "
392 "ORDER BY groupname;");
401 masterNames << query.
value(0).toString();
406 if (isMaster || names.contains(
"Default"))
413 createAddDefaultButton =
true;
421 if (names.contains(groupName))
424 createAddSpecialGroupButton[curGroup] =
false;
428 createAddSpecialGroupButton[curGroup] =
true;
434 while (curName < names.size())
436 if ((names[curName] !=
"Default") &&
442 if (createAddDefaultButton)
451 if (createAddSpecialGroupButton[curGroup])
454 .arg(QCoreApplication::translate(
"(StorageGroups)",
455 groupName.toLatin1().constData())),
470 while (curName < masterNames.size())
472 if ((masterNames[curName] !=
"Default") &&
474 (!names.contains(masterNames[curName])))
477 .arg(masterNames[curName]),
478 masterNames[curName]);
492 tr(
"Enter the name of the new storage group"));
494 if (settingdialog->Create())
502 delete settingdialog;
509 button->setLabel(name + tr(
" Storage Group Directories"));
Event dispatched from MythUI modal dialogs to a listening class containing a result of some form.
static const Type kEventType
QSqlQuery wrapper that fetches a DB connection from the connection pool.
bool prepare(const QString &query)
QSqlQuery::prepare() is not thread safe in Qt <= 3.3.2.
QVariant value(int i) const
bool isActive(void) const
bool exec(void)
Wrap QSqlQuery::exec() so we can display SQL.
void bindValue(const QString &placeholder, const QVariant &val)
Add a single binding.
QVariant lastInsertId()
Return the id of the last inserted row.
bool next(void)
Wrap QSqlQuery::next() so we can display the query results.
static MSqlQueryInfo InitCon(ConnectionReuse _reuse=kNormalConnection)
Only use this in combination with MSqlQuery constructor.
Dialog asking for user confirmation.
QString GetHostName(void)
bool IsMasterHost(void)
is this the same host as the master
static void DBError(const QString &where, const MSqlQuery &query)
bool TranslateKeyPress(const QString &Context, QKeyEvent *Event, QStringList &Actions, bool AllowJumps=true)
Get a list of actions for a keypress in the given context.
MythScreenStack * GetStack(const QString &Stackname)
virtual void AddScreen(MythScreenType *screen, bool allowFade=true)
Dialog prompting the user to enter a text string.
void SetTypeFilter(QDir::Filters filter)
virtual void addChild(StandardSetting *child)
virtual void clearSettings()
void settingsChanged(StandardSetting *selectedSetting=nullptr)
StandardSetting * getParent() const
virtual void removeChild(StandardSetting *child)
virtual void setValue(const QString &newValue)
Storage * GetStorage(void) const
virtual bool keyPressEvent(QKeyEvent *event)
virtual QString getValue(void) const
virtual void setLabel(QString str)
StorageGroupDirSetting(int id, const QString &group)
~StorageGroupDirSetting() override
void DoDeleteSlot(bool doDelete)
bool keyPressEvent(QKeyEvent *event) override
StorageGroupDirStorage(StorageUser *_user, int id, QString group)
QString GetWhereClause(MSqlBindings &bindings) const override
QString GetSetClause(MSqlBindings &bindings) const override
void customEvent(QEvent *event) override
void ShowFileBrowser(void)
StorageGroupEditor(QString group)
void DoDeleteSlot(bool doDelete)
bool keyPressEvent(QKeyEvent *event) override
bool canDelete(void) override
StorageGroupListEditor(void)
void CreateNewGroup(const QString &name)
void ShowNewGroupDialog(void) const
void AddSelection(const QString &label, const QString &value)
static const QStringList kSpecialGroups
virtual QString GetDBValue(void) const =0
MythCoreContext * gCoreContext
This global variable contains the MythCoreContext instance for the app.
QMap< QString, QVariant > MSqlBindings
typedef for a map of string -> string bindings for generic queries.
MythMainWindow * GetMythMainWindow(void)