summaryrefslogtreecommitdiff
path: root/utils/rbutilqt/createvoicewindow.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'utils/rbutilqt/createvoicewindow.cpp')
-rw-r--r--utils/rbutilqt/createvoicewindow.cpp144
1 files changed, 144 insertions, 0 deletions
diff --git a/utils/rbutilqt/createvoicewindow.cpp b/utils/rbutilqt/createvoicewindow.cpp
new file mode 100644
index 0000000000..158c1201ce
--- /dev/null
+++ b/utils/rbutilqt/createvoicewindow.cpp
@@ -0,0 +1,144 @@
1/***************************************************************************
2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/
8 *
9 * Copyright (C) 2007 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 <QMessageBox>
20#include "createvoicewindow.h"
21#include "ui_createvoicefrm.h"
22
23#include "configure.h"
24#include "rbsettings.h"
25#include "playerbuildinfo.h"
26#include "Logger.h"
27
28CreateVoiceWindow::CreateVoiceWindow(QWidget *parent) : QDialog(parent)
29{
30 ui.setupUi(this);
31 voicecreator = new VoiceFileCreator(this);
32 updateSettings();
33 connect(ui.change,SIGNAL(clicked()),this,SLOT(change()));
34}
35
36void CreateVoiceWindow::change()
37{
38 // save window settings
39 saveSettings();
40
41 // call configuration dialog
42 Config *cw = new Config(this,4);
43 connect(cw, SIGNAL(settingsUpdated()), this, SLOT(updateSettings()));
44 cw->show();
45}
46
47void CreateVoiceWindow::accept()
48{
49 logger = new ProgressLoggerGui(this);
50 connect(logger,SIGNAL(closed()),this,SLOT(close()));
51 logger->show();
52
53 saveSettings();
54
55 //configure voicecreator
56 voicecreator->setMountPoint(RbSettings::value(RbSettings::Mountpoint).toString());
57 voicecreator->setLang(ui.comboLanguage->itemData(ui.comboLanguage->currentIndex()).toString());
58 voicecreator->setWavtrimThreshold(ui.wavtrimthreshold->value());
59
60 //start creating
61 connect(voicecreator, SIGNAL(done(bool)), logger, SLOT(setFinished()));
62 connect(voicecreator, SIGNAL(logItem(QString, int)), logger, SLOT(addItem(QString, int)));
63 connect(voicecreator, SIGNAL(logProgress(int, int)), logger, SLOT(setProgress(int, int)));
64 connect(logger,SIGNAL(aborted()),voicecreator,SLOT(abort()));
65 voicecreator->createVoiceFile();
66}
67
68
69/** @brief update displayed settings
70 */
71void CreateVoiceWindow::updateSettings(void)
72{
73 // fill in language combobox. Map has QString as value, but is stored as QVariant.
74 QMap<QString, QVariant> langs
75 = PlayerBuildInfo::instance()->value(PlayerBuildInfo::LanguageList).toMap();
76 for(auto it = langs.begin(); it != langs.end(); it++) {
77 ui.comboLanguage->addItem(it.value().toString(), it.key());
78 }
79 // set saved lang
80 int sel = ui.comboLanguage->findData(
81 RbSettings::value(RbSettings::VoiceLanguage).toString());
82 // if no saved language is found try to figure the language from the UI lang
83 if(sel == -1) {
84 // the UI language is stored as ISO 631-1 code. Try to resolve it to the
85 // Rockbox language string.
86 QString uilang = RbSettings::value(RbSettings::Language).toString();
87 // default to english if no language is set.
88 if(uilang.isEmpty()) {
89 // FIXME: we try to set the UI language from the environment, but
90 // don't store it unless changed. Falling back to en is only valid
91 // if the system is actually english.
92 uilang = "en";
93 }
94 QString l = PlayerBuildInfo::instance()->value(
95 PlayerBuildInfo::LanguageInfo, uilang).toStringList().at(0);
96 if(!l.isEmpty()) {
97 sel = ui.comboLanguage->findData(l);
98 }
99 }
100 ui.comboLanguage->setCurrentIndex(sel);
101
102 QString ttsName = RbSettings::value(RbSettings::Tts).toString();
103 TTSBase* tts = TTSBase::getTTS(this,ttsName);
104 if(!tts)
105 {
106 QMessageBox::critical(this, tr("TTS error"),
107 tr("The selected TTS failed to initialize. You can't use this TTS."));
108 return;
109 }
110 if(tts->configOk())
111 ui.labelTtsProfile->setText(tr("Engine: <b>%1</b>")
112 .arg(TTSBase::getTTSName(ttsName)));
113 else
114 ui.labelTtsProfile->setText(tr("Engine: <b>%1</b>")
115 .arg("Invalid TTS configuration!"));
116
117 ui.wavtrimthreshold->setValue(RbSettings::value(RbSettings::WavtrimThreshold).toInt());
118 emit settingsUpdated();
119}
120
121
122/** @brief save options
123 */
124void CreateVoiceWindow::saveSettings(void)
125{
126 // save selected language
127 RbSettings::setValue(RbSettings::VoiceLanguage,
128 ui.comboLanguage->itemData(ui.comboLanguage->currentIndex()).toString());
129 // save wavtrim threshold value
130 RbSettings::setValue(RbSettings::WavtrimThreshold,
131 ui.wavtrimthreshold->value());
132 RbSettings::sync();
133}
134
135void CreateVoiceWindow::changeEvent(QEvent *e)
136{
137 if(e->type() == QEvent::LanguageChange) {
138 ui.retranslateUi(this);
139 updateSettings();
140 } else {
141 QWidget::changeEvent(e);
142 }
143}
144