summaryrefslogtreecommitdiffstats
path: root/rbutil/rbutilqt/gui/manualwidget.cpp
diff options
context:
space:
mode:
authorDominik Riebeling <Dominik.Riebeling@gmail.com>2012-02-14 21:02:52 +0100
committerDominik Riebeling <Dominik.Riebeling@gmail.com>2012-02-14 21:10:54 +0100
commitf7fdf134681a35950edeb1054a1e095f7acec058 (patch)
tree684e59f2f84d11b507065f25d5cfd592680cffda /rbutil/rbutilqt/gui/manualwidget.cpp
parent3933afcc0942a635ff253a59d6138983e6fd90b8 (diff)
downloadrockbox-f7fdf134681a35950edeb1054a1e095f7acec058.tar.gz
rockbox-f7fdf134681a35950edeb1054a1e095f7acec058.tar.bz2
rockbox-f7fdf134681a35950edeb1054a1e095f7acec058.zip
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
Diffstat (limited to 'rbutil/rbutilqt/gui/manualwidget.cpp')
-rw-r--r--rbutil/rbutilqt/gui/manualwidget.cpp140
1 files changed, 140 insertions, 0 deletions
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 <QtGui>
+#include <QDebug>
+#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("<a href='%1'>PDF Manual</a>")
+ .arg(manualUrl(ManualPdf)));
+ ui.labelHtmlManual->setText(tr("<a href='%1'>HTML Manual (opens in browser)</a>")
+ .arg(manualUrl(ManualHtml)));
+ }
+ else {
+ ui.labelPdfManual->setText(tr("Select a device for a link to the correct manual"));
+ ui.labelHtmlManual->setText(tr("<a href='%1'>Manual Overview</a>")
+ .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();
+}
+