summaryrefslogtreecommitdiff
path: root/rbutil/rbutilqt/base
diff options
context:
space:
mode:
Diffstat (limited to 'rbutil/rbutilqt/base')
-rw-r--r--rbutil/rbutilqt/base/autodetection.cpp21
-rw-r--r--rbutil/rbutilqt/base/detect.cpp34
-rw-r--r--rbutil/rbutilqt/base/utils.cpp40
-rw-r--r--rbutil/rbutilqt/base/utils.h18
4 files changed, 74 insertions, 39 deletions
diff --git a/rbutil/rbutilqt/base/autodetection.cpp b/rbutil/rbutilqt/base/autodetection.cpp
index 3e3c63ec32..aa74419ce0 100644
--- a/rbutil/rbutilqt/base/autodetection.cpp
+++ b/rbutil/rbutilqt/base/autodetection.cpp
@@ -90,21 +90,18 @@ bool Autodetection::detect()
90 } 90 }
91 91
92 // check rockbox-info.txt afterwards. 92 // check rockbox-info.txt afterwards.
93 QFile file(mounts.at(i) + "/.rockbox/rockbox-info.txt"); 93 RockboxInfo info(mounts.at(i));
94 if(file.exists()) 94 if(info.open())
95 { 95 {
96 file.open(QIODevice::ReadOnly | QIODevice::Text); 96 if(m_device.isEmpty())
97 QString line = file.readLine();
98 if(line.startsWith("Target: "))
99 { 97 {
100 line.remove("Target: "); 98 m_device = info.target();
101 if(m_device.isEmpty()) 99 }
102 m_device = line.trimmed(); // trim whitespaces 100 m_mountpoint = mounts.at(i);
103 m_mountpoint = mounts.at(i); 101 qDebug() << "rockbox-info.txt detected:" << m_device << m_mountpoint;
104 qDebug() << "rockbox-info.txt detected:" << m_device << m_mountpoint; 102 return true;
105 return true;
106 }
107 } 103 }
104
108 // check for some specific files in root folder 105 // check for some specific files in root folder
109 QDir root(mounts.at(i)); 106 QDir root(mounts.at(i));
110 QStringList rootentries = root.entryList(QDir::Files); 107 QStringList rootentries = root.entryList(QDir::Files);
diff --git a/rbutil/rbutilqt/base/detect.cpp b/rbutil/rbutilqt/base/detect.cpp
index 1792febc0f..c30a03ba2e 100644
--- a/rbutil/rbutilqt/base/detect.cpp
+++ b/rbutil/rbutilqt/base/detect.cpp
@@ -58,6 +58,7 @@
58#include <sys/mount.h> 58#include <sys/mount.h>
59#endif 59#endif
60 60
61#include "utils.h"
61 62
62/** @brief detect permission of user (only Windows at moment). 63/** @brief detect permission of user (only Windows at moment).
63 * @return enum userlevel. 64 * @return enum userlevel.
@@ -352,23 +353,13 @@ QUrl Detect::systemProxy(void)
352 */ 353 */
353QString Detect::installedVersion(QString mountpoint) 354QString Detect::installedVersion(QString mountpoint)
354{ 355{
355 // read rockbox-info.txt 356 RockboxInfo info(mountpoint);
356 QFile info(mountpoint +"/.rockbox/rockbox-info.txt"); 357 if(!info.open())
357 if(!info.open(QIODevice::ReadOnly))
358 { 358 {
359 return ""; 359 return "";
360 } 360 }
361 361
362 while (!info.atEnd()) { 362 return info.version();
363 QString line = info.readLine();
364
365 if(line.contains("Version:"))
366 {
367 return line.remove("Version:").trimmed();
368 }
369 }
370 info.close();
371 return "";
372} 363}
373 364
374 365
@@ -377,24 +368,13 @@ QString Detect::installedVersion(QString mountpoint)
377 */ 368 */
378QString Detect::installedTarget(QString mountpoint) 369QString Detect::installedTarget(QString mountpoint)
379{ 370{
380 // read rockbox-info.txt 371 RockboxInfo info(mountpoint);
381 QFile info(mountpoint +"/.rockbox/rockbox-info.txt"); 372 if(!info.open())
382 if(!info.open(QIODevice::ReadOnly))
383 { 373 {
384 return ""; 374 return "";
385 } 375 }
386 376
387 while (!info.atEnd()) 377 return info.target();
388 {
389 QString line = info.readLine();
390 if(line.contains("Target:"))
391 {
392 qDebug() << line;
393 return line.remove("Target:").trimmed();
394 }
395 }
396 info.close();
397 return "";
398} 378}
399 379
400 380
diff --git a/rbutil/rbutilqt/base/utils.cpp b/rbutil/rbutilqt/base/utils.cpp
index 379b642431..2e6b04ecff 100644
--- a/rbutil/rbutilqt/base/utils.cpp
+++ b/rbutil/rbutilqt/base/utils.cpp
@@ -130,3 +130,43 @@ qulonglong filesystemFree(QString path)
130 return size; 130 return size;
131} 131}
132 132
133RockboxInfo::RockboxInfo(QString mountpoint)
134{
135 m_path = mountpoint +"/.rockbox/rockbox-info.txt";
136}
137
138bool RockboxInfo::open()
139{
140 QFile file(m_path);
141 if(!file.exists())
142 return false;
143
144 if(!file.open(QIODevice::ReadOnly | QIODevice::Text))
145 return false;
146
147 // read file contents
148 while (!file.atEnd())
149 {
150 QString line = file.readLine();
151
152 if(line.contains("Version:"))
153 {
154 m_version = line.remove("Version:").trimmed();
155 }
156 else if(line.contains("Target: "))
157 {
158 m_target = line.remove("Target: ").trimmed();
159 }
160 else if(line.contains("Features:"))
161 {
162 m_features = line.remove("Features:").trimmed();
163 }
164 else if(line.contains("Target id:"))
165 {
166 m_targetid = line.remove("Target id:").trimmed();
167 }
168 }
169
170 file.close();
171 return true;
172}
diff --git a/rbutil/rbutilqt/base/utils.h b/rbutil/rbutilqt/base/utils.h
index 0a9135485a..caaf13eb41 100644
--- a/rbutil/rbutilqt/base/utils.h
+++ b/rbutil/rbutilqt/base/utils.h
@@ -30,5 +30,23 @@ bool recRmdir( const QString &dirName );
30QString resolvePathCase(QString path); 30QString resolvePathCase(QString path);
31qulonglong filesystemFree(QString path); 31qulonglong filesystemFree(QString path);
32 32
33class RockboxInfo
34{
35public:
36 RockboxInfo(QString mountpoint);
37 bool open();
38
39 QString version() {return m_version;}
40 QString features(){return m_features;}
41 QString targetID() {return m_targetid;}
42 QString target() {return m_target;}
43private:
44 QString m_path;
45 QString m_version;
46 QString m_features;
47 QString m_targetid;
48 QString m_target;
49};
50
33#endif 51#endif
34 52