summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDominik Riebeling <Dominik.Riebeling@gmail.com>2013-09-20 23:03:56 +0200
committerDominik Riebeling <Dominik.Riebeling@gmail.com>2013-09-30 23:42:21 +0200
commit8df12c63b846edcec4fb7020a8409f5aefa089f1 (patch)
tree1334a10b59b3332113247cce5531deee19ba7da6
parent1977281bb3de54db1be7527bdea3ab9089f15011 (diff)
downloadrockbox-8df12c63b846edcec4fb7020a8409f5aefa089f1.tar.gz
rockbox-8df12c63b846edcec4fb7020a8409f5aefa089f1.zip
Implement a first, simple changelog dialog.
When Rockbox Utility is started for the first time, a new version is started or the user selected to do so on startup a changelog window is shown. Change-Id: Ic223e092a09d31ccbbfcd9b973355225cac27632
-rw-r--r--rbutil/rbutilqt/base/rbsettings.cpp1
-rw-r--r--rbutil/rbutilqt/base/rbsettings.h1
-rw-r--r--rbutil/rbutilqt/changelog.txt17
-rw-r--r--rbutil/rbutilqt/gui/changelog.cpp70
-rw-r--r--rbutil/rbutilqt/gui/changelog.h40
-rw-r--r--rbutil/rbutilqt/gui/changelogfrm.ui60
-rw-r--r--rbutil/rbutilqt/rbutilqt.cpp14
-rw-r--r--rbutil/rbutilqt/rbutilqt.h1
-rw-r--r--rbutil/rbutilqt/rbutilqt.pri3
-rw-r--r--rbutil/rbutilqt/rbutilqt.qrc1
-rw-r--r--rbutil/rbutilqt/rbutilqtfrm.ui8
11 files changed, 215 insertions, 1 deletions
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("<h4>Rockbox Utility %1</h4>").arg(line.remove("Version")));
+ line = c.readLine();
+ text.append("<ul>");
+ while(line.startsWith("*")) {
+ QString t = line.remove(QRegExp("^\\*"));
+ t.replace(QRegExp("FS#(\\d+)"),
+ "<a href='http://www.rockbox.org/tracker/task/\\1'>FS#\\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;
+}
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 <QDialog>
+#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 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>Changelog</class>
+ <widget class="QDialog" name="Changelog">
+ <property name="windowModality">
+ <enum>Qt::WindowModal</enum>
+ </property>
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>400</width>
+ <height>300</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>Changelog</string>
+ </property>
+ <layout class="QGridLayout" name="gridLayout">
+ <item row="0" column="0" colspan="3">
+ <widget class="QTextBrowser" name="browserChangelog"/>
+ </item>
+ <item row="1" column="1">
+ <spacer name="horizontalSpacer">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>40</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item row="1" column="0">
+ <widget class="QCheckBox" name="checkBoxShowAlways">
+ <property name="text">
+ <string>Show on startup</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="2">
+ <widget class="QPushButton" name="buttonOk">
+ <property name="text">
+ <string>&amp;Ok</string>
+ </property>
+ <property name="icon">
+ <iconset resource="../rbutilqt.qrc">
+ <normaloff>:/icons/go-next.png</normaloff>:/icons/go-next.png</iconset>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <resources>
+ <include location="../rbutilqt.qrc"/>
+ </resources>
+ <connections/>
+</ui>
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 @@
<file>../../docs/CREDITS</file>
<file>../../docs/gpl-2.0.html</file>
<file alias="docs/COPYING.SPEEX">../../lib/rbcodec/codecs/libspeex/COPYING</file>
+ <file alias="docs/changelog.txt">changelog.txt</file>
</qresource>
<qresource>
<file alias="builtin/VOICE_PAUSE.wav">../../tools/VOICE_PAUSE.wav</file>
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 @@
<x>0</x>
<y>0</y>
<width>650</width>
- <height>21</height>
+ <height>23</height>
</rect>
</property>
<widget class="QMenu" name="menu_File">
@@ -437,6 +437,7 @@
<addaction name="action_About"/>
<addaction name="actionAbout_Qt"/>
<addaction name="separator"/>
+ <addaction name="actionShow_Changelog"/>
<addaction name="menu_Troubleshoot"/>
<addaction name="action_Help"/>
</widget>
@@ -657,6 +658,11 @@
<string>&amp;Installation</string>
</property>
</action>
+ <action name="actionShow_Changelog">
+ <property name="text">
+ <string>Show &amp;Changelog</string>
+ </property>
+ </action>
</widget>
<tabstops>
<tabstop>tabWidget</tabstop>