diff --git a/rbutil/rbutilqt/base/rbsettings.cpp b/rbutil/rbutilqt/base/rbsettings.cpp
index 4d3901fce3..a2f801844b 100644
--- a/rbutil/rbutilqt/base/rbsettings.cpp
+++ b/rbutil/rbutilqt/base/rbsettings.cpp
@@ -31,6 +31,7 @@ const static struct {
const char* def;
} UserSettingsList[] = {
{ RbSettings::RbutilVersion, "rbutil_version", "" },
+ { RbSettings::ShowChangelog, "show_changelog", "false" },
{ RbSettings::CurrentPlatform, "platform", "" },
{ RbSettings::Mountpoint, "mountpoint", "" },
{ RbSettings::CachePath, "cachepath", "" },
diff --git a/rbutil/rbutilqt/base/rbsettings.h b/rbutil/rbutilqt/base/rbsettings.h
index 7255def5f0..7406aab1ad 100644
--- a/rbutil/rbutilqt/base/rbsettings.h
+++ b/rbutil/rbutilqt/base/rbsettings.h
@@ -31,6 +31,7 @@ class RbSettings : public QObject
//! All user settings
enum UserSettings {
RbutilVersion,
+ ShowChangelog,
CurrentPlatform,
Mountpoint,
CachePath,
diff --git a/rbutil/rbutilqt/changelog.txt b/rbutil/rbutilqt/changelog.txt
new file mode 100644
index 0000000000..35c5322dc9
--- /dev/null
+++ b/rbutil/rbutilqt/changelog.txt
@@ -0,0 +1,17 @@
+# Rockbox Utility changelog.
+# This file is parsed by Rockbox Utility. Format:
+# - Lines starting with # are comments and ignored.
+# - A version starts with the string "Version" followed by the number.
+# - After the version individual entries follow. Those start with a *.
+# - After the entries an empty line has to follow.
+# - After that the next version can start.
+
+Version 1.4
+* Rework player detection functionality to provide better results.
+* Limit mountpoints ("Select your device in the filesystem") in configuration dialog to usable ones.
+* Change encoder volume configuration to allow more sensible values.
+* Save proxy password differently in configuration file (better solution for FS#12166).
+* Add support for building Rockbox Utility with Qt5.
+* Add Changelog window.
+
+
diff --git a/rbutil/rbutilqt/gui/changelog.cpp b/rbutil/rbutilqt/gui/changelog.cpp
new file mode 100644
index 0000000000..d8361023b1
--- /dev/null
+++ b/rbutil/rbutilqt/gui/changelog.cpp
@@ -0,0 +1,70 @@
+/***************************************************************************
+ * __________ __ ___.
+ * 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);
+ ui.browserChangelog->setHtml(parseChangelogFile(":/docs/changelog.txt"));
+ ui.browserChangelog->moveCursor(QTextCursor::Start, QTextCursor::MoveAnchor);
+ ui.checkBoxShowAlways->setChecked(RbSettings::value(RbSettings::ShowChangelog).toBool());
+ connect(ui.buttonOk, SIGNAL(clicked()), this, SLOT(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);
+ QString text;
+ while(!c.atEnd()) {
+ QString line = c.readLine();
+ if(line.startsWith("#"))
+ continue;
+ if(line.startsWith("Version")) {
+ text.append(QString("
Rockbox Utility %1
").arg(line.remove("Version")));
+ line = c.readLine();
+ text.append("");
+ while(line.startsWith("*")) {
+ QString t = line.remove(QRegExp("^\\*"));
+ t.replace(QRegExp("FS#(\\d+)"),
+ "FS#\\1");
+ text.append(QString("- %1
").arg(t));
+ line = c.readLine();
+ if(line.startsWith("#"))
+ line = c.readLine();
+ }
+ text.append("
");
+ }
+ }
+ changelog.close();
+ return text;
+}
diff --git a/rbutil/rbutilqt/gui/changelog.h b/rbutil/rbutilqt/gui/changelog.h
new file mode 100644
index 0000000000..103a3bc9fb
--- /dev/null
+++ b/rbutil/rbutilqt/gui/changelog.h
@@ -0,0 +1,40 @@
+/***************************************************************************
+ * __________ __ ___.
+ * 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.
+ *
+ ****************************************************************************/
+
+#ifndef CHANGELOG_H
+#define CHANGELOG_H
+
+#include
+#include "ui_changelogfrm.h"
+
+class Changelog : public QDialog
+{
+ Q_OBJECT
+public:
+ Changelog(QWidget *parent = 0);
+
+public slots:
+ void accept(void);
+
+private:
+ QString parseChangelogFile(QString filename);
+ Ui::Changelog ui;
+
+};
+
+#endif
diff --git a/rbutil/rbutilqt/gui/changelogfrm.ui b/rbutil/rbutilqt/gui/changelogfrm.ui
new file mode 100644
index 0000000000..83763d84d9
--- /dev/null
+++ b/rbutil/rbutilqt/gui/changelogfrm.ui
@@ -0,0 +1,60 @@
+
+
+ Changelog
+
+
+ Qt::WindowModal
+
+
+
+ 0
+ 0
+ 400
+ 300
+
+
+
+ Changelog
+
+
+ -
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+
+ 40
+ 20
+
+
+
+
+ -
+
+
+ Show on startup
+
+
+
+ -
+
+
+ &Ok
+
+
+
+ :/icons/go-next.png:/icons/go-next.png
+
+
+
+
+
+
+
+
+
+
diff --git a/rbutil/rbutilqt/rbutilqt.cpp b/rbutil/rbutilqt/rbutilqt.cpp
index 6703b08791..f83020050a 100644
--- a/rbutil/rbutilqt/rbutilqt.cpp
+++ b/rbutil/rbutilqt/rbutilqt.cpp
@@ -42,6 +42,7 @@
#include "infowidget.h"
#include "selectiveinstallwidget.h"
#include "backupdialog.h"
+#include "changelog.h"
#include "progressloggerinterface.h"
@@ -166,6 +167,7 @@ RbUtilQt::RbUtilQt(QWidget *parent) : QMainWindow(parent)
connect(ui.actionUninstall_Rockbox, SIGNAL(triggered()), this, SLOT(uninstall()));
connect(ui.action_System_Info, SIGNAL(triggered()), this, SLOT(sysinfo()));
connect(ui.action_Trace, SIGNAL(triggered()), this, SLOT(trace()));
+ connect(ui.actionShow_Changelog, SIGNAL(triggered()), this, SLOT(changelog()));
#if !defined(STATIC)
ui.actionInstall_Rockbox_Utility_on_player->setEnabled(false);
@@ -204,6 +206,14 @@ void RbUtilQt::sysinfo(void)
sysinfo.exec();
}
+void RbUtilQt::changelog(void)
+{
+
+ Changelog cl(this);
+ cl.exec();
+}
+
+
void RbUtilQt::updateTabs(int count)
{
if(count == ui.tabWidget->indexOf(info->parentWidget()))
@@ -317,6 +327,10 @@ void RbUtilQt::updateSettings()
HttpGet::setGlobalCache(c.isEmpty() ? QDir::tempPath() : c);
HttpGet::setGlobalProxy(proxy());
+ if(RbSettings::value(RbSettings::RbutilVersion) != PUREVERSION
+ || RbSettings::value(RbSettings::ShowChangelog).toBool()) {
+ changelog();
+ }
if(RbSettings::value(RbSettings::RbutilVersion) != PUREVERSION) {
QApplication::processEvents();
QMessageBox::information(this, tr("New installation"),
diff --git a/rbutil/rbutilqt/rbutilqt.h b/rbutil/rbutilqt/rbutilqt.h
index 350aca1956..cfbef8b1fc 100644
--- a/rbutil/rbutilqt/rbutilqt.h
+++ b/rbutil/rbutilqt/rbutilqt.h
@@ -78,6 +78,7 @@ class RbUtilQt : public QMainWindow
void about(void);
void help(void);
void sysinfo(void);
+ void changelog(void);
void trace(void);
void eject(void);
void configDialog(void);
diff --git a/rbutil/rbutilqt/rbutilqt.pri b/rbutil/rbutilqt/rbutilqt.pri
index 13f7ebc042..8ec961a50f 100644
--- a/rbutil/rbutilqt/rbutilqt.pri
+++ b/rbutil/rbutilqt/rbutilqt.pri
@@ -79,6 +79,7 @@ SOURCES += \
gui/comboboxviewdelegate.cpp \
gui/selectiveinstallwidget.cpp \
gui/backupdialog.cpp \
+ gui/changelog.cpp
HEADERS += \
@@ -156,6 +157,7 @@ HEADERS += \
gui/comboboxviewdelegate.h \
gui/selectiveinstallwidget.h \
gui/backupdialog.h \
+ gui/changelog.h
FORMS += \
@@ -174,6 +176,7 @@ FORMS += \
systracefrm.ui \
gui/selectiveinstallwidgetfrm.ui \
gui/backupdialogfrm.ui \
+ gui/changelogfrm.ui
TRANSLATIONS += \
diff --git a/rbutil/rbutilqt/rbutilqt.qrc b/rbutil/rbutilqt/rbutilqt.qrc
index 9358383bdd..b38fa95b4d 100644
--- a/rbutil/rbutilqt/rbutilqt.qrc
+++ b/rbutil/rbutilqt/rbutilqt.qrc
@@ -3,6 +3,7 @@
../../docs/CREDITS
../../docs/gpl-2.0.html
../../lib/rbcodec/codecs/libspeex/COPYING
+ changelog.txt
../../tools/VOICE_PAUSE.wav
diff --git a/rbutil/rbutilqt/rbutilqtfrm.ui b/rbutil/rbutilqt/rbutilqtfrm.ui
index 65348dabfb..9960ca3dcf 100644
--- a/rbutil/rbutilqt/rbutilqtfrm.ui
+++ b/rbutil/rbutilqt/rbutilqtfrm.ui
@@ -411,7 +411,7 @@
0
0
650
- 21
+ 23
@@ -657,6 +658,11 @@
&Installation
+
+
+ Show &Changelog
+
+
tabWidget