diff options
Diffstat (limited to 'utils/rbutilqt/createvoicewindow.cpp')
-rw-r--r-- | utils/rbutilqt/createvoicewindow.cpp | 144 |
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 | |||
28 | CreateVoiceWindow::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 | |||
36 | void 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 | |||
47 | void 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 | */ | ||
71 | void 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 | */ | ||
124 | void 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 | |||
135 | void 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 | |||