rbutil: Replace stringly types build type handling with enum.

Avoid having to repeat the same strings for lookup again and again and
use an enum instead, which is also less error prone.

Change-Id: I6ee8393948dbce97cb53850a6d8bdc4de12b4167
This commit is contained in:
Dominik Riebeling 2020-11-21 19:51:09 +01:00
parent c2dacf6736
commit 0d2257d1f7
2 changed files with 46 additions and 37 deletions

View file

@ -63,23 +63,29 @@ SelectiveInstallWidget::SelectiveInstallWidget(QWidget* parent) : QWidget(parent
void SelectiveInstallWidget::selectedVersionChanged(int index) void SelectiveInstallWidget::selectedVersionChanged(int index)
{ {
m_buildtype = ui.selectedVersion->itemData(index).toString(); m_buildtype = static_cast<SystemInfo::BuildType>(ui.selectedVersion->itemData(index).toInt());
bool voice = true; bool voice = true;
if(m_buildtype == "release") { switch(m_buildtype) {
case SystemInfo::BuildRelease:
ui.selectedDescription->setText(tr("This is the latest stable " ui.selectedDescription->setText(tr("This is the latest stable "
"release available.")); "release available."));
voice = true; voice = true;
} break;
if(m_buildtype == "development") { case SystemInfo::BuildCurrent:
ui.selectedDescription->setText(tr("The development version is " ui.selectedDescription->setText(tr("The development version is "
"updated on every code change. Last update was on %1").arg( "updated on every code change. Last update was on %1").arg(
ServerInfo::instance()->platformValue(ServerInfo::BleedingDate).toString())); ServerInfo::instance()->platformValue(ServerInfo::BleedingDate).toString()));
voice = false; voice = false;
} break;
if(m_buildtype == "rc") { case SystemInfo::BuildCandidate:
ui.selectedDescription->setText(tr("This will eventually become the " ui.selectedDescription->setText(tr("This will eventually become the "
"next Rockbox version. Install it to help testing.")); "next Rockbox version. Install it to help testing."));
voice = false; voice = false;
break;
case SystemInfo::BuildDaily:
ui.selectedDescription->setText(tr("Daily updated development version."));
voice = true;
break;
} }
ui.voiceCheckbox->setEnabled(voice); ui.voiceCheckbox->setEnabled(voice);
ui.voiceCombobox->setEnabled(voice); ui.voiceCombobox->setEnabled(voice);
@ -102,25 +108,28 @@ void SelectiveInstallWidget::updateVersion(void)
// re-populate all version items // re-populate all version items
m_versions.clear(); m_versions.clear();
m_versions.insert("release", ServerInfo::instance()->platformValue(ServerInfo::CurReleaseVersion).toString()); m_versions.insert(SystemInfo::BuildRelease, ServerInfo::instance()->platformValue(
ServerInfo::CurReleaseVersion).toString());
// Don't populate RC or development selections if target has been retired. // Don't populate RC or development selections if target has been retired.
if (ServerInfo::instance()->platformValue(ServerInfo::CurStatus).toInt() != STATUS_RETIRED) { if (ServerInfo::instance()->platformValue(ServerInfo::CurStatus).toInt() != STATUS_RETIRED) {
m_versions.insert("development", ServerInfo::instance()->platformValue(ServerInfo::BleedingRevision).toString()); m_versions.insert(SystemInfo::BuildCurrent, ServerInfo::instance()->platformValue(
m_versions.insert("rc", ServerInfo::instance()->platformValue(ServerInfo::RelCandidateVersion).toString()); ServerInfo::BleedingRevision).toString());
m_versions.insert(SystemInfo::BuildCandidate, ServerInfo::instance()->platformValue(
ServerInfo::RelCandidateVersion).toString());
} }
ui.selectedVersion->clear(); ui.selectedVersion->clear();
if(!m_versions["release"].isEmpty()) { if(!m_versions[SystemInfo::BuildRelease].isEmpty()) {
ui.selectedVersion->addItem(tr("Stable Release (Version %1)").arg( ui.selectedVersion->addItem(tr("Stable Release (Version %1)").arg(
m_versions["release"]), "release"); m_versions[SystemInfo::BuildRelease]), SystemInfo::BuildRelease);
} }
if(!m_versions["development"].isEmpty()) { if(!m_versions[SystemInfo::BuildCurrent].isEmpty()) {
ui.selectedVersion->addItem(tr("Development Version (Revison %1)").arg( ui.selectedVersion->addItem(tr("Development Version (Revison %1)").arg(
m_versions["development"]), "development"); m_versions[SystemInfo::BuildCurrent]), SystemInfo::BuildCurrent);
} }
if(!m_versions["rc"].isEmpty()) { if(!m_versions[SystemInfo::BuildCandidate].isEmpty()) {
ui.selectedVersion->addItem(tr("Release Candidate (Revison %1)").arg( ui.selectedVersion->addItem(tr("Release Candidate (Revison %1)").arg(
m_versions["rc"]), "rc"); m_versions[SystemInfo::BuildCandidate]), SystemInfo::BuildCandidate);
} }
// select previously selected version // select previously selected version
@ -128,7 +137,7 @@ void SelectiveInstallWidget::updateVersion(void)
if(index != -1) { if(index != -1) {
ui.selectedVersion->setCurrentIndex(index); ui.selectedVersion->setCurrentIndex(index);
} }
else if(!m_versions["release"].isEmpty()) { else if(!m_versions[SystemInfo::BuildRelease].isEmpty()) {
index = ui.selectedVersion->findData("release"); index = ui.selectedVersion->findData("release");
ui.selectedVersion->setCurrentIndex(index); ui.selectedVersion->setCurrentIndex(index);
} }
@ -418,13 +427,20 @@ void SelectiveInstallWidget::installRockbox(void)
RbSettings::setValue(RbSettings::Build, m_buildtype); RbSettings::setValue(RbSettings::Build, m_buildtype);
RbSettings::sync(); RbSettings::sync();
if(m_buildtype == "release") url = ServerInfo::instance()->platformValue( switch(m_buildtype) {
ServerInfo::CurReleaseUrl, m_target).toString(); case SystemInfo::BuildRelease:
else if(m_buildtype == "development") url = ServerInfo::instance()->platformValue( url = ServerInfo::instance()->platformValue(
ServerInfo::CurDevelUrl, m_target).toString(); ServerInfo::CurReleaseUrl, m_target).toString();
else if(m_buildtype == "rc") url = ServerInfo::instance()->platformValue( break;
ServerInfo::RelCandidateUrl, m_target).toString(); case SystemInfo::BuildCurrent:
url = ServerInfo::instance()->platformValue(
ServerInfo::CurDevelUrl, m_target).toString();
break;
case SystemInfo::BuildCandidate:
url = ServerInfo::instance()->platformValue(
ServerInfo::RelCandidateUrl, m_target).toString();
break;
}
//! install build //! install build
if(m_zipinstaller != nullptr) m_zipinstaller->deleteLater(); if(m_zipinstaller != nullptr) m_zipinstaller->deleteLater();
m_zipinstaller = new ZipInstaller(this); m_zipinstaller = new ZipInstaller(this);
@ -459,14 +475,11 @@ void SelectiveInstallWidget::installFonts(void)
QString fontsurl; QString fontsurl;
QString logversion; QString logversion;
QString relversion = installInfo.release(); QString relversion = installInfo.release();
if(relversion.isEmpty()) { if(!relversion.isEmpty()) {
// release is empty for non-release versions (i.e. daily / current) // release is empty for non-release versions (i.e. daily / current)
fontsurl = SystemInfo::value(SystemInfo::FontUrl, SystemInfo::BuildDaily).toString();
}
else {
fontsurl = SystemInfo::value(SystemInfo::FontUrl, SystemInfo::BuildRelease).toString();
logversion = installInfo.release(); logversion = installInfo.release();
} }
fontsurl = SystemInfo::value(SystemInfo::FontUrl, m_buildtype).toString();
fontsurl.replace("%RELEASEVER%", relversion); fontsurl.replace("%RELEASEVER%", relversion);
// create new zip installer // create new zip installer
@ -501,20 +514,15 @@ void SelectiveInstallWidget::installVoicefile(void)
QString voiceurl; QString voiceurl;
QString logversion; QString logversion;
QString relversion = installInfo.release(); QString relversion = installInfo.release();
if(m_buildtype == "release") { if(m_buildtype != SystemInfo::BuildRelease) {
// release is empty for non-release versions (i.e. daily / current) // release is empty for non-release versions (i.e. daily / current)
voiceurl = SystemInfo::value(SystemInfo::VoiceUrl, SystemInfo::BuildRelease).toString();
}
else {
voiceurl = SystemInfo::value(SystemInfo::VoiceUrl, SystemInfo::BuildDaily).toString();
logversion = installInfo.release(); logversion = installInfo.release();
} }
voiceurl = SystemInfo::value(SystemInfo::VoiceUrl, m_buildtype).toString();
voiceurl.replace("%RELVERSION%", m_versions[m_buildtype]); voiceurl.replace("%RELVERSION%", m_versions[m_buildtype]);
voiceurl.replace("%MODEL%", m_target); voiceurl.replace("%MODEL%", m_target);
voiceurl.replace("%LANGUAGE%", lang); voiceurl.replace("%LANGUAGE%", lang);
LOG_INFO() << "voicurl" << voiceurl;
// create new zip installer // create new zip installer
if(m_zipinstaller != nullptr) m_zipinstaller->deleteLater(); if(m_zipinstaller != nullptr) m_zipinstaller->deleteLater();
m_zipinstaller = new ZipInstaller(this); m_zipinstaller = new ZipInstaller(this);

View file

@ -24,6 +24,7 @@
#include "progressloggergui.h" #include "progressloggergui.h"
#include "zipinstaller.h" #include "zipinstaller.h"
#include "themesinstallwindow.h" #include "themesinstallwindow.h"
#include "systeminfo.h"
class SelectiveInstallWidget : public QWidget class SelectiveInstallWidget : public QWidget
{ {
@ -61,9 +62,9 @@ class SelectiveInstallWidget : public QWidget
ProgressLoggerGui *m_logger; ProgressLoggerGui *m_logger;
int m_installStage; int m_installStage;
ZipInstaller *m_zipinstaller; ZipInstaller *m_zipinstaller;
QMap<QString, QString> m_versions; QMap<SystemInfo::BuildType, QString> m_versions;
ThemesInstallWindow *m_themesinstaller; ThemesInstallWindow *m_themesinstaller;
QString m_buildtype; SystemInfo::BuildType m_buildtype;
}; };
#endif #endif