From 8df12c63b846edcec4fb7020a8409f5aefa089f1 Mon Sep 17 00:00:00 2001 From: Dominik Riebeling Date: Fri, 20 Sep 2013 23:03:56 +0200 Subject: 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 --- rbutil/rbutilqt/base/rbsettings.cpp | 1 + rbutil/rbutilqt/base/rbsettings.h | 1 + rbutil/rbutilqt/changelog.txt | 17 +++++++++ rbutil/rbutilqt/gui/changelog.cpp | 70 +++++++++++++++++++++++++++++++++++++ rbutil/rbutilqt/gui/changelog.h | 40 +++++++++++++++++++++ rbutil/rbutilqt/gui/changelogfrm.ui | 60 +++++++++++++++++++++++++++++++ rbutil/rbutilqt/rbutilqt.cpp | 14 ++++++++ rbutil/rbutilqt/rbutilqt.h | 1 + rbutil/rbutilqt/rbutilqt.pri | 3 ++ rbutil/rbutilqt/rbutilqt.qrc | 1 + rbutil/rbutilqt/rbutilqtfrm.ui | 8 ++++- 11 files changed, 215 insertions(+), 1 deletion(-) create mode 100644 rbutil/rbutilqt/changelog.txt create mode 100644 rbutil/rbutilqt/gui/changelog.cpp create mode 100644 rbutil/rbutilqt/gui/changelog.h create mode 100644 rbutil/rbutilqt/gui/changelogfrm.ui 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(""); + } + } + 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 @@ -437,6 +437,7 @@ + @@ -657,6 +658,11 @@ &Installation + + + Show &Changelog + + tabWidget -- cgit v1.2.3