diff options
Diffstat (limited to 'utils/rbutilqt/gui/infowidget.cpp')
-rw-r--r-- | utils/rbutilqt/gui/infowidget.cpp | 112 |
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 | |||
25 | InfoWidget::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 | |||
37 | void 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 | |||
103 | void 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 | |||