summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDominik Riebeling <Dominik.Riebeling@gmail.com>2009-03-30 21:15:43 +0000
committerDominik Riebeling <Dominik.Riebeling@gmail.com>2009-03-30 21:15:43 +0000
commit246192b349de5f09a399f8b1e41e65a82d0d363b (patch)
tree401651af2bca2b761236eea9f92d6356b7efd093
parent83aa2d2b18bf8690a18888d2d4ae95f9cefaea95 (diff)
downloadrockbox-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
-rw-r--r--rbutil/rbutilqt/installthemes.cpp49
-rw-r--r--rbutil/rbutilqt/installthemes.h4
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
153void ThemesInstallWindow::updateDetails(int row) 154void 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
171void 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