summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDominik Riebeling <Dominik.Riebeling@gmail.com>2020-12-04 22:35:44 +0100
committerDominik Riebeling <Dominik.Riebeling@gmail.com>2020-12-05 11:19:32 +0100
commitac5fc26085e390cb55a3a5fd186a8091adcae2d4 (patch)
tree02bd09b3978a6345077d732f264f3d52e0845363
parentc51c6c1eb314bb0d5037f3d8f260e9657e62b2f9 (diff)
downloadrockbox-ac5fc26085e390cb55a3a5fd186a8091adcae2d4.tar.gz
rockbox-ac5fc26085e390cb55a3a5fd186a8091adcae2d4.zip
rbutil: Make target list part of new player info.
Also remove the unused cases. Change-Id: Ic53c12c68f9d62d9c3e4406641355893e137bcf7
-rw-r--r--rbutil/rbutilqt/base/playerbuildinfo.cpp47
-rw-r--r--rbutil/rbutilqt/base/playerbuildinfo.h7
-rw-r--r--rbutil/rbutilqt/base/systeminfo.cpp33
-rw-r--r--rbutil/rbutilqt/base/systeminfo.h12
-rw-r--r--rbutil/rbutilqt/configure.cpp26
5 files changed, 59 insertions, 66 deletions
diff --git a/rbutil/rbutilqt/base/playerbuildinfo.cpp b/rbutil/rbutilqt/base/playerbuildinfo.cpp
index fb8b121e8f..f49917cfef 100644
--- a/rbutil/rbutilqt/base/playerbuildinfo.cpp
+++ b/rbutil/rbutilqt/base/playerbuildinfo.cpp
@@ -57,15 +57,17 @@ const static struct {
57 PlayerBuildInfo::DeviceInfo item; 57 PlayerBuildInfo::DeviceInfo item;
58 const char* name; 58 const char* name;
59} PlayerInfoList[] = { 59} PlayerInfoList[] = {
60 { PlayerBuildInfo::BuildStatus, "status/:target:" }, 60 { PlayerBuildInfo::BuildStatus, "status/:target:" },
61 { PlayerBuildInfo::DisplayName, ":target:/name" }, 61 { PlayerBuildInfo::DisplayName, ":target:/name" },
62 { PlayerBuildInfo::BootloaderMethod, ":target:/bootloadermethod" }, 62 { PlayerBuildInfo::BootloaderMethod, ":target:/bootloadermethod" },
63 { PlayerBuildInfo::BootloaderName, ":target:/bootloadername" }, 63 { PlayerBuildInfo::BootloaderName, ":target:/bootloadername" },
64 { PlayerBuildInfo::BootloaderFile, ":target:/bootloaderfile" }, 64 { PlayerBuildInfo::BootloaderFile, ":target:/bootloaderfile" },
65 { PlayerBuildInfo::BootloaderFilter, ":target:/bootloaderfilter" }, 65 { PlayerBuildInfo::BootloaderFilter, ":target:/bootloaderfilter" },
66 { PlayerBuildInfo::Encoder, ":target:/encoder" }, 66 { PlayerBuildInfo::Encoder, ":target:/encoder" },
67 { PlayerBuildInfo::Brand, ":target:/brand" }, 67 { PlayerBuildInfo::Brand, ":target:/brand" },
68 { PlayerBuildInfo::PlayerPicture, ":target:/playerpic" }, 68 { PlayerBuildInfo::PlayerPicture, ":target:/playerpic" },
69 { PlayerBuildInfo::TargetNamesAll, "" },
70 { PlayerBuildInfo::TargetNamesEnabled, "" },
69}; 71};
70 72
71const static struct { 73const static struct {
@@ -216,6 +218,14 @@ QVariant PlayerBuildInfo::value(DeviceInfo item, QString target)
216 result = -1; 218 result = -1;
217 break; 219 break;
218 } 220 }
221 case TargetNamesAll:
222 // list of all internal target names. Doesn't depend on the passed target.
223 result = targetNames(true);
224 break;
225 case TargetNamesEnabled:
226 // list of all non-disabled target names. Doesn't depend on the passed target.
227 result = targetNames(false);
228 break;
219 229
220 default: 230 default:
221 result = playerInfo.value(s); 231 result = playerInfo.value(s);
@@ -263,3 +273,22 @@ QString PlayerBuildInfo::statusAsString(QString platform)
263 273
264 return result; 274 return result;
265} 275}
276
277
278QStringList PlayerBuildInfo::targetNames(bool all)
279{
280 QStringList result;
281 playerInfo.beginGroup("platforms");
282 QStringList a = playerInfo.childKeys();
283 playerInfo.endGroup();
284 for(int i = 0; i < a.size(); i++)
285 {
286 QString target = playerInfo.value("platforms/" + a.at(i), "null").toString();
287 if(playerInfo.value(target + "/status").toString() != "disabled" || all) {
288 result.append(target);
289 }
290 }
291 result.removeDuplicates();
292 return result;
293}
294
diff --git a/rbutil/rbutilqt/base/playerbuildinfo.h b/rbutil/rbutilqt/base/playerbuildinfo.h
index 81d7d97312..5307148ff5 100644
--- a/rbutil/rbutilqt/base/playerbuildinfo.h
+++ b/rbutil/rbutilqt/base/playerbuildinfo.h
@@ -66,6 +66,9 @@ public:
66 Encoder, 66 Encoder,
67 Brand, 67 Brand,
68 PlayerPicture, 68 PlayerPicture,
69
70 TargetNamesAll,
71 TargetNamesEnabled,
69 }; 72 };
70 73
71 enum SystemUrl { 74 enum SystemUrl {
@@ -97,6 +100,10 @@ protected:
97 explicit PlayerBuildInfo(); 100 explicit PlayerBuildInfo();
98 101
99private: 102private:
103 //! Return a list with all target names (as used internally).
104 //! @all false filter out all targets with status = disabled.
105 QStringList targetNames(bool all);
106
100 static PlayerBuildInfo* infoInstance; 107 static PlayerBuildInfo* infoInstance;
101 QSettings* serverInfo; 108 QSettings* serverInfo;
102 QSettings playerInfo; 109 QSettings playerInfo;
diff --git a/rbutil/rbutilqt/base/systeminfo.cpp b/rbutil/rbutilqt/base/systeminfo.cpp
index aa847540b9..6717b120cc 100644
--- a/rbutil/rbutilqt/base/systeminfo.cpp
+++ b/rbutil/rbutilqt/base/systeminfo.cpp
@@ -38,39 +38,6 @@ void SystemInfo::ensureSystemInfoExists()
38} 38}
39 39
40 40
41QStringList SystemInfo::platforms(enum SystemInfo::PlatformType type, QString variant)
42{
43 ensureSystemInfoExists();
44
45 QStringList result;
46 systemInfos->beginGroup("platforms");
47 QStringList a = systemInfos->childKeys();
48 systemInfos->endGroup();
49 for(int i = 0; i < a.size(); i++)
50 {
51 QString target = systemInfos->value("platforms/"+a.at(i), "null").toString();
52 QRegExp regex("\\..*$");
53 QString targetbase = target;
54 targetbase.remove(regex);
55 // only add target if its not disabled unless Platform*Disabled requested
56 if(type != PlatformAllDisabled && type != PlatformBaseDisabled
57 && type != PlatformVariantDisabled
58 && systemInfos->value(target+"/status").toString() == "disabled")
59 continue;
60 // report only matching target if PlatformVariant* is requested
61 if((type == PlatformVariant || type == PlatformVariantDisabled)
62 && (targetbase != variant))
63 continue;
64 // report only base targets when PlatformBase* is requested
65 if((type == PlatformBase || type == PlatformBaseDisabled))
66 result.append(targetbase);
67 else
68 result.append(target);
69 }
70 result.removeDuplicates();
71 return result;
72}
73
74QMap<QString, QStringList> SystemInfo::languages(bool namesOnly) 41QMap<QString, QStringList> SystemInfo::languages(bool namesOnly)
75{ 42{
76 ensureSystemInfoExists(); 43 ensureSystemInfoExists();
diff --git a/rbutil/rbutilqt/base/systeminfo.h b/rbutil/rbutilqt/base/systeminfo.h
index 7b5b68131b..d5a99082aa 100644
--- a/rbutil/rbutilqt/base/systeminfo.h
+++ b/rbutil/rbutilqt/base/systeminfo.h
@@ -34,18 +34,6 @@ class SystemInfo : public QObject
34 MapIncompatible, 34 MapIncompatible,
35 }; 35 };
36 36
37 enum PlatformType {
38 PlatformAll,
39 PlatformAllDisabled,
40 PlatformBase,
41 PlatformBaseDisabled,
42 PlatformVariant,
43 PlatformVariantDisabled
44 };
45
46 //! return a list of all platforms (rbutil internal names)
47 static QStringList platforms(enum PlatformType type = PlatformAll,
48 QString variant="");
49 //! returns a map of all languages. 37 //! returns a map of all languages.
50 //! Maps <language code> to (<language name>, <display name>) 38 //! Maps <language code> to (<language name>, <display name>)
51 static QMap<QString, QStringList> languages(bool namesOnly = false); 39 static QMap<QString, QStringList> languages(bool namesOnly = false);
diff --git a/rbutil/rbutilqt/configure.cpp b/rbutil/rbutilqt/configure.cpp
index 6b784a6383..721727f109 100644
--- a/rbutil/rbutilqt/configure.cpp
+++ b/rbutil/rbutilqt/configure.cpp
@@ -346,18 +346,20 @@ void Config::setDevices()
346 // setup devices table 346 // setup devices table
347 LOG_INFO() << "setting up devices list"; 347 LOG_INFO() << "setting up devices list";
348 348
349 QStringList platformList; 349 QStringList targets;
350 if(ui.showDisabled->isChecked()) 350 if(ui.showDisabled->isChecked())
351 platformList = SystemInfo::platforms(SystemInfo::PlatformAllDisabled); 351 targets = PlayerBuildInfo::instance()->value(
352 PlayerBuildInfo::TargetNamesAll).toStringList();
352 else 353 else
353 platformList = SystemInfo::platforms(SystemInfo::PlatformAll); 354 targets = PlayerBuildInfo::instance()->value(
355 PlayerBuildInfo::TargetNamesEnabled).toStringList();
354 356
355 QMultiMap <QString, QString> manuf; 357 QMultiMap <QString, QString> manuf;
356 for(int it = 0; it < platformList.size(); it++) 358 for(int it = 0; it < targets.size(); it++)
357 { 359 {
358 QString curbrand = PlayerBuildInfo::instance()->value( 360 QString curbrand = PlayerBuildInfo::instance()->value(
359 PlayerBuildInfo::Brand, platformList.at(it)).toString(); 361 PlayerBuildInfo::Brand, targets.at(it)).toString();
360 manuf.insert(curbrand, platformList.at(it)); 362 manuf.insert(curbrand, targets.at(it));
361 } 363 }
362 364
363 // set up devices table 365 // set up devices table
@@ -379,20 +381,20 @@ void Config::setDevices()
379 w->setText(0, brands.at(c)); 381 w->setText(0, brands.at(c));
380 items.append(w); 382 items.append(w);
381 // go through platforms and add all players matching the current brand 383 // go through platforms and add all players matching the current brand
382 for(int it = 0; it < platformList.size(); it++) { 384 for(int it = 0; it < targets.size(); it++) {
383 // skip if not current brand 385 // skip if not current brand
384 if(!manuf.values(brands.at(c)).contains(platformList.at(it))) 386 if(!manuf.values(brands.at(c)).contains(targets.at(it)))
385 continue; 387 continue;
386 // construct display name 388 // construct display name
387 QString curname = QString("%1 (%2)").arg( 389 QString curname = QString("%1 (%2)").arg(
388 PlayerBuildInfo::instance()->value(PlayerBuildInfo::DisplayName, 390 PlayerBuildInfo::instance()->value(PlayerBuildInfo::DisplayName,
389 platformList.at(it)).toString(), 391 targets.at(it)).toString(),
390 PlayerBuildInfo::instance()->statusAsString(platformList.at(it))); 392 PlayerBuildInfo::instance()->statusAsString(targets.at(it)));
391 LOG_INFO() << "add supported device:" << brands.at(c) << curname; 393 LOG_INFO() << "add supported device:" << brands.at(c) << curname;
392 w2 = new QTreeWidgetItem(w, QStringList(curname)); 394 w2 = new QTreeWidgetItem(w, QStringList(curname));
393 w2->setData(0, Qt::UserRole, platformList.at(it)); 395 w2->setData(0, Qt::UserRole, targets.at(it));
394 396
395 if(platformList.at(it) == selected) { 397 if(targets.at(it) == selected) {
396 w2->setSelected(true); 398 w2->setSelected(true);
397 w->setExpanded(true); 399 w->setExpanded(true);
398 w3 = w2; // save pointer to hilight old selection 400 w3 = w2; // save pointer to hilight old selection