summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDominik Riebeling <Dominik.Riebeling@gmail.com>2010-01-31 21:57:45 +0000
committerDominik Riebeling <Dominik.Riebeling@gmail.com>2010-01-31 21:57:45 +0000
commitea4130fd2d91d99fec3135bc83128fe702a846ab (patch)
treed5d677b796200036eae47721290a13145b628982
parente9538363286e22bf21be1f8b3d5a4e83cdc2e4a4 (diff)
downloadrockbox-ea4130fd2d91d99fec3135bc83128fe702a846ab.tar.gz
rockbox-ea4130fd2d91d99fec3135bc83128fe702a846ab.zip
Extend SystemInfo to allow distinguishing between platforms and variants.
Doing so removes the need to loop over all targets to fill in values for target variants in ServerInfo. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@24427 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--rbutil/rbutilqt/base/serverinfo.cpp53
-rw-r--r--rbutil/rbutilqt/base/serverinfo.h2
-rw-r--r--rbutil/rbutilqt/base/systeminfo.cpp15
-rw-r--r--rbutil/rbutilqt/base/systeminfo.h13
4 files changed, 49 insertions, 34 deletions
diff --git a/rbutil/rbutilqt/base/serverinfo.cpp b/rbutil/rbutilqt/base/serverinfo.cpp
index e54fd03f8a..e581e952ac 100644
--- a/rbutil/rbutilqt/base/serverinfo.cpp
+++ b/rbutil/rbutilqt/base/serverinfo.cpp
@@ -51,33 +51,47 @@ void ServerInfo::readBuildInfo(QString file)
51 51
52 info.beginGroup("release"); 52 info.beginGroup("release");
53 QStringList keys = info.allKeys(); 53 QStringList keys = info.allKeys();
54 for(int i=0; i < keys.size(); i++)
55 {
56 setAllConfigPlatformValue(keys[i],ServerInfo::CurReleaseVersion,info.value(keys[i]));
57 }
58 info.endGroup(); 54 info.endGroup();
59 55
60 info.beginGroup("status"); 56 // get base platforms, handle variants with platforms in the loop
61 keys = info.allKeys(); 57 QStringList platforms = SystemInfo::platforms(SystemInfo::PlatformBase);
62 for(int i=0; i < keys.size(); i++) 58 for(int i = 0; i < platforms.size(); i++)
63 { 59 {
64 switch(info.value(keys[i]).toInt()) 60 // check if there are rbutil-variants of the current platform and handle
61 // them the same time.
62 QStringList variants;
63 variants = SystemInfo::platforms(SystemInfo::PlatformVariant, platforms.at(i));
64 QVariant release;
65 info.beginGroup("release");
66 if(keys.contains(platforms.at(i))) {
67 release = info.value(platforms.at(i));
68 }
69
70 info.endGroup();
71 info.beginGroup("status");
72 QString status = tr("Unknown");
73 switch(info.value(platforms.at(i)).toInt())
65 { 74 {
66 case 1: 75 case 1:
67 ServerInfo::setAllConfigPlatformValue(keys[i],ServerInfo::CurStatus,tr("Unusable")); 76 status = tr("Unusable");
68 break; 77 break;
69 case 2: 78 case 2:
70 ServerInfo::setAllConfigPlatformValue(keys[i],ServerInfo::CurStatus,tr("Unstable")); 79 status = tr("Unstable");
71 break; 80 break;
72 case 3: 81 case 3:
73 ServerInfo::setAllConfigPlatformValue(keys[i],ServerInfo::CurStatus,tr("Stable")); 82 status = tr("Stable");
74 break; 83 break;
75 default: 84 default:
76 ServerInfo::setAllConfigPlatformValue(keys[i],ServerInfo::CurStatus,tr("Unknown"));
77 break; 85 break;
78 } 86 }
87 info.endGroup();
88 // set variants (if any)
89 for(int j = 0; j < variants.size(); ++j) {
90 setPlatformValue(variants.at(j), ServerInfo::CurStatus, status);
91 setPlatformValue(variants.at(j), ServerInfo::CurReleaseVersion, release);
92 }
93
79 } 94 }
80 info.endGroup();
81} 95}
82 96
83void ServerInfo::readBleedingInfo(QString file) 97void ServerInfo::readBleedingInfo(QString file)
@@ -121,17 +135,6 @@ void ServerInfo::setPlatformValue(QString platform, enum ServerInfos info, QVari
121 qDebug() << "[ServerInfo] SET:" << s << serverInfos.value(s).toString(); 135 qDebug() << "[ServerInfo] SET:" << s << serverInfos.value(s).toString();
122} 136}
123 137
124void ServerInfo::setAllConfigPlatformValue(QString configplatform, ServerInfos info, QVariant value)
125{
126 // insert intp all platforms where configurename matches
127 QStringList platforms = SystemInfo::platforms();
128 for(int i =0; i < platforms.size(); i++)
129 {
130 if(SystemInfo::platformValue(platforms.at(i),SystemInfo::CurConfigureModel) == configplatform)
131 setPlatformValue(platforms.at(i),info,value);
132 }
133}
134
135QVariant ServerInfo::platformValue(QString platform, enum ServerInfos info) 138QVariant ServerInfo::platformValue(QString platform, enum ServerInfos info)
136{ 139{
137 // locate setting item 140 // locate setting item
diff --git a/rbutil/rbutilqt/base/serverinfo.h b/rbutil/rbutilqt/base/serverinfo.h
index 742ea277ff..6683a7adab 100644
--- a/rbutil/rbutilqt/base/serverinfo.h
+++ b/rbutil/rbutilqt/base/serverinfo.h
@@ -49,8 +49,6 @@ class ServerInfo : public QObject
49 static QVariant platformValue(QString platform, enum ServerInfos setting); 49 static QVariant platformValue(QString platform, enum ServerInfos setting);
50 50
51 private: 51 private:
52 //! set a server info to all platforms where configurename matches
53 static void setAllConfigPlatformValue(QString configplatform,ServerInfos info, QVariant value);
54 //! set a server info value 52 //! set a server info value
55 static void setValue(enum ServerInfos setting , QVariant value); 53 static void setValue(enum ServerInfos setting , QVariant value);
56 //! set a value for a server info for a named platform. 54 //! set a value for a server info for a named platform.
diff --git a/rbutil/rbutilqt/base/systeminfo.cpp b/rbutil/rbutilqt/base/systeminfo.cpp
index 3760901c15..ff221db63d 100644
--- a/rbutil/rbutilqt/base/systeminfo.cpp
+++ b/rbutil/rbutilqt/base/systeminfo.cpp
@@ -107,7 +107,7 @@ QVariant SystemInfo::platformValue(QString platform, enum SystemInfos info)
107 return systemInfos->value(s, d); 107 return systemInfos->value(s, d);
108} 108}
109 109
110QStringList SystemInfo::platforms() 110QStringList SystemInfo::platforms(enum SystemInfo::PlatformType type, QString variant)
111{ 111{
112 ensureSystemInfoExists(); 112 ensureSystemInfoExists();
113 113
@@ -117,10 +117,17 @@ QStringList SystemInfo::platforms()
117 systemInfos->endGroup(); 117 systemInfos->endGroup();
118 for(int i = 0; i < a.size(); i++) 118 for(int i = 0; i < a.size(); i++)
119 { 119 {
120 //only add not disabled targets
121 QString target = systemInfos->value("platforms/"+a.at(i), "null").toString(); 120 QString target = systemInfos->value("platforms/"+a.at(i), "null").toString();
122 if(systemInfos->value(target+"/status").toString() != "disabled") 121 // only add target if its not disabled
123 result.append(target); 122 if(systemInfos->value(target+"/status").toString() == "disabled")
123 continue;
124 // report only base targets when PlatformBase is requested
125 if(type == PlatformBase && target.contains('.'))
126 continue;
127 // report only matching target if PlatformVariant is requested
128 if(type == PlatformVariant && !target.startsWith(variant))
129 continue;
130 result.append(target);
124 } 131 }
125 return result; 132 return result;
126} 133}
diff --git a/rbutil/rbutilqt/base/systeminfo.h b/rbutil/rbutilqt/base/systeminfo.h
index 1794b00a76..45984d4789 100644
--- a/rbutil/rbutilqt/base/systeminfo.h
+++ b/rbutil/rbutilqt/base/systeminfo.h
@@ -63,14 +63,21 @@ class SystemInfo : public QObject
63 CurConfigureModel, 63 CurConfigureModel,
64 }; 64 };
65 65
66 enum PlatformType {
67 PlatformAll,
68 PlatformBase,
69 PlatformVariant
70 };
71
66 //! return a list of all platforms (rbutil internal names) 72 //! return a list of all platforms (rbutil internal names)
67 static QStringList platforms(void); 73 static QStringList platforms(enum PlatformType type = PlatformAll,
74 QString variant="");
68 //! returns a list of all languages 75 //! returns a list of all languages
69 static QStringList languages(void); 76 static QStringList languages(void);
70 //! maps a platform to its name 77 //! maps a platform to its name
71 static QString name(QString plattform); 78 static QString name(QString platform);
72 //! maps a platform to its brand 79 //! maps a platform to its brand
73 static QString brand(QString plattform); 80 static QString brand(QString platform);
74 //! returns a map of usb-ids and their targets 81 //! returns a map of usb-ids and their targets
75 static QMap<int, QString> usbIdMap(enum MapType); 82 static QMap<int, QString> usbIdMap(enum MapType);
76 //! get a value from system settings 83 //! get a value from system settings