diff options
author | Dominik Riebeling <Dominik.Riebeling@gmail.com> | 2007-08-26 16:03:56 +0000 |
---|---|---|
committer | Dominik Riebeling <Dominik.Riebeling@gmail.com> | 2007-08-26 16:03:56 +0000 |
commit | 848abc803760298b2f97d1ffb135418f16a8166a (patch) | |
tree | c977f4ff3ce5bc6773d2af4b9c19b67bd505c28b /rbutil | |
parent | 663029ddfb18c2b8d0a202729459082e9191ec84 (diff) | |
download | rockbox-848abc803760298b2f97d1ffb135418f16a8166a.tar.gz rockbox-848abc803760298b2f97d1ffb135418f16a8166a.zip |
Add info window which shows details about the currently installed files based on the installation log file. Rework the log file and save revision number / timestamps instead of an arbitrary number.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@14461 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'rbutil')
-rw-r--r-- | rbutil/rbutilqt/install.cpp | 76 | ||||
-rw-r--r-- | rbutil/rbutilqt/install.h | 6 | ||||
-rw-r--r-- | rbutil/rbutilqt/installthemes.cpp | 14 | ||||
-rw-r--r-- | rbutil/rbutilqt/installzip.cpp | 5 | ||||
-rw-r--r-- | rbutil/rbutilqt/installzip.h | 6 | ||||
-rw-r--r-- | rbutil/rbutilqt/rbutilqt.cpp | 142 | ||||
-rw-r--r-- | rbutil/rbutilqt/rbutilqt.h | 6 | ||||
-rw-r--r-- | rbutil/rbutilqt/rbutilqtfrm.ui | 34 |
8 files changed, 228 insertions, 61 deletions
diff --git a/rbutil/rbutilqt/install.cpp b/rbutil/rbutilqt/install.cpp index a537cb2cbe..93e9413d71 100644 --- a/rbutil/rbutilqt/install.cpp +++ b/rbutil/rbutilqt/install.cpp | |||
@@ -37,29 +37,6 @@ void Install::setCached(bool cache) | |||
37 | } | 37 | } |
38 | 38 | ||
39 | 39 | ||
40 | void Install::setReleased(QString rel) | ||
41 | { | ||
42 | releasever = rel; | ||
43 | if(!rel.isEmpty()) { | ||
44 | ui.radioStable->setChecked(true); | ||
45 | ui.radioStable->setEnabled(true); | ||
46 | QFont font; | ||
47 | font.setBold(true); | ||
48 | ui.radioStable->setFont(font); | ||
49 | } | ||
50 | else { | ||
51 | ui.radioCurrent->setChecked(true); | ||
52 | ui.radioStable->setEnabled(false); | ||
53 | ui.radioStable->setChecked(false); | ||
54 | QFont font; | ||
55 | font.setBold(true); | ||
56 | ui.radioCurrent->setFont(font); | ||
57 | } | ||
58 | qDebug() << "Install::setReleased" << releasever; | ||
59 | |||
60 | } | ||
61 | |||
62 | |||
63 | void Install::setProxy(QUrl proxy_url) | 40 | void Install::setProxy(QUrl proxy_url) |
64 | { | 41 | { |
65 | proxy = proxy_url; | 42 | proxy = proxy_url; |
@@ -80,6 +57,7 @@ void Install::accept() | |||
80 | return; | 57 | return; |
81 | } | 58 | } |
82 | 59 | ||
60 | QString myversion; | ||
83 | if(ui.radioStable->isChecked()) { | 61 | if(ui.radioStable->isChecked()) { |
84 | file = QString("%1/rockbox-%2-%3.zip") | 62 | file = QString("%1/rockbox-%2-%3.zip") |
85 | .arg(devices->value("download_url").toString(), | 63 | .arg(devices->value("download_url").toString(), |
@@ -89,17 +67,19 @@ void Install::accept() | |||
89 | .arg(devices->value("last_release").toString(), | 67 | .arg(devices->value("last_release").toString(), |
90 | userSettings->value("defaults/platform").toString()); | 68 | userSettings->value("defaults/platform").toString()); |
91 | userSettings->setValue("defaults/build", "stable"); | 69 | userSettings->setValue("defaults/build", "stable"); |
70 | myversion = version.value("rel_rev"); | ||
92 | } | 71 | } |
93 | else if(ui.radioArchived->isChecked()) { | 72 | else if(ui.radioArchived->isChecked()) { |
94 | file = QString("%1%2/rockbox-%3-%4.zip") | 73 | file = QString("%1%2/rockbox-%3-%4.zip") |
95 | .arg(devices->value("daily_url").toString(), | 74 | .arg(devices->value("daily_url").toString(), |
96 | userSettings->value("defaults/platform").toString(), | 75 | userSettings->value("defaults/platform").toString(), |
97 | userSettings->value("defaults/platform").toString(), | 76 | userSettings->value("defaults/platform").toString(), |
98 | archived); | 77 | version.value("arch_date")); |
99 | fileName = QString("rockbox-%1-%2.zip") | 78 | fileName = QString("rockbox-%1-%2.zip") |
100 | .arg(userSettings->value("defaults/platform").toString(), | 79 | .arg(userSettings->value("defaults/platform").toString(), |
101 | archived); | 80 | version.value("arch_date")); |
102 | userSettings->setValue("defaults/build", "archived"); | 81 | userSettings->setValue("defaults/build", "archived"); |
82 | myversion = "r" + version.value("arch_rev") + "-" + version.value("arch_date"); | ||
103 | } | 83 | } |
104 | else if(ui.radioCurrent->isChecked()) { | 84 | else if(ui.radioCurrent->isChecked()) { |
105 | file = QString("%1%2/rockbox.zip") | 85 | file = QString("%1%2/rockbox.zip") |
@@ -107,6 +87,7 @@ void Install::accept() | |||
107 | userSettings->value("defaults/platform").toString()); | 87 | userSettings->value("defaults/platform").toString()); |
108 | fileName = QString("rockbox.zip"); | 88 | fileName = QString("rockbox.zip"); |
109 | userSettings->setValue("defaults/build", "current"); | 89 | userSettings->setValue("defaults/build", "current"); |
90 | myversion = "r" + version.value("bleed_rev"); | ||
110 | } | 91 | } |
111 | else { | 92 | else { |
112 | qDebug() << "no build selected -- this shouldn't happen"; | 93 | qDebug() << "no build selected -- this shouldn't happen"; |
@@ -118,6 +99,7 @@ void Install::accept() | |||
118 | installer->setUrl(file); | 99 | installer->setUrl(file); |
119 | installer->setProxy(proxy); | 100 | installer->setProxy(proxy); |
120 | installer->setLogSection("rockboxbase"); | 101 | installer->setLogSection("rockboxbase"); |
102 | installer->setLogVersion(myversion); | ||
121 | installer->setMountPoint(mountPoint); | 103 | installer->setMountPoint(mountPoint); |
122 | installer->install(logger); | 104 | installer->install(logger); |
123 | 105 | ||
@@ -147,8 +129,9 @@ void Install::setDetailsCurrent(bool show) | |||
147 | if(show) { | 129 | if(show) { |
148 | ui.labelDetails->setText(tr("This is the absolute up to the minute " | 130 | ui.labelDetails->setText(tr("This is the absolute up to the minute " |
149 | "Rockbox built. A current build will get updated every time " | 131 | "Rockbox built. A current build will get updated every time " |
150 | "a change is made.")); | 132 | "a change is made. Latest version is r%1 (%2).") |
151 | if(releasever == "") | 133 | .arg(version.value("bleed_rev"), version.value("bleed_date"))); |
134 | if(version.value("rel_rev").isEmpty()) | ||
152 | ui.labelNote->setText(tr("<b>Note:</b> This option will always " | 135 | ui.labelNote->setText(tr("<b>Note:</b> This option will always " |
153 | "download a fresh copy. " | 136 | "download a fresh copy. " |
154 | "<b>This is the recommended version.</b>")); | 137 | "<b>This is the recommended version.</b>")); |
@@ -165,9 +148,11 @@ void Install::setDetailsStable(bool show) | |||
165 | ui.labelDetails->setText( | 148 | ui.labelDetails->setText( |
166 | tr("This is the last released version of Rockbox.")); | 149 | tr("This is the last released version of Rockbox.")); |
167 | 150 | ||
168 | if(releasever != "") ui.labelNote->setText(tr("<b>Note:</b>" | 151 | if(!version.value("rel_rev").isEmpty()) |
152 | ui.labelNote->setText(tr("<b>Note:</b>" | ||
169 | "The lastest released version is %1. " | 153 | "The lastest released version is %1. " |
170 | "<b>This is the recommended version.</b>").arg(releasever)); | 154 | "<b>This is the recommended version.</b>") |
155 | .arg(version.value("rel_rev"))); | ||
171 | else ui.labelNote->setText(""); | 156 | else ui.labelNote->setText(""); |
172 | } | 157 | } |
173 | } | 158 | } |
@@ -180,8 +165,8 @@ void Install::setDetailsArchived(bool show) | |||
180 | "from the current development source code. This generally has more " | 165 | "from the current development source code. This generally has more " |
181 | "features than the last release but may be much less stable. " | 166 | "features than the last release but may be much less stable. " |
182 | "Features may change regularly.")); | 167 | "Features may change regularly.")); |
183 | ui.labelNote->setText(tr("<b>Note:</b> archived version is %1.") | 168 | ui.labelNote->setText(tr("<b>Note:</b> archived version is r%1 (%2).") |
184 | .arg(archived)); | 169 | .arg(version.value("arch_rev"), version.value("arch_date"))); |
185 | } | 170 | } |
186 | } | 171 | } |
187 | 172 | ||
@@ -193,14 +178,35 @@ void Install::setDeviceSettings(QSettings *dev) | |||
193 | } | 178 | } |
194 | 179 | ||
195 | 180 | ||
196 | void Install::setArchivedString(QString string) | 181 | void Install::setVersionStrings(QMap<QString, QString> ver) |
197 | { | 182 | { |
198 | archived = string; | 183 | version = ver; |
199 | if(archived.isEmpty()) { | 184 | // version strings map is as following: |
185 | // rel_rev release version revision id | ||
186 | // rel_date release version release date | ||
187 | // same for arch_* and bleed_* | ||
188 | |||
189 | if(version.value("arch_rev").isEmpty()) { | ||
200 | ui.radioArchived->setEnabled(false); | 190 | ui.radioArchived->setEnabled(false); |
201 | qDebug() << "no information about archived version available!"; | 191 | qDebug() << "no information about archived version available!"; |
202 | } | 192 | } |
203 | qDebug() << "Install::setArchivedString" << archived; | 193 | |
194 | if(!version.value("rel_rev").isEmpty()) { | ||
195 | ui.radioStable->setChecked(true); | ||
196 | ui.radioStable->setEnabled(true); | ||
197 | QFont font; | ||
198 | font.setBold(true); | ||
199 | ui.radioStable->setFont(font); | ||
200 | } | ||
201 | else { | ||
202 | ui.radioCurrent->setChecked(true); | ||
203 | ui.radioStable->setEnabled(false); | ||
204 | ui.radioStable->setChecked(false); | ||
205 | QFont font; | ||
206 | font.setBold(true); | ||
207 | ui.radioCurrent->setFont(font); | ||
208 | } | ||
209 | qDebug() << "Install::setVersionStrings" << version; | ||
204 | } | 210 | } |
205 | 211 | ||
206 | void Install::setUserSettings(QSettings *user) | 212 | void Install::setUserSettings(QSettings *user) |
diff --git a/rbutil/rbutilqt/install.h b/rbutil/rbutilqt/install.h index ec60601e70..17c4ba1086 100644 --- a/rbutil/rbutilqt/install.h +++ b/rbutil/rbutilqt/install.h | |||
@@ -34,10 +34,9 @@ class Install : public QDialog | |||
34 | public: | 34 | public: |
35 | Install(QWidget *parent = 0); | 35 | Install(QWidget *parent = 0); |
36 | void setProxy(QUrl); | 36 | void setProxy(QUrl); |
37 | void setReleased(QString); | ||
38 | void setUserSettings(QSettings*); | 37 | void setUserSettings(QSettings*); |
39 | void setDeviceSettings(QSettings*); | 38 | void setDeviceSettings(QSettings*); |
40 | void setArchivedString(QString); | 39 | void setVersionStrings(QMap<QString, QString>); |
41 | 40 | ||
42 | public slots: | 41 | public slots: |
43 | void accept(void); | 42 | void accept(void); |
@@ -46,15 +45,14 @@ class Install : public QDialog | |||
46 | Ui::InstallFrm ui; | 45 | Ui::InstallFrm ui; |
47 | ProgressLoggerGui* logger; | 46 | ProgressLoggerGui* logger; |
48 | QUrl proxy; | 47 | QUrl proxy; |
49 | QString releasever; | ||
50 | QSettings *devices; | 48 | QSettings *devices; |
51 | QSettings *userSettings; | 49 | QSettings *userSettings; |
52 | QHttp *download; | 50 | QHttp *download; |
53 | QFile *target; | 51 | QFile *target; |
54 | QString file; | 52 | QString file; |
55 | QString fileName; | 53 | QString fileName; |
56 | QString archived; | ||
57 | ZipInstaller* installer; | 54 | ZipInstaller* installer; |
55 | QMap<QString, QString> version; | ||
58 | 56 | ||
59 | private slots: | 57 | private slots: |
60 | void setCached(bool); | 58 | void setCached(bool); |
diff --git a/rbutil/rbutilqt/installthemes.cpp b/rbutil/rbutilqt/installthemes.cpp index d083231ba4..70a6ed6ec5 100644 --- a/rbutil/rbutilqt/installthemes.cpp +++ b/rbutil/rbutilqt/installthemes.cpp | |||
@@ -175,7 +175,8 @@ void ThemesInstallWindow::updateDetails(int row) | |||
175 | QString text; | 175 | QString text; |
176 | text = tr("<b>Author:</b> %1<hr/>").arg(iniDetails.value("author", tr("unknown")).toString()); | 176 | text = tr("<b>Author:</b> %1<hr/>").arg(iniDetails.value("author", tr("unknown")).toString()); |
177 | text += tr("<b>Version:</b> %1<hr/>").arg(iniDetails.value("version", tr("unknown")).toString()); | 177 | text += tr("<b>Version:</b> %1<hr/>").arg(iniDetails.value("version", tr("unknown")).toString()); |
178 | text += tr("<b>Description:</b> %1<br/>").arg(iniDetails.value("about", tr("no description")).toString()); | 178 | text += tr("<b>Description:</b> %1<hr/>").arg(iniDetails.value("about", tr("no description")).toString()); |
179 | |||
179 | ui.themeDescription->setHtml(text); | 180 | ui.themeDescription->setHtml(text); |
180 | iniDetails.endGroup(); | 181 | iniDetails.endGroup(); |
181 | 182 | ||
@@ -259,13 +260,19 @@ void ThemesInstallWindow::accept() | |||
259 | } | 260 | } |
260 | QStringList themes; | 261 | QStringList themes; |
261 | QStringList names; | 262 | QStringList names; |
263 | QStringList version; | ||
262 | QString zip; | 264 | QString zip; |
263 | QSettings iniDetails(themesInfo.fileName(), QSettings::IniFormat, this); | 265 | QSettings iniDetails(themesInfo.fileName(), QSettings::IniFormat, this); |
264 | for(int i = 0; i < ui.listThemes->selectedItems().size(); i++) { | 266 | for(int i = 0; i < ui.listThemes->selectedItems().size(); i++) { |
265 | iniDetails.beginGroup(ui.listThemes->selectedItems().at(i)->data(Qt::UserRole).toString()); | 267 | iniDetails.beginGroup(ui.listThemes->selectedItems().at(i)->data(Qt::UserRole).toString()); |
266 | zip = devices->value("themes_url").toString() + "/" + iniDetails.value("archive").toString(); | 268 | zip = devices->value("themes_url").toString() |
269 | + "/" + iniDetails.value("archive").toString(); | ||
267 | themes.append(zip); | 270 | themes.append(zip); |
268 | names.append("Theme: " + ui.listThemes->selectedItems().at(i)->data(Qt::DisplayRole).toString()); | 271 | names.append("Theme: " + |
272 | ui.listThemes->selectedItems().at(i)->data(Qt::DisplayRole).toString()); | ||
273 | // if no version info is available use installation (current) date | ||
274 | version.append(iniDetails.value("version", | ||
275 | QDate().currentDate().toString("yyyyMMdd")).toString()); | ||
269 | iniDetails.endGroup(); | 276 | iniDetails.endGroup(); |
270 | } | 277 | } |
271 | qDebug() << "installing themes:" << themes; | 278 | qDebug() << "installing themes:" << themes; |
@@ -285,6 +292,7 @@ void ThemesInstallWindow::accept() | |||
285 | installer->setUrl(themes); | 292 | installer->setUrl(themes); |
286 | installer->setProxy(proxy); | 293 | installer->setProxy(proxy); |
287 | installer->setLogSection(names); | 294 | installer->setLogSection(names); |
295 | installer->setLogVersion(version); | ||
288 | installer->setMountPoint(mountPoint); | 296 | installer->setMountPoint(mountPoint); |
289 | installer->install(logger); | 297 | installer->install(logger); |
290 | connect(logger, SIGNAL(closed()), this, SLOT(close())); | 298 | connect(logger, SIGNAL(closed()), this, SLOT(close())); |
diff --git a/rbutil/rbutilqt/installzip.cpp b/rbutil/rbutilqt/installzip.cpp index fe16333a06..c5e91d8e36 100644 --- a/rbutil/rbutilqt/installzip.cpp +++ b/rbutil/rbutilqt/installzip.cpp | |||
@@ -36,6 +36,7 @@ void ZipInstaller::install(ProgressloggerInterface *dp) | |||
36 | connect(this, SIGNAL(cont()), this, SLOT(installContinue())); | 36 | connect(this, SIGNAL(cont()), this, SLOT(installContinue())); |
37 | m_url = m_urllist.at(runner); | 37 | m_url = m_urllist.at(runner); |
38 | m_logsection = m_loglist.at(runner); | 38 | m_logsection = m_loglist.at(runner); |
39 | m_logver = m_verlist.at(runner); | ||
39 | installStart(); | 40 | installStart(); |
40 | 41 | ||
41 | } | 42 | } |
@@ -52,6 +53,8 @@ void ZipInstaller::installContinue() | |||
52 | m_dp->addItem(tr("done."), LOGOK); | 53 | m_dp->addItem(tr("done."), LOGOK); |
53 | m_url = m_urllist.at(runner); | 54 | m_url = m_urllist.at(runner); |
54 | m_logsection = m_loglist.at(runner); | 55 | m_logsection = m_loglist.at(runner); |
56 | if(runner < m_verlist.size()) m_logver = m_verlist.at(runner); | ||
57 | else m_logver = "0"; | ||
55 | installStart(); | 58 | installStart(); |
56 | } | 59 | } |
57 | else { | 60 | else { |
@@ -186,7 +189,7 @@ void ZipInstaller::downloadDone(bool error) | |||
186 | installlog.beginGroup(m_logsection); | 189 | installlog.beginGroup(m_logsection); |
187 | for(int i = 0; i < zipContents.size(); i++) | 190 | for(int i = 0; i < zipContents.size(); i++) |
188 | { | 191 | { |
189 | installlog.setValue(zipContents.at(i),installlog.value(zipContents.at(i),0).toInt()+1); | 192 | installlog.setValue(zipContents.at(i), m_logver); |
190 | } | 193 | } |
191 | installlog.endGroup(); | 194 | installlog.endGroup(); |
192 | 195 | ||
diff --git a/rbutil/rbutilqt/installzip.h b/rbutil/rbutilqt/installzip.h index 7620865b31..376bc470e1 100644 --- a/rbutil/rbutilqt/installzip.h +++ b/rbutil/rbutilqt/installzip.h | |||
@@ -42,6 +42,8 @@ public: | |||
42 | void setProxy(QUrl proxy) {m_proxy= proxy;} | 42 | void setProxy(QUrl proxy) {m_proxy= proxy;} |
43 | void setLogSection(QString name) {m_loglist = QStringList(name);} | 43 | void setLogSection(QString name) {m_loglist = QStringList(name);} |
44 | void setLogSection(QStringList name) { m_loglist = name; } | 44 | void setLogSection(QStringList name) { m_loglist = name; } |
45 | void setLogVersion(QString v) { m_verlist = QStringList(v); qDebug() << m_verlist;} | ||
46 | void setLogVersion(QStringList v) { m_verlist = v; qDebug() << m_verlist;} | ||
45 | void setUnzip(bool i) { m_unzip = i; } | 47 | void setUnzip(bool i) { m_unzip = i; } |
46 | void setTarget(QString t) { m_target = t; } | 48 | void setTarget(QString t) { m_target = t; } |
47 | 49 | ||
@@ -58,8 +60,8 @@ private slots: | |||
58 | 60 | ||
59 | private: | 61 | private: |
60 | void installSingle(ProgressloggerInterface *dp); | 62 | void installSingle(ProgressloggerInterface *dp); |
61 | QString m_url, m_file, m_mountpoint, m_logsection; | 63 | QString m_url, m_file, m_mountpoint, m_logsection, m_logver; |
62 | QStringList m_urllist, m_loglist; | 64 | QStringList m_urllist, m_loglist, m_verlist; |
63 | QUrl m_proxy; | 65 | QUrl m_proxy; |
64 | bool m_unzip; | 66 | bool m_unzip; |
65 | QString m_target; | 67 | QString m_target; |
diff --git a/rbutil/rbutilqt/rbutilqt.cpp b/rbutil/rbutilqt/rbutilqt.cpp index a0dc521a69..3d700b7e81 100644 --- a/rbutil/rbutilqt/rbutilqt.cpp +++ b/rbutil/rbutilqt/rbutilqt.cpp | |||
@@ -72,6 +72,13 @@ RbUtilQt::RbUtilQt(QWidget *parent) : QMainWindow(parent) | |||
72 | updateDevice(); | 72 | updateDevice(); |
73 | ui.radioPdf->setChecked(true); | 73 | ui.radioPdf->setChecked(true); |
74 | 74 | ||
75 | // info tab | ||
76 | ui.treeInfo->setAlternatingRowColors(true); | ||
77 | ui.treeInfo->setHeaderLabels(QStringList() << tr("File") << tr("Version")); | ||
78 | ui.treeInfo->expandAll(); | ||
79 | ui.treeInfo->setColumnCount(2); | ||
80 | |||
81 | connect(ui.tabWidget, SIGNAL(currentChanged(int)), this, SLOT(updateTabs(int))); | ||
75 | connect(ui.actionAbout_Qt, SIGNAL(triggered()), qApp, SLOT(aboutQt())); | 82 | connect(ui.actionAbout_Qt, SIGNAL(triggered()), qApp, SLOT(aboutQt())); |
76 | connect(ui.action_About, SIGNAL(triggered()), this, SLOT(about())); | 83 | connect(ui.action_About, SIGNAL(triggered()), this, SLOT(about())); |
77 | connect(ui.action_Configure, SIGNAL(triggered()), this, SLOT(configDialog())); | 84 | connect(ui.action_Configure, SIGNAL(triggered()), this, SLOT(configDialog())); |
@@ -86,6 +93,7 @@ RbUtilQt::RbUtilQt(QWidget *parent) : QMainWindow(parent) | |||
86 | connect(ui.buttonRemoveRockbox, SIGNAL(clicked()), this, SLOT(uninstall())); | 93 | connect(ui.buttonRemoveRockbox, SIGNAL(clicked()), this, SLOT(uninstall())); |
87 | connect(ui.buttonRemoveBootloader, SIGNAL(clicked()), this, SLOT(uninstallBootloader())); | 94 | connect(ui.buttonRemoveBootloader, SIGNAL(clicked()), this, SLOT(uninstallBootloader())); |
88 | connect(ui.buttonDownloadManual, SIGNAL(clicked()), this, SLOT(downloadManual())); | 95 | connect(ui.buttonDownloadManual, SIGNAL(clicked()), this, SLOT(downloadManual())); |
96 | |||
89 | // disable unimplemented stuff | 97 | // disable unimplemented stuff |
90 | ui.buttonSmall->setEnabled(false); | 98 | ui.buttonSmall->setEnabled(false); |
91 | ui.buttonComplete->setEnabled(false); | 99 | ui.buttonComplete->setEnabled(false); |
@@ -102,6 +110,16 @@ RbUtilQt::RbUtilQt(QWidget *parent) : QMainWindow(parent) | |||
102 | } | 110 | } |
103 | 111 | ||
104 | 112 | ||
113 | void RbUtilQt::updateTabs(int count) | ||
114 | { | ||
115 | switch(count) { | ||
116 | case 6: | ||
117 | updateInfo(); | ||
118 | break; | ||
119 | default: | ||
120 | break; | ||
121 | } | ||
122 | } | ||
105 | 123 | ||
106 | 124 | ||
107 | void RbUtilQt::downloadInfo() | 125 | void RbUtilQt::downloadInfo() |
@@ -115,14 +133,44 @@ void RbUtilQt::downloadInfo() | |||
115 | qDebug() << "downloading build info"; | 133 | qDebug() << "downloading build info"; |
116 | daily->setFile(&buildInfo); | 134 | daily->setFile(&buildInfo); |
117 | daily->getFile(QUrl(devices->value("server_conf_url").toString())); | 135 | daily->getFile(QUrl(devices->value("server_conf_url").toString())); |
136 | |||
118 | } | 137 | } |
119 | 138 | ||
120 | 139 | ||
121 | void RbUtilQt::downloadDone(bool error) | 140 | void RbUtilQt::downloadDone(bool error) |
122 | { | 141 | { |
123 | if(error) qDebug() << "network error:" << daily->error(); | 142 | if(error) { |
143 | qDebug() << "network error:" << daily->error(); | ||
144 | return; | ||
145 | } | ||
124 | qDebug() << "network status:" << daily->error(); | 146 | qDebug() << "network status:" << daily->error(); |
147 | |||
148 | buildInfo.open(); | ||
149 | QSettings info(buildInfo.fileName(), QSettings::IniFormat, this); | ||
150 | buildInfo.close(); | ||
151 | versmap.insert("arch_rev", info.value("dailies/rev").toString()); | ||
152 | versmap.insert("arch_date", info.value("dailies/date").toString()); | ||
153 | |||
154 | bleeding = new HttpGet(this); | ||
155 | connect(bleeding, SIGNAL(done(bool)), this, SLOT(downloadBleedingDone(bool))); | ||
156 | connect(bleeding, SIGNAL(requestFinished(int, bool)), this, SLOT(downloadDone(int, bool))); | ||
157 | bleeding->setProxy(proxy()); | ||
125 | 158 | ||
159 | bleeding->setFile(&bleedingInfo); | ||
160 | bleeding->getFile(QUrl(devices->value("bleeding_info").toString())); | ||
161 | } | ||
162 | |||
163 | |||
164 | void RbUtilQt::downloadBleedingDone(bool error) | ||
165 | { | ||
166 | if(error) qDebug() << "network error:" << bleeding->error(); | ||
167 | |||
168 | bleedingInfo.open(); | ||
169 | QSettings info(bleedingInfo.fileName(), QSettings::IniFormat, this); | ||
170 | bleedingInfo.close(); | ||
171 | versmap.insert("bleed_rev", info.value("bleeding/rev").toString()); | ||
172 | versmap.insert("bleed_date", info.value("bleeding/timestamp").toString()); | ||
173 | qDebug() << "versmap =" << versmap; | ||
126 | } | 174 | } |
127 | 175 | ||
128 | 176 | ||
@@ -131,7 +179,9 @@ void RbUtilQt::downloadDone(int id, bool error) | |||
131 | QString errorString; | 179 | QString errorString; |
132 | errorString = tr("Network error: %1. Please check your network and proxy settings.") | 180 | errorString = tr("Network error: %1. Please check your network and proxy settings.") |
133 | .arg(daily->errorString()); | 181 | .arg(daily->errorString()); |
134 | if(error) QMessageBox::about(this, "Network Error", errorString); | 182 | if(error) { |
183 | QMessageBox::about(this, "Network Error", errorString); | ||
184 | } | ||
135 | qDebug() << "downloadDone:" << id << error; | 185 | qDebug() << "downloadDone:" << id << error; |
136 | } | 186 | } |
137 | 187 | ||
@@ -260,15 +310,17 @@ void RbUtilQt::install() | |||
260 | buildInfo.open(); | 310 | buildInfo.open(); |
261 | QSettings info(buildInfo.fileName(), QSettings::IniFormat, this); | 311 | QSettings info(buildInfo.fileName(), QSettings::IniFormat, this); |
262 | buildInfo.close(); | 312 | buildInfo.close(); |
263 | installWindow->setArchivedString(info.value("dailies/date").toString()); | ||
264 | 313 | ||
265 | devices->beginGroup(platform); | 314 | devices->beginGroup(platform); |
266 | QString released = devices->value("released").toString(); | 315 | QString released = devices->value("released").toString(); |
267 | devices->endGroup(); | 316 | devices->endGroup(); |
268 | if(released == "yes") | 317 | if(released == "yes") { |
269 | installWindow->setReleased(devices->value("last_release", "").toString()); | 318 | // only set the keys if needed -- querying will yield an empty string |
270 | else | 319 | // if not set. |
271 | installWindow->setReleased(0); | 320 | versmap.insert("rel_rev", devices->value("last_release").toString()); |
321 | versmap.insert("rel_date", ""); // FIXME: provide the release timestamp | ||
322 | } | ||
323 | installWindow->setVersionStrings(versmap); | ||
272 | 324 | ||
273 | installWindow->show(); | 325 | installWindow->show(); |
274 | } | 326 | } |
@@ -349,6 +401,7 @@ void RbUtilQt::installFonts() | |||
349 | installer->setUrl(devices->value("font_url").toString()); | 401 | installer->setUrl(devices->value("font_url").toString()); |
350 | installer->setProxy(proxy()); | 402 | installer->setProxy(proxy()); |
351 | installer->setLogSection("Fonts"); | 403 | installer->setLogSection("Fonts"); |
404 | installer->setLogVersion(versmap.value("arch_date")); | ||
352 | installer->setMountPoint(userSettings->value("defaults/mountpoint").toString()); | 405 | installer->setMountPoint(userSettings->value("defaults/mountpoint").toString()); |
353 | installer->install(logger); | 406 | installer->install(logger); |
354 | 407 | ||
@@ -368,19 +421,16 @@ void RbUtilQt::installVoice() | |||
368 | // create zip installer | 421 | // create zip installer |
369 | installer = new ZipInstaller(this); | 422 | installer = new ZipInstaller(this); |
370 | installer->setUnzip(false); | 423 | installer->setUnzip(false); |
371 | buildInfo.open(); | 424 | |
372 | QSettings info(buildInfo.fileName(), QSettings::IniFormat, this); | ||
373 | buildInfo.close(); | ||
374 | QString datestring = info.value("dailies/date").toString(); | ||
375 | |||
376 | QString voiceurl = devices->value("voice_url").toString() + "/" + | 425 | QString voiceurl = devices->value("voice_url").toString() + "/" + |
377 | userSettings->value("defaults/platform").toString() + "-" + | 426 | userSettings->value("defaults/platform").toString() + "-" + |
378 | datestring + "-english.voice"; | 427 | versmap.value("arch_date") + "-english.voice"; |
379 | qDebug() << voiceurl; | 428 | qDebug() << voiceurl; |
380 | 429 | ||
381 | installer->setProxy(proxy()); | 430 | installer->setProxy(proxy()); |
382 | installer->setUrl(voiceurl); | 431 | installer->setUrl(voiceurl); |
383 | installer->setLogSection("Voice"); | 432 | installer->setLogSection("Voice"); |
433 | installer->setLogVersion(versmap.value("arch_date")); | ||
384 | installer->setMountPoint(userSettings->value("defaults/mountpoint").toString()); | 434 | installer->setMountPoint(userSettings->value("defaults/mountpoint").toString()); |
385 | installer->setTarget("/.rockbox/langs/english.voice"); | 435 | installer->setTarget("/.rockbox/langs/english.voice"); |
386 | installer->install(logger); | 436 | installer->install(logger); |
@@ -403,7 +453,8 @@ void RbUtilQt::installDoom() | |||
403 | 453 | ||
404 | installer->setUrl(devices->value("doom_url").toString()); | 454 | installer->setUrl(devices->value("doom_url").toString()); |
405 | installer->setProxy(proxy()); | 455 | installer->setProxy(proxy()); |
406 | installer->setLogSection("GameAddons"); | 456 | installer->setLogSection("Game Addons"); |
457 | installer->setLogVersion(versmap.value("arch_date")); | ||
407 | installer->setMountPoint(userSettings->value("defaults/mountpoint").toString()); | 458 | installer->setMountPoint(userSettings->value("defaults/mountpoint").toString()); |
408 | installer->install(logger); | 459 | installer->install(logger); |
409 | 460 | ||
@@ -547,6 +598,69 @@ void RbUtilQt::installPortable(void) | |||
547 | } | 598 | } |
548 | 599 | ||
549 | 600 | ||
601 | void RbUtilQt::updateInfo() | ||
602 | { | ||
603 | qDebug() << "RbUtilQt::updateInfo()"; | ||
604 | |||
605 | QSettings log(userSettings->value("defaults/mountpoint").toString() + "/.rockbox/rbutil.log", QSettings::IniFormat, this); | ||
606 | QStringList groups = log.childGroups(); | ||
607 | QList<QTreeWidgetItem *> items; | ||
608 | QTreeWidgetItem *w, *w2; | ||
609 | QString min, max; | ||
610 | int olditems = 0; | ||
611 | |||
612 | // remove old list entries (if any) | ||
613 | int l = ui.treeInfo->topLevelItemCount(); | ||
614 | while(l--) { | ||
615 | QTreeWidgetItem *m; | ||
616 | m = ui.treeInfo->takeTopLevelItem(l); | ||
617 | // delete childs (single level deep, no recursion here) | ||
618 | int n = m->childCount(); | ||
619 | while(n--) | ||
620 | delete m->child(n); | ||
621 | } | ||
622 | // get and populate new items | ||
623 | for(int a = 0; a < groups.size(); a++) { | ||
624 | log.beginGroup(groups.at(a)); | ||
625 | QStringList keys = log.allKeys(); | ||
626 | w = new QTreeWidgetItem; | ||
627 | w->setFlags(Qt::ItemIsEnabled); | ||
628 | w->setText(0, groups.at(a)); | ||
629 | items.append(w); | ||
630 | // get minimum and maximum version information so we can hilight old files | ||
631 | min = max = log.value(keys.at(0)).toString(); | ||
632 | for(int b = 0; b < keys.size(); b++) { | ||
633 | if(log.value(keys.at(b)).toString() > max) | ||
634 | max = log.value(keys.at(b)).toString(); | ||
635 | if(log.value(keys.at(b)).toString() < min) | ||
636 | min = log.value(keys.at(b)).toString(); | ||
637 | } | ||
638 | |||
639 | for(int b = 0; b < keys.size(); b++) { | ||
640 | QString file; | ||
641 | file = userSettings->value("defaults/mountpoint").toString() + "/" + keys.at(b); | ||
642 | if(QFileInfo(file).isDir()) | ||
643 | continue; | ||
644 | w2 = new QTreeWidgetItem(w, QStringList() << "/" | ||
645 | + keys.at(b) << log.value(keys.at(b)).toString()); | ||
646 | if(log.value(keys.at(b)).toString() != max) { | ||
647 | w2->setForeground(0, QBrush(QColor(255, 0, 0))); | ||
648 | w2->setForeground(1, QBrush(QColor(255, 0, 0))); | ||
649 | olditems++; | ||
650 | } | ||
651 | items.append(w2); | ||
652 | } | ||
653 | log.endGroup(); | ||
654 | if(min != max) | ||
655 | w->setData(1, Qt::DisplayRole, QString("%1 / %2").arg(min, max)); | ||
656 | else | ||
657 | w->setData(1, Qt::DisplayRole, max); | ||
658 | } | ||
659 | ui.treeInfo->insertTopLevelItems(0, items); | ||
660 | ui.treeInfo->resizeColumnToContents(0); | ||
661 | } | ||
662 | |||
663 | |||
550 | QUrl RbUtilQt::proxy() | 664 | QUrl RbUtilQt::proxy() |
551 | { | 665 | { |
552 | if(userSettings->value("defaults/proxytype") == "manual") | 666 | if(userSettings->value("defaults/proxytype") == "manual") |
diff --git a/rbutil/rbutilqt/rbutilqt.h b/rbutil/rbutilqt/rbutilqt.h index 1a6dda8259..a2e25112f3 100644 --- a/rbutil/rbutilqt/rbutilqt.h +++ b/rbutil/rbutilqt/rbutilqt.h | |||
@@ -45,13 +45,16 @@ class RbUtilQt : public QMainWindow | |||
45 | QString deviceName(QString); | 45 | QString deviceName(QString); |
46 | QString platform; | 46 | QString platform; |
47 | HttpGet *daily; | 47 | HttpGet *daily; |
48 | HttpGet *bleeding; | ||
48 | QString absolutePath; | 49 | QString absolutePath; |
49 | QTemporaryFile buildInfo; | 50 | QTemporaryFile buildInfo; |
51 | QTemporaryFile bleedingInfo; | ||
50 | void updateManual(void); | 52 | void updateManual(void); |
51 | ProgressLoggerGui *logger; | 53 | ProgressLoggerGui *logger; |
52 | ZipInstaller *installer; | 54 | ZipInstaller *installer; |
53 | BootloaderInstaller* blinstaller; | 55 | BootloaderInstaller* blinstaller; |
54 | QUrl proxy(void); | 56 | QUrl proxy(void); |
57 | QMap<QString, QString> versmap; | ||
55 | 58 | ||
56 | private slots: | 59 | private slots: |
57 | void about(void); | 60 | void about(void); |
@@ -65,6 +68,7 @@ class RbUtilQt : public QMainWindow | |||
65 | void createTalkFiles(void); | 68 | void createTalkFiles(void); |
66 | void downloadDone(bool); | 69 | void downloadDone(bool); |
67 | void downloadDone(int, bool); | 70 | void downloadDone(int, bool); |
71 | void downloadBleedingDone(bool); | ||
68 | void downloadInfo(void); | 72 | void downloadInfo(void); |
69 | void installVoice(void); | 73 | void installVoice(void); |
70 | void installThemes(void); | 74 | void installThemes(void); |
@@ -72,6 +76,8 @@ class RbUtilQt : public QMainWindow | |||
72 | void uninstallBootloader(void); | 76 | void uninstallBootloader(void); |
73 | void downloadManual(void); | 77 | void downloadManual(void); |
74 | void installPortable(void); | 78 | void installPortable(void); |
79 | void updateInfo(void); | ||
80 | void updateTabs(int); | ||
75 | }; | 81 | }; |
76 | 82 | ||
77 | #endif | 83 | #endif |
diff --git a/rbutil/rbutilqt/rbutilqtfrm.ui b/rbutil/rbutilqt/rbutilqtfrm.ui index 826ac15133..2a79cee26c 100644 --- a/rbutil/rbutilqt/rbutilqtfrm.ui +++ b/rbutil/rbutilqt/rbutilqtfrm.ui | |||
@@ -5,7 +5,7 @@ | |||
5 | <rect> | 5 | <rect> |
6 | <x>0</x> | 6 | <x>0</x> |
7 | <y>0</y> | 7 | <y>0</y> |
8 | <width>600</width> | 8 | <width>662</width> |
9 | <height>550</height> | 9 | <height>550</height> |
10 | </rect> | 10 | </rect> |
11 | </property> | 11 | </property> |
@@ -761,6 +761,36 @@ p, li { white-space: pre-wrap; } | |||
761 | </item> | 761 | </item> |
762 | </layout> | 762 | </layout> |
763 | </widget> | 763 | </widget> |
764 | <widget class="QWidget" name="info" > | ||
765 | <attribute name="title" > | ||
766 | <string>Inf&o</string> | ||
767 | </attribute> | ||
768 | <layout class="QGridLayout" > | ||
769 | <item row="0" column="0" > | ||
770 | <widget class="QLabel" name="labelInfo" > | ||
771 | <property name="text" > | ||
772 | <string><html><head><meta name="qrichtext" content="1" /><style type="text/css"> | ||
773 | p, li { white-space: pre-wrap; } | ||
774 | </style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal;"> | ||
775 | <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Currently installed packages.</p> | ||
776 | <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Note</span>: if you manually installed packages this might not be correct!</p></body></html></string> | ||
777 | </property> | ||
778 | <property name="wordWrap" > | ||
779 | <bool>true</bool> | ||
780 | </property> | ||
781 | </widget> | ||
782 | </item> | ||
783 | <item row="1" column="0" > | ||
784 | <widget class="QTreeWidget" name="treeInfo" > | ||
785 | <column> | ||
786 | <property name="text" > | ||
787 | <string>1</string> | ||
788 | </property> | ||
789 | </column> | ||
790 | </widget> | ||
791 | </item> | ||
792 | </layout> | ||
793 | </widget> | ||
764 | </widget> | 794 | </widget> |
765 | </item> | 795 | </item> |
766 | </layout> | 796 | </layout> |
@@ -770,7 +800,7 @@ p, li { white-space: pre-wrap; } | |||
770 | <rect> | 800 | <rect> |
771 | <x>0</x> | 801 | <x>0</x> |
772 | <y>0</y> | 802 | <y>0</y> |
773 | <width>600</width> | 803 | <width>662</width> |
774 | <height>29</height> | 804 | <height>29</height> |
775 | </rect> | 805 | </rect> |
776 | </property> | 806 | </property> |