diff options
author | Dominik Riebeling <Dominik.Riebeling@gmail.com> | 2013-09-20 23:03:56 +0200 |
---|---|---|
committer | Dominik Riebeling <Dominik.Riebeling@gmail.com> | 2013-09-30 23:42:21 +0200 |
commit | 8df12c63b846edcec4fb7020a8409f5aefa089f1 (patch) | |
tree | 1334a10b59b3332113247cce5531deee19ba7da6 | |
parent | 1977281bb3de54db1be7527bdea3ab9089f15011 (diff) | |
download | rockbox-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.cpp | 1 | ||||
-rw-r--r-- | rbutil/rbutilqt/base/rbsettings.h | 1 | ||||
-rw-r--r-- | rbutil/rbutilqt/changelog.txt | 17 | ||||
-rw-r--r-- | rbutil/rbutilqt/gui/changelog.cpp | 70 | ||||
-rw-r--r-- | rbutil/rbutilqt/gui/changelog.h | 40 | ||||
-rw-r--r-- | rbutil/rbutilqt/gui/changelogfrm.ui | 60 | ||||
-rw-r--r-- | rbutil/rbutilqt/rbutilqt.cpp | 14 | ||||
-rw-r--r-- | rbutil/rbutilqt/rbutilqt.h | 1 | ||||
-rw-r--r-- | rbutil/rbutilqt/rbutilqt.pri | 3 | ||||
-rw-r--r-- | rbutil/rbutilqt/rbutilqt.qrc | 1 | ||||
-rw-r--r-- | rbutil/rbutilqt/rbutilqtfrm.ui | 8 |
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>&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>&Installation</string> </property> </action> + <action name="actionShow_Changelog"> + <property name="text"> + <string>Show &Changelog</string> + </property> + </action> </widget> <tabstops> <tabstop>tabWidget</tabstop> |