summaryrefslogtreecommitdiff
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.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 @@
1/***************************************************************************
2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/
8 *
9 * Copyright (C) 2012 by Dominik Riebeling
10 *
11 * All files in this archive are subject to the GNU General Public License.
12 * See the file COPYING in the source tree root for full license agreement.
13 *
14 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
15 * KIND, either express or implied.
16 *
17 ****************************************************************************/
18
19#include <QtGui>
20#include <QDebug>
21#include "manualwidget.h"
22#include "rbutilqt.h"
23#include "rbsettings.h"
24#include "serverinfo.h"
25#include "systeminfo.h"
26
27ManualWidget::ManualWidget(QWidget *parent) : QWidget(parent)
28{
29 ui.setupUi(this);
30 ui.radioPdf->setChecked(true);
31 connect(ui.buttonDownloadManual, SIGNAL(clicked()), this, SLOT(downloadManual()));
32}
33
34
35QString ManualWidget::manualUrl(ManualFormat format)
36{
37 if(RbSettings::value(RbSettings::Platform).toString().isEmpty()) {
38 return QString();
39 }
40
41 QString buildservermodel = SystemInfo::value(SystemInfo::CurBuildserverModel).toString();
42 QString modelman = SystemInfo::value(SystemInfo::CurManual).toString();
43 QString manualbasename;
44
45 if(modelman.isEmpty()) {
46 manualbasename = "rockbox-" + buildservermodel;
47 }
48 else {
49 manualbasename = "rockbox-" + modelman;
50 }
51
52 QString manual = SystemInfo::value(SystemInfo::ManualUrl).toString();
53 switch(format) {
54 case ManualPdf:
55 manual.replace("%EXTENSION%", "pdf");
56 break;
57 case ManualHtml:
58 manual.replace("%EXTENSION%", "html");
59 manualbasename += "/rockbox-build";
60 break;
61 case ManualZip:
62 manual.replace("%EXTENSION%", "-html.zip");
63 manualbasename += "/rockbox-build";
64 break;
65 default:
66 break;
67 };
68
69 manual.replace("%MANUALBASENAME%", manualbasename);
70 return manual;
71}
72
73
74void ManualWidget::updateManual()
75{
76 if(!RbSettings::value(RbSettings::Platform).toString().isEmpty())
77 {
78 ui.labelPdfManual->setText(tr("<a href='%1'>PDF Manual</a>")
79 .arg(manualUrl(ManualPdf)));
80 ui.labelHtmlManual->setText(tr("<a href='%1'>HTML Manual (opens in browser)</a>")
81 .arg(manualUrl(ManualHtml)));
82 }
83 else {
84 ui.labelPdfManual->setText(tr("Select a device for a link to the correct manual"));
85 ui.labelHtmlManual->setText(tr("<a href='%1'>Manual Overview</a>")
86 .arg("http://www.rockbox.org/manual.shtml"));
87 }
88}
89
90
91void ManualWidget::downloadManual(void)
92{
93 if(RbUtilQt::chkConfig(this)) {
94 return;
95 }
96 if(QMessageBox::question(this, tr("Confirm download"),
97 tr("Do you really want to download the manual? The manual will be saved "
98 "to the root folder of your player."),
99 QMessageBox::Yes | QMessageBox::No) != QMessageBox::Yes) {
100 return;
101 }
102 QString manual = SystemInfo::value(SystemInfo::CurManual).toString();
103 if(manual.isEmpty()) {
104 manual = "rockbox-" + SystemInfo::value(SystemInfo::CurBuildserverModel).toString();
105 }
106
107 QDate date = QDate::fromString(ServerInfo::value(
108 ServerInfo::DailyDate).toString(), Qt::ISODate);
109 QString manualurl;
110
111 ProgressLoggerGui* logger = new ProgressLoggerGui(this);
112 logger->show();
113 ZipInstaller *installer = new ZipInstaller(this);
114 installer->setMountPoint(RbSettings::value(RbSettings::Mountpoint).toString());
115 if(!RbSettings::value(RbSettings::CacheDisabled).toBool())
116 installer->setCache(true);
117
118 if(ui.radioPdf->isChecked()) {
119 manualurl = manualUrl(ManualPdf);
120 installer->setLogSection("Manual (PDF)");
121 installer->setTarget("/" + manual + ".pdf");
122 }
123 else {
124 manualurl = manualUrl(ManualZip);
125 installer->setLogSection("Manual (HTML)");
126 installer->setTarget("/" + manual + "-" + date.toString("yyyyMMdd") + "-html.zip");
127 }
128 qDebug() << "[ManualWidget] Manual URL:" << manualurl;
129
130 installer->setLogVersion(ServerInfo::value(ServerInfo::DailyDate).toString());
131 installer->setUrl(manualurl);
132 installer->setUnzip(false);
133
134 connect(installer, SIGNAL(logItem(QString, int)), logger, SLOT(addItem(QString, int)));
135 connect(installer, SIGNAL(logProgress(int, int)), logger, SLOT(setProgress(int, int)));
136 connect(installer, SIGNAL(done(bool)), logger, SLOT(setFinished()));
137 connect(logger, SIGNAL(aborted()), installer, SLOT(abort()));
138 installer->install();
139}
140