diff options
-rw-r--r-- | rbutil/rbutilqt/base/rbsettings.cpp | 1 | ||||
-rw-r--r-- | rbutil/rbutilqt/base/rbsettings.h | 1 | ||||
-rw-r--r-- | rbutil/rbutilqt/base/systeminfo.cpp | 8 | ||||
-rw-r--r-- | rbutil/rbutilqt/base/systeminfo.h | 5 | ||||
-rw-r--r-- | rbutil/rbutilqt/gui/selectiveinstallwidget.cpp | 119 | ||||
-rw-r--r-- | rbutil/rbutilqt/gui/selectiveinstallwidget.h | 2 | ||||
-rw-r--r-- | rbutil/rbutilqt/gui/selectiveinstallwidgetfrm.ui | 143 | ||||
-rw-r--r-- | rbutil/rbutilqt/rbutil.ini | 7 | ||||
-rw-r--r-- | rbutil/rbutilqt/rbutilqt.cpp | 1 |
9 files changed, 199 insertions, 88 deletions
diff --git a/rbutil/rbutilqt/base/rbsettings.cpp b/rbutil/rbutilqt/base/rbsettings.cpp index 827c0f96fd..5baa53bee0 100644 --- a/rbutil/rbutilqt/base/rbsettings.cpp +++ b/rbutil/rbutilqt/base/rbsettings.cpp | |||
@@ -47,6 +47,7 @@ const static struct { | |||
47 | { RbSettings::InstallFonts, "install_fonts", "true" }, | 47 | { RbSettings::InstallFonts, "install_fonts", "true" }, |
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 | #if defined(Q_OS_WIN32) | 51 | #if defined(Q_OS_WIN32) |
51 | { RbSettings::Tts, "tts", "sapi" }, | 52 | { RbSettings::Tts, "tts", "sapi" }, |
52 | #elif defined(Q_OS_MACX) | 53 | #elif defined(Q_OS_MACX) |
diff --git a/rbutil/rbutilqt/base/rbsettings.h b/rbutil/rbutilqt/base/rbsettings.h index 7406aab1ad..a25eabbcee 100644 --- a/rbutil/rbutilqt/base/rbsettings.h +++ b/rbutil/rbutilqt/base/rbsettings.h | |||
@@ -46,6 +46,7 @@ class RbSettings : public QObject | |||
46 | InstallFonts, | 46 | InstallFonts, |
47 | InstallThemes, | 47 | InstallThemes, |
48 | InstallGamefiles, | 48 | InstallGamefiles, |
49 | InstallVoice, | ||
49 | Tts, | 50 | Tts, |
50 | UseTtsCorrections, | 51 | UseTtsCorrections, |
51 | TalkFolders, | 52 | TalkFolders, |
diff --git a/rbutil/rbutilqt/base/systeminfo.cpp b/rbutil/rbutilqt/base/systeminfo.cpp index 2aece49110..2ad3c7a7d4 100644 --- a/rbutil/rbutilqt/base/systeminfo.cpp +++ b/rbutil/rbutilqt/base/systeminfo.cpp | |||
@@ -159,7 +159,7 @@ QStringList SystemInfo::platforms(enum SystemInfo::PlatformType type, QString va | |||
159 | return result; | 159 | return result; |
160 | } | 160 | } |
161 | 161 | ||
162 | QMap<QString, QStringList> SystemInfo::languages(void) | 162 | QMap<QString, QStringList> SystemInfo::languages(bool namesOnly) |
163 | { | 163 | { |
164 | ensureSystemInfoExists(); | 164 | ensureSystemInfoExists(); |
165 | 165 | ||
@@ -168,7 +168,11 @@ QMap<QString, QStringList> SystemInfo::languages(void) | |||
168 | QStringList a = systemInfos->childKeys(); | 168 | QStringList a = systemInfos->childKeys(); |
169 | for(int i = 0; i < a.size(); i++) | 169 | for(int i = 0; i < a.size(); i++) |
170 | { | 170 | { |
171 | result.insert(a.at(i), systemInfos->value(a.at(i), "null").toStringList()); | 171 | QStringList data = systemInfos->value(a.at(i), "null").toStringList(); |
172 | if(namesOnly) | ||
173 | result.insert(data.at(0), QStringList(data.at(1))); | ||
174 | else | ||
175 | result.insert(a.at(i), data); | ||
172 | } | 176 | } |
173 | systemInfos->endGroup(); | 177 | systemInfos->endGroup(); |
174 | return result; | 178 | return result; |
diff --git a/rbutil/rbutilqt/base/systeminfo.h b/rbutil/rbutilqt/base/systeminfo.h index 12b9eb4bfb..9bcfe6d253 100644 --- a/rbutil/rbutilqt/base/systeminfo.h +++ b/rbutil/rbutilqt/base/systeminfo.h | |||
@@ -90,8 +90,9 @@ class SystemInfo : public QObject | |||
90 | //! return a list of all platforms (rbutil internal names) | 90 | //! return a list of all platforms (rbutil internal names) |
91 | static QStringList platforms(enum PlatformType type = PlatformAll, | 91 | static QStringList platforms(enum PlatformType type = PlatformAll, |
92 | QString variant=""); | 92 | QString variant=""); |
93 | //! returns a map of all languages | 93 | //! returns a map of all languages. |
94 | static QMap<QString, QStringList> languages(void); | 94 | //! Maps <language code> to (<language name>, <display name>) |
95 | static QMap<QString, QStringList> languages(bool namesOnly = false); | ||
95 | //! returns a map of usb-ids and their targets | 96 | //! returns a map of usb-ids and their targets |
96 | static QMap<int, QStringList> usbIdMap(enum MapType type); | 97 | static QMap<int, QStringList> usbIdMap(enum MapType type); |
97 | //! get a value from system settings | 98 | //! get a value from system settings |
diff --git a/rbutil/rbutilqt/gui/selectiveinstallwidget.cpp b/rbutil/rbutilqt/gui/selectiveinstallwidget.cpp index c916e7a190..8a83c6ebc5 100644 --- a/rbutil/rbutilqt/gui/selectiveinstallwidget.cpp +++ b/rbutil/rbutilqt/gui/selectiveinstallwidget.cpp | |||
@@ -39,6 +39,7 @@ SelectiveInstallWidget::SelectiveInstallWidget(QWidget* parent) : QWidget(parent | |||
39 | ui.fontsCheckbox->setChecked(RbSettings::value(RbSettings::InstallFonts).toBool()); | 39 | ui.fontsCheckbox->setChecked(RbSettings::value(RbSettings::InstallFonts).toBool()); |
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 | 43 | ||
43 | // check if Rockbox is installed by looking after rockbox-info.txt. | 44 | // check if Rockbox is installed by looking after rockbox-info.txt. |
44 | // If installed uncheck bootloader installation. | 45 | // If installed uncheck bootloader installation. |
@@ -62,17 +63,27 @@ SelectiveInstallWidget::SelectiveInstallWidget(QWidget* parent) : QWidget(parent | |||
62 | 63 | ||
63 | void SelectiveInstallWidget::selectedVersionChanged(int index) | 64 | void SelectiveInstallWidget::selectedVersionChanged(int index) |
64 | { | 65 | { |
65 | QString current = ui.selectedVersion->itemData(index).toString(); | 66 | m_buildtype = ui.selectedVersion->itemData(index).toString(); |
66 | if(current == "release") | 67 | bool voice = true; |
68 | if(m_buildtype == "release") { | ||
67 | ui.selectedDescription->setText(tr("This is the latest stable " | 69 | ui.selectedDescription->setText(tr("This is the latest stable " |
68 | "release available.")); | 70 | "release available.")); |
69 | if(current == "development") | 71 | voice = true; |
72 | } | ||
73 | if(m_buildtype == "development") { | ||
70 | ui.selectedDescription->setText(tr("The development version is " | 74 | ui.selectedDescription->setText(tr("The development version is " |
71 | "updated on every code change. Last update was on %1").arg( | 75 | "updated on every code change. Last update was on %1").arg( |
72 | ServerInfo::instance()->platformValue(ServerInfo::BleedingDate).toString())); | 76 | ServerInfo::instance()->platformValue(ServerInfo::BleedingDate).toString())); |
73 | if(current == "rc") | 77 | voice = false; |
78 | } | ||
79 | if(m_buildtype == "rc") { | ||
74 | ui.selectedDescription->setText(tr("This will eventually become the " | 80 | ui.selectedDescription->setText(tr("This will eventually become the " |
75 | "next Rockbox version. Install it to help testing.")); | 81 | "next Rockbox version. Install it to help testing.")); |
82 | voice = false; | ||
83 | } | ||
84 | ui.voiceCheckbox->setEnabled(voice); | ||
85 | ui.voiceCombobox->setEnabled(voice); | ||
86 | ui.voiceLabel->setEnabled(voice); | ||
76 | } | 87 | } |
77 | 88 | ||
78 | 89 | ||
@@ -144,7 +155,27 @@ void SelectiveInstallWidget::updateVersion(void) | |||
144 | RockboxInfo info(m_mountpoint); | 155 | RockboxInfo info(m_mountpoint); |
145 | ui.bootloaderCheckbox->setChecked(!info.success()); | 156 | ui.bootloaderCheckbox->setChecked(!info.success()); |
146 | } | 157 | } |
147 | 158 | // populate languages for voice file. | |
159 | // FIXME: currently only english. Need to get the available languages from | ||
160 | // build-info later. | ||
161 | QVariant current = ui.voiceCombobox->currentData(); | ||
162 | QMap<QString, QStringList> languages = SystemInfo::languages(true); | ||
163 | QStringList voicelangs; | ||
164 | voicelangs << "english"; | ||
165 | ui.voiceCombobox->clear(); | ||
166 | for(int i = 0; i < voicelangs.size(); i++) { | ||
167 | QString key = voicelangs.at(i); | ||
168 | if(!languages.contains(key)) { | ||
169 | LOG_WARNING() << "trying to add unknown language" << key; | ||
170 | continue; | ||
171 | } | ||
172 | ui.voiceCombobox->addItem(languages.value(key).at(0), key); | ||
173 | } | ||
174 | // try to select the previously selected one again (if still present) | ||
175 | // TODO: Fall back to system language if not found, or english. | ||
176 | int sel = ui.voiceCombobox->findData(current); | ||
177 | if(sel >= 0) | ||
178 | ui.voiceCombobox->setCurrentIndex(sel); | ||
148 | 179 | ||
149 | } | 180 | } |
150 | 181 | ||
@@ -157,6 +188,8 @@ void SelectiveInstallWidget::saveSettings(void) | |||
157 | RbSettings::setValue(RbSettings::InstallFonts, ui.fontsCheckbox->isChecked()); | 188 | RbSettings::setValue(RbSettings::InstallFonts, ui.fontsCheckbox->isChecked()); |
158 | RbSettings::setValue(RbSettings::InstallThemes, ui.themesCheckbox->isChecked()); | 189 | RbSettings::setValue(RbSettings::InstallThemes, ui.themesCheckbox->isChecked()); |
159 | RbSettings::setValue(RbSettings::InstallGamefiles, ui.gamefileCheckbox->isChecked()); | 190 | RbSettings::setValue(RbSettings::InstallGamefiles, ui.gamefileCheckbox->isChecked()); |
191 | RbSettings::setValue(RbSettings::InstallVoice, ui.voiceCheckbox->isChecked()); | ||
192 | RbSettings::setValue(RbSettings::VoiceLanguage, ui.voiceCombobox->currentData().toString()); | ||
160 | } | 193 | } |
161 | 194 | ||
162 | 195 | ||
@@ -209,7 +242,8 @@ void SelectiveInstallWidget::continueInstall(bool error) | |||
209 | case 3: installFonts(); break; | 242 | case 3: installFonts(); break; |
210 | case 4: installThemes(); break; | 243 | case 4: installThemes(); break; |
211 | case 5: installGamefiles(); break; | 244 | case 5: installGamefiles(); break; |
212 | case 6: installBootloaderPost(); break; | 245 | case 6: installVoicefile(); break; |
246 | case 7: installBootloaderPost(); break; | ||
213 | default: break; | 247 | default: break; |
214 | } | 248 | } |
215 | 249 | ||
@@ -381,15 +415,14 @@ void SelectiveInstallWidget::installRockbox(void) | |||
381 | LOG_INFO() << "installing Rockbox"; | 415 | LOG_INFO() << "installing Rockbox"; |
382 | QString url; | 416 | QString url; |
383 | 417 | ||
384 | QString selected = ui.selectedVersion->itemData(ui.selectedVersion->currentIndex()).toString(); | 418 | RbSettings::setValue(RbSettings::Build, m_buildtype); |
385 | RbSettings::setValue(RbSettings::Build, selected); | ||
386 | RbSettings::sync(); | 419 | RbSettings::sync(); |
387 | 420 | ||
388 | if(selected == "release") url = ServerInfo::instance()->platformValue( | 421 | if(m_buildtype == "release") url = ServerInfo::instance()->platformValue( |
389 | ServerInfo::CurReleaseUrl, m_target).toString(); | 422 | ServerInfo::CurReleaseUrl, m_target).toString(); |
390 | else if(selected == "development") url = ServerInfo::instance()->platformValue( | 423 | else if(m_buildtype == "development") url = ServerInfo::instance()->platformValue( |
391 | ServerInfo::CurDevelUrl, m_target).toString(); | 424 | ServerInfo::CurDevelUrl, m_target).toString(); |
392 | else if(selected == "rc") url = ServerInfo::instance()->platformValue( | 425 | else if(m_buildtype == "rc") url = ServerInfo::instance()->platformValue( |
393 | ServerInfo::RelCandidateUrl, m_target).toString(); | 426 | ServerInfo::RelCandidateUrl, m_target).toString(); |
394 | 427 | ||
395 | //! install build | 428 | //! install build |
@@ -399,7 +432,7 @@ void SelectiveInstallWidget::installRockbox(void) | |||
399 | m_zipinstaller->setLogSection("Rockbox (Base)"); | 432 | m_zipinstaller->setLogSection("Rockbox (Base)"); |
400 | if(!RbSettings::value(RbSettings::CacheDisabled).toBool()) | 433 | if(!RbSettings::value(RbSettings::CacheDisabled).toBool()) |
401 | m_zipinstaller->setCache(true); | 434 | m_zipinstaller->setCache(true); |
402 | m_zipinstaller->setLogVersion(m_versions[selected]); | 435 | m_zipinstaller->setLogVersion(m_versions[m_buildtype]); |
403 | m_zipinstaller->setMountPoint(m_mountpoint); | 436 | m_zipinstaller->setMountPoint(m_mountpoint); |
404 | 437 | ||
405 | connect(m_zipinstaller, SIGNAL(done(bool)), this, SLOT(continueInstall(bool))); | 438 | connect(m_zipinstaller, SIGNAL(done(bool)), this, SLOT(continueInstall(bool))); |
@@ -422,25 +455,71 @@ void SelectiveInstallWidget::installFonts(void) | |||
422 | if(ui.fontsCheckbox->isChecked()) { | 455 | if(ui.fontsCheckbox->isChecked()) { |
423 | LOG_INFO() << "installing Fonts"; | 456 | LOG_INFO() << "installing Fonts"; |
424 | 457 | ||
458 | RockboxInfo installInfo(m_mountpoint); | ||
459 | QString fontsurl; | ||
460 | QString logversion; | ||
461 | QString relversion = installInfo.release(); | ||
462 | if(relversion.isEmpty()) { | ||
463 | // release is empty for non-release versions (i.e. daily / current) | ||
464 | fontsurl = SystemInfo::value(SystemInfo::FontUrl, SystemInfo::BuildDaily).toString(); | ||
465 | } | ||
466 | else { | ||
467 | fontsurl = SystemInfo::value(SystemInfo::FontUrl, SystemInfo::BuildRelease).toString(); | ||
468 | logversion = installInfo.release(); | ||
469 | } | ||
470 | fontsurl.replace("%RELEASEVER%", relversion); | ||
471 | |||
472 | // create new zip installer | ||
473 | if(m_zipinstaller != nullptr) m_zipinstaller->deleteLater(); | ||
474 | m_zipinstaller = new ZipInstaller(this); | ||
475 | m_zipinstaller->setUrl(fontsurl); | ||
476 | m_zipinstaller->setLogSection("Fonts"); | ||
477 | m_zipinstaller->setLogVersion(logversion); | ||
478 | m_zipinstaller->setMountPoint(m_mountpoint); | ||
479 | if(!RbSettings::value(RbSettings::CacheDisabled).toBool()) | ||
480 | m_zipinstaller->setCache(true); | ||
481 | |||
482 | connect(m_zipinstaller, SIGNAL(done(bool)), this, SLOT(continueInstall(bool))); | ||
483 | connect(m_zipinstaller, SIGNAL(logItem(QString, int)), m_logger, SLOT(addItem(QString, int))); | ||
484 | connect(m_zipinstaller, SIGNAL(logProgress(int, int)), m_logger, SLOT(setProgress(int, int))); | ||
485 | connect(m_logger, SIGNAL(aborted()), m_zipinstaller, SLOT(abort())); | ||
486 | m_zipinstaller->install(); | ||
487 | } | ||
488 | else { | ||
489 | LOG_INFO() << "Fonts install disabled."; | ||
490 | emit installSkipped(false); | ||
491 | } | ||
492 | } | ||
493 | |||
494 | void SelectiveInstallWidget::installVoicefile(void) | ||
495 | { | ||
496 | if(ui.voiceCheckbox->isChecked()) { | ||
497 | LOG_INFO() << "installing Voice file"; | ||
498 | QString lang = ui.voiceCombobox->currentData().toString(); | ||
499 | |||
425 | RockboxInfo installInfo(m_mountpoint); | 500 | RockboxInfo installInfo(m_mountpoint); |
426 | QString fontsurl; | 501 | QString voiceurl; |
427 | QString logversion; | 502 | QString logversion; |
428 | QString relversion = installInfo.release(); | 503 | QString relversion = installInfo.release(); |
429 | if(relversion.isEmpty()) { | 504 | if(m_buildtype == "release") { |
430 | // release is empty for non-release versions (i.e. daily / current) | 505 | // release is empty for non-release versions (i.e. daily / current) |
431 | fontsurl = SystemInfo::value(SystemInfo::FontUrl, SystemInfo::BuildDaily).toString(); | 506 | voiceurl = SystemInfo::value(SystemInfo::VoiceUrl, SystemInfo::BuildRelease).toString(); |
432 | } | 507 | } |
433 | else { | 508 | else { |
434 | fontsurl = SystemInfo::value(SystemInfo::FontUrl, SystemInfo::BuildRelease).toString(); | 509 | voiceurl = SystemInfo::value(SystemInfo::VoiceUrl, SystemInfo::BuildDaily).toString(); |
435 | logversion = installInfo.release(); | 510 | logversion = installInfo.release(); |
436 | } | 511 | } |
437 | fontsurl.replace("%RELEASEVER%", relversion); | 512 | voiceurl.replace("%RELVERSION%", m_versions[m_buildtype]); |
513 | voiceurl.replace("%MODEL%", m_target); | ||
514 | voiceurl.replace("%LANGUAGE%", lang); | ||
515 | |||
516 | LOG_INFO() << "voicurl" << voiceurl; | ||
438 | 517 | ||
439 | // create new zip installer | 518 | // create new zip installer |
440 | if(m_zipinstaller != nullptr) m_zipinstaller->deleteLater(); | 519 | if(m_zipinstaller != nullptr) m_zipinstaller->deleteLater(); |
441 | m_zipinstaller = new ZipInstaller(this); | 520 | m_zipinstaller = new ZipInstaller(this); |
442 | m_zipinstaller->setUrl(fontsurl); | 521 | m_zipinstaller->setUrl(voiceurl); |
443 | m_zipinstaller->setLogSection("Fonts"); | 522 | m_zipinstaller->setLogSection("Voice (" + lang + ")"); |
444 | m_zipinstaller->setLogVersion(logversion); | 523 | m_zipinstaller->setLogVersion(logversion); |
445 | m_zipinstaller->setMountPoint(m_mountpoint); | 524 | m_zipinstaller->setMountPoint(m_mountpoint); |
446 | if(!RbSettings::value(RbSettings::CacheDisabled).toBool()) | 525 | if(!RbSettings::value(RbSettings::CacheDisabled).toBool()) |
@@ -453,7 +532,7 @@ void SelectiveInstallWidget::installFonts(void) | |||
453 | m_zipinstaller->install(); | 532 | m_zipinstaller->install(); |
454 | } | 533 | } |
455 | else { | 534 | else { |
456 | LOG_INFO() << "Fonts install disabled."; | 535 | LOG_INFO() << "Voice install disabled."; |
457 | emit installSkipped(false); | 536 | emit installSkipped(false); |
458 | } | 537 | } |
459 | } | 538 | } |
diff --git a/rbutil/rbutilqt/gui/selectiveinstallwidget.h b/rbutil/rbutilqt/gui/selectiveinstallwidget.h index 799829e066..ac07e24ab8 100644 --- a/rbutil/rbutilqt/gui/selectiveinstallwidget.h +++ b/rbutil/rbutilqt/gui/selectiveinstallwidget.h | |||
@@ -41,6 +41,7 @@ class SelectiveInstallWidget : public QWidget | |||
41 | void installBootloader(void); | 41 | void installBootloader(void); |
42 | void installRockbox(void); | 42 | void installRockbox(void); |
43 | void installFonts(void); | 43 | void installFonts(void); |
44 | void installVoicefile(void); | ||
44 | void installThemes(void); | 45 | void installThemes(void); |
45 | void installGamefiles(void); | 46 | void installGamefiles(void); |
46 | void installBootloaderPost(void); | 47 | void installBootloaderPost(void); |
@@ -62,6 +63,7 @@ class SelectiveInstallWidget : public QWidget | |||
62 | ZipInstaller *m_zipinstaller; | 63 | ZipInstaller *m_zipinstaller; |
63 | QMap<QString, QString> m_versions; | 64 | QMap<QString, QString> m_versions; |
64 | ThemesInstallWindow *m_themesinstaller; | 65 | ThemesInstallWindow *m_themesinstaller; |
66 | QString m_buildtype; | ||
65 | }; | 67 | }; |
66 | 68 | ||
67 | #endif | 69 | #endif |
diff --git a/rbutil/rbutilqt/gui/selectiveinstallwidgetfrm.ui b/rbutil/rbutilqt/gui/selectiveinstallwidgetfrm.ui index 5e7fe54ffe..a5bb023f2e 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>369</height> | 10 | <height>399</height> |
11 | </rect> | 11 | </rect> |
12 | </property> | 12 | </property> |
13 | <property name="sizePolicy"> | 13 | <property name="sizePolicy"> |
@@ -54,22 +54,22 @@ | |||
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"> | 57 | <item row="1" column="0"> |
58 | <widget class="QCheckBox" name="bootloaderCheckbox"> | 58 | <widget class="QCheckBox" name="rockboxCheckbox"> |
59 | <property name="text"> | 59 | <property name="text"> |
60 | <string>&Bootloader</string> | 60 | <string>&Rockbox</string> |
61 | </property> | 61 | </property> |
62 | <property name="icon"> | 62 | <property name="icon"> |
63 | <iconset resource="../rbutilqt.qrc"> | 63 | <iconset resource="../rbutilqt.qrc"> |
64 | <normaloff>:/icons/preferences-system.svg</normaloff>:/icons/preferences-system.svg</iconset> | 64 | <normaloff>:/icons/multimedia-player.svg</normaloff>:/icons/multimedia-player.svg</iconset> |
65 | </property> | 65 | </property> |
66 | <property name="checked"> | 66 | <property name="checked"> |
67 | <bool>true</bool> | 67 | <bool>true</bool> |
68 | </property> | 68 | </property> |
69 | </widget> | 69 | </widget> |
70 | </item> | 70 | </item> |
71 | <item row="1" column="1"> | 71 | <item row="0" column="1"> |
72 | <widget class="QLabel" name="rockboxLabel"> | 72 | <widget class="QLabel" name="bootloaderLabel"> |
73 | <property name="sizePolicy"> | 73 | <property name="sizePolicy"> |
74 | <sizepolicy hsizetype="MinimumExpanding" vsizetype="Preferred"> | 74 | <sizepolicy hsizetype="MinimumExpanding" vsizetype="Preferred"> |
75 | <horstretch>0</horstretch> | 75 | <horstretch>0</horstretch> |
@@ -77,13 +77,51 @@ | |||
77 | </sizepolicy> | 77 | </sizepolicy> |
78 | </property> | 78 | </property> |
79 | <property name="text"> | 79 | <property name="text"> |
80 | <string>The main Rockbox firmware.</string> | 80 | <string>The bootloader is required for starting Rockbox. Only necessary for first time install.</string> |
81 | </property> | 81 | </property> |
82 | <property name="wordWrap"> | 82 | <property name="wordWrap"> |
83 | <bool>true</bool> | 83 | <bool>true</bool> |
84 | </property> | 84 | </property> |
85 | </widget> | 85 | </widget> |
86 | </item> | 86 | </item> |
87 | <item row="3" column="0"> | ||
88 | <widget class="QCheckBox" name="themesCheckbox"> | ||
89 | <property name="text"> | ||
90 | <string>Themes</string> | ||
91 | </property> | ||
92 | <property name="icon"> | ||
93 | <iconset resource="../rbutilqt.qrc"> | ||
94 | <normaloff>:/icons/preferences-desktop-theme.svg</normaloff>:/icons/preferences-desktop-theme.svg</iconset> | ||
95 | </property> | ||
96 | </widget> | ||
97 | </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> | ||
87 | <item row="2" column="0"> | 125 | <item row="2" column="0"> |
88 | <widget class="QCheckBox" name="fontsCheckbox"> | 126 | <widget class="QCheckBox" name="fontsCheckbox"> |
89 | <property name="text"> | 127 | <property name="text"> |
@@ -98,22 +136,19 @@ | |||
98 | </property> | 136 | </property> |
99 | </widget> | 137 | </widget> |
100 | </item> | 138 | </item> |
101 | <item row="1" column="0"> | 139 | <item row="6" column="0"> |
102 | <widget class="QCheckBox" name="rockboxCheckbox"> | 140 | <widget class="QCheckBox" name="gamefileCheckbox"> |
103 | <property name="text"> | 141 | <property name="text"> |
104 | <string>&Rockbox</string> | 142 | <string>Game Files</string> |
105 | </property> | 143 | </property> |
106 | <property name="icon"> | 144 | <property name="icon"> |
107 | <iconset resource="../rbutilqt.qrc"> | 145 | <iconset resource="../rbutilqt.qrc"> |
108 | <normaloff>:/icons/multimedia-player.svg</normaloff>:/icons/multimedia-player.svg</iconset> | 146 | <normaloff>:/icons/input-gaming.svg</normaloff>:/icons/input-gaming.svg</iconset> |
109 | </property> | ||
110 | <property name="checked"> | ||
111 | <bool>true</bool> | ||
112 | </property> | 147 | </property> |
113 | </widget> | 148 | </widget> |
114 | </item> | 149 | </item> |
115 | <item row="6" column="1"> | 150 | <item row="3" column="1"> |
116 | <widget class="QLabel" name="gameLabel"> | 151 | <widget class="QLabel" name="themesLabel"> |
117 | <property name="sizePolicy"> | 152 | <property name="sizePolicy"> |
118 | <sizepolicy hsizetype="MinimumExpanding" vsizetype="Preferred"> | 153 | <sizepolicy hsizetype="MinimumExpanding" vsizetype="Preferred"> |
119 | <horstretch>0</horstretch> | 154 | <horstretch>0</horstretch> |
@@ -121,7 +156,7 @@ | |||
121 | </sizepolicy> | 156 | </sizepolicy> |
122 | </property> | 157 | </property> |
123 | <property name="text"> | 158 | <property name="text"> |
124 | <string>Some game plugins require additional files.</string> | 159 | <string>Themes allow adjusting the user interface of Rockbox. Use "Customize" to select themes.</string> |
125 | </property> | 160 | </property> |
126 | <property name="wordWrap"> | 161 | <property name="wordWrap"> |
127 | <bool>true</bool> | 162 | <bool>true</bool> |
@@ -144,8 +179,8 @@ | |||
144 | </property> | 179 | </property> |
145 | </widget> | 180 | </widget> |
146 | </item> | 181 | </item> |
147 | <item row="0" column="1"> | 182 | <item row="6" column="1"> |
148 | <widget class="QLabel" name="bootloaderLabel"> | 183 | <widget class="QLabel" name="gameLabel"> |
149 | <property name="sizePolicy"> | 184 | <property name="sizePolicy"> |
150 | <sizepolicy hsizetype="MinimumExpanding" vsizetype="Preferred"> | 185 | <sizepolicy hsizetype="MinimumExpanding" vsizetype="Preferred"> |
151 | <horstretch>0</horstretch> | 186 | <horstretch>0</horstretch> |
@@ -153,77 +188,63 @@ | |||
153 | </sizepolicy> | 188 | </sizepolicy> |
154 | </property> | 189 | </property> |
155 | <property name="text"> | 190 | <property name="text"> |
156 | <string>The bootloader is required for starting Rockbox. Only necessary for first time install.</string> | 191 | <string>Some game plugins require additional files.</string> |
157 | </property> | 192 | </property> |
158 | <property name="wordWrap"> | 193 | <property name="wordWrap"> |
159 | <bool>true</bool> | 194 | <bool>true</bool> |
160 | </property> | 195 | </property> |
161 | </widget> | 196 | </widget> |
162 | </item> | 197 | </item> |
163 | <item row="6" column="0"> | 198 | <item row="1" column="1"> |
164 | <widget class="QCheckBox" name="gamefileCheckbox"> | 199 | <widget class="QLabel" name="rockboxLabel"> |
200 | <property name="sizePolicy"> | ||
201 | <sizepolicy hsizetype="MinimumExpanding" vsizetype="Preferred"> | ||
202 | <horstretch>0</horstretch> | ||
203 | <verstretch>0</verstretch> | ||
204 | </sizepolicy> | ||
205 | </property> | ||
165 | <property name="text"> | 206 | <property name="text"> |
166 | <string>Game Files</string> | 207 | <string>The main Rockbox firmware.</string> |
167 | </property> | 208 | </property> |
168 | <property name="icon"> | 209 | <property name="wordWrap"> |
169 | <iconset resource="../rbutilqt.qrc"> | 210 | <bool>true</bool> |
170 | <normaloff>:/icons/input-gaming.svg</normaloff>:/icons/input-gaming.svg</iconset> | ||
171 | </property> | 211 | </property> |
172 | </widget> | 212 | </widget> |
173 | </item> | 213 | </item> |
174 | <item row="3" column="3"> | 214 | <item row="0" column="0"> |
175 | <widget class="QPushButton" name="themesCustomize"> | 215 | <widget class="QCheckBox" name="bootloaderCheckbox"> |
176 | <property name="text"> | 216 | <property name="text"> |
177 | <string>Customize</string> | 217 | <string>&Bootloader</string> |
178 | </property> | 218 | </property> |
179 | <property name="icon"> | 219 | <property name="icon"> |
180 | <iconset resource="../rbutilqt.qrc"> | 220 | <iconset resource="../rbutilqt.qrc"> |
181 | <normaloff>:/icons/preferences-system.svg</normaloff>:/icons/preferences-system.svg</iconset> | 221 | <normaloff>:/icons/preferences-system.svg</normaloff>:/icons/preferences-system.svg</iconset> |
182 | </property> | 222 | </property> |
223 | <property name="checked"> | ||
224 | <bool>true</bool> | ||
225 | </property> | ||
183 | </widget> | 226 | </widget> |
184 | </item> | 227 | </item> |
185 | <item row="3" column="0"> | 228 | <item row="7" column="0"> |
186 | <widget class="QCheckBox" name="themesCheckbox"> | 229 | <widget class="QCheckBox" name="voiceCheckbox"> |
187 | <property name="text"> | 230 | <property name="text"> |
188 | <string>Themes</string> | 231 | <string>&Voice File</string> |
189 | </property> | 232 | </property> |
190 | <property name="icon"> | 233 | <property name="icon"> |
191 | <iconset resource="../rbutilqt.qrc"> | 234 | <iconset resource="../rbutilqt.qrc"> |
192 | <normaloff>:/icons/preferences-desktop-theme.svg</normaloff>:/icons/preferences-desktop-theme.svg</iconset> | 235 | <normaloff>:/icons/audio-volume-high.svg</normaloff>:/icons/audio-volume-high.svg</iconset> |
193 | </property> | 236 | </property> |
194 | </widget> | 237 | </widget> |
195 | </item> | 238 | </item> |
196 | <item row="3" column="1"> | 239 | <item row="7" column="1"> |
197 | <widget class="QLabel" name="themesLabel"> | 240 | <widget class="QLabel" name="voiceLabel"> |
198 | <property name="sizePolicy"> | ||
199 | <sizepolicy hsizetype="MinimumExpanding" vsizetype="Preferred"> | ||
200 | <horstretch>0</horstretch> | ||
201 | <verstretch>0</verstretch> | ||
202 | </sizepolicy> | ||
203 | </property> | ||
204 | <property name="text"> | 241 | <property name="text"> |
205 | <string>Themes allow adjusting the user interface of Rockbox. Use "Customize" to select themes.</string> | 242 | <string>Install prerendered voice file.</string> |
206 | </property> | ||
207 | <property name="wordWrap"> | ||
208 | <bool>true</bool> | ||
209 | </property> | 243 | </property> |
210 | </widget> | 244 | </widget> |
211 | </item> | 245 | </item> |
212 | <item row="1" column="2"> | 246 | <item row="7" column="3"> |
213 | <spacer name="horizontalSpacer"> | 247 | <widget class="QComboBox" name="voiceCombobox"/> |
214 | <property name="orientation"> | ||
215 | <enum>Qt::Horizontal</enum> | ||
216 | </property> | ||
217 | <property name="sizeType"> | ||
218 | <enum>QSizePolicy::Minimum</enum> | ||
219 | </property> | ||
220 | <property name="sizeHint" stdset="0"> | ||
221 | <size> | ||
222 | <width>1</width> | ||
223 | <height>1</height> | ||
224 | </size> | ||
225 | </property> | ||
226 | </spacer> | ||
227 | </item> | 248 | </item> |
228 | </layout> | 249 | </layout> |
229 | </widget> | 250 | </widget> |
diff --git a/rbutil/rbutilqt/rbutil.ini b/rbutil/rbutilqt/rbutil.ini index e0d60e797e..f680a15fe2 100644 --- a/rbutil/rbutilqt/rbutil.ini +++ b/rbutil/rbutilqt/rbutil.ini | |||
@@ -22,7 +22,7 @@ download_url=http://download.rockbox.org/bootloader | |||
22 | 22 | ||
23 | [release] | 23 | [release] |
24 | build_url=https://download.rockbox.org/release/%RELVERSION%/rockbox-%MODEL%-%RELVERSION%.zip | 24 | build_url=https://download.rockbox.org/release/%RELVERSION%/rockbox-%MODEL%-%RELVERSION%.zip |
25 | voice_url=https://download.rockbox.org/release/%RELVERSION%/%MODEL%-%RELVERSION%-english.zip | 25 | voice_url=https://download.rockbox.org/release/%RELVERSION%/%MODEL%-%RELVERSION%-%LANGUAGE%.zip |
26 | font_url=https://download.rockbox.org/release/%RELEASEVER%/rockbox-fonts-%RELEASEVER%.zip | 26 | font_url=https://download.rockbox.org/release/%RELEASEVER%/rockbox-fonts-%RELEASEVER%.zip |
27 | manual_url=https://download.rockbox.org/release/%RELEASEVER%/rockbox-%MODEL%%FORMAT% | 27 | manual_url=https://download.rockbox.org/release/%RELEASEVER%/rockbox-%MODEL%%FORMAT% |
28 | 28 | ||
@@ -34,14 +34,15 @@ manual_url=https://download.rockbox.org/release-candidate/%RELEASEVER%/rockbox-% | |||
34 | 34 | ||
35 | [development] | 35 | [development] |
36 | build_url=http://build.rockbox.org/data/rockbox-%MODEL%.zip | 36 | build_url=http://build.rockbox.org/data/rockbox-%MODEL%.zip |
37 | voice_url=https://download.rockbox.org/release/%RELVERSION%/%MODEL%-%RELVERSION%-english.zip | 37 | ; we don't have voices for dev builds. |
38 | voice_url=https://download.rockbox.org/daily/voices/%MODEL%-%LANGUAGE%.zip | ||
38 | font_url=https://download.rockbox.org/daily/fonts/rockbox-fonts.zip | 39 | font_url=https://download.rockbox.org/daily/fonts/rockbox-fonts.zip |
39 | ; manual is only built daily, use that one instead. | 40 | ; manual is only built daily, use that one instead. |
40 | manual_url=https://download.rockbox.org/daily/manual/rockbox-%MODEL%%FORMAT% | 41 | manual_url=https://download.rockbox.org/daily/manual/rockbox-%MODEL%%FORMAT% |
41 | 42 | ||
42 | [daily] | 43 | [daily] |
43 | build_url=https://download.rockbox.org/daily/%MODEL%/rockbox-%MODEL%.zip | 44 | build_url=https://download.rockbox.org/daily/%MODEL%/rockbox-%MODEL%.zip |
44 | voice_url=https://download.rockbox.org/daily/voices/%MODEL%-%VERSION%-%LANGUAGE%.zip | 45 | voice_url=https://download.rockbox.org/daily/voices/%MODEL%-%LANGUAGE%.zip |
45 | font_url=https://download.rockbox.org/daily/fonts/rockbox-fonts.zip | 46 | font_url=https://download.rockbox.org/daily/fonts/rockbox-fonts.zip |
46 | manual_url=https://download.rockbox.org/daily/manual/rockbox-%MODEL%%FORMAT% | 47 | manual_url=https://download.rockbox.org/daily/manual/rockbox-%MODEL%%FORMAT% |
47 | 48 | ||
diff --git a/rbutil/rbutilqt/rbutilqt.cpp b/rbutil/rbutilqt/rbutilqt.cpp index 597509cc78..d996eddfe1 100644 --- a/rbutil/rbutilqt/rbutilqt.cpp +++ b/rbutil/rbutilqt/rbutilqt.cpp | |||
@@ -496,6 +496,7 @@ void RbUtilQt::installVoice() | |||
496 | // replace placeholder in voice url | 496 | // replace placeholder in voice url |
497 | voiceurl.replace("%MODEL%", model); | 497 | voiceurl.replace("%MODEL%", model); |
498 | voiceurl.replace("%RELVERSION%", relversion); | 498 | voiceurl.replace("%RELVERSION%", relversion); |
499 | voiceurl.replace("%LANGUAGE%", "english"); | ||
499 | 500 | ||
500 | LOG_INFO() << "voicefile URL:" << voiceurl; | 501 | LOG_INFO() << "voicefile URL:" << voiceurl; |
501 | 502 | ||