summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDominik Riebeling <Dominik.Riebeling@gmail.com>2020-11-19 19:54:25 +0100
committerDominik Riebeling <Dominik.Riebeling@gmail.com>2020-11-19 21:32:41 +0100
commitf608de723c863abc0e32cd7584c046eceb910d78 (patch)
tree030cf71ffd37729b189b0731bdbb70b96943a403
parentf8fb4274ee56025551ddad84232c02c2a49dfcce (diff)
downloadrockbox-f608de723c863abc0e32cd7584c046eceb910d78.tar.gz
rockbox-f608de723c863abc0e32cd7584c046eceb910d78.zip
rbutil: Convert ServerInfo to singleton.
Change-Id: I29d94eb6bae084754e5e3f337c41de8354ba123c
-rw-r--r--rbutil/rbutilqt/base/serverinfo.cpp14
-rw-r--r--rbutil/rbutilqt/base/serverinfo.h21
-rw-r--r--rbutil/rbutilqt/configure.cpp5
-rw-r--r--rbutil/rbutilqt/gui/manualwidget.cpp10
-rw-r--r--rbutil/rbutilqt/gui/selectiveinstallwidget.cpp16
-rw-r--r--rbutil/rbutilqt/rbutilqt.cpp6
-rw-r--r--rbutil/rbutilqt/test/test-serverinfo.cpp4
7 files changed, 45 insertions, 31 deletions
diff --git a/rbutil/rbutilqt/base/serverinfo.cpp b/rbutil/rbutilqt/base/serverinfo.cpp
index 544348c3b1..08f7f770b7 100644
--- a/rbutil/rbutilqt/base/serverinfo.cpp
+++ b/rbutil/rbutilqt/base/serverinfo.cpp
@@ -21,7 +21,15 @@
21#include "systeminfo.h" 21#include "systeminfo.h"
22#include "Logger.h" 22#include "Logger.h"
23 23
24static QSettings* serverSettings = nullptr; 24ServerInfo* ServerInfo::infoInstance = nullptr;
25
26ServerInfo* ServerInfo::instance()
27{
28 if (infoInstance == nullptr) {
29 infoInstance = new ServerInfo();
30 }
31 return infoInstance;
32}
25 33
26// server infos 34// server infos
27const static struct { 35const static struct {
@@ -131,10 +139,10 @@ QVariant ServerInfo::platformValue(enum ServerInfos info, QString platform)
131 return value; 139 return value;
132} 140}
133 141
134QString ServerInfo::statusToString(int status) 142QString ServerInfo::statusAsString(QString platform)
135{ 143{
136 QString value; 144 QString value;
137 switch(status) 145 switch(platformValue(CurStatus, platform).toInt())
138 { 146 {
139 case STATUS_RETIRED: 147 case STATUS_RETIRED:
140 value = tr("Stable (Retired)"); 148 value = tr("Stable (Retired)");
diff --git a/rbutil/rbutilqt/base/serverinfo.h b/rbutil/rbutilqt/base/serverinfo.h
index e8d7cd5b74..9affcb6032 100644
--- a/rbutil/rbutilqt/base/serverinfo.h
+++ b/rbutil/rbutilqt/base/serverinfo.h
@@ -18,6 +18,9 @@
18 * 18 *
19 ****************************************************************************/ 19 ****************************************************************************/
20 20
21// Parse and provide information from build server via build-info file.
22// This is a singleton.
23
21#ifndef SERVERINFO_H 24#ifndef SERVERINFO_H
22#define SERVERINFO_H 25#define SERVERINFO_H
23 26
@@ -47,17 +50,21 @@ class ServerInfo : public QObject
47 RelCandidateUrl, 50 RelCandidateUrl,
48 }; 51 };
49 52
53 static ServerInfo* instance();
54
50 //! read in buildinfo file 55 //! read in buildinfo file
51 static void readBuildInfo(QString file); 56 void readBuildInfo(QString file);
52 //! get a value from server info for a named platform. 57 //! get a value from server info for a named platform.
53 static QVariant platformValue(enum ServerInfos setting, QString platform = ""); 58 QVariant platformValue(enum ServerInfos setting, QString platform = "");
54 //! Convert status number to string 59 //! Get status number as string
55 static QString statusToString(int status); 60 QString statusAsString(QString platform = "");
56 61
57 private: 62 protected:
58 //! you shouldnt call this, its a fully static class 63 ServerInfo() : serverSettings(nullptr) {}
59 ServerInfo() {}
60 64
65 private:
66 static ServerInfo* infoInstance;
67 QSettings* serverSettings;
61 68
62}; 69};
63 70
diff --git a/rbutil/rbutilqt/configure.cpp b/rbutil/rbutilqt/configure.cpp
index d4457a34ed..fc67cb410e 100644
--- a/rbutil/rbutilqt/configure.cpp
+++ b/rbutil/rbutilqt/configure.cpp
@@ -385,9 +385,8 @@ void Config::setDevices()
385 continue; 385 continue;
386 // construct display name 386 // construct display name
387 QString curname = SystemInfo::platformValue( 387 QString curname = SystemInfo::platformValue(
388 SystemInfo::Name, platformList.at(it)).toString() + 388 SystemInfo::Name, platformList.at(it)).toString()
389 " (" + ServerInfo::statusToString(ServerInfo::platformValue( 389 + " (" + ServerInfo::instance()->statusAsString(platformList.at(it)) + ")";
390 ServerInfo::CurStatus, platformList.at(it)).toInt()) +")";
391 LOG_INFO() << "add supported device:" << brands.at(c) << curname; 390 LOG_INFO() << "add supported device:" << brands.at(c) << curname;
392 w2 = new QTreeWidgetItem(w, QStringList(curname)); 391 w2 = new QTreeWidgetItem(w, QStringList(curname));
393 w2->setData(0, Qt::UserRole, platformList.at(it)); 392 w2->setData(0, Qt::UserRole, platformList.at(it));
diff --git a/rbutil/rbutilqt/gui/manualwidget.cpp b/rbutil/rbutilqt/gui/manualwidget.cpp
index ba8f6f6064..c10288df10 100644
--- a/rbutil/rbutilqt/gui/manualwidget.cpp
+++ b/rbutil/rbutilqt/gui/manualwidget.cpp
@@ -42,9 +42,9 @@ void ManualWidget::updateManual()
42 if(!m_platform.isEmpty()) 42 if(!m_platform.isEmpty())
43 { 43 {
44 ui.labelPdfManual->setText(tr("<a href='%1'>PDF Manual</a>") 44 ui.labelPdfManual->setText(tr("<a href='%1'>PDF Manual</a>")
45 .arg(ServerInfo::platformValue(ServerInfo::ManualPdfUrl, m_platform).toString())); 45 .arg(ServerInfo::instance()->platformValue(ServerInfo::ManualPdfUrl, m_platform).toString()));
46 ui.labelHtmlManual->setText(tr("<a href='%1'>HTML Manual (opens in browser)</a>") 46 ui.labelHtmlManual->setText(tr("<a href='%1'>HTML Manual (opens in browser)</a>")
47 .arg(ServerInfo::platformValue(ServerInfo::ManualHtmlUrl, m_platform).toString())); 47 .arg(ServerInfo::instance()->platformValue(ServerInfo::ManualHtmlUrl, m_platform).toString()));
48 } 48 }
49 else { 49 else {
50 ui.labelPdfManual->setText(tr("Select a device for a link to the correct manual")); 50 ui.labelPdfManual->setText(tr("Select a device for a link to the correct manual"));
@@ -65,7 +65,7 @@ void ManualWidget::downloadManual(void)
65 QMessageBox::Yes | QMessageBox::No) != QMessageBox::Yes) { 65 QMessageBox::Yes | QMessageBox::No) != QMessageBox::Yes) {
66 return; 66 return;
67 } 67 }
68 QString manual = ServerInfo::platformValue(ServerInfo::ManualPdfUrl).toString(); 68 QString manual = ServerInfo::instance()->platformValue(ServerInfo::ManualPdfUrl).toString();
69 69
70 ProgressLoggerGui* logger = new ProgressLoggerGui(this); 70 ProgressLoggerGui* logger = new ProgressLoggerGui(this);
71 logger->show(); 71 logger->show();
@@ -75,12 +75,12 @@ void ManualWidget::downloadManual(void)
75 installer->setCache(true); 75 installer->setCache(true);
76 76
77 if(ui.radioPdf->isChecked()) { 77 if(ui.radioPdf->isChecked()) {
78 installer->setUrl(ServerInfo::platformValue( 78 installer->setUrl(ServerInfo::instance()->platformValue(
79 ServerInfo::ManualPdfUrl, m_platform).toString()); 79 ServerInfo::ManualPdfUrl, m_platform).toString());
80 installer->setLogSection("Manual (PDF)"); 80 installer->setLogSection("Manual (PDF)");
81 } 81 }
82 else { 82 else {
83 installer->setUrl(ServerInfo::platformValue( 83 installer->setUrl(ServerInfo::instance()->platformValue(
84 ServerInfo::ManualZipUrl, m_platform).toString()); 84 ServerInfo::ManualZipUrl, m_platform).toString());
85 installer->setLogSection("Manual (HTML)"); 85 installer->setLogSection("Manual (HTML)");
86 } 86 }
diff --git a/rbutil/rbutilqt/gui/selectiveinstallwidget.cpp b/rbutil/rbutilqt/gui/selectiveinstallwidget.cpp
index f875844c9c..805a432877 100644
--- a/rbutil/rbutilqt/gui/selectiveinstallwidget.cpp
+++ b/rbutil/rbutilqt/gui/selectiveinstallwidget.cpp
@@ -69,7 +69,7 @@ void SelectiveInstallWidget::selectedVersionChanged(int index)
69 if(current == "development") 69 if(current == "development")
70 ui.selectedDescription->setText(tr("The development version is " 70 ui.selectedDescription->setText(tr("The development version is "
71 "updated on every code change. Last update was on %1").arg( 71 "updated on every code change. Last update was on %1").arg(
72 ServerInfo::platformValue(ServerInfo::BleedingDate).toString())); 72 ServerInfo::instance()->platformValue(ServerInfo::BleedingDate).toString()));
73 if(current == "rc") 73 if(current == "rc")
74 ui.selectedDescription->setText(tr("This will eventually become the " 74 ui.selectedDescription->setText(tr("This will eventually become the "
75 "next Rockbox version. Install it to help testing.")); 75 "next Rockbox version. Install it to help testing."));
@@ -91,11 +91,11 @@ void SelectiveInstallWidget::updateVersion(void)
91 91
92 // re-populate all version items 92 // re-populate all version items
93 m_versions.clear(); 93 m_versions.clear();
94 m_versions.insert("release", ServerInfo::platformValue(ServerInfo::CurReleaseVersion).toString()); 94 m_versions.insert("release", ServerInfo::instance()->platformValue(ServerInfo::CurReleaseVersion).toString());
95 // Don't populate RC or development selections if target has been retired. 95 // Don't populate RC or development selections if target has been retired.
96 if (ServerInfo::platformValue(ServerInfo::CurStatus).toInt() != STATUS_RETIRED) { 96 if (ServerInfo::instance()->platformValue(ServerInfo::CurStatus).toInt() != STATUS_RETIRED) {
97 m_versions.insert("development", ServerInfo::platformValue(ServerInfo::BleedingRevision).toString()); 97 m_versions.insert("development", ServerInfo::instance()->platformValue(ServerInfo::BleedingRevision).toString());
98 m_versions.insert("rc", ServerInfo::platformValue(ServerInfo::RelCandidateVersion).toString()); 98 m_versions.insert("rc", ServerInfo::instance()->platformValue(ServerInfo::RelCandidateVersion).toString());
99 } 99 }
100 100
101 ui.selectedVersion->clear(); 101 ui.selectedVersion->clear();
@@ -385,11 +385,11 @@ void SelectiveInstallWidget::installRockbox(void)
385 RbSettings::setValue(RbSettings::Build, selected); 385 RbSettings::setValue(RbSettings::Build, selected);
386 RbSettings::sync(); 386 RbSettings::sync();
387 387
388 if(selected == "release") url = ServerInfo::platformValue( 388 if(selected == "release") url = ServerInfo::instance()->platformValue(
389 ServerInfo::CurReleaseUrl, m_target).toString(); 389 ServerInfo::CurReleaseUrl, m_target).toString();
390 else if(selected == "development") url = ServerInfo::platformValue( 390 else if(selected == "development") url = ServerInfo::instance()->platformValue(
391 ServerInfo::CurDevelUrl, m_target).toString(); 391 ServerInfo::CurDevelUrl, m_target).toString();
392 else if(selected == "rc") url = ServerInfo::platformValue( 392 else if(selected == "rc") url = ServerInfo::instance()->platformValue(
393 ServerInfo::RelCandidateUrl, m_target).toString(); 393 ServerInfo::RelCandidateUrl, m_target).toString();
394 394
395 //! install build 395 //! install build
diff --git a/rbutil/rbutilqt/rbutilqt.cpp b/rbutil/rbutilqt/rbutilqt.cpp
index 0fb2ba562e..cd5bea57b9 100644
--- a/rbutil/rbutilqt/rbutilqt.cpp
+++ b/rbutil/rbutilqt/rbutilqt.cpp
@@ -252,7 +252,7 @@ void RbUtilQt::downloadDone(bool error)
252 252
253 // read info into ServerInfo object 253 // read info into ServerInfo object
254 buildInfo.open(); 254 buildInfo.open();
255 ServerInfo::readBuildInfo(buildInfo.fileName()); 255 ServerInfo::instance()->readBuildInfo(buildInfo.fileName());
256 buildInfo.close(); 256 buildInfo.close();
257 257
258 ui.statusbar->showMessage(tr("Download build information finished."), 5000); 258 ui.statusbar->showMessage(tr("Download build information finished."), 5000);
@@ -408,7 +408,7 @@ void RbUtilQt::updateDevice()
408 QString brand = SystemInfo::platformValue(SystemInfo::Brand).toString(); 408 QString brand = SystemInfo::platformValue(SystemInfo::Brand).toString();
409 QString name 409 QString name
410 = QString("%1 (%2)").arg(SystemInfo::platformValue(SystemInfo::Name).toString(), 410 = QString("%1 (%2)").arg(SystemInfo::platformValue(SystemInfo::Name).toString(),
411 ServerInfo::statusToString(ServerInfo::platformValue(ServerInfo::CurStatus).toInt())); 411 ServerInfo::instance()->statusAsString());
412 ui.labelDevice->setText(QString("<b>%1 %2</b>").arg(brand, name)); 412 ui.labelDevice->setText(QString("<b>%1 %2</b>").arg(brand, name));
413 413
414 QString mountpoint = RbSettings::value(RbSettings::Mountpoint).toString(); 414 QString mountpoint = RbSettings::value(RbSettings::Mountpoint).toString();
@@ -789,7 +789,7 @@ void RbUtilQt::changeEvent(QEvent *e)
789 if(e->type() == QEvent::LanguageChange) { 789 if(e->type() == QEvent::LanguageChange) {
790 ui.retranslateUi(this); 790 ui.retranslateUi(this);
791 buildInfo.open(); 791 buildInfo.open();
792 ServerInfo::readBuildInfo(buildInfo.fileName()); 792 ServerInfo::instance()->readBuildInfo(buildInfo.fileName());
793 buildInfo.close(); 793 buildInfo.close();
794 updateDevice(); 794 updateDevice();
795 } else { 795 } else {
diff --git a/rbutil/rbutilqt/test/test-serverinfo.cpp b/rbutil/rbutilqt/test/test-serverinfo.cpp
index bda939676c..bc6024e843 100644
--- a/rbutil/rbutilqt/test/test-serverinfo.cpp
+++ b/rbutil/rbutilqt/test/test-serverinfo.cpp
@@ -110,11 +110,11 @@ void TestServerInfo::testMain()
110 tf.write(testinfo); 110 tf.write(testinfo);
111 tf.close(); 111 tf.close();
112 112
113 ServerInfo::readBuildInfo(filename); 113 ServerInfo::instance()->readBuildInfo(filename);
114 114
115 unsigned int i; 115 unsigned int i;
116 for(i = 0; i < sizeof(testdata) / sizeof(struct testvector); i++) { 116 for(i = 0; i < sizeof(testdata) / sizeof(struct testvector); i++) {
117 QString result = ServerInfo::platformValue(testdata[i].entry, testdata[i].target).toString(); 117 QString result = ServerInfo::instance()->platformValue(testdata[i].entry, testdata[i].target).toString();
118 QCOMPARE(result, QString(testdata[i].expected)); 118 QCOMPARE(result, QString(testdata[i].expected));
119 } 119 }
120} 120}