From f7fdf134681a35950edeb1054a1e095f7acec058 Mon Sep 17 00:00:00 2001 From: Dominik Riebeling Date: Tue, 14 Feb 2012 21:02:52 +0100 Subject: Move manual tab contents to separate widget. Create a new widget which holds the contents of the manual tab and its logic. Unify its display / download code. Fixes FS#12587, which was caused by duplicated code. Change-Id: I5721d2a95ebeaf80481c1fd149eda22cf1328501 --- rbutil/rbutilqt/gui/manualwidget.cpp | 140 +++++++++++++++++++++++++++++++++ rbutil/rbutilqt/gui/manualwidget.h | 46 +++++++++++ rbutil/rbutilqt/gui/manualwidgetfrm.ui | 116 +++++++++++++++++++++++++++ rbutil/rbutilqt/rbutilqt.cpp | 93 ++-------------------- rbutil/rbutilqt/rbutilqt.h | 4 +- rbutil/rbutilqt/rbutilqt.pri | 3 + rbutil/rbutilqt/rbutilqt.pro | 3 +- rbutil/rbutilqt/rbutilqtfrm.ui | 102 +----------------------- 8 files changed, 317 insertions(+), 190 deletions(-) create mode 100644 rbutil/rbutilqt/gui/manualwidget.cpp create mode 100644 rbutil/rbutilqt/gui/manualwidget.h create mode 100644 rbutil/rbutilqt/gui/manualwidgetfrm.ui (limited to 'rbutil') diff --git a/rbutil/rbutilqt/gui/manualwidget.cpp b/rbutil/rbutilqt/gui/manualwidget.cpp new file mode 100644 index 0000000000..f84da69a2a --- /dev/null +++ b/rbutil/rbutilqt/gui/manualwidget.cpp @@ -0,0 +1,140 @@ +/*************************************************************************** + * __________ __ ___. + * Open \______ \ ____ ____ | | _\_ |__ _______ ___ + * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / + * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < + * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ + * \/ \/ \/ \/ \/ + * + * Copyright (C) 2012 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 +#include +#include "manualwidget.h" +#include "rbutilqt.h" +#include "rbsettings.h" +#include "serverinfo.h" +#include "systeminfo.h" + +ManualWidget::ManualWidget(QWidget *parent) : QWidget(parent) +{ + ui.setupUi(this); + ui.radioPdf->setChecked(true); + connect(ui.buttonDownloadManual, SIGNAL(clicked()), this, SLOT(downloadManual())); +} + + +QString ManualWidget::manualUrl(ManualFormat format) +{ + if(RbSettings::value(RbSettings::Platform).toString().isEmpty()) { + return QString(); + } + + QString buildservermodel = SystemInfo::value(SystemInfo::CurBuildserverModel).toString(); + QString modelman = SystemInfo::value(SystemInfo::CurManual).toString(); + QString manualbasename; + + if(modelman.isEmpty()) { + manualbasename = "rockbox-" + buildservermodel; + } + else { + manualbasename = "rockbox-" + modelman; + } + + QString manual = SystemInfo::value(SystemInfo::ManualUrl).toString(); + switch(format) { + case ManualPdf: + manual.replace("%EXTENSION%", "pdf"); + break; + case ManualHtml: + manual.replace("%EXTENSION%", "html"); + manualbasename += "/rockbox-build"; + break; + case ManualZip: + manual.replace("%EXTENSION%", "-html.zip"); + manualbasename += "/rockbox-build"; + break; + default: + break; + }; + + manual.replace("%MANUALBASENAME%", manualbasename); + return manual; +} + + +void ManualWidget::updateManual() +{ + if(!RbSettings::value(RbSettings::Platform).toString().isEmpty()) + { + ui.labelPdfManual->setText(tr("PDF Manual") + .arg(manualUrl(ManualPdf))); + ui.labelHtmlManual->setText(tr("HTML Manual (opens in browser)") + .arg(manualUrl(ManualHtml))); + } + else { + ui.labelPdfManual->setText(tr("Select a device for a link to the correct manual")); + ui.labelHtmlManual->setText(tr("Manual Overview") + .arg("http://www.rockbox.org/manual.shtml")); + } +} + + +void ManualWidget::downloadManual(void) +{ + if(RbUtilQt::chkConfig(this)) { + return; + } + if(QMessageBox::question(this, tr("Confirm download"), + tr("Do you really want to download the manual? The manual will be saved " + "to the root folder of your player."), + QMessageBox::Yes | QMessageBox::No) != QMessageBox::Yes) { + return; + } + QString manual = SystemInfo::value(SystemInfo::CurManual).toString(); + if(manual.isEmpty()) { + manual = "rockbox-" + SystemInfo::value(SystemInfo::CurBuildserverModel).toString(); + } + + QDate date = QDate::fromString(ServerInfo::value( + ServerInfo::DailyDate).toString(), Qt::ISODate); + QString manualurl; + + ProgressLoggerGui* logger = new ProgressLoggerGui(this); + logger->show(); + ZipInstaller *installer = new ZipInstaller(this); + installer->setMountPoint(RbSettings::value(RbSettings::Mountpoint).toString()); + if(!RbSettings::value(RbSettings::CacheDisabled).toBool()) + installer->setCache(true); + + if(ui.radioPdf->isChecked()) { + manualurl = manualUrl(ManualPdf); + installer->setLogSection("Manual (PDF)"); + installer->setTarget("/" + manual + ".pdf"); + } + else { + manualurl = manualUrl(ManualZip); + installer->setLogSection("Manual (HTML)"); + installer->setTarget("/" + manual + "-" + date.toString("yyyyMMdd") + "-html.zip"); + } + qDebug() << "[ManualWidget] Manual URL:" << manualurl; + + installer->setLogVersion(ServerInfo::value(ServerInfo::DailyDate).toString()); + installer->setUrl(manualurl); + installer->setUnzip(false); + + connect(installer, SIGNAL(logItem(QString, int)), logger, SLOT(addItem(QString, int))); + connect(installer, SIGNAL(logProgress(int, int)), logger, SLOT(setProgress(int, int))); + connect(installer, SIGNAL(done(bool)), logger, SLOT(setFinished())); + connect(logger, SIGNAL(aborted()), installer, SLOT(abort())); + installer->install(); +} + diff --git a/rbutil/rbutilqt/gui/manualwidget.h b/rbutil/rbutilqt/gui/manualwidget.h new file mode 100644 index 0000000000..6de2de55bd --- /dev/null +++ b/rbutil/rbutilqt/gui/manualwidget.h @@ -0,0 +1,46 @@ +/*************************************************************************** + * __________ __ ___. + * Open \______ \ ____ ____ | | _\_ |__ _______ ___ + * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / + * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < + * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ + * \/ \/ \/ \/ \/ + * + * Copyright (C) 2012 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 MANUALWIDGET_H +#define MANUALWIDGET_H + +#include +#include "ui_manualwidgetfrm.h" + +class ManualWidget : public QWidget +{ + Q_OBJECT + public: + enum ManualFormat { + ManualPdf, + ManualHtml, + ManualZip, + }; + ManualWidget(QWidget *parent = 0); + + public slots: + void downloadManual(void); + void updateManual(); + QString manualUrl(ManualFormat format); + + private: + Ui::ManualWidgetFrm ui; +}; + +#endif + diff --git a/rbutil/rbutilqt/gui/manualwidgetfrm.ui b/rbutil/rbutilqt/gui/manualwidgetfrm.ui new file mode 100644 index 0000000000..8757c4569e --- /dev/null +++ b/rbutil/rbutilqt/gui/manualwidgetfrm.ui @@ -0,0 +1,116 @@ + + + ManualWidgetFrm + + + + 0 + 0 + 543 + 255 + + + + Form + + + + + + Read the manual + + + + + + PDF manual + + + true + + + Qt::LinksAccessibleByKeyboard|Qt::LinksAccessibleByMouse + + + + + + + HTML manual + + + true + + + Qt::LinksAccessibleByKeyboard|Qt::LinksAccessibleByMouse + + + + + + + + + + Download the manual + + + + + + + + &PDF version + + + + + + + &HTML version (zip file) + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + Down&load + + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + diff --git a/rbutil/rbutilqt/rbutilqt.cpp b/rbutil/rbutilqt/rbutilqt.cpp index 466f379666..310f775ff6 100644 --- a/rbutil/rbutilqt/rbutilqt.cpp +++ b/rbutil/rbutilqt/rbutilqt.cpp @@ -38,6 +38,7 @@ #include "serverinfo.h" #include "systeminfo.h" #include "ziputil.h" +#include "manualwidget.h" #include "progressloggerinterface.h" @@ -113,8 +114,11 @@ RbUtilQt::RbUtilQt(QWidget *parent) : QMainWindow(parent) m_gotInfo = false; m_auto = false; - // manual tab - ui.radioPdf->setChecked(true); + // insert ManualWidget() widget in manual tab + QGridLayout *mantablayout = new QGridLayout(this); + ui.manual->setLayout(mantablayout); + manual = new ManualWidget(this); + mantablayout->addWidget(manual); // info tab ui.treeInfo->setAlternatingRowColors(true); @@ -145,7 +149,6 @@ RbUtilQt::RbUtilQt(QWidget *parent) : QMainWindow(parent) connect(ui.buttonThemes, SIGNAL(clicked()), this, SLOT(installThemes())); connect(ui.buttonRemoveRockbox, SIGNAL(clicked()), this, SLOT(uninstall())); connect(ui.buttonRemoveBootloader, SIGNAL(clicked()), this, SLOT(uninstallBootloader())); - connect(ui.buttonDownloadManual, SIGNAL(clicked()), this, SLOT(downloadManual())); connect(ui.buttonSmall, SIGNAL(clicked()), this, SLOT(smallInstall())); connect(ui.buttonComplete, SIGNAL(clicked()), this, SLOT(completeInstall())); @@ -343,7 +346,7 @@ void RbUtilQt::updateSettings() { qDebug() << "[RbUtil] updating current settings"; updateDevice(); - updateManual(); + manual->updateManual(); HttpGet::setGlobalProxy(proxy()); HttpGet::setGlobalCache(RbSettings::value(RbSettings::CachePath).toString()); HttpGet::setGlobalDumbCache(RbSettings::value(RbSettings::CacheOffline).toBool()); @@ -416,39 +419,6 @@ void RbUtilQt::updateDevice() } -void RbUtilQt::updateManual() -{ - if(RbSettings::value(RbSettings::Platform) != "") - { - QString manual = SystemInfo::value(SystemInfo::CurManual).toString(); - QString buildservermodel = SystemInfo::value(SystemInfo::CurBuildserverModel).toString(); - QString pdfmanual = SystemInfo::value(SystemInfo::ManualUrl).toString(); - QString htmlmanual = pdfmanual; - - pdfmanual.replace("%EXTENSION%", "pdf"); - htmlmanual.replace("%EXTENSION%", "html"); - if(manual.isEmpty()) { - pdfmanual.replace("%MANUALBASENAME%", "rockbox-" + buildservermodel); - htmlmanual.replace("%MANUALBASENAME%", "rockbox-" + buildservermodel + "/rockbox-build"); - } - else { - pdfmanual.replace("%MANUALBASENAME%", "rockbox-" + manual); - htmlmanual.replace("%MANUALBASENAME%", "rockbox-" + manual + "/rockbox-build"); - } - - ui.labelPdfManual->setText(tr("PDF Manual") - .arg(pdfmanual)); - ui.labelHtmlManual->setText(tr("HTML Manual (opens in browser)") - .arg(htmlmanual)); - } - else { - ui.labelPdfManual->setText(tr("Select a device for a link to the correct manual")); - ui.labelHtmlManual->setText(tr("Manual Overview") - .arg("http://www.rockbox.org/manual.shtml")); - - } -} - void RbUtilQt::completeInstall() { if(chkConfig(this)) return; @@ -1115,55 +1085,6 @@ void RbUtilQt::uninstallBootloader(void) } -void RbUtilQt::downloadManual(void) -{ - if(chkConfig(this)) return; - if(QMessageBox::question(this, tr("Confirm download"), - tr("Do you really want to download the manual? The manual will be saved " - "to the root folder of your player."), - QMessageBox::Yes | QMessageBox::No) != QMessageBox::Yes) - return; - - QString manual = SystemInfo::value(SystemInfo::CurManual).toString(); - if(manual.isEmpty()) - manual = "rockbox-" - + SystemInfo::value(SystemInfo::CurBuildserverModel).toString(); - - QDate date = QDate::fromString(ServerInfo::value(ServerInfo::DailyDate).toString(),Qt::ISODate); - - QString manualurl; - QString target; - QString section; - if(ui.radioPdf->isChecked()) { - target = "/" + manual + ".pdf"; - section = "Manual (PDF)"; - } - else { - target = "/" + manual + "-" + date.toString("yyyyMMdd") + "-html.zip"; - section = "Manual (HTML)"; - } - manualurl = SystemInfo::value(SystemInfo::ManualUrl).toString() + "/" + target; - qDebug() << "[RbUtil] Manual URL:" << manualurl; - - ProgressLoggerGui* logger = new ProgressLoggerGui(this); - logger->show(); - installer = new ZipInstaller(this); - installer->setMountPoint(RbSettings::value(RbSettings::Mountpoint).toString()); - if(!RbSettings::value(RbSettings::CacheDisabled).toBool()) - installer->setCache(true); - installer->setLogSection(section); - installer->setLogVersion(ServerInfo::value(ServerInfo::DailyDate).toString()); - installer->setUrl(manualurl); - installer->setUnzip(false); - installer->setTarget(target); - connect(installer, SIGNAL(logItem(QString, int)), logger, SLOT(addItem(QString, int))); - connect(installer, SIGNAL(logProgress(int, int)), logger, SLOT(setProgress(int, int))); - connect(installer, SIGNAL(done(bool)), logger, SLOT(setFinished())); - connect(logger, SIGNAL(aborted()), installer, SLOT(abort())); - installer->install(); -} - - void RbUtilQt::installPortable(void) { if(QMessageBox::question(this, tr("Confirm installation"), diff --git a/rbutil/rbutilqt/rbutilqt.h b/rbutil/rbutilqt/rbutilqt.h index 5cc1f0de94..e10569ff2f 100644 --- a/rbutil/rbutilqt/rbutilqt.h +++ b/rbutil/rbutilqt/rbutilqt.h @@ -32,6 +32,7 @@ #include "zipinstaller.h" #include "progressloggergui.h" #include "bootloaderinstallbase.h" +#include "manualwidget.h" class RbUtilQt : public QMainWindow { @@ -43,6 +44,7 @@ class RbUtilQt : public QMainWindow static bool chkConfig(QWidget *parent = 0); private: + ManualWidget *manual; Ui::RbUtilQtFrm ui; void changeEvent(QEvent *e); @@ -55,7 +57,6 @@ class RbUtilQt : public QMainWindow QString absolutePath; QTemporaryFile buildInfo; QTemporaryFile bleedingInfo; - void updateManual(void); ProgressLoggerGui *logger; ZipInstaller *installer; QUrl proxy(void); @@ -109,7 +110,6 @@ class RbUtilQt : public QMainWindow void installThemes(void); void uninstall(void); void uninstallBootloader(void); - void downloadManual(void); void installPortable(void); void updateInfo(void); void updateTabs(int); diff --git a/rbutil/rbutilqt/rbutilqt.pri b/rbutil/rbutilqt/rbutilqt.pri index d83804443d..308a08585e 100644 --- a/rbutil/rbutilqt/rbutilqt.pri +++ b/rbutil/rbutilqt/rbutilqt.pri @@ -17,6 +17,7 @@ # common files SOURCES += \ + gui/manualwidget.cpp \ rbutilqt.cpp \ main.cpp \ installwindow.cpp \ @@ -78,6 +79,7 @@ SOURCES += \ HEADERS += \ + gui/manualwidget.h \ rbutilqt.h \ installwindow.h \ base/httpget.h \ @@ -146,6 +148,7 @@ HEADERS += \ FORMS += \ + gui/manualwidgetfrm.ui \ rbutilqtfrm.ui \ aboutbox.ui \ installwindowfrm.ui \ diff --git a/rbutil/rbutilqt/rbutilqt.pro b/rbutil/rbutilqt/rbutilqt.pro index 46a332ece4..366cc486e0 100644 --- a/rbutil/rbutilqt/rbutilqt.pro +++ b/rbutil/rbutilqt/rbutilqt.pro @@ -145,7 +145,8 @@ QMAKE_EXTRA_TARGETS += lrelease # Needed by QT on Win INCLUDEPATH = $$_PRO_FILE_PWD_ $$_PRO_FILE_PWD_/irivertools \ - $$_PRO_FILE_PWD_/zlib $$_PRO_FILE_PWD_/base + $$_PRO_FILE_PWD_/zlib $$_PRO_FILE_PWD_/base \ + $$_PRO_FILE_PWD_/zlib $$_PRO_FILE_PWD_/gui INCLUDEPATH += $$RBBASE_DIR/rbutil/ipodpatcher $$RBBASE_DIR/rbutil/sansapatcher \ $$RBBASE_DIR/tools/rbspeex $$RBBASE_DIR/tools diff --git a/rbutil/rbutilqt/rbutilqtfrm.ui b/rbutil/rbutilqt/rbutilqtfrm.ui index 5233022061..ff8dda3d7d 100644 --- a/rbutil/rbutilqt/rbutilqtfrm.ui +++ b/rbutil/rbutilqt/rbutilqtfrm.ui @@ -650,103 +650,6 @@ View and download the manual - - - - - Read the manual - - - - - - PDF manual - - - true - - - Qt::LinksAccessibleByKeyboard|Qt::LinksAccessibleByMouse - - - - - - - HTML manual - - - true - - - Qt::LinksAccessibleByKeyboard|Qt::LinksAccessibleByMouse - - - - - - - - - - Download the manual - - - - - - - - &PDF version - - - - - - - &HTML version (zip file) - - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Down&load - - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - @@ -787,7 +690,7 @@ 0 0 650 - 18 + 27 @@ -1064,9 +967,6 @@ buttonGames buttonRemoveBootloader buttonRemoveRockbox - radioPdf - radioHtmlzip - buttonDownloadManual buttonChangeDevice buttonVoice buttonCreateVoice -- cgit v1.2.3