summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--rbutil/rbutilqt/base/rbsettings.cpp60
-rw-r--r--rbutil/rbutilqt/base/rbsettings.h17
-rw-r--r--rbutil/rbutilqt/installwindow.cpp (renamed from rbutil/rbutilqt/install.cpp)124
-rw-r--r--rbutil/rbutilqt/installwindow.h (renamed from rbutil/rbutilqt/install.h)6
-rw-r--r--rbutil/rbutilqt/rbutilqt.cpp106
-rw-r--r--rbutil/rbutilqt/rbutilqt.h1
-rw-r--r--rbutil/rbutilqt/rbutilqt.pro4
7 files changed, 195 insertions, 123 deletions
diff --git a/rbutil/rbutilqt/base/rbsettings.cpp b/rbutil/rbutilqt/base/rbsettings.cpp
index bd6f94f2f4..527312b108 100644
--- a/rbutil/rbutilqt/base/rbsettings.cpp
+++ b/rbutil/rbutilqt/base/rbsettings.cpp
@@ -94,9 +94,24 @@ const static struct {
94 { RbSettings::EncoderVolume, ":encoder:/volume", "1.0" }, 94 { RbSettings::EncoderVolume, ":encoder:/volume", "1.0" },
95}; 95};
96 96
97// server settings
98const static struct {
99 RbSettings::ServerSettings setting;
100 const char* name;
101 const char* def;
102} ServerSettingsList[] = {
103 { RbSettings::CurReleaseVersion, ":platform:/releaseversion", "" },
104 { RbSettings::CurStatus, ":platform:/status", "" },
105 { RbSettings::DailyRevision, "dailyrev", "" },
106 { RbSettings::DailyDate, "dailydate", "" },
107 { RbSettings::BleedingRevision, "bleedingrev", "" },
108 { RbSettings::BleedingDate, "bleedingdate", "" },
109};
110
97//! pointer to setting object to NULL 111//! pointer to setting object to NULL
98QSettings* RbSettings::systemSettings = NULL; 112QSettings* RbSettings::systemSettings = NULL;
99QSettings* RbSettings::userSettings = NULL; 113QSettings* RbSettings::userSettings = NULL;
114QSettings* RbSettings::serverSettings = NULL;
100 115
101void RbSettings::ensureRbSettingsExists() 116void RbSettings::ensureRbSettingsExists()
102{ 117{
@@ -106,7 +121,13 @@ void RbSettings::ensureRbSettingsExists()
106 // only use built-in rbutil.ini 121 // only use built-in rbutil.ini
107 systemSettings = new QSettings(":/ini/rbutil.ini", QSettings::IniFormat, 0); 122 systemSettings = new QSettings(":/ini/rbutil.ini", QSettings::IniFormat, 0);
108 } 123 }
109 124
125 if(serverSettings == NULL)
126 {
127 serverSettings = new QSettings(QSettings::IniFormat,
128 QSettings::UserScope, "rockbox.org", "RockboxUtility",NULL);
129 }
130
110 if(userSettings == NULL) 131 if(userSettings == NULL)
111 { 132 {
112 // portable installation: 133 // portable installation:
@@ -200,6 +221,20 @@ QVariant RbSettings::subValue(QString sub, enum UserSettings setting)
200 return userSettings->value(s, UserSettingsList[i].def); 221 return userSettings->value(s, UserSettingsList[i].def);
201} 222}
202 223
224QVariant RbSettings::value(enum ServerSettings setting)
225{
226 ensureRbSettingsExists();
227
228 // locate setting item
229 int i = 0;
230 while(ServerSettingsList[i].setting != setting)
231 i++;
232
233 QString s = constructSettingPath(ServerSettingsList[i].name);
234 qDebug() << "[Settings] GET SERV:" << s << serverSettings->value(s, ServerSettingsList[i].def).toString();
235 return serverSettings->value(s, ServerSettingsList[i].def);
236}
237
203void RbSettings::setValue(enum UserSettings setting , QVariant value) 238void RbSettings::setValue(enum UserSettings setting , QVariant value)
204{ 239{
205 QString empty; 240 QString empty;
@@ -216,8 +251,29 @@ void RbSettings::setSubValue(QString sub, enum UserSettings setting, QVariant va
216 i++; 251 i++;
217 252
218 QString s = constructSettingPath(UserSettingsList[i].name, sub); 253 QString s = constructSettingPath(UserSettingsList[i].name, sub);
219 qDebug() << "[Settings] SET U:" << s << userSettings->value(s).toString();
220 userSettings->setValue(s, value); 254 userSettings->setValue(s, value);
255 qDebug() << "[Settings] SET U:" << s << userSettings->value(s).toString();
256}
257
258void RbSettings::setValue(enum ServerSettings setting, QVariant value)
259{
260 QString empty;
261 return setPlatformValue(empty, setting, value);
262}
263
264void RbSettings::setPlatformValue(QString platform, enum ServerSettings setting, QVariant value)
265{
266 ensureRbSettingsExists();
267
268 // locate setting item
269 int i = 0;
270 while(ServerSettingsList[i].setting != setting)
271 i++;
272
273 QString s = ServerSettingsList[i].name;
274 s.replace(":platform:", platform);
275 serverSettings->setValue(s, value);
276 qDebug() << "[Settings] SET SERV:" << s << serverSettings->value(s).toString();
221} 277}
222 278
223 279
diff --git a/rbutil/rbutilqt/base/rbsettings.h b/rbutil/rbutilqt/base/rbsettings.h
index b3f0430208..5e128e602d 100644
--- a/rbutil/rbutilqt/base/rbsettings.h
+++ b/rbutil/rbutilqt/base/rbsettings.h
@@ -97,6 +97,16 @@ class RbSettings : public QObject
97 CurConfigureModel, 97 CurConfigureModel,
98 }; 98 };
99 99
100 //! All Server settings
101 enum ServerSettings {
102 CurReleaseVersion,
103 CurStatus,
104 DailyRevision,
105 DailyDate,
106 BleedingRevision,
107 BleedingDate,
108 };
109
100 //! call this to flush the user Settings 110 //! call this to flush the user Settings
101 static void sync(); 111 static void sync();
102 //! returns the filename of the usersettings file 112 //! returns the filename of the usersettings file
@@ -115,12 +125,18 @@ class RbSettings : public QObject
115 static QVariant value(enum SystemSettings setting); 125 static QVariant value(enum SystemSettings setting);
116 //! get a value from user settings 126 //! get a value from user settings
117 static QVariant value(enum UserSettings setting); 127 static QVariant value(enum UserSettings setting);
128 //! get a value from server settings
129 static QVariant value(enum ServerSettings setting);
118 //! set a user setting value 130 //! set a user setting value
119 static void setValue(enum UserSettings setting , QVariant value); 131 static void setValue(enum UserSettings setting , QVariant value);
132 //! set a server setting value
133 static void setValue(enum ServerSettings setting , QVariant value);
120 //! get a user setting from a subvalue (ie for encoders and tts engines) 134 //! get a user setting from a subvalue (ie for encoders and tts engines)
121 static QVariant subValue(QString sub, enum UserSettings setting); 135 static QVariant subValue(QString sub, enum UserSettings setting);
122 //! set a user setting from a subvalue (ie for encoders and tts engines) 136 //! set a user setting from a subvalue (ie for encoders and tts engines)
123 static void setSubValue(QString sub, enum UserSettings setting, QVariant value); 137 static void setSubValue(QString sub, enum UserSettings setting, QVariant value);
138 //! set a value for a server settings for a named platform.
139 static void setPlatformValue(QString platform, enum ServerSettings setting, QVariant value);
124 //! get a value from system settings for a named platform. 140 //! get a value from system settings for a named platform.
125 static QVariant platformValue(QString platform, enum SystemSettings setting); 141 static QVariant platformValue(QString platform, enum SystemSettings setting);
126 142
@@ -135,6 +151,7 @@ class RbSettings : public QObject
135 //! pointers to our setting objects 151 //! pointers to our setting objects
136 static QSettings *systemSettings; 152 static QSettings *systemSettings;
137 static QSettings *userSettings; 153 static QSettings *userSettings;
154 static QSettings *serverSettings;
138}; 155};
139 156
140#endif 157#endif
diff --git a/rbutil/rbutilqt/install.cpp b/rbutil/rbutilqt/installwindow.cpp
index 8deaf95c29..eb0dbf228d 100644
--- a/rbutil/rbutilqt/install.cpp
+++ b/rbutil/rbutilqt/installwindow.cpp
@@ -17,14 +17,14 @@
17 * 17 *
18 ****************************************************************************/ 18 ****************************************************************************/
19 19
20#include "install.h" 20#include "installwindow.h"
21#include "ui_installfrm.h" 21#include "ui_installfrm.h"
22#include "rbzip.h" 22#include "rbzip.h"
23#include "system.h" 23#include "system.h"
24#include "rbsettings.h" 24#include "rbsettings.h"
25#include "utils.h" 25#include "utils.h"
26 26
27Install::Install(QWidget *parent) : QDialog(parent) 27InstallWindow::InstallWindow(QWidget *parent) : QDialog(parent)
28{ 28{
29 ui.setupUi(this); 29 ui.setupUi(this);
30 30
@@ -52,10 +52,45 @@ Install::Install(QWidget *parent) : QDialog(parent)
52 ui.Backupgroup->hide(); 52 ui.Backupgroup->hide();
53 } 53 }
54 backupCheckboxChanged(Qt::Unchecked); 54 backupCheckboxChanged(Qt::Unchecked);
55
56
57 if(RbSettings::value(RbSettings::DailyRevision).toString().isEmpty()) {
58 ui.radioArchived->setEnabled(false);
59 qDebug() << "[Install] no information about archived version available!";
60 }
61 if(RbSettings::value(RbSettings::CurReleaseVersion).toString().isEmpty()) {
62 ui.radioStable->setEnabled(false);
63 }
64
65 // try to use the old selection first. If no selection has been made
66 // in the past, use a preselection based on released status.
67 if(RbSettings::value(RbSettings::Build).toString() == "stable"
68 && !RbSettings::value(RbSettings::CurReleaseVersion).toString().isEmpty())
69 ui.radioStable->setChecked(true);
70 else if(RbSettings::value(RbSettings::Build).toString() == "archived")
71 ui.radioArchived->setChecked(true);
72 else if(RbSettings::value(RbSettings::Build).toString() == "current")
73 ui.radioCurrent->setChecked(true);
74 else if(!RbSettings::value(RbSettings::CurReleaseVersion).toString().isEmpty()) {
75 ui.radioStable->setChecked(true);
76 ui.radioStable->setEnabled(true);
77 QFont font;
78 font.setBold(true);
79 ui.radioStable->setFont(font);
80 }
81 else {
82 ui.radioCurrent->setChecked(true);
83 ui.radioStable->setEnabled(false);
84 ui.radioStable->setChecked(false);
85 QFont font;
86 font.setBold(true);
87 ui.radioCurrent->setFont(font);
88 }
89
55} 90}
56 91
57 92
58void Install::resizeEvent(QResizeEvent *e) 93void InstallWindow::resizeEvent(QResizeEvent *e)
59{ 94{
60 (void)e; 95 (void)e;
61 96
@@ -64,7 +99,7 @@ void Install::resizeEvent(QResizeEvent *e)
64} 99}
65 100
66 101
67void Install::updateBackupLocation(void) 102void InstallWindow::updateBackupLocation(void)
68{ 103{
69 ui.backupLocation->setText(QDir::toNativeSeparators( 104 ui.backupLocation->setText(QDir::toNativeSeparators(
70 fontMetrics().elidedText(tr("Backup to %1").arg(m_backupName), 105 fontMetrics().elidedText(tr("Backup to %1").arg(m_backupName),
@@ -72,7 +107,7 @@ void Install::updateBackupLocation(void)
72} 107}
73 108
74 109
75void Install::backupCheckboxChanged(int state) 110void InstallWindow::backupCheckboxChanged(int state)
76{ 111{
77 if(state == Qt::Checked) 112 if(state == Qt::Checked)
78 { 113 {
@@ -89,7 +124,7 @@ void Install::backupCheckboxChanged(int state)
89} 124}
90 125
91 126
92void Install::accept() 127void InstallWindow::accept()
93{ 128{
94 logger = new ProgressLoggerGui(this); 129 logger = new ProgressLoggerGui(this);
95 logger->show(); 130 logger->show();
@@ -107,26 +142,26 @@ void Install::accept()
107 if(ui.radioStable->isChecked()) { 142 if(ui.radioStable->isChecked()) {
108 file = RbSettings::value(RbSettings::ReleaseUrl).toString(); 143 file = RbSettings::value(RbSettings::ReleaseUrl).toString();
109 RbSettings::setValue(RbSettings::Build, "stable"); 144 RbSettings::setValue(RbSettings::Build, "stable");
110 myversion = version.value("rel_rev"); 145 myversion = RbSettings::value(RbSettings::CurReleaseVersion).toString();
111 } 146 }
112 else if(ui.radioArchived->isChecked()) { 147 else if(ui.radioArchived->isChecked()) {
113 file = RbSettings::value(RbSettings::DailyUrl).toString(); 148 file = RbSettings::value(RbSettings::DailyUrl).toString();
114 RbSettings::setValue(RbSettings::Build, "archived"); 149 RbSettings::setValue(RbSettings::Build, "archived");
115 myversion = "r" + version.value("arch_rev") + "-" + version.value("arch_date"); 150 myversion = "r" + RbSettings::value(RbSettings::DailyRevision).toString() + "-" + RbSettings::value(RbSettings::DailyDate).toString();
116 } 151 }
117 else if(ui.radioCurrent->isChecked()) { 152 else if(ui.radioCurrent->isChecked()) {
118 file = RbSettings::value(RbSettings::BleedingUrl).toString(); 153 file = RbSettings::value(RbSettings::BleedingUrl).toString();
119 RbSettings::setValue(RbSettings::Build, "current"); 154 RbSettings::setValue(RbSettings::Build, "current");
120 myversion = "r" + version.value("bleed_rev"); 155 myversion = "r" + RbSettings::value(RbSettings::BleedingRevision).toString();
121 } 156 }
122 else { 157 else {
123 qDebug() << "[Install] no build selected -- this shouldn't happen"; 158 qDebug() << "[Install] no build selected -- this shouldn't happen";
124 return; 159 return;
125 } 160 }
126 file.replace("%MODEL%", buildname); 161 file.replace("%MODEL%", buildname);
127 file.replace("%RELVERSION%", version.value("rel_rev")); 162 file.replace("%RELVERSION%", RbSettings::value(RbSettings::CurReleaseVersion).toString());
128 file.replace("%REVISION%", version.value("arch_rev")); 163 file.replace("%REVISION%", RbSettings::value(RbSettings::DailyRevision).toString());
129 file.replace("%DATE%", version.value("arch_date")); 164 file.replace("%DATE%", RbSettings::value(RbSettings::DailyDate).toString());
130 165
131 RbSettings::sync(); 166 RbSettings::sync();
132 167
@@ -194,7 +229,7 @@ void Install::accept()
194 229
195} 230}
196 231
197void Install::changeBackupPath() 232void InstallWindow::changeBackupPath()
198{ 233{
199 QString backupString = QFileDialog::getSaveFileName(this, 234 QString backupString = QFileDialog::getSaveFileName(this,
200 tr("Select Backup Filename"), m_backupName, "*.zip"); 235 tr("Select Backup Filename"), m_backupName, "*.zip");
@@ -207,7 +242,7 @@ void Install::changeBackupPath()
207 242
208 243
209// Zip installer has finished 244// Zip installer has finished
210void Install::done(bool error) 245void InstallWindow::done(bool error)
211{ 246{
212 qDebug() << "[Install] done, error:" << error; 247 qDebug() << "[Install] done, error:" << error;
213 248
@@ -227,14 +262,14 @@ void Install::done(bool error)
227} 262}
228 263
229 264
230void Install::setDetailsCurrent(bool show) 265void InstallWindow::setDetailsCurrent(bool show)
231{ 266{
232 if(show) { 267 if(show) {
233 ui.labelDetails->setText(tr("This is the absolute up to the minute " 268 ui.labelDetails->setText(tr("This is the absolute up to the minute "
234 "Rockbox built. A current build will get updated every time " 269 "Rockbox built. A current build will get updated every time "
235 "a change is made. Latest version is r%1 (%2).") 270 "a change is made. Latest version is r%1 (%2).")
236 .arg(version.value("bleed_rev"), version.value("bleed_date"))); 271 .arg(RbSettings::value(RbSettings::BleedingRevision).toString(),RbSettings::value(RbSettings::BleedingDate).toString()));
237 if(version.value("rel_rev").isEmpty()) 272 if(RbSettings::value(RbSettings::CurReleaseVersion).toString().isEmpty())
238 ui.labelNote->setText(tr("<b>This is the recommended version.</b>")); 273 ui.labelNote->setText(tr("<b>This is the recommended version.</b>"));
239 else 274 else
240 ui.labelNote->setText(""); 275 ui.labelNote->setText("");
@@ -242,23 +277,23 @@ void Install::setDetailsCurrent(bool show)
242} 277}
243 278
244 279
245void Install::setDetailsStable(bool show) 280void InstallWindow::setDetailsStable(bool show)
246{ 281{
247 if(show) { 282 if(show) {
248 ui.labelDetails->setText( 283 ui.labelDetails->setText(
249 tr("This is the last released version of Rockbox.")); 284 tr("This is the last released version of Rockbox."));
250 285
251 if(!version.value("rel_rev").isEmpty()) 286 if(!RbSettings::value(RbSettings::CurReleaseVersion).toString().isEmpty())
252 ui.labelNote->setText(tr("<b>Note:</b> " 287 ui.labelNote->setText(tr("<b>Note:</b> "
253 "The lastest released version is %1. " 288 "The lastest released version is %1. "
254 "<b>This is the recommended version.</b>") 289 "<b>This is the recommended version.</b>")
255 .arg(version.value("rel_rev"))); 290 .arg(RbSettings::value(RbSettings::CurReleaseVersion).toString()));
256 else ui.labelNote->setText(""); 291 else ui.labelNote->setText("");
257 } 292 }
258} 293}
259 294
260 295
261void Install::setDetailsArchived(bool show) 296void InstallWindow::setDetailsArchived(bool show)
262{ 297{
263 if(show) { 298 if(show) {
264 ui.labelDetails->setText(tr("These are automatically built each day " 299 ui.labelDetails->setText(tr("These are automatically built each day "
@@ -266,54 +301,9 @@ void Install::setDetailsArchived(bool show)
266 "features than the last stable release but may be much less stable. " 301 "features than the last stable release but may be much less stable. "
267 "Features may change regularly.")); 302 "Features may change regularly."));
268 ui.labelNote->setText(tr("<b>Note:</b> archived version is r%1 (%2).") 303 ui.labelNote->setText(tr("<b>Note:</b> archived version is r%1 (%2).")
269 .arg(version.value("arch_rev"), version.value("arch_date"))); 304 .arg(RbSettings::value(RbSettings::DailyRevision).toString(),RbSettings::value(RbSettings::DailyDate).toString()));
270 } 305 }
271} 306}
272 307
273 308
274 309
275void Install::setVersionStrings(QMap<QString, QString>& ver)
276{
277 version = ver;
278 // version strings map is as following:
279 // rel_rev release version revision id
280 // rel_date release version release date
281 // same for arch_* and bleed_*
282
283 if(version.value("arch_rev").isEmpty()) {
284 ui.radioArchived->setEnabled(false);
285 qDebug() << "[Install] no information about archived version available!";
286 }
287 if(version.value("rel_rev").isEmpty()) {
288 ui.radioStable->setEnabled(false);
289 }
290
291 // try to use the old selection first. If no selection has been made
292 // in the past, use a preselection based on released status.
293 if(RbSettings::value(RbSettings::Build).toString() == "stable"
294 && !version.value("rel_rev").isEmpty())
295 ui.radioStable->setChecked(true);
296 else if(RbSettings::value(RbSettings::Build).toString() == "archived")
297 ui.radioArchived->setChecked(true);
298 else if(RbSettings::value(RbSettings::Build).toString() == "current")
299 ui.radioCurrent->setChecked(true);
300 else if(!version.value("rel_rev").isEmpty()) {
301 ui.radioStable->setChecked(true);
302 ui.radioStable->setEnabled(true);
303 QFont font;
304 font.setBold(true);
305 ui.radioStable->setFont(font);
306 }
307 else {
308 ui.radioCurrent->setChecked(true);
309 ui.radioStable->setEnabled(false);
310 ui.radioStable->setChecked(false);
311 QFont font;
312 font.setBold(true);
313 ui.radioCurrent->setFont(font);
314 }
315
316 qDebug() << "[Install] setting version strings to:" << version;
317}
318
319
diff --git a/rbutil/rbutilqt/install.h b/rbutil/rbutilqt/installwindow.h
index 4ac6f281af..e1a347099e 100644
--- a/rbutil/rbutilqt/install.h
+++ b/rbutil/rbutilqt/installwindow.h
@@ -28,12 +28,11 @@
28#include "zipinstaller.h" 28#include "zipinstaller.h"
29#include "progressloggergui.h" 29#include "progressloggergui.h"
30 30
31class Install : public QDialog 31class InstallWindow : public QDialog
32{ 32{
33 Q_OBJECT 33 Q_OBJECT
34 public: 34 public:
35 Install(QWidget *parent); 35 InstallWindow(QWidget *parent);
36 void setVersionStrings(QMap<QString, QString>&);
37 36
38 public slots: 37 public slots:
39 void accept(void); 38 void accept(void);
@@ -45,7 +44,6 @@ class Install : public QDialog
45 QFile *target; 44 QFile *target;
46 QString file; 45 QString file;
47 ZipInstaller* installer; 46 ZipInstaller* installer;
48 QMap<QString, QString> version;
49 QString m_backupName; 47 QString m_backupName;
50 void resizeEvent(QResizeEvent*); 48 void resizeEvent(QResizeEvent*);
51 49
diff --git a/rbutil/rbutilqt/rbutilqt.cpp b/rbutil/rbutilqt/rbutilqt.cpp
index 8860acc3bb..85d990a775 100644
--- a/rbutil/rbutilqt/rbutilqt.cpp
+++ b/rbutil/rbutilqt/rbutilqt.cpp
@@ -24,7 +24,7 @@
24#include "ui_rbutilqtfrm.h" 24#include "ui_rbutilqtfrm.h"
25#include "ui_aboutbox.h" 25#include "ui_aboutbox.h"
26#include "configure.h" 26#include "configure.h"
27#include "install.h" 27#include "installwindow.h"
28#include "installtalkwindow.h" 28#include "installtalkwindow.h"
29#include "createvoicewindow.h" 29#include "createvoicewindow.h"
30#include "httpget.h" 30#include "httpget.h"
@@ -167,8 +167,6 @@ void RbUtilQt::updateTabs(int count)
167 167
168void RbUtilQt::downloadInfo() 168void RbUtilQt::downloadInfo()
169{ 169{
170 // make sure the version map is repopulated correctly later.
171 versmap.clear();
172 // try to get the current build information 170 // try to get the current build information
173 daily = new HttpGet(this); 171 daily = new HttpGet(this);
174 connect(daily, SIGNAL(done(bool)), this, SLOT(downloadDone(bool))); 172 connect(daily, SIGNAL(done(bool)), this, SLOT(downloadDone(bool)));
@@ -196,23 +194,32 @@ void RbUtilQt::downloadDone(bool error)
196 } 194 }
197 qDebug() << "[RbUtil] network status:" << daily->error(); 195 qDebug() << "[RbUtil] network status:" << daily->error();
198 196
197 // read info into settings object
199 buildInfo.open(); 198 buildInfo.open();
200 QSettings info(buildInfo.fileName(), QSettings::IniFormat, this); 199 QSettings info(buildInfo.fileName(), QSettings::IniFormat, this);
201 buildInfo.close(); 200 buildInfo.close();
202 versmap.insert("arch_rev", info.value("dailies/rev").toString()); 201 RbSettings::setValue(RbSettings::DailyRevision,info.value("dailies/rev"));
203 versmap.insert("arch_date", info.value("dailies/date").toString()); 202 QDate date = QDate::fromString(info.value("dailies/date").toString(), "yyyyMMdd");
204 203 RbSettings::setValue(RbSettings::DailyDate,date.toString());
204
205 info.beginGroup("release"); 205 info.beginGroup("release");
206 versmap.insert("rel_rev", info.value(RbSettings::value(RbSettings::CurBuildserverModel).toString()).toString()); 206 QStringList keys = info.allKeys();
207 for(int i=0; i < keys.size(); i++)
208 {
209 RbSettings::setPlatformValue(keys[i],RbSettings::CurReleaseVersion,info.value(keys[i]));
210 }
207 info.endGroup(); 211 info.endGroup();
208 212
209 bool installable = !versmap.value("rel_rev").isEmpty(); 213 info.beginGroup("status");
210 214 keys = info.allKeys();
211 ui.buttonSmall->setEnabled(installable); 215 for(int i=0; i < keys.size(); i++)
212 ui.buttonComplete->setEnabled(installable); 216 {
213 ui.actionSmall_Installation->setEnabled(installable); 217 RbSettings::setPlatformValue(keys[i],RbSettings::CurStatus,info.value(keys[i]));
214 ui.actionComplete_Installation->setEnabled(installable); 218 }
219 info.endGroup();
215 220
221
222 //start bleeding info download
216 bleeding = new HttpGet(this); 223 bleeding = new HttpGet(this);
217 connect(bleeding, SIGNAL(done(bool)), this, SLOT(downloadBleedingDone(bool))); 224 connect(bleeding, SIGNAL(done(bool)), this, SLOT(downloadBleedingDone(bool)));
218 connect(bleeding, SIGNAL(requestFinished(int, bool)), this, SLOT(downloadDone(int, bool))); 225 connect(bleeding, SIGNAL(requestFinished(int, bool)), this, SLOT(downloadDone(int, bool)));
@@ -223,22 +230,6 @@ void RbUtilQt::downloadDone(bool error)
223 bleeding->getFile(QUrl(RbSettings::value(RbSettings::BleedingInfo).toString())); 230 bleeding->getFile(QUrl(RbSettings::value(RbSettings::BleedingInfo).toString()));
224 ui.statusbar->showMessage(tr("Downloading build information, please wait ...")); 231 ui.statusbar->showMessage(tr("Downloading build information, please wait ..."));
225 232
226 if(RbSettings::value(RbSettings::RbutilVersion) != PUREVERSION) {
227 QApplication::processEvents();
228 QMessageBox::information(this, tr("New installation"),
229 tr("This is a new installation of Rockbox Utility, or a new version. "
230 "The configuration dialog will now open to allow you to setup the program, "
231 " or review your settings."));
232 configDialog();
233 }
234 else if(chkConfig(false)) {
235 QApplication::processEvents();
236 QMessageBox::critical(this, tr("Configuration error"),
237 tr("Your configuration is invalid. This is most likely due "
238 "to a changed device path. The configuration dialog will "
239 "now open to allow you to correct the problem."));
240 configDialog();
241 }
242} 233}
243 234
244 235
@@ -251,11 +242,12 @@ void RbUtilQt::downloadBleedingDone(bool error)
251 bleedingInfo.open(); 242 bleedingInfo.open();
252 QSettings info(bleedingInfo.fileName(), QSettings::IniFormat, this); 243 QSettings info(bleedingInfo.fileName(), QSettings::IniFormat, this);
253 bleedingInfo.close(); 244 bleedingInfo.close();
254 versmap.insert("bleed_rev", info.value("bleeding/rev").toString()); 245 RbSettings::setValue(RbSettings::BleedingRevision,info.value("bleeding/rev"));
255 versmap.insert("bleed_date", info.value("bleeding/timestamp").toString()); 246 QDateTime date = QDateTime::fromString(info.value("bleeding/timestamp").toString(), "yyyyMMddThhmmssZ");
256 qDebug() << "[RbUtil] version map:" << versmap; 247 RbSettings::setValue(RbSettings::BleedingDate,date.toString());
257 ui.statusbar->showMessage(tr("Download build information finished."), 5000);
258 248
249 ui.statusbar->showMessage(tr("Download build information finished."), 5000);
250 updateSettings();
259 m_gotInfo = true; 251 m_gotInfo = true;
260 252
261 //start check for updates 253 //start check for updates
@@ -317,7 +309,6 @@ void RbUtilQt::configDialog()
317{ 309{
318 Config *cw = new Config(this); 310 Config *cw = new Config(this);
319 connect(cw, SIGNAL(settingsUpdated()), this, SLOT(updateSettings())); 311 connect(cw, SIGNAL(settingsUpdated()), this, SLOT(updateSettings()));
320 connect(cw, SIGNAL(settingsUpdated()), this, SLOT(downloadInfo()));
321 cw->show(); 312 cw->show();
322} 313}
323 314
@@ -338,6 +329,23 @@ void RbUtilQt::updateSettings()
338 } 329 }
339 HttpGet::setGlobalCache(RbSettings::value(RbSettings::CachePath).toString()); 330 HttpGet::setGlobalCache(RbSettings::value(RbSettings::CachePath).toString());
340 HttpGet::setGlobalDumbCache(RbSettings::value(RbSettings::CacheOffline).toBool()); 331 HttpGet::setGlobalDumbCache(RbSettings::value(RbSettings::CacheOffline).toBool());
332
333 if(RbSettings::value(RbSettings::RbutilVersion) != PUREVERSION) {
334 QApplication::processEvents();
335 QMessageBox::information(this, tr("New installation"),
336 tr("This is a new installation of Rockbox Utility, or a new version. "
337 "The configuration dialog will now open to allow you to setup the program, "
338 " or review your settings."));
339 configDialog();
340 }
341 else if(chkConfig(false)) {
342 QApplication::processEvents();
343 QMessageBox::critical(this, tr("Configuration error"),
344 tr("Your configuration is invalid. This is most likely due "
345 "to a changed device path. The configuration dialog will "
346 "now open to allow you to correct the problem."));
347 configDialog();
348 }
341} 349}
342 350
343 351
@@ -373,6 +381,13 @@ void RbUtilQt::updateDevice()
373 if(mountpoint.isEmpty()) mountpoint = "&lt;invalid&gt;"; 381 if(mountpoint.isEmpty()) mountpoint = "&lt;invalid&gt;";
374 ui.labelDevice->setText(tr("<b>%1 %2</b> at <b>%3</b>") 382 ui.labelDevice->setText(tr("<b>%1 %2</b> at <b>%3</b>")
375 .arg(brand, name, QDir::toNativeSeparators(mountpoint))); 383 .arg(brand, name, QDir::toNativeSeparators(mountpoint)));
384
385 // hide quickstart buttons if no release available
386 bool installable = !RbSettings::value(RbSettings::CurReleaseVersion).toString().isEmpty();
387 ui.buttonSmall->setEnabled(installable);
388 ui.buttonComplete->setEnabled(installable);
389 ui.actionSmall_Installation->setEnabled(installable);
390 ui.actionComplete_Installation->setEnabled(installable);
376} 391}
377 392
378 393
@@ -411,7 +426,7 @@ void RbUtilQt::completeInstall()
411 "This will install Rockbox %1. To install the most recent " 426 "This will install Rockbox %1. To install the most recent "
412 "development build available press \"Cancel\" and " 427 "development build available press \"Cancel\" and "
413 "use the \"Installation\" tab.") 428 "use the \"Installation\" tab.")
414 .arg(versmap.value("rel_rev")), 429 .arg(RbSettings::value(RbSettings::CurReleaseVersion).toString()),
415 QMessageBox::Ok | QMessageBox::Cancel) != QMessageBox::Ok) 430 QMessageBox::Ok | QMessageBox::Cancel) != QMessageBox::Ok)
416 return; 431 return;
417 // create logger 432 // create logger
@@ -469,7 +484,7 @@ void RbUtilQt::smallInstall()
469 "This will install Rockbox %1. To install the most recent " 484 "This will install Rockbox %1. To install the most recent "
470 "development build available press \"Cancel\" and " 485 "development build available press \"Cancel\" and "
471 "use the \"Installation\" tab.") 486 "use the \"Installation\" tab.")
472 .arg(versmap.value("rel_rev")), 487 .arg(RbSettings::value(RbSettings::CurReleaseVersion).toString()),
473 QMessageBox::Ok | QMessageBox::Cancel) != QMessageBox::Ok) 488 QMessageBox::Ok | QMessageBox::Cancel) != QMessageBox::Ok)
474 return; 489 return;
475 490
@@ -543,7 +558,7 @@ bool RbUtilQt::installAuto()
543{ 558{
544 QString file = RbSettings::value(RbSettings::ReleaseUrl).toString(); 559 QString file = RbSettings::value(RbSettings::ReleaseUrl).toString();
545 file.replace("%MODEL%", RbSettings::value(RbSettings::CurBuildserverModel).toString()); 560 file.replace("%MODEL%", RbSettings::value(RbSettings::CurBuildserverModel).toString());
546 file.replace("%RELVERSION%", versmap.value("rel_rev")); 561 file.replace("%RELVERSION%", RbSettings::value(RbSettings::CurReleaseVersion).toString());
547 562
548 // check installed Version and Target 563 // check installed Version and Target
549 QString warning = check(false); 564 QString warning = check(false);
@@ -600,7 +615,7 @@ bool RbUtilQt::installAuto()
600 ZipInstaller* installer = new ZipInstaller(this); 615 ZipInstaller* installer = new ZipInstaller(this);
601 installer->setUrl(file); 616 installer->setUrl(file);
602 installer->setLogSection("Rockbox (Base)"); 617 installer->setLogSection("Rockbox (Base)");
603 installer->setLogVersion(versmap.value("rel_rev")); 618 installer->setLogVersion(RbSettings::value(RbSettings::CurReleaseVersion).toString());
604 if(!RbSettings::value(RbSettings::CacheDisabled).toBool()) 619 if(!RbSettings::value(RbSettings::CacheDisabled).toBool())
605 installer->setCache(true); 620 installer->setCache(true);
606 installer->setMountPoint(RbSettings::value(RbSettings::Mountpoint).toString()); 621 installer->setMountPoint(RbSettings::value(RbSettings::Mountpoint).toString());
@@ -617,10 +632,7 @@ bool RbUtilQt::installAuto()
617 632
618void RbUtilQt::install() 633void RbUtilQt::install()
619{ 634{
620 Install *installWindow = new Install(this); 635 InstallWindow *installWindow = new InstallWindow(this);
621
622 installWindow->setVersionStrings(versmap);
623
624 installWindow->show(); 636 installWindow->show();
625} 637}
626 638
@@ -837,7 +849,7 @@ void RbUtilQt::installFonts()
837 849
838 installer->setUrl(RbSettings::value(RbSettings::FontUrl).toString()); 850 installer->setUrl(RbSettings::value(RbSettings::FontUrl).toString());
839 installer->setLogSection("Fonts"); 851 installer->setLogSection("Fonts");
840 installer->setLogVersion(versmap.value("arch_date")); 852 installer->setLogVersion(RbSettings::value(RbSettings::DailyDate).toString());
841 installer->setMountPoint(RbSettings::value(RbSettings::Mountpoint).toString()); 853 installer->setMountPoint(RbSettings::value(RbSettings::Mountpoint).toString());
842 if(!RbSettings::value(RbSettings::CacheDisabled).toBool()) 854 if(!RbSettings::value(RbSettings::CacheDisabled).toBool())
843 installer->setCache(true); 855 installer->setCache(true);
@@ -876,12 +888,12 @@ void RbUtilQt::installVoice()
876 QString voiceurl = RbSettings::value(RbSettings::VoiceUrl).toString(); 888 QString voiceurl = RbSettings::value(RbSettings::VoiceUrl).toString();
877 889
878 voiceurl += RbSettings::value(RbSettings::CurBuildserverModel).toString() + "-" + 890 voiceurl += RbSettings::value(RbSettings::CurBuildserverModel).toString() + "-" +
879 versmap.value("arch_date") + "-english.zip"; 891 RbSettings::value(RbSettings::DailyDate).toString() + "-english.zip";
880 qDebug() << "[RbUtil] voicefile URL:" << voiceurl; 892 qDebug() << "[RbUtil] voicefile URL:" << voiceurl;
881 893
882 installer->setUrl(voiceurl); 894 installer->setUrl(voiceurl);
883 installer->setLogSection("Voice"); 895 installer->setLogSection("Voice");
884 installer->setLogVersion(versmap.value("arch_date")); 896 installer->setLogVersion(RbSettings::value(RbSettings::DailyDate).toString());
885 installer->setMountPoint(RbSettings::value(RbSettings::Mountpoint).toString()); 897 installer->setMountPoint(RbSettings::value(RbSettings::Mountpoint).toString());
886 if(!RbSettings::value(RbSettings::CacheDisabled).toBool()) 898 if(!RbSettings::value(RbSettings::CacheDisabled).toBool())
887 installer->setCache(true); 899 installer->setCache(true);
@@ -931,7 +943,7 @@ void RbUtilQt::installDoom()
931 943
932 installer->setUrl(RbSettings::value(RbSettings::DoomUrl).toString()); 944 installer->setUrl(RbSettings::value(RbSettings::DoomUrl).toString());
933 installer->setLogSection("Game Addons"); 945 installer->setLogSection("Game Addons");
934 installer->setLogVersion(versmap.value("arch_date")); 946 installer->setLogVersion(RbSettings::value(RbSettings::DailyDate).toString());
935 installer->setMountPoint(RbSettings::value(RbSettings::Mountpoint).toString()); 947 installer->setMountPoint(RbSettings::value(RbSettings::Mountpoint).toString());
936 if(!RbSettings::value(RbSettings::CacheDisabled).toBool()) 948 if(!RbSettings::value(RbSettings::CacheDisabled).toBool())
937 installer->setCache(true); 949 installer->setCache(true);
@@ -1050,7 +1062,7 @@ void RbUtilQt::downloadManual(void)
1050 if(manual.isEmpty()) 1062 if(manual.isEmpty())
1051 manual = "rockbox-" + RbSettings::value(RbSettings::Platform).toString(); 1063 manual = "rockbox-" + RbSettings::value(RbSettings::Platform).toString();
1052 1064
1053 QString date = versmap.value("arch_date"); 1065 QString date = RbSettings::value(RbSettings::DailyDate).toString();
1054 1066
1055 QString manualurl; 1067 QString manualurl;
1056 QString target; 1068 QString target;
diff --git a/rbutil/rbutilqt/rbutilqt.h b/rbutil/rbutilqt/rbutilqt.h
index 31bae73630..c47926e5a2 100644
--- a/rbutil/rbutilqt/rbutilqt.h
+++ b/rbutil/rbutilqt/rbutilqt.h
@@ -55,7 +55,6 @@ class RbUtilQt : public QMainWindow
55 ProgressLoggerGui *logger; 55 ProgressLoggerGui *logger;
56 ZipInstaller *installer; 56 ZipInstaller *installer;
57 QUrl proxy(void); 57 QUrl proxy(void);
58 QMap<QString, QString> versmap;
59 bool chkConfig(bool); 58 bool chkConfig(bool);
60 59
61 volatile bool m_installed; 60 volatile bool m_installed;
diff --git a/rbutil/rbutilqt/rbutilqt.pro b/rbutil/rbutilqt/rbutilqt.pro
index e335797409..731a4a24ae 100644
--- a/rbutil/rbutilqt/rbutilqt.pro
+++ b/rbutil/rbutilqt/rbutilqt.pro
@@ -65,7 +65,7 @@ QMAKE_EXTRA_TARGETS += lrelease
65 65
66SOURCES += rbutilqt.cpp \ 66SOURCES += rbutilqt.cpp \
67 main.cpp \ 67 main.cpp \
68 install.cpp \ 68 installwindow.cpp \
69 base/httpget.cpp \ 69 base/httpget.cpp \
70 configure.cpp \ 70 configure.cpp \
71 zip/zip.cpp \ 71 zip/zip.cpp \
@@ -115,7 +115,7 @@ SOURCES += rbutilqt.cpp \
115 ../../tools/iriver.c \ 115 ../../tools/iriver.c \
116 116
117HEADERS += rbutilqt.h \ 117HEADERS += rbutilqt.h \
118 install.h \ 118 installwindow.h \
119 base/httpget.h \ 119 base/httpget.h \
120 configure.h \ 120 configure.h \
121 zip/zip.h \ 121 zip/zip.h \