summaryrefslogtreecommitdiff
path: root/utils/rbutilqt/gui/changelog.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'utils/rbutilqt/gui/changelog.cpp')
-rw-r--r--utils/rbutilqt/gui/changelog.cpp78
1 files changed, 78 insertions, 0 deletions
diff --git a/utils/rbutilqt/gui/changelog.cpp b/utils/rbutilqt/gui/changelog.cpp
new file mode 100644
index 0000000000..79d601e412
--- /dev/null
+++ b/utils/rbutilqt/gui/changelog.cpp
@@ -0,0 +1,78 @@
1/***************************************************************************
2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/
8 *
9 * Copyright (C) 2013 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 "changelog.h"
20#include "rbsettings.h"
21#include "ui_changelogfrm.h"
22
23Changelog::Changelog(QWidget *parent) : QDialog(parent)
24{
25 ui.setupUi(this);
26 ui.browserChangelog->setOpenExternalLinks(true);
27 // FIXME: support translated changelog file (changelog.de.txt etc)
28 ui.browserChangelog->setHtml(parseChangelogFile(":/docs/changelog.txt"));
29 ui.browserChangelog->moveCursor(QTextCursor::End, QTextCursor::MoveAnchor);
30 ui.checkBoxShowAlways->setChecked(RbSettings::value(RbSettings::ShowChangelog).toBool());
31 connect(ui.buttonOk, SIGNAL(clicked()), this, SLOT(accept()));
32}
33
34
35void Changelog::accept(void)
36{
37 RbSettings::setValue(RbSettings::ShowChangelog, ui.checkBoxShowAlways->isChecked());
38 this->hide();
39 this->deleteLater();
40}
41
42
43QString Changelog::parseChangelogFile(QString filename)
44{
45 QFile changelog(filename);
46 changelog.open(QIODevice::ReadOnly);
47 QTextStream c(&changelog);
48#if QT_VERSION < 0x060000
49 c.setCodec(QTextCodec::codecForName("UTF-8"));
50#else
51 c.setEncoding(QStringConverter::Utf8);
52#endif
53 QString text;
54 while(!c.atEnd()) {
55 QString line = c.readLine();
56 if(line.startsWith("#"))
57 continue;
58 if(line.startsWith("Version")) {
59 text.append(QString("<h4>Rockbox Utility %1</h4>").arg(line.remove("Version")));
60 line = c.readLine();
61 text.append("<ul>");
62 while(line.startsWith("*")) {
63 QString t = line.remove(QRegExp("^\\*"));
64 t.replace(QRegExp("FS#(\\d+)"),
65 "<a href='http://www.rockbox.org/tracker/task/\\1'>FS#\\1</a>");
66 t.replace(QRegExp("G#(\\d+)"),
67 "<a href='http://gerrit.rockbox.org/r/\\1'>G#\\1</a>");
68 text.append(QString("<li>%1</li>").arg(t));
69 line = c.readLine();
70 if(line.startsWith("#"))
71 line = c.readLine();
72 }
73 text.append("</ul>");
74 }
75 }
76 changelog.close();
77 return text;
78}