summaryrefslogtreecommitdiffstats
path: root/rbutil/rbutilqt/base/playerbuildinfo.h
diff options
context:
space:
mode:
authorDominik Riebeling <Dominik.Riebeling@gmail.com>2020-11-28 20:47:28 +0100
committerDominik Riebeling <Dominik.Riebeling@gmail.com>2020-12-03 22:25:12 +0100
commitb064a6cbb58a0db1a70fbac2e82242ce0c7509b1 (patch)
treec9090d367d237cbd408afbd24d5809e55a1a2653 /rbutil/rbutilqt/base/playerbuildinfo.h
parent78a01db47cac5fa67aeee6f1c5134f89c3e4944a (diff)
downloadrockbox-b064a6cbb58a0db1a70fbac2e82242ce0c7509b1.tar.gz
rockbox-b064a6cbb58a0db1a70fbac2e82242ce0c7509b1.zip
rbutil: Rework and merge player and build server info handling.
Handling the data for players from rbutil.ini and the build-info data from the server is closely related. Splitting things up into different classes only creates tightly coupling, which is unnecessary, and the need to differentiate between them in the application. Merge both classes into a single one and rework handling so the application doesn't have to deal with two separate classes anymore. Furthermore, change URL templates to use new values from build-info instead of hard coding them. Change-Id: Ica550973ce23d1559110782add52bc214eba552d
Diffstat (limited to 'rbutil/rbutilqt/base/playerbuildinfo.h')
-rw-r--r--rbutil/rbutilqt/base/playerbuildinfo.h106
1 files changed, 106 insertions, 0 deletions
diff --git a/rbutil/rbutilqt/base/playerbuildinfo.h b/rbutil/rbutilqt/base/playerbuildinfo.h
new file mode 100644
index 0000000000..81d7d97312
--- /dev/null
+++ b/rbutil/rbutilqt/base/playerbuildinfo.h
@@ -0,0 +1,106 @@
+/***************************************************************************
+ * __________ __ ___.
+ * Open \______ \ ____ ____ | | _\_ |__ _______ ___
+ * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
+ * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
+ * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
+ * \/ \/ \/ \/ \/
+ *
+ * Copyright (C) 2020 by Dominik Riebeling
+ *
+ * All files in this archive are subject to the GNU General Public License.
+ * See the file COPYING in the source tree root for full license agreement.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ ****************************************************************************/
+
+#ifndef PLAYERBUILDINFO_H
+#define PLAYERBUILDINFO_H
+
+#include <QSettings>
+
+#define STATUS_RETIRED 0
+#define STATUS_UNUSABLE 1
+#define STATUS_UNSTABLE 2
+#define STATUS_STABLE 3
+
+// Provide information about both player and builds.
+// For build info data retrieved from the build server has to be passed.
+class PlayerBuildInfo : public QObject
+{
+public:
+
+ enum BuildType {
+ TypeRelease,
+ TypeCandidate,
+ TypeDaily,
+ TypeDevel,
+ };
+ enum BuildInfo {
+ BuildUrl,
+ BuildVersion,
+ BuildManualUrl,
+ BuildVoiceUrl,
+ BuildVoiceLangs,
+ BuildSourceUrl,
+ BuildFontUrl,
+
+ DoomUrl,
+ Duke3DUrl,
+ PuzzFontsUrl,
+ QuakeUrl,
+ Wolf3DUrl,
+ XWorldUrl,
+ MidiPatchsetUrl,
+ };
+ enum DeviceInfo {
+ BuildStatus,
+
+ DisplayName,
+ BootloaderMethod,
+ BootloaderName,
+ BootloaderFile,
+ BootloaderFilter,
+ Encoder,
+ Brand,
+ PlayerPicture,
+ };
+
+ enum SystemUrl {
+ BootloaderUrl,
+ BuildInfoUrl,
+ GenlangUrl,
+ ThemesUrl,
+ ThemesInfoUrl,
+ RbutilUrl,
+ };
+
+ static PlayerBuildInfo* instance();
+
+ //! Update with build information from server
+ void setBuildInfo(QString file);
+
+ // Get information about a device. This data does not depend on the build type.
+ QVariant value(DeviceInfo item, QString target = "");
+
+ // Get build information for currently selected player.
+ QVariant value(BuildInfo item, BuildType type);
+
+ // Get fixed download URL information
+ QVariant value(SystemUrl item);
+
+ QString statusAsString(QString target = "");
+
+protected:
+ explicit PlayerBuildInfo();
+
+private:
+ static PlayerBuildInfo* infoInstance;
+ QSettings* serverInfo;
+ QSettings playerInfo;
+
+};
+
+#endif