From 85eb99211ad1c9a71364a5de17eafc0644a03c67 Mon Sep 17 00:00:00 2001 From: Dominik Wenger Date: Sat, 2 Aug 2008 16:40:16 +0000 Subject: rbutil: try to detect position of tts executeables without opening the config window. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@18183 a1c6a512-1295-4272-9138-f99709370657 --- rbutil/rbutilqt/tts.cpp | 37 +++++++++++++++++++++++++++++++++++++ rbutil/rbutilqt/tts.h | 4 +++- rbutil/rbutilqt/ttsgui.cpp | 31 +------------------------------ 3 files changed, 41 insertions(+), 31 deletions(-) diff --git a/rbutil/rbutilqt/tts.cpp b/rbutil/rbutilqt/tts.cpp index d6049f8aec..fd0097c617 100644 --- a/rbutil/rbutilqt/tts.cpp +++ b/rbutil/rbutilqt/tts.cpp @@ -97,6 +97,43 @@ TTSExes::TTSExes(QString name) : TTSBase() } +void TTSExes::setCfg(RbSettings* sett) +{ + // call function of base class + TTSBase::setCfg(sett); + + // if the config isnt OK, try to autodetect + if(!configOk()) + { + QString exepath; + //try autodetect tts +#if defined(Q_OS_LINUX) || defined(Q_OS_MACX) + QStringList path = QString(getenv("PATH")).split(":", QString::SkipEmptyParts); +#elif defined(Q_OS_WIN) + QStringList path = QString(getenv("PATH")).split(";", QString::SkipEmptyParts); +#endif + qDebug() << path; + for(int i = 0; i < path.size(); i++) + { + QString executable = QDir::fromNativeSeparators(path.at(i)) + "/" + m_name; +#if defined(Q_OS_WIN) + executable += ".exe"; + QStringList ex = executable.split("\"", QString::SkipEmptyParts); + executable = ex.join(""); +#endif + qDebug() << executable; + if(QFileInfo(executable).isExecutable()) + { + exepath= QDir::toNativeSeparators(executable); + break; + } + } + settings->setTTSPath(m_name,exepath); + settings->sync(); + } + +} + bool TTSExes::start(QString *errStr) { m_TTSexec = settings->ttsPath(m_name); diff --git a/rbutil/rbutilqt/tts.h b/rbutil/rbutilqt/tts.h index e25949de55..f73114b8c1 100644 --- a/rbutil/rbutilqt/tts.h +++ b/rbutil/rbutilqt/tts.h @@ -46,7 +46,7 @@ class TTSBase : public QObject virtual void showCfg(){} virtual bool configOk() { return false; } - void setCfg(RbSettings* sett) { settings = sett; } + virtual void setCfg(RbSettings* sett) { settings = sett; } static TTSBase* getTTS(QString ttsname); static QStringList getTTSList(); @@ -105,6 +105,8 @@ class TTSExes : public TTSBase virtual void showCfg(); virtual bool configOk(); + virtual void setCfg(RbSettings* sett); + private: QString m_name; QString m_TTSexec; diff --git a/rbutil/rbutilqt/ttsgui.cpp b/rbutil/rbutilqt/ttsgui.cpp index 385dfa12e7..0a59b25d86 100644 --- a/rbutil/rbutilqt/ttsgui.cpp +++ b/rbutil/rbutilqt/ttsgui.cpp @@ -137,36 +137,7 @@ void TTSExesGui::showCfg(QString name) m_name = name; // try to get config from settings QString exepath =settings->ttsPath(m_name); - ui.ttsoptions->setText(settings->ttsOptions(m_name)); - - if(exepath == "") - { - - //try autodetect tts -#if defined(Q_OS_LINUX) || defined(Q_OS_MACX) - QStringList path = QString(getenv("PATH")).split(":", QString::SkipEmptyParts); -#elif defined(Q_OS_WIN) - QStringList path = QString(getenv("PATH")).split(";", QString::SkipEmptyParts); -#endif - qDebug() << path; - for(int i = 0; i < path.size(); i++) - { - QString executable = QDir::fromNativeSeparators(path.at(i)) + "/" + m_name; -#if defined(Q_OS_WIN) - executable += ".exe"; - QStringList ex = executable.split("\"", QString::SkipEmptyParts); - executable = ex.join(""); -#endif - qDebug() << executable; - if(QFileInfo(executable).isExecutable()) - { - exepath= QDir::toNativeSeparators(executable); - break; - } - } - - } - + ui.ttsoptions->setText(settings->ttsOptions(m_name)); ui.ttspath->setText(exepath); //show dialog -- cgit v1.2.3