summaryrefslogtreecommitdiff
path: root/rbutil/rbutilqt/configure.cpp
diff options
context:
space:
mode:
authorDominik Wenger <domonoky@googlemail.com>2007-12-14 19:26:54 +0000
committerDominik Wenger <domonoky@googlemail.com>2007-12-14 19:26:54 +0000
commit815504b44919ac73923359e12aa29fb409cefda2 (patch)
tree1247110323388df365c80da86063d75b5a438eb3 /rbutil/rbutilqt/configure.cpp
parented047d9db1dcee92afb8fe6bacb5d90ccb39481e (diff)
downloadrockbox-815504b44919ac73923359e12aa29fb409cefda2.tar.gz
rockbox-815504b44919ac73923359e12aa29fb409cefda2.zip
rbutil: added builtin rbspeex encoder. Reworked encoder configuration.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15925 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'rbutil/rbutilqt/configure.cpp')
-rw-r--r--rbutil/rbutilqt/configure.cpp141
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
362void 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
401void 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
463void Config::setNoProxy(bool checked) 419void Config::setNoProxy(bool checked)
464{ 420{
@@ -741,22 +697,11 @@ void Config::browseTts()
741} 697}
742 698
743 699
744void Config::browseEnc() 700void 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}