diff options
author | Dominik Riebeling <Dominik.Riebeling@gmail.com> | 2009-03-30 21:15:43 +0000 |
---|---|---|
committer | Dominik Riebeling <Dominik.Riebeling@gmail.com> | 2009-03-30 21:15:43 +0000 |
commit | 246192b349de5f09a399f8b1e41e65a82d0d363b (patch) | |
tree | 401651af2bca2b761236eea9f92d6356b7efd093 /rbutil/rbutilqt | |
parent | 83aa2d2b18bf8690a18888d2d4ae95f9cefaea95 (diff) | |
download | rockbox-246192b349de5f09a399f8b1e41e65a82d0d363b.tar.gz rockbox-246192b349de5f09a399f8b1e41e65a82d0d363b.zip |
Clean up theme size display.
- show the size and number of all selected themes instead of the selected one only
- use currentItemChanged() signal instead of currentRowChanged() to simplify code a bit.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@20587 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'rbutil/rbutilqt')
-rw-r--r-- | rbutil/rbutilqt/installthemes.cpp | 49 | ||||
-rw-r--r-- | rbutil/rbutilqt/installthemes.h | 4 |
2 files changed, 31 insertions, 22 deletions
diff --git a/rbutil/rbutilqt/installthemes.cpp b/rbutil/rbutilqt/installthemes.cpp index 6095a5f2bd..77bf2682ad 100644 --- a/rbutil/rbutilqt/installthemes.cpp +++ b/rbutil/rbutilqt/installthemes.cpp | |||
@@ -33,12 +33,13 @@ ThemesInstallWindow::ThemesInstallWindow(QWidget *parent) : QDialog(parent) | |||
33 | ui.listThemes->setSortingEnabled(true); | 33 | ui.listThemes->setSortingEnabled(true); |
34 | ui.themePreview->clear(); | 34 | ui.themePreview->clear(); |
35 | ui.themePreview->setText(tr("no theme selected")); | 35 | ui.themePreview->setText(tr("no theme selected")); |
36 | currentItem = -1; | 36 | ui.labelSize->setText(tr("no selection")); |
37 | 37 | ||
38 | connect(ui.buttonCancel, SIGNAL(clicked()), this, SLOT(close())); | 38 | connect(ui.buttonCancel, SIGNAL(clicked()), this, SLOT(close())); |
39 | connect(ui.buttonOk, SIGNAL(clicked()), this, SLOT(accept())); | 39 | connect(ui.buttonOk, SIGNAL(clicked()), this, SLOT(accept())); |
40 | connect(ui.listThemes, SIGNAL(currentRowChanged(int)), | 40 | connect(ui.listThemes, SIGNAL(currentItemChanged(QListWidgetItem*, QListWidgetItem*)), |
41 | this, SLOT(updateDetails(int))); | 41 | this, SLOT(updateDetails(QListWidgetItem*, QListWidgetItem*))); |
42 | connect(ui.listThemes, SIGNAL(itemSelectionChanged()), this, SLOT(updateSize())); | ||
42 | connect(&igetter, SIGNAL(done(bool)), this, SLOT(updateImage(bool))); | 43 | connect(&igetter, SIGNAL(done(bool)), this, SLOT(updateImage(bool))); |
43 | } | 44 | } |
44 | 45 | ||
@@ -150,35 +151,43 @@ void ThemesInstallWindow::downloadDone(bool error) | |||
150 | } | 151 | } |
151 | 152 | ||
152 | 153 | ||
153 | void ThemesInstallWindow::updateDetails(int row) | 154 | void ThemesInstallWindow::updateSize(void) |
154 | { | 155 | { |
155 | if(row == currentItem) return; | 156 | long size = 0; |
157 | // sum up size for all selected themes | ||
158 | QSettings iniDetails(themesInfo.fileName(), QSettings::IniFormat, this); | ||
159 | int items = ui.listThemes->selectedItems().size(); | ||
160 | for(int i = 0; i < items; i++) { | ||
161 | iniDetails.beginGroup(ui.listThemes->selectedItems() | ||
162 | .at(i)->data(Qt::UserRole).toString()); | ||
163 | size += iniDetails.value("size").toInt(); | ||
164 | iniDetails.endGroup(); | ||
165 | } | ||
166 | ui.labelSize->setText(tr("Download size %L1 kiB (%n item(s))", "", items) | ||
167 | .arg((size + 512) / 1024)); | ||
168 | } | ||
169 | |||
170 | |||
171 | void ThemesInstallWindow::updateDetails(QListWidgetItem* cur, QListWidgetItem* prev) | ||
172 | { | ||
173 | if(cur == prev) | ||
174 | return; | ||
156 | 175 | ||
157 | currentItem = row; | ||
158 | qDebug() << "updateDetails(int) =" << row; | ||
159 | QSettings iniDetails(themesInfo.fileName(), QSettings::IniFormat, this); | 176 | QSettings iniDetails(themesInfo.fileName(), QSettings::IniFormat, this); |
177 | |||
178 | QCoreApplication::processEvents(); | ||
160 | ui.themeDescription->setText(tr("fetching details for %1") | 179 | ui.themeDescription->setText(tr("fetching details for %1") |
161 | .arg(ui.listThemes->item(row)->data(Qt::DisplayRole).toString())); | 180 | .arg(cur->data(Qt::DisplayRole).toString())); |
162 | ui.themePreview->clear(); | 181 | ui.themePreview->clear(); |
163 | ui.themePreview->setText(tr("fetching preview ...")); | 182 | ui.themePreview->setText(tr("fetching preview ...")); |
164 | 183 | ||
165 | double size = 0; | 184 | iniDetails.beginGroup(cur->data(Qt::UserRole).toString()); |
166 | |||
167 | iniDetails.beginGroup(ui.listThemes->item(row)->data(Qt::UserRole).toString()); | ||
168 | size += iniDetails.value("size").toDouble(); | ||
169 | qDebug() << ui.listThemes->item(row)->data(Qt::UserRole).toString() << size; | ||
170 | iniDetails.endGroup(); | ||
171 | ui.labelSize->setText(tr("Download size %L1 kiB").arg(size)); | ||
172 | |||
173 | iniDetails.beginGroup(ui.listThemes->item(row)->data(Qt::UserRole).toString()); | ||
174 | 185 | ||
175 | QUrl img, txt; | 186 | QUrl img, txt; |
176 | txt = QUrl(QString(settings->themeUrl() + "/" | 187 | txt = QUrl(QString(settings->themeUrl() + "/" |
177 | + iniDetails.value("descriptionfile").toString())); | 188 | + iniDetails.value("descriptionfile").toString())); |
178 | img = QUrl(QString(settings->themeUrl() + "/" | 189 | img = QUrl(QString(settings->themeUrl() + "/" |
179 | + iniDetails.value("image").toString())); | 190 | + iniDetails.value("image").toString())); |
180 | qDebug() << "txt:" << txt; | ||
181 | qDebug() << "img:" << img; | ||
182 | 191 | ||
183 | QString text; | 192 | QString text; |
184 | text = tr("<b>Author:</b> %1<hr/>").arg(iniDetails.value("author", | 193 | text = tr("<b>Author:</b> %1<hr/>").arg(iniDetails.value("author", |
@@ -198,7 +207,7 @@ void ThemesInstallWindow::updateDetails(int row) | |||
198 | { | 207 | { |
199 | if(infocachedir=="") | 208 | if(infocachedir=="") |
200 | { | 209 | { |
201 | infocachedir = QDir::tempPath()+"rbutil-themeinfo"; | 210 | infocachedir = QDir::tempPath() + "rbutil-themeinfo"; |
202 | QDir d = QDir::temp(); | 211 | QDir d = QDir::temp(); |
203 | d.mkdir("rbutil-themeinfo"); | 212 | d.mkdir("rbutil-themeinfo"); |
204 | } | 213 | } |
diff --git a/rbutil/rbutilqt/installthemes.h b/rbutil/rbutilqt/installthemes.h index c20c17f738..6b7aa22074 100644 --- a/rbutil/rbutilqt/installthemes.h +++ b/rbutil/rbutilqt/installthemes.h | |||
@@ -51,7 +51,6 @@ class ThemesInstallWindow : public QDialog | |||
51 | HttpGet *getter; | 51 | HttpGet *getter; |
52 | HttpGet igetter; | 52 | HttpGet igetter; |
53 | QTemporaryFile themesInfo; | 53 | QTemporaryFile themesInfo; |
54 | int currentItem; | ||
55 | void resizeEvent(QResizeEvent*); | 54 | void resizeEvent(QResizeEvent*); |
56 | QByteArray imgData; | 55 | QByteArray imgData; |
57 | ProgressLoggerGui *logger; | 56 | ProgressLoggerGui *logger; |
@@ -64,9 +63,10 @@ class ThemesInstallWindow : public QDialog | |||
64 | private slots: | 63 | private slots: |
65 | void downloadDone(bool); | 64 | void downloadDone(bool); |
66 | void downloadDone(int, bool); | 65 | void downloadDone(int, bool); |
67 | void updateDetails(int); | ||
68 | void updateImage(bool); | 66 | void updateImage(bool); |
69 | void abort(void); | 67 | void abort(void); |
68 | void updateDetails(QListWidgetItem* cur, QListWidgetItem* prev); | ||
69 | void updateSize(void); | ||
70 | }; | 70 | }; |
71 | 71 | ||
72 | 72 | ||