summaryrefslogtreecommitdiff
path: root/utils/rbutilqt/gui/infowidget.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'utils/rbutilqt/gui/infowidget.cpp')
-rw-r--r--utils/rbutilqt/gui/infowidget.cpp112
1 files changed, 112 insertions, 0 deletions
diff --git a/utils/rbutilqt/gui/infowidget.cpp b/utils/rbutilqt/gui/infowidget.cpp
new file mode 100644
index 0000000000..25b0503090
--- /dev/null
+++ b/utils/rbutilqt/gui/infowidget.cpp
@@ -0,0 +1,112 @@
1/***************************************************************************
2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/
8 *
9 * Copyright (C) 2012 by Dominik Riebeling
10 *
11 * All files in this archive are subject to the GNU General Public License.
12 * See the file COPYING in the source tree root for full license agreement.
13 *
14 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
15 * KIND, either express or implied.
16 *
17 ****************************************************************************/
18
19#include <QWidget>
20#include <QDebug>
21#include "infowidget.h"
22#include "rbsettings.h"
23#include "Logger.h"
24
25InfoWidget::InfoWidget(QWidget *parent) : QWidget(parent)
26{
27 ui.setupUi(this);
28
29 ui.treeInfo->setAlternatingRowColors(true);
30 ui.treeInfo->setHeaderLabels(QStringList() << tr("File") << tr("Version"));
31 ui.treeInfo->expandAll();
32 ui.treeInfo->setColumnCount(2);
33 ui.treeInfo->setLayoutDirection(Qt::LeftToRight);
34}
35
36
37void InfoWidget::updateInfo(void)
38{
39 LOG_INFO() << "updating server info";
40
41 QString mp = RbSettings::value(RbSettings::Mountpoint).toString();
42 QSettings log(mp + "/.rockbox/rbutil.log", QSettings::IniFormat, this);
43 QStringList groups = log.childGroups();
44 QList<QTreeWidgetItem *> items;
45 QTreeWidgetItem *w, *w2;
46 QString min, max;
47 int olditems = 0;
48
49 // remove old list entries (if any)
50 int l = ui.treeInfo->topLevelItemCount();
51 while(l--) {
52 QTreeWidgetItem *m;
53 m = ui.treeInfo->takeTopLevelItem(l);
54 // delete childs (single level deep, no recursion here)
55 int n = m->childCount();
56 while(n--)
57 delete m->child(n);
58 }
59 // get and populate new items
60 for(int a = 0; a < groups.size(); a++) {
61 log.beginGroup(groups.at(a));
62 QStringList keys = log.allKeys();
63 w = new QTreeWidgetItem;
64 w->setFlags(Qt::ItemIsEnabled);
65 w->setText(0, groups.at(a));
66 items.append(w);
67 // get minimum and maximum version information so we can hilight old files
68 min = max = log.value(keys.at(0)).toString();
69 for(int b = 0; b < keys.size(); b++) {
70 if(log.value(keys.at(b)).toString() > max)
71 max = log.value(keys.at(b)).toString();
72 if(log.value(keys.at(b)).toString() < min)
73 min = log.value(keys.at(b)).toString();
74 }
75
76 for(int b = 0; b < keys.size(); b++) {
77 QString file;
78 file = mp + "/" + keys.at(b);
79 if(QFileInfo(file).isDir())
80 continue;
81 w2 = new QTreeWidgetItem(w, QStringList() << "/"
82 + keys.at(b) << log.value(keys.at(b)).toString());
83 if(log.value(keys.at(b)).toString() != max) {
84 w2->setForeground(0, QBrush(QColor(255, 0, 0)));
85 w2->setForeground(1, QBrush(QColor(255, 0, 0)));
86 olditems++;
87 }
88 items.append(w2);
89 }
90 log.endGroup();
91 if(min != max)
92 w->setData(1, Qt::DisplayRole, QString("%1 / %2").arg(min, max));
93 else
94 w->setData(1, Qt::DisplayRole, max);
95 }
96 ui.treeInfo->insertTopLevelItems(0, items);
97 ui.treeInfo->expandAll();
98 ui.treeInfo->resizeColumnToContents(0);
99 ui.treeInfo->collapseAll();
100}
101
102
103void InfoWidget::changeEvent(QEvent *e)
104{
105 if(e->type() == QEvent::LanguageChange) {
106 ui.retranslateUi(this);
107 ui.treeInfo->setHeaderLabels(QStringList() << tr("File") << tr("Version"));
108 } else {
109 QWidget::changeEvent(e);
110 }
111}
112