summaryrefslogtreecommitdiffstats
path: root/utils/rbutilqt/base/playerbuildinfo.h
diff options
context:
space:
mode:
Diffstat (limited to 'utils/rbutilqt/base/playerbuildinfo.h')
-rw-r--r--utils/rbutilqt/base/playerbuildinfo.h121
1 files changed, 121 insertions, 0 deletions
diff --git a/utils/rbutilqt/base/playerbuildinfo.h b/utils/rbutilqt/base/playerbuildinfo.h
new file mode 100644
index 0000000000..85fc2ac6dc
--- /dev/null
+++ b/utils/rbutilqt/base/playerbuildinfo.h
@@ -0,0 +1,121 @@
+/***************************************************************************
+ * __________ __ ___.
+ * 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,
+
+ TargetNamesAll,
+ TargetNamesEnabled,
+ LanguageInfo,
+ LanguageList,
+ UsbIdErrorList,
+ UsbIdTargetList,
+ };
+
+ 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 information about a device. Make a numeric match
+ // (only sensible implementation for USB IDs)
+ QVariant value(DeviceInfo item, unsigned int match);
+
+ // 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:
+ //! Return a list with all target names (as used internally).
+ //! @all false filter out all targets with status = disabled.
+ QStringList targetNames(bool all);
+
+ static PlayerBuildInfo* infoInstance;
+ QSettings* serverInfo;
+ QSettings playerInfo;
+
+};
+
+#endif