diff options
Diffstat (limited to 'rbutil/rbutilqt/configure.cpp')
-rw-r--r-- | rbutil/rbutilqt/configure.cpp | 143 |
1 files changed, 34 insertions, 109 deletions
diff --git a/rbutil/rbutilqt/configure.cpp b/rbutil/rbutilqt/configure.cpp index 4e483ed894..337f5bc210 100644 --- a/rbutil/rbutilqt/configure.cpp +++ b/rbutil/rbutilqt/configure.cpp | |||
@@ -24,6 +24,7 @@ | |||
24 | #include "ui_configurefrm.h" | 24 | #include "ui_configurefrm.h" |
25 | #include "browsedirtree.h" | 25 | #include "browsedirtree.h" |
26 | #include "encoders.h" | 26 | #include "encoders.h" |
27 | #include "tts.h" | ||
27 | 28 | ||
28 | #include <stdio.h> | 29 | #include <stdio.h> |
29 | #if defined(Q_OS_WIN32) | 30 | #if defined(Q_OS_WIN32) |
@@ -75,9 +76,9 @@ Config::Config(QWidget *parent,int index) : QDialog(parent) | |||
75 | connect(ui.buttonAutodetect,SIGNAL(clicked()),this,SLOT(autodetect())); | 76 | connect(ui.buttonAutodetect,SIGNAL(clicked()),this,SLOT(autodetect())); |
76 | connect(ui.buttonCacheBrowse, SIGNAL(clicked()), this, SLOT(browseCache())); | 77 | connect(ui.buttonCacheBrowse, SIGNAL(clicked()), this, SLOT(browseCache())); |
77 | connect(ui.buttonCacheClear, SIGNAL(clicked()), this, SLOT(cacheClear())); | 78 | connect(ui.buttonCacheClear, SIGNAL(clicked()), this, SLOT(cacheClear())); |
78 | connect(ui.browseTts, SIGNAL(clicked()), this, SLOT(browseTts())); | 79 | connect(ui.configTts, SIGNAL(clicked()), this, SLOT(configTts())); |
79 | connect(ui.configEncoder, SIGNAL(clicked()), this, SLOT(configEnc())); | 80 | connect(ui.configEncoder, SIGNAL(clicked()), this, SLOT(configEnc())); |
80 | connect(ui.comboTts, SIGNAL(currentIndexChanged(int)), this, SLOT(updateTtsOpts(int))); | 81 | connect(ui.comboTts, SIGNAL(currentIndexChanged(int)), this, SLOT(updateTtsState(int))); |
81 | connect(ui.comboEncoder, SIGNAL(currentIndexChanged(int)), this, SLOT(updateEncState(int))); | 82 | connect(ui.comboEncoder, SIGNAL(currentIndexChanged(int)), this, SLOT(updateEncState(int))); |
82 | 83 | ||
83 | } | 84 | } |
@@ -131,20 +132,7 @@ void Config::accept() | |||
131 | userSettings->setValue("offline", ui.cacheOfflineMode->isChecked()); | 132 | userSettings->setValue("offline", ui.cacheOfflineMode->isChecked()); |
132 | 133 | ||
133 | // tts settings | 134 | // tts settings |
134 | QString preset; | 135 | userSettings->setValue("tts",ui.comboTts->currentText()); |
135 | preset = ui.comboTts->itemData(ui.comboTts->currentIndex(), Qt::UserRole).toString(); | ||
136 | userSettings->setValue("ttspreset", preset); | ||
137 | userSettings->beginGroup(preset); | ||
138 | |||
139 | if(QFileInfo(ui.ttsExecutable->text()).exists()) | ||
140 | userSettings->setValue("binary", ui.ttsExecutable->text()); | ||
141 | userSettings->setValue("options", ui.ttsOptions->text()); | ||
142 | userSettings->setValue("language", ui.ttsLanguage->text()); | ||
143 | devices->beginGroup(preset); | ||
144 | userSettings->setValue("template", devices->value("template").toString()); | ||
145 | userSettings->setValue("type", devices->value("tts").toString()); | ||
146 | devices->endGroup(); | ||
147 | userSettings->endGroup(); | ||
148 | 136 | ||
149 | //encoder settings | 137 | //encoder settings |
150 | userSettings->setValue("encoder",ui.comboEncoder->currentText()); | 138 | userSettings->setValue("encoder",ui.comboEncoder->currentText()); |
@@ -316,86 +304,34 @@ void Config::setDevices(QSettings *dev) | |||
316 | updateEncState(index); | 304 | updateEncState(index); |
317 | 305 | ||
318 | //tts | 306 | //tts |
319 | devices->beginGroup("tts"); | 307 | ui.comboTts->addItems(getTTSList()); |
320 | QStringList keys = devices->allKeys(); | 308 | |
321 | for(int i=0; i < keys.size();i++) | 309 | |
322 | { | 310 | //update index of combobox |
323 | devices->endGroup(); | 311 | index = ui.comboTts->findText(userSettings->value("tts").toString(),Qt::MatchExactly); |
324 | devices->beginGroup(keys.at(i)); | ||
325 | QString os = devices->value("os").toString(); | ||
326 | devices->endGroup(); | ||
327 | devices->beginGroup("tts"); | ||
328 | |||
329 | if(os == "all") | ||
330 | ui.comboTts->addItem(devices->value(keys.at(i), "null").toString(), keys.at(i)); | ||
331 | |||
332 | #if defined(Q_OS_WIN32) | ||
333 | if(os == "win32") | ||
334 | ui.comboTts->addItem(devices->value(keys.at(i), "null").toString(), keys.at(i)); | ||
335 | #endif | ||
336 | } | ||
337 | devices->endGroup(); | ||
338 | |||
339 | |||
340 | index = ui.comboTts->findData(userSettings->value("ttspreset").toString(), | ||
341 | Qt::UserRole, Qt::MatchExactly); | ||
342 | if(index < 0) index = 0; | 312 | if(index < 0) index = 0; |
343 | ui.comboTts->setCurrentIndex(index); | 313 | ui.comboTts->setCurrentIndex(index); |
344 | updateTtsOpts(index); | 314 | updateTtsState(index); |
345 | 315 | ||
346 | |||
347 | } | 316 | } |
348 | 317 | ||
349 | 318 | ||
350 | void Config::updateTtsOpts(int index) | 319 | void Config::updateTtsState(int index) |
351 | { | 320 | { |
352 | bool edit; | 321 | QString ttsName = ui.comboTts->itemText(index); |
353 | QString e; | 322 | TTSBase* tts = getTTS(ttsName); |
354 | bool needsLanguageCfg; | 323 | tts->setUserCfg(userSettings); |
355 | QString c = ui.comboTts->itemData(index, Qt::UserRole).toString(); | ||
356 | devices->beginGroup(c); | ||
357 | edit = devices->value("edit").toBool(); | ||
358 | needsLanguageCfg = devices->value("needslanguagecfg").toBool(); | ||
359 | ui.ttsLanguage->setVisible(needsLanguageCfg); | ||
360 | ui.ttsLanguageLabel->setVisible(needsLanguageCfg); | ||
361 | ui.ttsOptions->setText(devices->value("options").toString()); | ||
362 | ui.ttsOptions->setEnabled(devices->value("edit").toBool()); | ||
363 | e = devices->value("tts").toString(); | ||
364 | devices->endGroup(); | ||
365 | |||
366 | #if defined(Q_OS_LINUX) || defined(Q_OS_MACX) | ||
367 | QStringList path = QString(getenv("PATH")).split(":", QString::SkipEmptyParts); | ||
368 | #elif defined(Q_OS_WIN) | ||
369 | QStringList path = QString(getenv("PATH")).split(";", QString::SkipEmptyParts); | ||
370 | #endif | ||
371 | qDebug() << path; | ||
372 | ui.ttsExecutable->setEnabled(true); | ||
373 | for(int i = 0; i < path.size(); i++) { | ||
374 | QString executable = QDir::fromNativeSeparators(path.at(i)) + "/" + e; | ||
375 | #if defined(Q_OS_WIN) | ||
376 | executable += ".exe"; | ||
377 | QStringList ex = executable.split("\"", QString::SkipEmptyParts); | ||
378 | executable = ex.join(""); | ||
379 | #endif | ||
380 | qDebug() << executable; | ||
381 | if(QFileInfo(executable).isExecutable()) { | ||
382 | ui.ttsExecutable->setText(QDir::toNativeSeparators(executable)); | ||
383 | // disallow changing the detected path if non-customizable profile | ||
384 | if(!edit) | ||
385 | ui.ttsExecutable->setEnabled(false); | ||
386 | break; | ||
387 | } | ||
388 | } | ||
389 | 324 | ||
390 | //user settings | 325 | if(tts->configOk()) |
391 | userSettings->beginGroup(c); | 326 | { |
392 | QString temp = userSettings->value("binary","null").toString(); | 327 | ui.configTTSstatus->setText("Configuration OK"); |
393 | if(temp != "null") ui.ttsExecutable->setText(temp); | 328 | ui.configTTSstatusimg->setPixmap(QPixmap(QString::fromUtf8(":/icons/icons/go-next.png"))); |
394 | temp = userSettings->value("options","null").toString(); | 329 | } |
395 | if(temp != "null") ui.ttsOptions->setText(temp); | 330 | else |
396 | temp = userSettings->value("language","null").toString(); | 331 | { |
397 | if(temp != "null") ui.ttsLanguage->setText(temp); | 332 | ui.configTTSstatus->setText("Configuration INVALID"); |
398 | userSettings->endGroup(); | 333 | ui.configTTSstatusimg->setPixmap(QPixmap(QString::fromUtf8(":/icons/icons/dialog-error.png"))); |
334 | } | ||
399 | } | 335 | } |
400 | 336 | ||
401 | void Config::updateEncState(int index) | 337 | void Config::updateEncState(int index) |
@@ -406,13 +342,13 @@ void Config::updateEncState(int index) | |||
406 | 342 | ||
407 | if(enc->configOk()) | 343 | if(enc->configOk()) |
408 | { | 344 | { |
409 | ui.configstatus->setText("Configuration OK"); | 345 | ui.configEncstatus->setText("Configuration OK"); |
410 | ui.configstatusimg->setPixmap(QPixmap(QString::fromUtf8(":/icons/icons/go-next.png"))); | 346 | ui.configEncstatusimg->setPixmap(QPixmap(QString::fromUtf8(":/icons/icons/go-next.png"))); |
411 | } | 347 | } |
412 | else | 348 | else |
413 | { | 349 | { |
414 | ui.configstatus->setText("Configuration INVALID"); | 350 | ui.configEncstatus->setText("Configuration INVALID"); |
415 | ui.configstatusimg->setPixmap(QPixmap(QString::fromUtf8(":/icons/icons/dialog-error.png"))); | 351 | ui.configEncstatusimg->setPixmap(QPixmap(QString::fromUtf8(":/icons/icons/dialog-error.png"))); |
416 | } | 352 | } |
417 | } | 353 | } |
418 | 354 | ||
@@ -676,24 +612,13 @@ void Config::cacheClear() | |||
676 | } | 612 | } |
677 | 613 | ||
678 | 614 | ||
679 | void Config::browseTts() | 615 | void Config::configTts() |
680 | { | 616 | { |
681 | BrowseDirtree browser(this); | 617 | TTSBase* tts =getTTS(ui.comboTts->currentText()); |
682 | browser.setFilter(QDir::Dirs | QDir::Files | QDir::NoDotAndDotDot); | 618 | |
683 | 619 | tts->setUserCfg(userSettings); | |
684 | if(QFileInfo(ui.ttsExecutable->text()).isDir()) | 620 | tts->showCfg(); |
685 | { | 621 | updateTtsState(ui.comboTts->currentIndex()); |
686 | browser.setDir(ui.ttsExecutable->text()); | ||
687 | } | ||
688 | if(browser.exec() == QDialog::Accepted) | ||
689 | { | ||
690 | qDebug() << browser.getSelected(); | ||
691 | QString exe = browser.getSelected(); | ||
692 | if(!QFileInfo(exe).exists()) | ||
693 | return; | ||
694 | ui.ttsExecutable->setText(exe); | ||
695 | } | ||
696 | |||
697 | } | 622 | } |
698 | 623 | ||
699 | 624 | ||