summaryrefslogtreecommitdiffstats
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..f256f3805c
--- /dev/null
+++ b/utils/rbutilqt/gui/changelog.cpp
@@ -0,0 +1,78 @@
+/***************************************************************************
+ * __________ __ ___.
+ * Open \______ \ ____ ____ | | _\_ |__ _______ ___
+ * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
+ * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
+ * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
+ * \/ \/ \/ \/ \/
+ *
+ * Copyright (C) 2013 by Dominik Riebeling
+ *
+ * All files in this archive are subject to the GNU General Public License.
+ * See the file COPYING in the source tree root for full license agreement.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ ****************************************************************************/
+
+#include "changelog.h"
+#include "rbsettings.h"
+#include "ui_changelogfrm.h"
+
+Changelog::Changelog(QWidget *parent) : QDialog(parent)
+{
+ ui.setupUi(this);
+ ui.browserChangelog->setOpenExternalLinks(true);
+ // FIXME: support translated changelog file (changelog.de.txt etc)
+ ui.browserChangelog->setHtml(parseChangelogFile(":/docs/changelog.txt"));
+ ui.browserChangelog->moveCursor(QTextCursor::End, QTextCursor::MoveAnchor);
+ ui.checkBoxShowAlways->setChecked(RbSettings::value(RbSettings::ShowChangelog).toBool());
+ connect(ui.buttonOk, &QAbstractButton::clicked, this, &Changelog::accept);
+}
+
+
+void Changelog::accept(void)
+{
+ RbSettings::setValue(RbSettings::ShowChangelog, ui.checkBoxShowAlways->isChecked());
+ this->hide();
+ this->deleteLater();
+}
+
+
+QString Changelog::parseChangelogFile(QString filename)
+{
+ QFile changelog(filename);
+ changelog.open(QIODevice::ReadOnly);
+ QTextStream c(&changelog);
+#if QT_VERSION < 0x060000
+ c.setCodec(QTextCodec::codecForName("UTF-8"));
+#else
+ c.setEncoding(QStringConverter::Utf8);
+#endif
+ QString text;
+ while(!c.atEnd()) {
+ QString line = c.readLine();
+ if(line.startsWith("#"))
+ continue;
+ if(line.startsWith("Version")) {
+ text.append(QString("<h4>Rockbox Utility %1</h4>").arg(line.remove("Version")));
+ line = c.readLine();
+ text.append("<ul>");
+ while(line.startsWith("*")) {
+ QString t = line.remove(QRegularExpression("^\\*"));
+ t.replace(QRegularExpression("FS#(\\d+)"),
+ "<a href='https://www.rockbox.org/tracker/task/\\1'>FS#\\1</a>");
+ t.replace(QRegularExpression("G#(\\d+)"),
+ "<a href='https://gerrit.rockbox.org/r/\\1'>G#\\1</a>");
+ text.append(QString("<li>%1</li>").arg(t));
+ line = c.readLine();
+ if(line.startsWith("#"))
+ line = c.readLine();
+ }
+ text.append("</ul>");
+ }
+ }
+ changelog.close();
+ return text;
+}