summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDominik Riebeling <Dominik.Riebeling@gmail.com>2020-11-22 11:19:41 +0100
committerDominik Riebeling <Dominik.Riebeling@gmail.com>2020-11-22 14:43:01 +0100
commitba2bbd60bd3d8a9fa204b17686c33dfb0337b07c (patch)
tree1c2865adab8e956fe65180e56d87f8380754ba7a
parent5f36aed4bfd5e78a9edc322b8dae2c1e10ff733d (diff)
downloadrockbox-ba2bbd60bd3d8a9fa204b17686c33dfb0337b07c.tar.gz
rockbox-ba2bbd60bd3d8a9fa204b17686c33dfb0337b07c.zip
rbutil: Move Manual installation to main tab.
The manual tab didn't show the manual, so it's clearer to have that as part of the main tab. Also fixes the wrong manual getting downloaded for releases. Change-Id: I5d4a287102af037f94f0de8464e025d9ff5f76ed
-rw-r--r--rbutil/rbutilqt/base/rbsettings.cpp1
-rw-r--r--rbutil/rbutilqt/base/rbsettings.h1
-rw-r--r--rbutil/rbutilqt/base/serverinfo.cpp20
-rw-r--r--rbutil/rbutilqt/base/serverinfo.h3
-rw-r--r--rbutil/rbutilqt/base/systeminfo.cpp20
-rw-r--r--rbutil/rbutilqt/gui/manualwidget.cpp107
-rw-r--r--rbutil/rbutilqt/gui/manualwidget.h42
-rw-r--r--rbutil/rbutilqt/gui/manualwidgetfrm.ui116
-rw-r--r--rbutil/rbutilqt/gui/selectiveinstallwidget.cpp64
-rw-r--r--rbutil/rbutilqt/gui/selectiveinstallwidget.h7
-rw-r--r--rbutil/rbutilqt/gui/selectiveinstallwidgetfrm.ui167
-rw-r--r--rbutil/rbutilqt/rbutil.ini6
-rw-r--r--rbutil/rbutilqt/rbutilqt.cpp8
-rw-r--r--rbutil/rbutilqt/rbutilqt.h2
-rw-r--r--rbutil/rbutilqt/rbutilqt.pri3
-rw-r--r--rbutil/rbutilqt/rbutilqtfrm.ui60
16 files changed, 201 insertions, 426 deletions
diff --git a/rbutil/rbutilqt/base/rbsettings.cpp b/rbutil/rbutilqt/base/rbsettings.cpp
index 5baa53bee0..adb222f80e 100644
--- a/rbutil/rbutilqt/base/rbsettings.cpp
+++ b/rbutil/rbutilqt/base/rbsettings.cpp
@@ -48,6 +48,7 @@ const static struct {
48 { RbSettings::InstallThemes, "install_themes", "false" }, 48 { RbSettings::InstallThemes, "install_themes", "false" },
49 { RbSettings::InstallGamefiles, "install_gamefiles", "true" }, 49 { RbSettings::InstallGamefiles, "install_gamefiles", "true" },
50 { RbSettings::InstallVoice, "install_voice", "false" }, 50 { RbSettings::InstallVoice, "install_voice", "false" },
51 { RbSettings::InstallManual, "install_manual", "false" },
51#if defined(Q_OS_WIN32) 52#if defined(Q_OS_WIN32)
52 { RbSettings::Tts, "tts", "sapi" }, 53 { RbSettings::Tts, "tts", "sapi" },
53#elif defined(Q_OS_MACX) 54#elif defined(Q_OS_MACX)
diff --git a/rbutil/rbutilqt/base/rbsettings.h b/rbutil/rbutilqt/base/rbsettings.h
index a25eabbcee..0060879fee 100644
--- a/rbutil/rbutilqt/base/rbsettings.h
+++ b/rbutil/rbutilqt/base/rbsettings.h
@@ -47,6 +47,7 @@ class RbSettings : public QObject
47 InstallThemes, 47 InstallThemes,
48 InstallGamefiles, 48 InstallGamefiles,
49 InstallVoice, 49 InstallVoice,
50 InstallManual,
50 Tts, 51 Tts,
51 UseTtsCorrections, 52 UseTtsCorrections,
52 TalkFolders, 53 TalkFolders,
diff --git a/rbutil/rbutilqt/base/serverinfo.cpp b/rbutil/rbutilqt/base/serverinfo.cpp
index 2f73d96beb..8b6707540e 100644
--- a/rbutil/rbutilqt/base/serverinfo.cpp
+++ b/rbutil/rbutilqt/base/serverinfo.cpp
@@ -42,9 +42,6 @@ const static struct {
42 { ServerInfo::RelCandidateVersion, "release-candidate/:platform:", "" }, 42 { ServerInfo::RelCandidateVersion, "release-candidate/:platform:", "" },
43 { ServerInfo::RelCandidateUrl, "release-candidate/:platform:", "" }, 43 { ServerInfo::RelCandidateUrl, "release-candidate/:platform:", "" },
44 { ServerInfo::CurStatus, "status/:platform:", "-1" }, 44 { ServerInfo::CurStatus, "status/:platform:", "-1" },
45 { ServerInfo::ManualPdfUrl, "", "" },
46 { ServerInfo::ManualHtmlUrl, "", "" },
47 { ServerInfo::ManualZipUrl, "", "" },
48 { ServerInfo::BleedingRevision, "bleeding/rev", "" }, 45 { ServerInfo::BleedingRevision, "bleeding/rev", "" },
49 { ServerInfo::BleedingDate, "bleeding/timestamp", "" }, 46 { ServerInfo::BleedingDate, "bleeding/timestamp", "" },
50 { ServerInfo::CurDevelUrl, "", "" }, 47 { ServerInfo::CurDevelUrl, "", "" },
@@ -111,23 +108,6 @@ QVariant ServerInfo::platformValue(enum ServerInfos info, QString platform)
111 SystemInfo::BuildCurrent).toString() 108 SystemInfo::BuildCurrent).toString()
112 .replace("%MODEL%", platform); 109 .replace("%MODEL%", platform);
113 break; 110 break;
114 case ManualPdfUrl:
115 case ManualZipUrl:
116 case ManualHtmlUrl:
117 {
118 QString url = SystemInfo::value(SystemInfo::ManualUrl).toString();
119 QString modelman = SystemInfo::platformValue(
120 SystemInfo::Manual, platform).toString();
121 url.replace("%MODEL%", modelman.isEmpty() ? platform : modelman);
122 if(info == ManualPdfUrl)
123 url.replace("%FORMAT%", ".pdf");
124 else if(info == ManualZipUrl)
125 url.replace("%FORMAT%", "-html.zip");
126 else if(info == ManualHtmlUrl)
127 url.replace("%FORMAT%", "/rockbox-build.html");
128 value = url;
129 }
130 break;
131 case BleedingDate: 111 case BleedingDate:
132 // TODO: get rid of this, it's location specific. 112 // TODO: get rid of this, it's location specific.
133 value = QDateTime::fromString(value.toString(), 113 value = QDateTime::fromString(value.toString(),
diff --git a/rbutil/rbutilqt/base/serverinfo.h b/rbutil/rbutilqt/base/serverinfo.h
index 9affcb6032..7b7e52beb7 100644
--- a/rbutil/rbutilqt/base/serverinfo.h
+++ b/rbutil/rbutilqt/base/serverinfo.h
@@ -41,9 +41,6 @@ class ServerInfo : public QObject
41 CurStatus, 41 CurStatus,
42 CurReleaseUrl, 42 CurReleaseUrl,
43 CurDevelUrl, 43 CurDevelUrl,
44 ManualPdfUrl,
45 ManualHtmlUrl,
46 ManualZipUrl,
47 BleedingRevision, 44 BleedingRevision,
48 BleedingDate, 45 BleedingDate,
49 RelCandidateVersion, 46 RelCandidateVersion,
diff --git a/rbutil/rbutilqt/base/systeminfo.cpp b/rbutil/rbutilqt/base/systeminfo.cpp
index 2ad3c7a7d4..b0837438cb 100644
--- a/rbutil/rbutilqt/base/systeminfo.cpp
+++ b/rbutil/rbutilqt/base/systeminfo.cpp
@@ -51,18 +51,18 @@ const static struct {
51 const char* name; 51 const char* name;
52 const char* def; 52 const char* def;
53} PlatformInfosList[] = { 53} PlatformInfosList[] = {
54 { SystemInfo::PlatformName, ":platform:/name", "" }, 54 { SystemInfo::PlatformName, ":platform:/name", "" },
55 { SystemInfo::Manual, ":platform:/manualname","rockbox-:platform:" }, 55 { SystemInfo::Manual, ":platform:/manualname", ":platform:" },
56 { SystemInfo::BootloaderMethod, ":platform:/bootloadermethod", "none" }, 56 { SystemInfo::BootloaderMethod, ":platform:/bootloadermethod", "none" },
57 { SystemInfo::BootloaderName, ":platform:/bootloadername", "" }, 57 { SystemInfo::BootloaderName, ":platform:/bootloadername", "" },
58 { SystemInfo::BootloaderFile, ":platform:/bootloaderfile", "" }, 58 { SystemInfo::BootloaderFile, ":platform:/bootloaderfile", "" },
59 { SystemInfo::BootloaderFilter, ":platform:/bootloaderfilter", "" }, 59 { SystemInfo::BootloaderFilter, ":platform:/bootloaderfilter", "" },
60 { SystemInfo::Encoder, ":platform:/encoder", "" }, 60 { SystemInfo::Encoder, ":platform:/encoder", "" },
61 { SystemInfo::Brand, ":platform:/brand", "" }, 61 { SystemInfo::Brand, ":platform:/brand", "" },
62 { SystemInfo::Name, ":platform:/name", "" }, 62 { SystemInfo::Name, ":platform:/name", "" },
63 { SystemInfo::BuildserverModel, ":platform:/buildserver_modelname", "" }, 63 { SystemInfo::BuildserverModel, ":platform:/buildserver_modelname", "" },
64 { SystemInfo::ConfigureModel, ":platform:/configure_modelname", "" }, 64 { SystemInfo::ConfigureModel, ":platform:/configure_modelname", "" },
65 { SystemInfo::PlayerPicture, ":platform:/playerpic", "" }, 65 { SystemInfo::PlayerPicture, ":platform:/playerpic", "" },
66}; 66};
67 67
68//! pointer to setting object to nullptr 68//! pointer to setting object to nullptr
diff --git a/rbutil/rbutilqt/gui/manualwidget.cpp b/rbutil/rbutilqt/gui/manualwidget.cpp
deleted file mode 100644
index c10288df10..0000000000
--- a/rbutil/rbutilqt/gui/manualwidget.cpp
+++ /dev/null
@@ -1,107 +0,0 @@
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 <QWidget>
20#include <QMessageBox>
21#include <QDebug>
22#include "manualwidget.h"
23#include "rbutilqt.h"
24#include "rbsettings.h"
25#include "serverinfo.h"
26#include "systeminfo.h"
27#include "Logger.h"
28
29ManualWidget::ManualWidget(QWidget *parent) : QWidget(parent)
30{
31 ui.setupUi(this);
32 ui.radioPdf->setChecked(true);
33 m_platform = RbSettings::value(RbSettings::Platform).toString();
34 connect(ui.buttonDownloadManual, SIGNAL(clicked()), this, SLOT(downloadManual()));
35}
36
37
38void ManualWidget::updateManual()
39{
40 LOG_INFO() << "updating manual URLs";
41 m_platform = RbSettings::value(RbSettings::Platform).toString();
42 if(!m_platform.isEmpty())
43 {
44 ui.labelPdfManual->setText(tr("<a href='%1'>PDF Manual</a>")
45 .arg(ServerInfo::instance()->platformValue(ServerInfo::ManualPdfUrl, m_platform).toString()));
46 ui.labelHtmlManual->setText(tr("<a href='%1'>HTML Manual (opens in browser)</a>")
47 .arg(ServerInfo::instance()->platformValue(ServerInfo::ManualHtmlUrl, m_platform).toString()));
48 }
49 else {
50 ui.labelPdfManual->setText(tr("Select a device for a link to the correct manual"));
51 ui.labelHtmlManual->setText(tr("<a href='%1'>Manual Overview</a>")
52 .arg("http://www.rockbox.org/manual.shtml"));
53 }
54}
55
56
57void ManualWidget::downloadManual(void)
58{
59 if(RbUtilQt::chkConfig(this)) {
60 return;
61 }
62 if(QMessageBox::question(this, tr("Confirm download"),
63 tr("Do you really want to download the manual? The manual will be saved "
64 "to the root folder of your player."),
65 QMessageBox::Yes | QMessageBox::No) != QMessageBox::Yes) {
66 return;
67 }
68 QString manual = ServerInfo::instance()->platformValue(ServerInfo::ManualPdfUrl).toString();
69
70 ProgressLoggerGui* logger = new ProgressLoggerGui(this);
71 logger->show();
72 ZipInstaller *installer = new ZipInstaller(this);
73 installer->setMountPoint(RbSettings::value(RbSettings::Mountpoint).toString());
74 if(!RbSettings::value(RbSettings::CacheDisabled).toBool())
75 installer->setCache(true);
76
77 if(ui.radioPdf->isChecked()) {
78 installer->setUrl(ServerInfo::instance()->platformValue(
79 ServerInfo::ManualPdfUrl, m_platform).toString());
80 installer->setLogSection("Manual (PDF)");
81 }
82 else {
83 installer->setUrl(ServerInfo::instance()->platformValue(
84 ServerInfo::ManualZipUrl, m_platform).toString());
85 installer->setLogSection("Manual (HTML)");
86 }
87 installer->setLogVersion();
88 installer->setUnzip(false);
89
90 connect(installer, SIGNAL(logItem(QString, int)), logger, SLOT(addItem(QString, int)));
91 connect(installer, SIGNAL(logProgress(int, int)), logger, SLOT(setProgress(int, int)));
92 connect(installer, SIGNAL(done(bool)), logger, SLOT(setFinished()));
93 connect(logger, SIGNAL(aborted()), installer, SLOT(abort()));
94 installer->install();
95}
96
97
98void ManualWidget::changeEvent(QEvent *e)
99{
100 if(e->type() == QEvent::LanguageChange) {
101 ui.retranslateUi(this);
102 updateManual();
103 } else {
104 QWidget::changeEvent(e);
105 }
106}
107
diff --git a/rbutil/rbutilqt/gui/manualwidget.h b/rbutil/rbutilqt/gui/manualwidget.h
deleted file mode 100644
index d6095d3e14..0000000000
--- a/rbutil/rbutilqt/gui/manualwidget.h
+++ /dev/null
@@ -1,42 +0,0 @@
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#ifndef MANUALWIDGET_H
20#define MANUALWIDGET_H
21
22#include <QWidget>
23#include "ui_manualwidgetfrm.h"
24
25class ManualWidget : public QWidget
26{
27 Q_OBJECT
28 public:
29 ManualWidget(QWidget *parent = nullptr);
30
31 public slots:
32 void downloadManual(void);
33 void updateManual();
34
35 private:
36 void changeEvent(QEvent*);
37 Ui::ManualWidgetFrm ui;
38 QString m_platform;
39};
40
41#endif
42
diff --git a/rbutil/rbutilqt/gui/manualwidgetfrm.ui b/rbutil/rbutilqt/gui/manualwidgetfrm.ui
deleted file mode 100644
index add26736c9..0000000000
--- a/rbutil/rbutilqt/gui/manualwidgetfrm.ui
+++ /dev/null
@@ -1,116 +0,0 @@
1<?xml version="1.0" encoding="UTF-8"?>
2<ui version="4.0">
3 <class>ManualWidgetFrm</class>
4 <widget class="QWidget" name="ManualWidgetFrm">
5 <property name="geometry">
6 <rect>
7 <x>0</x>
8 <y>0</y>
9 <width>543</width>
10 <height>255</height>
11 </rect>
12 </property>
13 <property name="windowTitle">
14 <string>Manual</string>
15 </property>
16 <layout class="QGridLayout" name="gridLayout">
17 <item row="0" column="0">
18 <widget class="QGroupBox" name="groupBox_2">
19 <property name="title">
20 <string>Read the manual</string>
21 </property>
22 <layout class="QGridLayout">
23 <item row="0" column="0">
24 <widget class="QLabel" name="labelPdfManual">
25 <property name="text">
26 <string>PDF manual</string>
27 </property>
28 <property name="openExternalLinks">
29 <bool>true</bool>
30 </property>
31 <property name="textInteractionFlags">
32 <set>Qt::LinksAccessibleByKeyboard|Qt::LinksAccessibleByMouse</set>
33 </property>
34 </widget>
35 </item>
36 <item row="1" column="0">
37 <widget class="QLabel" name="labelHtmlManual">
38 <property name="text">
39 <string>HTML manual</string>
40 </property>
41 <property name="openExternalLinks">
42 <bool>true</bool>
43 </property>
44 <property name="textInteractionFlags">
45 <set>Qt::LinksAccessibleByKeyboard|Qt::LinksAccessibleByMouse</set>
46 </property>
47 </widget>
48 </item>
49 </layout>
50 </widget>
51 </item>
52 <item row="1" column="0">
53 <widget class="QGroupBox" name="groupBox">
54 <property name="title">
55 <string>Download the manual</string>
56 </property>
57 <layout class="QGridLayout" name="_2">
58 <item row="0" column="0">
59 <layout class="QVBoxLayout" name="_3">
60 <item>
61 <widget class="QRadioButton" name="radioPdf">
62 <property name="text">
63 <string>&amp;PDF version</string>
64 </property>
65 </widget>
66 </item>
67 <item>
68 <widget class="QRadioButton" name="radioHtmlzip">
69 <property name="text">
70 <string>&amp;HTML version (zip file)</string>
71 </property>
72 </widget>
73 </item>
74 </layout>
75 </item>
76 <item row="0" column="1">
77 <spacer>
78 <property name="orientation">
79 <enum>Qt::Horizontal</enum>
80 </property>
81 <property name="sizeHint" stdset="0">
82 <size>
83 <width>40</width>
84 <height>20</height>
85 </size>
86 </property>
87 </spacer>
88 </item>
89 <item row="0" column="2">
90 <widget class="QPushButton" name="buttonDownloadManual">
91 <property name="text">
92 <string>Down&amp;load</string>
93 </property>
94 </widget>
95 </item>
96 </layout>
97 </widget>
98 </item>
99 <item row="2" column="0">
100 <spacer name="verticalSpacer">
101 <property name="orientation">
102 <enum>Qt::Vertical</enum>
103 </property>
104 <property name="sizeHint" stdset="0">
105 <size>
106 <width>20</width>
107 <height>40</height>
108 </size>
109 </property>
110 </spacer>
111 </item>
112 </layout>
113 </widget>
114 <resources/>
115 <connections/>
116</ui>
diff --git a/rbutil/rbutilqt/gui/selectiveinstallwidget.cpp b/rbutil/rbutilqt/gui/selectiveinstallwidget.cpp
index 88b085e9b3..50017e65d4 100644
--- a/rbutil/rbutilqt/gui/selectiveinstallwidget.cpp
+++ b/rbutil/rbutilqt/gui/selectiveinstallwidget.cpp
@@ -40,6 +40,11 @@ SelectiveInstallWidget::SelectiveInstallWidget(QWidget* parent) : QWidget(parent
40 ui.themesCheckbox->setChecked(RbSettings::value(RbSettings::InstallThemes).toBool()); 40 ui.themesCheckbox->setChecked(RbSettings::value(RbSettings::InstallThemes).toBool());
41 ui.gamefileCheckbox->setChecked(RbSettings::value(RbSettings::InstallGamefiles).toBool()); 41 ui.gamefileCheckbox->setChecked(RbSettings::value(RbSettings::InstallGamefiles).toBool());
42 ui.voiceCheckbox->setChecked(RbSettings::value(RbSettings::InstallVoice).toBool()); 42 ui.voiceCheckbox->setChecked(RbSettings::value(RbSettings::InstallVoice).toBool());
43 ui.manualCheckbox->setChecked(RbSettings::value(RbSettings::InstallManual).toBool());
44
45 ui.manualCombobox->addItem("PDF", "pdf");
46 ui.manualCombobox->addItem("HTML (zip)", "zip");
47 ui.manualCombobox->addItem("HTML", "html");
43 48
44 // check if Rockbox is installed by looking after rockbox-info.txt. 49 // check if Rockbox is installed by looking after rockbox-info.txt.
45 // If installed uncheck bootloader installation. 50 // If installed uncheck bootloader installation.
@@ -201,6 +206,7 @@ void SelectiveInstallWidget::saveSettings(void)
201 RbSettings::setValue(RbSettings::InstallThemes, ui.themesCheckbox->isChecked()); 206 RbSettings::setValue(RbSettings::InstallThemes, ui.themesCheckbox->isChecked());
202 RbSettings::setValue(RbSettings::InstallGamefiles, ui.gamefileCheckbox->isChecked()); 207 RbSettings::setValue(RbSettings::InstallGamefiles, ui.gamefileCheckbox->isChecked());
203 RbSettings::setValue(RbSettings::InstallVoice, ui.voiceCheckbox->isChecked()); 208 RbSettings::setValue(RbSettings::InstallVoice, ui.voiceCheckbox->isChecked());
209 RbSettings::setValue(RbSettings::InstallManual, ui.manualCheckbox->isChecked());
204 RbSettings::setValue(RbSettings::VoiceLanguage, ui.voiceCombobox->currentData().toString()); 210 RbSettings::setValue(RbSettings::VoiceLanguage, ui.voiceCombobox->currentData().toString());
205} 211}
206 212
@@ -244,7 +250,7 @@ void SelectiveInstallWidget::continueInstall(bool error)
244 if(error) { 250 if(error) {
245 LOG_ERROR() << "Last part returned error."; 251 LOG_ERROR() << "Last part returned error.";
246 m_logger->setFinished(); 252 m_logger->setFinished();
247 m_installStage = 7; 253 m_installStage = 9;
248 } 254 }
249 m_installStage++; 255 m_installStage++;
250 switch(m_installStage) { 256 switch(m_installStage) {
@@ -255,11 +261,12 @@ void SelectiveInstallWidget::continueInstall(bool error)
255 case 4: installThemes(); break; 261 case 4: installThemes(); break;
256 case 5: installGamefiles(); break; 262 case 5: installGamefiles(); break;
257 case 6: installVoicefile(); break; 263 case 6: installVoicefile(); break;
258 case 7: installBootloaderPost(); break; 264 case 7: installManual(); break;
265 case 8: installBootloaderPost(); break;
259 default: break; 266 default: break;
260 } 267 }
261 268
262 if(m_installStage > 6) { 269 if(m_installStage > 8) {
263 LOG_INFO() << "All install stages done."; 270 LOG_INFO() << "All install stages done.";
264 m_logger->setFinished(); 271 m_logger->setFinished();
265 if(m_blmethod != "none") { 272 if(m_blmethod != "none") {
@@ -548,6 +555,57 @@ void SelectiveInstallWidget::installVoicefile(void)
548 } 555 }
549} 556}
550 557
558void SelectiveInstallWidget::installManual(void)
559{
560 if(ui.manualCheckbox->isChecked() && ui.manualCheckbox->isEnabled()) {
561 LOG_INFO() << "installing Manual";
562 QString mantype = ui.manualCombobox->currentData().toString();
563
564 RockboxInfo installInfo(m_mountpoint);
565 QString manualurl;
566 QString logversion;
567 QString relversion = installInfo.release();
568 if(m_buildtype != SystemInfo::BuildRelease) {
569 // release is empty for non-release versions (i.e. daily / current)
570 logversion = installInfo.release();
571 }
572
573 manualurl = SystemInfo::value(SystemInfo::ManualUrl, m_buildtype).toString();
574 manualurl.replace("%RELVERSION%", m_versions[m_buildtype]);
575 QString model = SystemInfo::platformValue(SystemInfo::Manual, m_target).toString();
576 if(model.isEmpty())
577 model = m_target;
578 manualurl.replace("%MODEL%", model);
579
580 if(mantype == "pdf")
581 manualurl.replace("%FORMAT%", ".pdf");
582 else
583 manualurl.replace("%FORMAT%", "-html.zip");
584
585 // create new zip installer
586 if(m_zipinstaller != nullptr) m_zipinstaller->deleteLater();
587 m_zipinstaller = new ZipInstaller(this);
588 m_zipinstaller->setUrl(manualurl);
589 m_zipinstaller->setLogSection("Manual Voice (" + mantype + ")");
590 m_zipinstaller->setLogVersion(logversion);
591 m_zipinstaller->setMountPoint(m_mountpoint);
592 if(!RbSettings::value(RbSettings::CacheDisabled).toBool())
593 m_zipinstaller->setCache(true);
594 // if type is html extract it.
595 m_zipinstaller->setUnzip(mantype == "html");
596
597 connect(m_zipinstaller, SIGNAL(done(bool)), this, SLOT(continueInstall(bool)));
598 connect(m_zipinstaller, SIGNAL(logItem(QString, int)), m_logger, SLOT(addItem(QString, int)));
599 connect(m_zipinstaller, SIGNAL(logProgress(int, int)), m_logger, SLOT(setProgress(int, int)));
600 connect(m_logger, SIGNAL(aborted()), m_zipinstaller, SLOT(abort()));
601 m_zipinstaller->install();
602 }
603 else {
604 LOG_INFO() << "Manual install disabled.";
605 emit installSkipped(false);
606 }
607}
608
551void SelectiveInstallWidget::customizeThemes(void) 609void SelectiveInstallWidget::customizeThemes(void)
552{ 610{
553 if(m_themesinstaller == nullptr) 611 if(m_themesinstaller == nullptr)
diff --git a/rbutil/rbutilqt/gui/selectiveinstallwidget.h b/rbutil/rbutilqt/gui/selectiveinstallwidget.h
index 38cce78a46..7a969a9e89 100644
--- a/rbutil/rbutilqt/gui/selectiveinstallwidget.h
+++ b/rbutil/rbutilqt/gui/selectiveinstallwidget.h
@@ -39,15 +39,18 @@ class SelectiveInstallWidget : public QWidget
39 39
40 private slots: 40 private slots:
41 void continueInstall(bool); 41 void continueInstall(bool);
42 void customizeThemes(void);
43 void selectedVersionChanged(int);
44
45 private:
42 void installBootloader(void); 46 void installBootloader(void);
43 void installRockbox(void); 47 void installRockbox(void);
44 void installFonts(void); 48 void installFonts(void);
45 void installVoicefile(void); 49 void installVoicefile(void);
50 void installManual(void);
46 void installThemes(void); 51 void installThemes(void);
47 void installGamefiles(void); 52 void installGamefiles(void);
48 void installBootloaderPost(void); 53 void installBootloaderPost(void);
49 void customizeThemes(void);
50 void selectedVersionChanged(int);
51 54
52 signals: 55 signals:
53 void installSkipped(bool); 56 void installSkipped(bool);
diff --git a/rbutil/rbutilqt/gui/selectiveinstallwidgetfrm.ui b/rbutil/rbutilqt/gui/selectiveinstallwidgetfrm.ui
index a5bb023f2e..06f2af92b8 100644
--- a/rbutil/rbutilqt/gui/selectiveinstallwidgetfrm.ui
+++ b/rbutil/rbutilqt/gui/selectiveinstallwidgetfrm.ui
@@ -7,7 +7,7 @@
7 <x>0</x> 7 <x>0</x>
8 <y>0</y> 8 <y>0</y>
9 <width>663</width> 9 <width>663</width>
10 <height>399</height> 10 <height>409</height>
11 </rect> 11 </rect>
12 </property> 12 </property>
13 <property name="sizePolicy"> 13 <property name="sizePolicy">
@@ -54,6 +54,20 @@
54 <string>Rockbox components to install</string> 54 <string>Rockbox components to install</string>
55 </property> 55 </property>
56 <layout class="QGridLayout" name="gridLayout_2"> 56 <layout class="QGridLayout" name="gridLayout_2">
57 <item row="0" column="0">
58 <widget class="QCheckBox" name="bootloaderCheckbox">
59 <property name="text">
60 <string>&amp;Bootloader</string>
61 </property>
62 <property name="icon">
63 <iconset resource="../rbutilqt.qrc">
64 <normaloff>:/icons/preferences-system.svg</normaloff>:/icons/preferences-system.svg</iconset>
65 </property>
66 <property name="checked">
67 <bool>true</bool>
68 </property>
69 </widget>
70 </item>
57 <item row="1" column="0"> 71 <item row="1" column="0">
58 <widget class="QCheckBox" name="rockboxCheckbox"> 72 <widget class="QCheckBox" name="rockboxCheckbox">
59 <property name="text"> 73 <property name="text">
@@ -68,8 +82,8 @@
68 </property> 82 </property>
69 </widget> 83 </widget>
70 </item> 84 </item>
71 <item row="0" column="1"> 85 <item row="3" column="2">
72 <widget class="QLabel" name="bootloaderLabel"> 86 <widget class="QLabel" name="themesLabel">
73 <property name="sizePolicy"> 87 <property name="sizePolicy">
74 <sizepolicy hsizetype="MinimumExpanding" vsizetype="Preferred"> 88 <sizepolicy hsizetype="MinimumExpanding" vsizetype="Preferred">
75 <horstretch>0</horstretch> 89 <horstretch>0</horstretch>
@@ -77,7 +91,7 @@
77 </sizepolicy> 91 </sizepolicy>
78 </property> 92 </property>
79 <property name="text"> 93 <property name="text">
80 <string>The bootloader is required for starting Rockbox. Only necessary for first time install.</string> 94 <string>Themes allow adjusting the user interface of Rockbox. Use &quot;Customize&quot; to select themes.</string>
81 </property> 95 </property>
82 <property name="wordWrap"> 96 <property name="wordWrap">
83 <bool>true</bool> 97 <bool>true</bool>
@@ -95,33 +109,6 @@
95 </property> 109 </property>
96 </widget> 110 </widget>
97 </item> 111 </item>
98 <item row="3" column="3">
99 <widget class="QPushButton" name="themesCustomize">
100 <property name="text">
101 <string>Customize</string>
102 </property>
103 <property name="icon">
104 <iconset resource="../rbutilqt.qrc">
105 <normaloff>:/icons/preferences-system.svg</normaloff>:/icons/preferences-system.svg</iconset>
106 </property>
107 </widget>
108 </item>
109 <item row="1" column="2">
110 <spacer name="horizontalSpacer">
111 <property name="orientation">
112 <enum>Qt::Horizontal</enum>
113 </property>
114 <property name="sizeType">
115 <enum>QSizePolicy::Minimum</enum>
116 </property>
117 <property name="sizeHint" stdset="0">
118 <size>
119 <width>1</width>
120 <height>1</height>
121 </size>
122 </property>
123 </spacer>
124 </item>
125 <item row="2" column="0"> 112 <item row="2" column="0">
126 <widget class="QCheckBox" name="fontsCheckbox"> 113 <widget class="QCheckBox" name="fontsCheckbox">
127 <property name="text"> 114 <property name="text">
@@ -136,19 +123,8 @@
136 </property> 123 </property>
137 </widget> 124 </widget>
138 </item> 125 </item>
139 <item row="6" column="0"> 126 <item row="0" column="2">
140 <widget class="QCheckBox" name="gamefileCheckbox"> 127 <widget class="QLabel" name="bootloaderLabel">
141 <property name="text">
142 <string>Game Files</string>
143 </property>
144 <property name="icon">
145 <iconset resource="../rbutilqt.qrc">
146 <normaloff>:/icons/input-gaming.svg</normaloff>:/icons/input-gaming.svg</iconset>
147 </property>
148 </widget>
149 </item>
150 <item row="3" column="1">
151 <widget class="QLabel" name="themesLabel">
152 <property name="sizePolicy"> 128 <property name="sizePolicy">
153 <sizepolicy hsizetype="MinimumExpanding" vsizetype="Preferred"> 129 <sizepolicy hsizetype="MinimumExpanding" vsizetype="Preferred">
154 <horstretch>0</horstretch> 130 <horstretch>0</horstretch>
@@ -156,15 +132,15 @@
156 </sizepolicy> 132 </sizepolicy>
157 </property> 133 </property>
158 <property name="text"> 134 <property name="text">
159 <string>Themes allow adjusting the user interface of Rockbox. Use &quot;Customize&quot; to select themes.</string> 135 <string>The bootloader is required for starting Rockbox. Only necessary for first time install.</string>
160 </property> 136 </property>
161 <property name="wordWrap"> 137 <property name="wordWrap">
162 <bool>true</bool> 138 <bool>true</bool>
163 </property> 139 </property>
164 </widget> 140 </widget>
165 </item> 141 </item>
166 <item row="2" column="1"> 142 <item row="6" column="2">
167 <widget class="QLabel" name="fontsLabel"> 143 <widget class="QLabel" name="gameLabel">
168 <property name="sizePolicy"> 144 <property name="sizePolicy">
169 <sizepolicy hsizetype="MinimumExpanding" vsizetype="Preferred"> 145 <sizepolicy hsizetype="MinimumExpanding" vsizetype="Preferred">
170 <horstretch>0</horstretch> 146 <horstretch>0</horstretch>
@@ -172,31 +148,26 @@
172 </sizepolicy> 148 </sizepolicy>
173 </property> 149 </property>
174 <property name="text"> 150 <property name="text">
175 <string>Additional fonts for the User Interface.</string> 151 <string>Some game plugins require additional files.</string>
176 </property> 152 </property>
177 <property name="wordWrap"> 153 <property name="wordWrap">
178 <bool>true</bool> 154 <bool>true</bool>
179 </property> 155 </property>
180 </widget> 156 </widget>
181 </item> 157 </item>
182 <item row="6" column="1"> 158 <item row="3" column="4">
183 <widget class="QLabel" name="gameLabel"> 159 <widget class="QPushButton" name="themesCustomize">
184 <property name="sizePolicy">
185 <sizepolicy hsizetype="MinimumExpanding" vsizetype="Preferred">
186 <horstretch>0</horstretch>
187 <verstretch>0</verstretch>
188 </sizepolicy>
189 </property>
190 <property name="text"> 160 <property name="text">
191 <string>Some game plugins require additional files.</string> 161 <string>Customize</string>
192 </property> 162 </property>
193 <property name="wordWrap"> 163 <property name="icon">
194 <bool>true</bool> 164 <iconset resource="../rbutilqt.qrc">
165 <normaloff>:/icons/preferences-system.svg</normaloff>:/icons/preferences-system.svg</iconset>
195 </property> 166 </property>
196 </widget> 167 </widget>
197 </item> 168 </item>
198 <item row="1" column="1"> 169 <item row="2" column="2">
199 <widget class="QLabel" name="rockboxLabel"> 170 <widget class="QLabel" name="fontsLabel">
200 <property name="sizePolicy"> 171 <property name="sizePolicy">
201 <sizepolicy hsizetype="MinimumExpanding" vsizetype="Preferred"> 172 <sizepolicy hsizetype="MinimumExpanding" vsizetype="Preferred">
202 <horstretch>0</horstretch> 173 <horstretch>0</horstretch>
@@ -204,24 +175,55 @@
204 </sizepolicy> 175 </sizepolicy>
205 </property> 176 </property>
206 <property name="text"> 177 <property name="text">
207 <string>The main Rockbox firmware.</string> 178 <string>Additional fonts for the User Interface.</string>
208 </property> 179 </property>
209 <property name="wordWrap"> 180 <property name="wordWrap">
210 <bool>true</bool> 181 <bool>true</bool>
211 </property> 182 </property>
212 </widget> 183 </widget>
213 </item> 184 </item>
214 <item row="0" column="0"> 185 <item row="7" column="2">
215 <widget class="QCheckBox" name="bootloaderCheckbox"> 186 <widget class="QLabel" name="voiceLabel">
216 <property name="text"> 187 <property name="text">
217 <string>&amp;Bootloader</string> 188 <string>Install prerendered voice file.</string>
189 </property>
190 </widget>
191 </item>
192 <item row="6" column="0">
193 <widget class="QCheckBox" name="gamefileCheckbox">
194 <property name="text">
195 <string>Game Files</string>
218 </property> 196 </property>
219 <property name="icon"> 197 <property name="icon">
220 <iconset resource="../rbutilqt.qrc"> 198 <iconset resource="../rbutilqt.qrc">
221 <normaloff>:/icons/preferences-system.svg</normaloff>:/icons/preferences-system.svg</iconset> 199 <normaloff>:/icons/input-gaming.svg</normaloff>:/icons/input-gaming.svg</iconset>
222 </property> 200 </property>
223 <property name="checked"> 201 </widget>
224 <bool>true</bool> 202 </item>
203 <item row="1" column="3">
204 <spacer name="horizontalSpacer">
205 <property name="orientation">
206 <enum>Qt::Horizontal</enum>
207 </property>
208 <property name="sizeType">
209 <enum>QSizePolicy::Minimum</enum>
210 </property>
211 <property name="sizeHint" stdset="0">
212 <size>
213 <width>1</width>
214 <height>1</height>
215 </size>
216 </property>
217 </spacer>
218 </item>
219 <item row="8" column="0">
220 <widget class="QCheckBox" name="manualCheckbox">
221 <property name="text">
222 <string>&amp;Manual</string>
223 </property>
224 <property name="icon">
225 <iconset resource="../rbutilqt.qrc">
226 <normaloff>:/icons/edit-find.svg</normaloff>:/icons/edit-find.svg</iconset>
225 </property> 227 </property>
226 </widget> 228 </widget>
227 </item> 229 </item>
@@ -236,15 +238,34 @@
236 </property> 238 </property>
237 </widget> 239 </widget>
238 </item> 240 </item>
239 <item row="7" column="1"> 241 <item row="7" column="4">
240 <widget class="QLabel" name="voiceLabel"> 242 <widget class="QComboBox" name="voiceCombobox"/>
243 </item>
244 <item row="1" column="2">
245 <widget class="QLabel" name="rockboxLabel">
246 <property name="sizePolicy">
247 <sizepolicy hsizetype="MinimumExpanding" vsizetype="Preferred">
248 <horstretch>0</horstretch>
249 <verstretch>0</verstretch>
250 </sizepolicy>
251 </property>
241 <property name="text"> 252 <property name="text">
242 <string>Install prerendered voice file.</string> 253 <string>The main Rockbox firmware.</string>
254 </property>
255 <property name="wordWrap">
256 <bool>true</bool>
243 </property> 257 </property>
244 </widget> 258 </widget>
245 </item> 259 </item>
246 <item row="7" column="3"> 260 <item row="8" column="2">
247 <widget class="QComboBox" name="voiceCombobox"/> 261 <widget class="QLabel" name="manualLabel">
262 <property name="text">
263 <string>Save a copy of the manual on the player.</string>
264 </property>
265 </widget>
266 </item>
267 <item row="8" column="4">
268 <widget class="QComboBox" name="manualCombobox"/>
248 </item> 269 </item>
249 </layout> 270 </layout>
250 </widget> 271 </widget>
diff --git a/rbutil/rbutilqt/rbutil.ini b/rbutil/rbutilqt/rbutil.ini
index f92d746614..0b5122ebc9 100644
--- a/rbutil/rbutilqt/rbutil.ini
+++ b/rbutil/rbutilqt/rbutil.ini
@@ -24,13 +24,13 @@ download_url=http://download.rockbox.org/bootloader
24build_url=https://download.rockbox.org/release/%RELVERSION%/rockbox-%MODEL%-%RELVERSION%.zip 24build_url=https://download.rockbox.org/release/%RELVERSION%/rockbox-%MODEL%-%RELVERSION%.zip
25voice_url=https://download.rockbox.org/release/%RELVERSION%/%MODEL%-%RELVERSION%-%LANGUAGE%.zip 25voice_url=https://download.rockbox.org/release/%RELVERSION%/%MODEL%-%RELVERSION%-%LANGUAGE%.zip
26font_url=https://download.rockbox.org/release/%RELVERSION%/rockbox-fonts-%RELVERSION%.zip 26font_url=https://download.rockbox.org/release/%RELVERSION%/rockbox-fonts-%RELVERSION%.zip
27manual_url=https://download.rockbox.org/release/%RELVERSION%/rockbox-%MODEL%%FORMAT% 27manual_url=https://download.rockbox.org/release/%RELVERSION%/rockbox-%MODEL%-%RELVERSION%%FORMAT%
28 28
29[release-candidate] 29[release-candidate]
30build_url=https://download.rockbox.org/release-candidate/%RELVERSION%/rockbox-%MODEL%-%RELVERSION%.zip 30build_url=https://download.rockbox.org/release-candidate/%RELVERSION%/rockbox-%MODEL%-%RELVERSION%.zip
31voice_url=https://download.rockbox.org/release-candidate/%RELVERSION%/%MODEL%-%RELVERSION%-english.zip 31voice_url=https://download.rockbox.org/release-candidate/%RELVERSION%/%MODEL%-%RELVERSION%-%LANGUAGE%.zip
32font_url=https://download.rockbox.org/release-candidate/%RELVERSION%/rockbox-fonts-%RELVERSION%.zip 32font_url=https://download.rockbox.org/release-candidate/%RELVERSION%/rockbox-fonts-%RELVERSION%.zip
33manual_url=https://download.rockbox.org/release-candidate/%RELVERSION%/rockbox-%MODEL%%FORMAT% 33manual_url=https://download.rockbox.org/release-candidate/%RELVERSION%/rockbox-%MODEL%-%RELVERSION%%FORMAT%
34 34
35[development] 35[development]
36build_url=http://build.rockbox.org/data/rockbox-%MODEL%.zip 36build_url=http://build.rockbox.org/data/rockbox-%MODEL%.zip
diff --git a/rbutil/rbutilqt/rbutilqt.cpp b/rbutil/rbutilqt/rbutilqt.cpp
index d996eddfe1..a250e4f252 100644
--- a/rbutil/rbutilqt/rbutilqt.cpp
+++ b/rbutil/rbutilqt/rbutilqt.cpp
@@ -38,7 +38,6 @@
38#include "serverinfo.h" 38#include "serverinfo.h"
39#include "systeminfo.h" 39#include "systeminfo.h"
40#include "ziputil.h" 40#include "ziputil.h"
41#include "manualwidget.h"
42#include "infowidget.h" 41#include "infowidget.h"
43#include "selectiveinstallwidget.h" 42#include "selectiveinstallwidget.h"
44#include "backupdialog.h" 43#include "backupdialog.h"
@@ -136,12 +135,6 @@ RbUtilQt::RbUtilQt(QWidget *parent) : QMainWindow(parent)
136 m_gotInfo = false; 135 m_gotInfo = false;
137 m_auto = false; 136 m_auto = false;
138 137
139 // insert ManualWidget() widget in manual tab
140 QGridLayout *mantablayout = new QGridLayout(this);
141 ui.manual->setLayout(mantablayout);
142 manual = new ManualWidget(this);
143 mantablayout->addWidget(manual);
144
145 // selective "install" tab. 138 // selective "install" tab.
146 QGridLayout *selectivetablayout = new QGridLayout(this); 139 QGridLayout *selectivetablayout = new QGridLayout(this);
147 ui.selective->setLayout(selectivetablayout); 140 ui.selective->setLayout(selectivetablayout);
@@ -358,7 +351,6 @@ void RbUtilQt::updateSettings()
358{ 351{
359 LOG_INFO() << "updating current settings"; 352 LOG_INFO() << "updating current settings";
360 updateDevice(); 353 updateDevice();
361 manual->updateManual();
362 QString c = RbSettings::value(RbSettings::CachePath).toString(); 354 QString c = RbSettings::value(RbSettings::CachePath).toString();
363 HttpGet::setGlobalCache(c.isEmpty() ? QDir::tempPath() : c); 355 HttpGet::setGlobalCache(c.isEmpty() ? QDir::tempPath() : c);
364 HttpGet::setGlobalProxy(proxy()); 356 HttpGet::setGlobalProxy(proxy());
diff --git a/rbutil/rbutilqt/rbutilqt.h b/rbutil/rbutilqt/rbutilqt.h
index 91486e9a2d..41000b80f9 100644
--- a/rbutil/rbutilqt/rbutilqt.h
+++ b/rbutil/rbutilqt/rbutilqt.h
@@ -32,7 +32,6 @@
32#include "zipinstaller.h" 32#include "zipinstaller.h"
33#include "progressloggergui.h" 33#include "progressloggergui.h"
34#include "bootloaderinstallbase.h" 34#include "bootloaderinstallbase.h"
35#include "manualwidget.h"
36#include "infowidget.h" 35#include "infowidget.h"
37#include "selectiveinstallwidget.h" 36#include "selectiveinstallwidget.h"
38#include "backupdialog.h" 37#include "backupdialog.h"
@@ -47,7 +46,6 @@ class RbUtilQt : public QMainWindow
47 static bool chkConfig(QWidget *parent = nullptr); 46 static bool chkConfig(QWidget *parent = nullptr);
48 47
49 private: 48 private:
50 ManualWidget *manual;
51 InfoWidget *info; 49 InfoWidget *info;
52 SelectiveInstallWidget* selectiveinstallwidget; 50 SelectiveInstallWidget* selectiveinstallwidget;
53 BackupDialog *backupdialog; 51 BackupDialog *backupdialog;
diff --git a/rbutil/rbutilqt/rbutilqt.pri b/rbutil/rbutilqt/rbutilqt.pri
index f622d1a0de..c8f60052c4 100644
--- a/rbutil/rbutilqt/rbutilqt.pri
+++ b/rbutil/rbutilqt/rbutilqt.pri
@@ -17,7 +17,6 @@
17 17
18# common files 18# common files
19SOURCES += \ 19SOURCES += \
20 gui/manualwidget.cpp \
21 gui/infowidget.cpp \ 20 gui/infowidget.cpp \
22 rbutilqt.cpp \ 21 rbutilqt.cpp \
23 main.cpp \ 22 main.cpp \
@@ -86,7 +85,6 @@ SOURCES += \
86 85
87 86
88HEADERS += \ 87HEADERS += \
89 gui/manualwidget.h \
90 gui/infowidget.h \ 88 gui/infowidget.h \
91 rbutilqt.h \ 89 rbutilqt.h \
92 base/httpget.h \ 90 base/httpget.h \
@@ -178,7 +176,6 @@ HEADERS += \
178 176
179 177
180FORMS += \ 178FORMS += \
181 gui/manualwidgetfrm.ui \
182 gui/infowidgetfrm.ui \ 179 gui/infowidgetfrm.ui \
183 rbutilqtfrm.ui \ 180 rbutilqtfrm.ui \
184 aboutbox.ui \ 181 aboutbox.ui \
diff --git a/rbutil/rbutilqt/rbutilqtfrm.ui b/rbutil/rbutilqt/rbutilqtfrm.ui
index 5fac1c6821..f0b18ea87a 100644
--- a/rbutil/rbutilqt/rbutilqtfrm.ui
+++ b/rbutil/rbutilqt/rbutilqtfrm.ui
@@ -19,6 +19,31 @@
19 </property> 19 </property>
20 <widget class="QWidget" name="centralwidget"> 20 <widget class="QWidget" name="centralwidget">
21 <layout class="QGridLayout" name="gridLayout_3"> 21 <layout class="QGridLayout" name="gridLayout_3">
22 <item row="0" column="0">
23 <widget class="QLabel" name="logoLabel">
24 <property name="sizePolicy">
25 <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
26 <horstretch>0</horstretch>
27 <verstretch>0</verstretch>
28 </sizepolicy>
29 </property>
30 <property name="baseSize">
31 <size>
32 <width>0</width>
33 <height>0</height>
34 </size>
35 </property>
36 <property name="text">
37 <string comment="Welcome to Rockbox Utility, the installation and housekeeping tool for Rockbox."/>
38 </property>
39 <property name="pixmap">
40 <pixmap resource="rbutilqt.qrc">:/icons/rblogo.png</pixmap>
41 </property>
42 <property name="scaledContents">
43 <bool>false</bool>
44 </property>
45 </widget>
46 </item>
22 <item row="0" column="1"> 47 <item row="0" column="1">
23 <widget class="QGroupBox" name="groupBoxDevice"> 48 <widget class="QGroupBox" name="groupBoxDevice">
24 <property name="sizePolicy"> 49 <property name="sizePolicy">
@@ -125,31 +150,6 @@
125 </layout> 150 </layout>
126 </widget> 151 </widget>
127 </item> 152 </item>
128 <item row="0" column="0">
129 <widget class="QLabel" name="logoLabel">
130 <property name="sizePolicy">
131 <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
132 <horstretch>0</horstretch>
133 <verstretch>0</verstretch>
134 </sizepolicy>
135 </property>
136 <property name="baseSize">
137 <size>
138 <width>0</width>
139 <height>0</height>
140 </size>
141 </property>
142 <property name="text">
143 <string comment="Welcome to Rockbox Utility, the installation and housekeeping tool for Rockbox."/>
144 </property>
145 <property name="pixmap">
146 <pixmap resource="rbutilqt.qrc">:/icons/rblogo.png</pixmap>
147 </property>
148 <property name="scaledContents">
149 <bool>false</bool>
150 </property>
151 </widget>
152 </item>
153 <item row="1" column="0" colspan="2"> 153 <item row="1" column="0" colspan="2">
154 <widget class="QTabWidget" name="tabWidget"> 154 <widget class="QTabWidget" name="tabWidget">
155 <property name="currentIndex"> 155 <property name="currentIndex">
@@ -388,14 +388,6 @@
388 </item> 388 </item>
389 </layout> 389 </layout>
390 </widget> 390 </widget>
391 <widget class="QWidget" name="manual">
392 <attribute name="title">
393 <string>&amp;Manual</string>
394 </attribute>
395 <attribute name="toolTip">
396 <string>View and download the manual</string>
397 </attribute>
398 </widget>
399 <widget class="QWidget" name="info"> 391 <widget class="QWidget" name="info">
400 <attribute name="title"> 392 <attribute name="title">
401 <string>Inf&amp;o</string> 393 <string>Inf&amp;o</string>
@@ -411,7 +403,7 @@
411 <x>0</x> 403 <x>0</x>
412 <y>0</y> 404 <y>0</y>
413 <width>650</width> 405 <width>650</width>
414 <height>23</height> 406 <height>22</height>
415 </rect> 407 </rect>
416 </property> 408 </property>
417 <widget class="QMenu" name="menu_File"> 409 <widget class="QMenu" name="menu_File">