MythTV master
romedit.cpp
Go to the documentation of this file.
1// Qt
2#include <QImageReader>
3#include <QApplication>
4
5// MythtTV
17
18//MythGame
19#include "romedit.h"
20#include "rominfo.h"
21
23 const QString& name, RomInfo *romInfo)
24 : MythScreenType(parent, name),
25 m_workingRomInfo(new RomInfo(*romInfo))
26{
27}
28
30{
31 delete m_workingRomInfo;
32}
33
35{
36 if (!LoadWindowFromXML("game-ui.xml", "edit_metadata", this))
37 return false;
38
39 bool err = false;
40 UIUtilE::Assign(this, m_gamenameEdit, "title_edit", &err);
41 UIUtilE::Assign(this, m_genreEdit, "genre_edit", &err);
42 UIUtilE::Assign(this, m_yearEdit, "year_edit", &err);
43 UIUtilE::Assign(this, m_countryEdit, "country_edit", &err);
44 UIUtilE::Assign(this, m_plotEdit, "description_edit", &err);
45 UIUtilE::Assign(this, m_publisherEdit, "publisher_edit", &err);
46
47 UIUtilE::Assign(this, m_favoriteCheck, "favorite_check", &err);
48
49 UIUtilE::Assign(this, m_screenshotButton, "screenshot_button", &err);
50 UIUtilE::Assign(this, m_screenshotText, "screenshot_text", &err);
51 UIUtilE::Assign(this, m_fanartButton, "fanart_button", &err);
52 UIUtilE::Assign(this, m_fanartText, "fanart_text", &err);
53 UIUtilE::Assign(this, m_boxartButton, "coverart_button", &err);
54 UIUtilE::Assign(this, m_boxartText, "coverart_text", &err);
55
56 UIUtilE::Assign(this, m_doneButton, "done_button", &err);
57
58 if (err)
59 {
60 LOG(VB_GENERAL, LOG_ERR, "Cannot load screen 'edit_metadata'");
61 return false;
62 }
63
65
67
74
76
80
82
83 return true;
84}
85
86namespace
87{
89 {
90 QStringList ret;
91
92 QList<QByteArray> exts = QImageReader::supportedImageFormats();
93 for (const auto & ext : std::as_const(exts))
94 ret.append(QString("*.").append(ext));
95
96 return ret;
97 }
98
99 void FindImagePopup(const QString &prefix, const QString &prefixAlt,
100 QObject &inst, const QString &returnEvent)
101 {
102 QString fp = prefix.isEmpty() ? prefixAlt : prefix;
103
104 MythScreenStack *popupStack =
105 GetMythMainWindow()->GetStack("popup stack");
106
107 auto *fb = new MythUIFileBrowser(popupStack, fp);
108 fb->SetNameFilter(GetSupportedImageExtensionFilter());
109 if (fb->Create())
110 {
111 fb->SetReturnEvent(&inst, returnEvent);
112 popupStack->AddScreen(fb);
113 }
114 else
115 {
116 delete fb;
117 }
118 }
119
120 const QString CEID_SCREENSHOTFILE = "screenshotfile";
121 const QString CEID_FANARTFILE = "fanartfile";
122 const QString CEID_BOXARTFILE = "boxartfile";
123}
124
126{
127 if (auto *dce = dynamic_cast<DialogCompletionEvent*>(event))
128 {
129 const QString resultid = dce->GetId();
130
131 if (resultid == CEID_FANARTFILE)
132 SetFanart(dce->GetResultText());
133 else if (resultid == CEID_SCREENSHOTFILE)
134 SetScreenshot(dce->GetResultText());
135 else if (resultid == CEID_BOXARTFILE)
136 SetBoxart(dce->GetResultText());
137 }
138}
139
141{
148
151
155}
156
157void EditRomInfoDialog::SetReturnEvent(QObject *retobject,
158 const QString &resultid)
159{
160 m_retObject = retobject;
161 m_id = resultid;
162}
163
165{
166 if (m_retObject)
167 {
168 auto *romInfo = new RomInfo(*m_workingRomInfo);
169 auto *dce = new DialogCompletionEvent(m_id, 0, "",
170 QVariant::fromValue(romInfo));
171
172 QApplication::postEvent(m_retObject, dce);
173 }
174 Close();
175}
176
178{
180}
181
183{
185}
186
188{
190}
191
193{
195}
196
198{
200}
201
203{
205}
206
208{
210}
211
213{
214 FindImagePopup(gCoreContext->GetSetting("mythgame.screenshotDir"),
215 GetConfDir() + "/MythGame/Screenshots",
216 *this, CEID_SCREENSHOTFILE);
217}
218
220{
221 FindImagePopup(gCoreContext->GetSetting("mythgame.fanartDir"),
222 GetConfDir() + "/MythGame/Fanart",
223 *this, CEID_FANARTFILE);
224}
225
227{
228 FindImagePopup(gCoreContext->GetSetting("mythgame.boxartDir"),
229 GetConfDir() + "/MythGame/Boxart",
230 *this, CEID_BOXARTFILE);
231}
232
234{
235 if (file.isEmpty())
236 return;
237
240}
241
243{
244 if (file.isEmpty())
245 return;
246
249}
250
252{
253 if (file.isEmpty())
254 return;
255
258}
Event dispatched from MythUI modal dialogs to a listening class containing a result of some form.
Definition: mythdialogbox.h:41
bool Create() override
Definition: romedit.cpp:34
MythUICheckBox * m_favoriteCheck
Definition: romedit.h:54
MythUITextEdit * m_gamenameEdit
Definition: romedit.h:48
MythUIButton * m_fanartButton
Definition: romedit.h:57
MythUIText * m_screenshotText
Definition: romedit.h:56
MythUITextEdit * m_plotEdit
Definition: romedit.h:52
MythUITextEdit * m_yearEdit
Definition: romedit.h:50
void SetGamename()
Definition: romedit.cpp:177
void SetReturnEvent(QObject *retobject, const QString &resultid)
Definition: romedit.cpp:157
RomInfo * m_workingRomInfo
Definition: romedit.h:44
MythUITextEdit * m_countryEdit
Definition: romedit.h:51
void SetPublisher()
Definition: romedit.cpp:202
EditRomInfoDialog(MythScreenStack *parent, const QString &name, RomInfo *romInfo)
Definition: romedit.cpp:22
MythUIButton * m_doneButton
Definition: romedit.h:61
~EditRomInfoDialog() override
Definition: romedit.cpp:29
MythUITextEdit * m_publisherEdit
Definition: romedit.h:53
MythUITextEdit * m_genreEdit
Definition: romedit.h:49
void FindScreenshot()
Definition: romedit.cpp:212
void SetScreenshot(const QString &file)
Definition: romedit.cpp:233
QString m_id
Definition: romedit.h:45
MythUIButton * m_screenshotButton
Definition: romedit.h:55
void SetFanart(const QString &file)
Definition: romedit.cpp:242
MythUIText * m_fanartText
Definition: romedit.h:58
QObject * m_retObject
Definition: romedit.h:46
MythUIText * m_boxartText
Definition: romedit.h:60
void SaveAndExit()
Definition: romedit.cpp:164
void ToggleFavorite()
Definition: romedit.cpp:207
void customEvent(QEvent *levent) override
Definition: romedit.cpp:125
void fillWidgets()
Definition: romedit.cpp:140
void SetBoxart(const QString &file)
Definition: romedit.cpp:251
MythUIButton * m_boxartButton
Definition: romedit.h:59
QString GetSetting(const QString &key, const QString &defaultval="")
MythScreenStack * GetStack(const QString &Stackname)
virtual void AddScreen(MythScreenType *screen, bool allowFade=true)
Screen in which all other widgets are contained and rendered.
void BuildFocusList(void)
virtual void Close()
void Clicked()
void SetCheckState(MythUIStateType::StateType state)
void valueChanged()
QString GetText(void) const
void SetText(const QString &text, bool moveCursor=true)
void valueChanged()
virtual void SetText(const QString &text)
Definition: mythuitext.cpp:115
QString Screenshot() const
Definition: rominfo.h:63
QString Country() const
Definition: rominfo.h:84
QString Plot() const
Definition: rominfo.h:102
QString Gamename() const
Definition: rominfo.h:78
void setBoxart(const QString &lboxart)
Definition: rominfo.h:70
QString Fanart() const
Definition: rominfo.h:66
void setFavorite(bool updateDatabase=false)
Definition: rominfo.cpp:213
void setGenre(const QString &lgenre)
Definition: rominfo.h:82
QString Boxart() const
Definition: rominfo.h:69
void setPlot(const QString &lplot)
Definition: rominfo.h:103
void setCountry(const QString &lcountry)
Definition: rominfo.h:85
void setFanart(const QString &lfanart)
Definition: rominfo.h:67
void setYear(const QString &lyear)
Definition: rominfo.h:112
QString Genre() const
Definition: rominfo.h:81
bool Favorite() const
Definition: rominfo.h:117
void setScreenshot(const QString &lscreenshot)
Definition: rominfo.h:64
void setPublisher(const QString &lpublisher)
Definition: rominfo.h:106
QString Publisher() const
Definition: rominfo.h:105
void setGamename(const QString &lgamename)
Definition: rominfo.h:79
QString Year() const
Definition: rominfo.h:111
static bool LoadWindowFromXML(const QString &xmlfile, const QString &windowname, MythUIType *parent)
MythCoreContext * gCoreContext
This global variable contains the MythCoreContext instance for the app.
QString GetConfDir(void)
Definition: mythdirs.cpp:263
#define LOG(_MASK_, _LEVEL_, _QSTRING_)
Definition: mythlogging.h:39
MythMainWindow * GetMythMainWindow(void)
void FindImagePopup(const QString &prefix, const QString &prefixAlt, QObject &inst, const QString &returnEvent)
Definition: romedit.cpp:99
QStringList GetSupportedImageExtensionFilter()
Definition: romedit.cpp:88
static bool Assign(ContainerType *container, UIType *&item, const QString &name, bool *err=nullptr)
Definition: mythuiutils.h:27