diff options
Diffstat (limited to 'rbutil/rbutilqt/configure.cpp')
-rw-r--r-- | rbutil/rbutilqt/configure.cpp | 141 |
1 files changed, 43 insertions, 98 deletions
diff --git a/rbutil/rbutilqt/configure.cpp b/rbutil/rbutilqt/configure.cpp index d2ce59eff8..810435ab68 100644 --- a/rbutil/rbutilqt/configure.cpp +++ b/rbutil/rbutilqt/configure.cpp | |||
@@ -23,6 +23,7 @@ | |||
23 | #include "autodetection.h" | 23 | #include "autodetection.h" |
24 | #include "ui_configurefrm.h" | 24 | #include "ui_configurefrm.h" |
25 | #include "browsedirtree.h" | 25 | #include "browsedirtree.h" |
26 | #include "encoders.h" | ||
26 | 27 | ||
27 | #include <stdio.h> | 28 | #include <stdio.h> |
28 | #if defined(Q_OS_WIN32) | 29 | #if defined(Q_OS_WIN32) |
@@ -75,9 +76,10 @@ Config::Config(QWidget *parent) : QDialog(parent) | |||
75 | connect(ui.buttonCacheBrowse, SIGNAL(clicked()), this, SLOT(browseCache())); | 76 | connect(ui.buttonCacheBrowse, SIGNAL(clicked()), this, SLOT(browseCache())); |
76 | connect(ui.buttonCacheClear, SIGNAL(clicked()), this, SLOT(cacheClear())); | 77 | connect(ui.buttonCacheClear, SIGNAL(clicked()), this, SLOT(cacheClear())); |
77 | connect(ui.browseTts, SIGNAL(clicked()), this, SLOT(browseTts())); | 78 | connect(ui.browseTts, SIGNAL(clicked()), this, SLOT(browseTts())); |
78 | connect(ui.browseEncoder, SIGNAL(clicked()), this, SLOT(browseEnc())); | 79 | connect(ui.configEncoder, SIGNAL(clicked()), this, SLOT(configEnc())); |
79 | connect(ui.comboEncoder, SIGNAL(currentIndexChanged(int)), this, SLOT(updateEncOpts(int))); | ||
80 | connect(ui.comboTts, SIGNAL(currentIndexChanged(int)), this, SLOT(updateTtsOpts(int))); | 80 | connect(ui.comboTts, SIGNAL(currentIndexChanged(int)), this, SLOT(updateTtsOpts(int))); |
81 | connect(ui.comboEncoder, SIGNAL(currentIndexChanged(int)), this, SLOT(updateEncState(int))); | ||
82 | |||
81 | } | 83 | } |
82 | 84 | ||
83 | 85 | ||
@@ -144,20 +146,9 @@ void Config::accept() | |||
144 | devices->endGroup(); | 146 | devices->endGroup(); |
145 | userSettings->endGroup(); | 147 | userSettings->endGroup(); |
146 | 148 | ||
147 | //encoder settings | 149 | //encoder settings |
148 | preset = ui.comboEncoder->itemData(ui.comboEncoder->currentIndex(), Qt::UserRole).toString(); | 150 | userSettings->setValue("encoder",ui.comboEncoder->currentText()); |
149 | userSettings->setValue("encpreset", preset); | 151 | |
150 | userSettings->beginGroup(preset); | ||
151 | |||
152 | if(QFileInfo(ui.encoderExecutable->text()).isExecutable()) | ||
153 | userSettings->setValue("binary", ui.encoderExecutable->text()); | ||
154 | userSettings->setValue("options", ui.encoderOptions->text()); | ||
155 | devices->beginGroup(preset); | ||
156 | userSettings->setValue("template", devices->value("template").toString()); | ||
157 | userSettings->setValue("type", devices->value("tts").toString()); | ||
158 | devices->endGroup(); | ||
159 | userSettings->endGroup(); | ||
160 | |||
161 | // sync settings | 152 | // sync settings |
162 | userSettings->sync(); | 153 | userSettings->sync(); |
163 | this->close(); | 154 | this->close(); |
@@ -314,17 +305,19 @@ void Config::setDevices(QSettings *dev) | |||
314 | ui.treeDevices->setCurrentItem(w3); // hilight old selection | 305 | ui.treeDevices->setCurrentItem(w3); // hilight old selection |
315 | 306 | ||
316 | // tts / encoder tab | 307 | // tts / encoder tab |
317 | QStringList keys; | 308 | |
318 | 309 | //encoders | |
319 | devices->beginGroup("encoders"); | 310 | ui.comboEncoder->addItems(getEncoderList()); |
320 | keys = devices->allKeys(); | 311 | |
321 | for(int i=0; i < keys.size();i++) | 312 | //update index of combobox |
322 | ui.comboEncoder->addItem(devices->value(keys.at(i), "null").toString(), | 313 | int index = ui.comboEncoder->findText(userSettings->value("encoder").toString(),Qt::MatchExactly); |
323 | keys.at(i)); | 314 | if(index < 0) index = 0; |
324 | devices->endGroup(); | 315 | ui.comboEncoder->setCurrentIndex(index); |
325 | 316 | updateEncState(index); | |
317 | |||
318 | //tts | ||
326 | devices->beginGroup("tts"); | 319 | devices->beginGroup("tts"); |
327 | keys = devices->allKeys(); | 320 | QStringList keys = devices->allKeys(); |
328 | for(int i=0; i < keys.size();i++) | 321 | for(int i=0; i < keys.size();i++) |
329 | { | 322 | { |
330 | devices->endGroup(); | 323 | devices->endGroup(); |
@@ -343,67 +336,13 @@ void Config::setDevices(QSettings *dev) | |||
343 | } | 336 | } |
344 | devices->endGroup(); | 337 | devices->endGroup(); |
345 | 338 | ||
346 | int index; | 339 | |
347 | index = ui.comboTts->findData(userSettings->value("ttspreset").toString(), | 340 | index = ui.comboTts->findData(userSettings->value("ttspreset").toString(), |
348 | Qt::UserRole, Qt::MatchExactly); | 341 | Qt::UserRole, Qt::MatchExactly); |
349 | if(index < 0) index = 0; | 342 | if(index < 0) index = 0; |
350 | ui.comboTts->setCurrentIndex(index); | 343 | ui.comboTts->setCurrentIndex(index); |
351 | updateTtsOpts(index); | 344 | updateTtsOpts(index); |
352 | 345 | ||
353 | index = ui.comboEncoder->findData(userSettings->value("encpreset").toString(), | ||
354 | Qt::UserRole, Qt::MatchExactly); | ||
355 | if(index < 0) index = 0; | ||
356 | ui.comboEncoder->setCurrentIndex(index); | ||
357 | updateEncOpts(index); | ||
358 | |||
359 | } | ||
360 | |||
361 | |||
362 | void Config::updateEncOpts(int index) | ||
363 | { | ||
364 | qDebug() << "updateEncOpts()"; | ||
365 | QString e; | ||
366 | bool edit; | ||
367 | QString c = ui.comboEncoder->itemData(index, Qt::UserRole).toString(); | ||
368 | devices->beginGroup(c); | ||
369 | ui.encoderOptions->setText(devices->value("options").toString()); | ||
370 | edit = devices->value("edit").toBool(); | ||
371 | ui.encoderOptions->setEnabled(edit); | ||
372 | e = devices->value("encoder").toString(); | ||
373 | devices->endGroup(); | ||
374 | |||
375 | // try to autodetect encoder | ||
376 | #if defined(Q_OS_LINUX) || defined(Q_OS_MACX) | ||
377 | QStringList path = QString(getenv("PATH")).split(":", QString::SkipEmptyParts); | ||
378 | #elif defined(Q_OS_WIN) | ||
379 | QStringList path = QString(getenv("PATH")).split(";", QString::SkipEmptyParts); | ||
380 | #endif | ||
381 | qDebug() << path; | ||
382 | ui.encoderExecutable->setEnabled(true); | ||
383 | for(int i = 0; i < path.size(); i++) { | ||
384 | QString executable = QDir::fromNativeSeparators(path.at(i)) + "/" + e; | ||
385 | #if defined(Q_OS_WIN) | ||
386 | executable += ".exe"; | ||
387 | QStringList ex = executable.split("\"", QString::SkipEmptyParts); | ||
388 | executable = ex.join(""); | ||
389 | #endif | ||
390 | if(QFileInfo(executable).isExecutable()) { | ||
391 | qDebug() << "found:" << executable; | ||
392 | ui.encoderExecutable->setText(QDir::toNativeSeparators(executable)); | ||
393 | // disallow changing the detected path if non-customizable profile | ||
394 | if(!edit) | ||
395 | ui.encoderExecutable->setEnabled(false); | ||
396 | break; | ||
397 | } | ||
398 | } | ||
399 | |||
400 | //user settings | ||
401 | userSettings->beginGroup(c); | ||
402 | QString temp = userSettings->value("binary","null").toString(); | ||
403 | if(temp != "null") ui.encoderExecutable->setText(temp); | ||
404 | temp = userSettings->value("options","null").toString(); | ||
405 | if(temp != "null") ui.encoderOptions->setText(temp); | ||
406 | userSettings->endGroup(); | ||
407 | 346 | ||
408 | } | 347 | } |
409 | 348 | ||
@@ -459,6 +398,23 @@ void Config::updateTtsOpts(int index) | |||
459 | userSettings->endGroup(); | 398 | userSettings->endGroup(); |
460 | } | 399 | } |
461 | 400 | ||
401 | void Config::updateEncState(int index) | ||
402 | { | ||
403 | QString encoder = ui.comboEncoder->itemText(index); | ||
404 | EncBase* enc = getEncoder(encoder); | ||
405 | enc->setUserCfg(userSettings); | ||
406 | |||
407 | if(enc->configOk()) | ||
408 | { | ||
409 | ui.configstatus->setText("Configuration OK"); | ||
410 | ui.configstatusimg->setPixmap(QPixmap(QString::fromUtf8(":/icons/icons/go-next.png"))); | ||
411 | } | ||
412 | else | ||
413 | { | ||
414 | ui.configstatus->setText("Configuration INVALID"); | ||
415 | ui.configstatusimg->setPixmap(QPixmap(QString::fromUtf8(":/icons/icons/dialog-error.png"))); | ||
416 | } | ||
417 | } | ||
462 | 418 | ||
463 | void Config::setNoProxy(bool checked) | 419 | void Config::setNoProxy(bool checked) |
464 | { | 420 | { |
@@ -741,22 +697,11 @@ void Config::browseTts() | |||
741 | } | 697 | } |
742 | 698 | ||
743 | 699 | ||
744 | void Config::browseEnc() | 700 | void Config::configEnc() |
745 | { | 701 | { |
746 | BrowseDirtree browser(this); | 702 | EncBase* enc =getEncoder(ui.comboEncoder->currentText()); |
747 | browser.setFilter(QDir::Dirs | QDir::Files | QDir::NoDotAndDotDot); | 703 | |
748 | 704 | enc->setUserCfg(userSettings); | |
749 | if(QFileInfo(ui.encoderExecutable->text()).isDir()) | 705 | enc->showCfg(); |
750 | { | 706 | updateEncState(ui.comboEncoder->currentIndex()); |
751 | browser.setDir(ui.encoderExecutable->text()); | ||
752 | } | ||
753 | if(browser.exec() == QDialog::Accepted) | ||
754 | { | ||
755 | qDebug() << browser.getSelected(); | ||
756 | QString exe = browser.getSelected(); | ||
757 | if(!QFileInfo(exe).isExecutable()) | ||
758 | return; | ||
759 | ui.encoderExecutable->setText(exe); | ||
760 | } | ||
761 | |||
762 | } | 707 | } |