MythTV master
romedit.cpp
Go to the documentation of this file.
1// Qt
2#include <QChar> // Fix Qt6 GCC SFINAE warning
3#include <QImageReader>
4#include <QApplication>
5
6// MythtTV
18
19//MythGame
20#include "romedit.h"
21#include "rominfo.h"
22
24 const QString& name, RomInfo *romInfo)
25 : MythScreenType(parent, name),
26 m_workingRomInfo(new RomInfo(*romInfo))
27{
28}
29
31{
32 delete m_workingRomInfo;
33}
34
36{
37 if (!LoadWindowFromXML("game-ui.xml", "edit_metadata", this))
38 return false;
39
40 bool err = false;
41 UIUtilE::Assign(this, m_gamenameEdit, "title_edit", &err);
42 UIUtilE::Assign(this, m_genreEdit, "genre_edit", &err);
43 UIUtilE::Assign(this, m_yearEdit, "year_edit", &err);
44 UIUtilE::Assign(this, m_countryEdit, "country_edit", &err);
45 UIUtilE::Assign(this, m_plotEdit, "description_edit", &err);
46 UIUtilE::Assign(this, m_publisherEdit, "publisher_edit", &err);
47
48 UIUtilE::Assign(this, m_favoriteCheck, "favorite_check", &err);
49
50 UIUtilE::Assign(this, m_screenshotButton, "screenshot_button", &err);
51 UIUtilE::Assign(this, m_screenshotText, "screenshot_text", &err);
52 UIUtilE::Assign(this, m_fanartButton, "fanart_button", &err);
53 UIUtilE::Assign(this, m_fanartText, "fanart_text", &err);
54 UIUtilE::Assign(this, m_boxartButton, "coverart_button", &err);
55 UIUtilE::Assign(this, m_boxartText, "coverart_text", &err);
56
57 UIUtilE::Assign(this, m_doneButton, "done_button", &err);
58
59 if (err)
60 {
61 LOG(VB_GENERAL, LOG_ERR, "Cannot load screen 'edit_metadata'");
62 return false;
63 }
64
66
68
75
77
81
83
84 return true;
85}
86
87namespace
88{
90 {
91 QStringList ret;
92
93 QList<QByteArray> exts = QImageReader::supportedImageFormats();
94 ret.reserve(exts.size());
95 for (const auto & ext : std::as_const(exts))
96 ret.append(QString("*.").append(ext));
97
98 return ret;
99 }
100
101 void FindImagePopup(const QString &prefix, const QString &prefixAlt,
102 QObject &inst, const QString &returnEvent)
103 {
104 QString fp = prefix.isEmpty() ? prefixAlt : prefix;
105
106 MythScreenStack *popupStack =
107 GetMythMainWindow()->GetStack("popup stack");
108
109 auto *fb = new MythUIFileBrowser(popupStack, fp);
110 fb->SetNameFilter(GetSupportedImageExtensionFilter());
111 if (fb->Create())
112 {
113 fb->SetReturnEvent(&inst, returnEvent);
114 popupStack->AddScreen(fb);
115 }
116 else
117 {
118 delete fb;
119 }
120 }
121
122 const QString CEID_SCREENSHOTFILE = "screenshotfile";
123 const QString CEID_FANARTFILE = "fanartfile";
124 const QString CEID_BOXARTFILE = "boxartfile";
125}
126
128{
129 if (auto *dce = dynamic_cast<DialogCompletionEvent*>(event))
130 {
131 const QString resultid = dce->GetId();
132
133 if (resultid == CEID_FANARTFILE)
134 SetFanart(dce->GetResultText());
135 else if (resultid == CEID_SCREENSHOTFILE)
136 SetScreenshot(dce->GetResultText());
137 else if (resultid == CEID_BOXARTFILE)
138 SetBoxart(dce->GetResultText());
139 }
140}
141
143{
150
153
157}
158
159void EditRomInfoDialog::SetReturnEvent(QObject *retobject,
160 const QString &resultid)
161{
162 m_retObject = retobject;
163 m_id = resultid;
164}
165
167{
168 if (m_retObject)
169 {
170 auto *romInfo = new RomInfo(*m_workingRomInfo);
171 auto *dce = new DialogCompletionEvent(m_id, 0, "",
172 QVariant::fromValue(romInfo));
173
174 QApplication::postEvent(m_retObject, dce);
175 }
176 Close();
177}
178
180{
182}
183
185{
187}
188
190{
192}
193
195{
197}
198
200{
202}
203
205{
207}
208
210{
212}
213
215{
216 FindImagePopup(gCoreContext->GetSetting("mythgame.screenshotDir"),
217 GetConfDir() + "/MythGame/Screenshots",
218 *this, CEID_SCREENSHOTFILE);
219}
220
222{
223 FindImagePopup(gCoreContext->GetSetting("mythgame.fanartDir"),
224 GetConfDir() + "/MythGame/Fanart",
225 *this, CEID_FANARTFILE);
226}
227
229{
230 FindImagePopup(gCoreContext->GetSetting("mythgame.boxartDir"),
231 GetConfDir() + "/MythGame/Boxart",
232 *this, CEID_BOXARTFILE);
233}
234
236{
237 if (file.isEmpty())
238 return;
239
242}
243
245{
246 if (file.isEmpty())
247 return;
248
251}
252
254{
255 if (file.isEmpty())
256 return;
257
260}
261
262#include "moc_romedit.cpp"
Event dispatched from MythUI modal dialogs to a listening class containing a result of some form.
Definition: mythdialogbox.h:40
bool Create() override
Definition: romedit.cpp:35
MythUICheckBox * m_favoriteCheck
Definition: romedit.h:56
MythUITextEdit * m_gamenameEdit
Definition: romedit.h:50
MythUIButton * m_fanartButton
Definition: romedit.h:59
MythUIText * m_screenshotText
Definition: romedit.h:58
MythUITextEdit * m_plotEdit
Definition: romedit.h:54
MythUITextEdit * m_yearEdit
Definition: romedit.h:52
void SetGamename()
Definition: romedit.cpp:179
void SetReturnEvent(QObject *retobject, const QString &resultid)
Definition: romedit.cpp:159
RomInfo * m_workingRomInfo
Definition: romedit.h:46
MythUITextEdit * m_countryEdit
Definition: romedit.h:53
void SetPublisher()
Definition: romedit.cpp:204
EditRomInfoDialog(MythScreenStack *parent, const QString &name, RomInfo *romInfo)
Definition: romedit.cpp:23
MythUIButton * m_doneButton
Definition: romedit.h:63
~EditRomInfoDialog() override
Definition: romedit.cpp:30
MythUITextEdit * m_publisherEdit
Definition: romedit.h:55
MythUITextEdit * m_genreEdit
Definition: romedit.h:51
void FindScreenshot()
Definition: romedit.cpp:214
void SetScreenshot(const QString &file)
Definition: romedit.cpp:235
QString m_id
Definition: romedit.h:47
MythUIButton * m_screenshotButton
Definition: romedit.h:57
void SetFanart(const QString &file)
Definition: romedit.cpp:244
MythUIText * m_fanartText
Definition: romedit.h:60
QObject * m_retObject
Definition: romedit.h:48
MythUIText * m_boxartText
Definition: romedit.h:62
void SaveAndExit()
Definition: romedit.cpp:166
void ToggleFavorite()
Definition: romedit.cpp:209
void customEvent(QEvent *levent) override
Definition: romedit.cpp:127
void fillWidgets()
Definition: romedit.cpp:142
void SetBoxart(const QString &file)
Definition: romedit.cpp:253
MythUIButton * m_boxartButton
Definition: romedit.h:61
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:214
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:282
#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:101
QStringList GetSupportedImageExtensionFilter()
Definition: romedit.cpp:89
static bool Assign(ContainerType *container, UIType *&item, const QString &name, bool *err=nullptr)
Definition: mythuiutils.h:27