mirror of
https://github.com/Rockbox/rockbox.git
synced 2025-12-09 05:05:20 -05:00
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
This commit is contained in:
parent
3933afcc09
commit
f7fdf13468
8 changed files with 317 additions and 190 deletions
140
rbutil/rbutilqt/gui/manualwidget.cpp
Normal file
140
rbutil/rbutilqt/gui/manualwidget.cpp
Normal file
|
|
@ -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();
|
||||
}
|
||||
|
||||
46
rbutil/rbutilqt/gui/manualwidget.h
Normal file
46
rbutil/rbutilqt/gui/manualwidget.h
Normal file
|
|
@ -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 <QtGui>
|
||||
#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
|
||||
|
||||
116
rbutil/rbutilqt/gui/manualwidgetfrm.ui
Normal file
116
rbutil/rbutilqt/gui/manualwidgetfrm.ui
Normal file
|
|
@ -0,0 +1,116 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>ManualWidgetFrm</class>
|
||||
<widget class="QWidget" name="ManualWidgetFrm">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>543</width>
|
||||
<height>255</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>Form</string>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="gridLayout">
|
||||
<item row="0" column="0">
|
||||
<widget class="QGroupBox" name="groupBox_2">
|
||||
<property name="title">
|
||||
<string>Read the manual</string>
|
||||
</property>
|
||||
<layout class="QGridLayout">
|
||||
<item row="0" column="0">
|
||||
<widget class="QLabel" name="labelPdfManual">
|
||||
<property name="text">
|
||||
<string>PDF manual</string>
|
||||
</property>
|
||||
<property name="openExternalLinks">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="textInteractionFlags">
|
||||
<set>Qt::LinksAccessibleByKeyboard|Qt::LinksAccessibleByMouse</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="QLabel" name="labelHtmlManual">
|
||||
<property name="text">
|
||||
<string>HTML manual</string>
|
||||
</property>
|
||||
<property name="openExternalLinks">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="textInteractionFlags">
|
||||
<set>Qt::LinksAccessibleByKeyboard|Qt::LinksAccessibleByMouse</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="QGroupBox" name="groupBox">
|
||||
<property name="title">
|
||||
<string>Download the manual</string>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="_2">
|
||||
<item row="0" column="0">
|
||||
<layout class="QVBoxLayout" name="_3">
|
||||
<item>
|
||||
<widget class="QRadioButton" name="radioPdf">
|
||||
<property name="text">
|
||||
<string>&PDF version</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QRadioButton" name="radioHtmlzip">
|
||||
<property name="text">
|
||||
<string>&HTML version (zip file)</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item row="0" column="1">
|
||||
<spacer>
|
||||
<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="0" column="2">
|
||||
<widget class="QPushButton" name="buttonDownloadManual">
|
||||
<property name="text">
|
||||
<string>Down&load</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="0">
|
||||
<spacer name="verticalSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Vertical</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>20</width>
|
||||
<height>40</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<resources/>
|
||||
<connections/>
|
||||
</ui>
|
||||
Loading…
Add table
Add a link
Reference in a new issue