diff --git a/rbutil/rbutilqt/installbl.cpp b/rbutil/rbutilqt/installbl.cpp
index 627fa961b6..9d9dba4760 100644
--- a/rbutil/rbutilqt/installbl.cpp
+++ b/rbutil/rbutilqt/installbl.cpp
@@ -152,27 +152,26 @@ void InstallBl::done(bool error)
void InstallBl::setDeviceSettings(QSettings *dev)
{
devices = dev;
-
- if(userSettings->value("defaults/platform").toString() == "h100" ||
- userSettings->value("defaults/platform").toString() == "h120" ||
- userSettings->value("defaults/platform").toString() == "h300")
- {
- ui.buttonBrowseOF->show();
- ui.lineOriginalFirmware->show();
- ui.label_3->show();
- needextrafile = true;
- }
- else
- {
- ui.buttonBrowseOF->hide();
- ui.lineOriginalFirmware->hide();
- ui.label_3->hide();
- needextrafile = false;
- }
qDebug() << "Install::setDeviceSettings:" << devices;
}
void InstallBl::setUserSettings(QSettings *user)
{
userSettings = user;
+ if(userSettings->value("defaults/platform").toString() == "h100" ||
+ userSettings->value("defaults/platform").toString() == "h120" ||
+ userSettings->value("defaults/platform").toString() == "h300")
+ {
+ ui.buttonBrowseOF->show();
+ ui.lineOriginalFirmware->show();
+ ui.label_3->show();
+ needextrafile = true;
+ }
+ else
+ {
+ ui.buttonBrowseOF->hide();
+ ui.lineOriginalFirmware->hide();
+ ui.label_3->hide();
+ needextrafile = false;
+ }
}
diff --git a/rbutil/rbutilqt/installtalkfrm.ui b/rbutil/rbutilqt/installtalkfrm.ui
new file mode 100644
index 0000000000..d43326dd6e
--- /dev/null
+++ b/rbutil/rbutilqt/installtalkfrm.ui
@@ -0,0 +1,268 @@
+
+ InstallTalkFrm
+
+
+ Qt::WindowModal
+
+
+
+ 0
+ 0
+ 681
+ 516
+
+
+
+ Install Talk Files
+
+
+ -
+
+
+
+
+
+ :/icons/icons/wizard.xpm
+
+
+ Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop
+
+
+
+ -
+
+
+ Select the Folder to generate Talkfiles for.
+
+
+
+ -
+
+
+ -
+
+
+ &Browse
+
+
+ :/icons/icons/system-search.png
+
+
+
+ -
+
+
+ TTS Engine
+
+
+
-
+
+
+ Select a TTS Engine
+
+
+
+ -
+
+
+ -
+
+
+ Select the TTS executable in your Filesystem
+
+
+
+ -
+
+
+ -
+
+
+ Browse
+
+
+
+ -
+
+
+ TTS Options
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+ Encoder Engine
+
+
+
-
+
+
+ Select an Encoder
+
+
+
+ -
+
+
+ -
+
+
+ Select the Encoder executable in your Filesystem
+
+
+
+ -
+
+
+ -
+
+
+ Browse
+
+
+
+ -
+
+
+ Encoder Options
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+ Overwrite Wavefiles
+
+
+
+ -
+
+
+ Remove Wavefiles
+
+
+
+ -
+
+
+ Run recursive
+
+
+
+ -
+
+
+ Overwrite Talkfiles
+
+
+
+ -
+
+
+ Strip Extensions
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+
+ 20
+ 111
+
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+
+ 40
+ 20
+
+
+
+
+ -
+
+
-
+
+
+ &Ok
+
+
+ :/icons/icons/go-next.png
+
+
+
+ -
+
+
+ &Cancel
+
+
+ :/icons/icons/process-stop.png
+
+
+
+
+
+
+
+
+
+
+
+
+ buttonOk
+ clicked()
+ InstallTalkFrm
+ accept()
+
+
+ 472
+ 418
+
+
+ 382
+ 328
+
+
+
+
+ buttonCancel
+ clicked()
+ InstallTalkFrm
+ reject()
+
+
+ 561
+ 428
+
+
+ 522
+ 332
+
+
+
+
+
diff --git a/rbutil/rbutilqt/installtalkwindow.cpp b/rbutil/rbutilqt/installtalkwindow.cpp
new file mode 100644
index 0000000000..4d1cdb1491
--- /dev/null
+++ b/rbutil/rbutilqt/installtalkwindow.cpp
@@ -0,0 +1,264 @@
+/***************************************************************************
+ * __________ __ ___.
+ * Open \______ \ ____ ____ | | _\_ |__ _______ ___
+ * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
+ * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
+ * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
+ * \/ \/ \/ \/ \/
+ *
+ * Copyright (C) 2007 by Dominik Riebeling
+ * $Id: installtalkwindow.cpp 14151 2007-08-02 22:27:51Z bluebrother $
+ *
+ * All files in this archive are subject to the GNU General Public License.
+ * See the file COPYING in the source tree root for full license agreement.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ ****************************************************************************/
+
+#include "installtalkwindow.h"
+#include "ui_installtalkfrm.h"
+
+InstallTalkWindow::InstallTalkWindow(QWidget *parent) : QDialog(parent)
+{
+ ui.setupUi(this);
+ talkcreator = new TalkFileCreator(this);
+
+ connect(ui.buttonBrowse, SIGNAL(clicked()), this, SLOT(browseFolder()));
+ connect(ui.buttonBrowseTTS, SIGNAL(clicked()), this, SLOT(browseTTS()));
+ connect(ui.buttonBrowseEncoder, SIGNAL(clicked()), this, SLOT(browseEncoder()));
+
+ connect(ui.Encodercbx,SIGNAL(currentIndexChanged(int)),this,SLOT(setEncoderOptions(int)));
+ connect(ui.TTScbx,SIGNAL(currentIndexChanged(int)),this,SLOT(setTTSOptions(int)));
+
+ ui.OverwriteWav->setChecked(true);
+ ui.RemoveWav->setChecked(true);
+ ui.recursive->setChecked(true);
+ ui.OverwriteTalk->setChecked(true);
+ ui.StripExtensions->setChecked(true);
+
+
+}
+
+void InstallTalkWindow::browseFolder()
+{
+ QFileDialog browser(this);
+ if(QFileInfo(ui.lineTalkFolder->text()).isDir())
+ browser.setDirectory(ui.lineTalkFolder->text());
+ else
+ browser.setDirectory("/media");
+ browser.setReadOnly(true);
+ browser.setFileMode(QFileDialog::DirectoryOnly);
+ browser.setAcceptMode(QFileDialog::AcceptOpen);
+ if(browser.exec()) {
+ qDebug() << browser.directory();
+ QStringList files = browser.selectedFiles();
+ setTalkFolder(files.at(0));
+ }
+}
+
+void InstallTalkWindow::setTalkFolder(QString folder)
+{
+ ui.lineTalkFolder->clear();
+ ui.lineTalkFolder->insert(folder);
+}
+
+void InstallTalkWindow::browseTTS()
+{
+ QFileDialog browser(this);
+ if(QFileInfo(ui.TTSpath->text()).isDir())
+ browser.setDirectory(ui.TTSpath->text());
+ else
+ browser.setDirectory("/media");
+ browser.setReadOnly(true);
+ browser.setFileMode(QFileDialog::ExistingFile);
+ browser.setAcceptMode(QFileDialog::AcceptOpen);
+ if(browser.exec()) {
+ qDebug() << browser.directory();
+ QStringList files = browser.selectedFiles();
+ setTTSExec(files.at(0));
+ }
+}
+
+void InstallTalkWindow::setTTSExec(QString path)
+{
+ ui.TTSpath->clear();
+ ui.TTSpath->insert(path);
+}
+
+void InstallTalkWindow::browseEncoder()
+{
+ QFileDialog browser(this);
+ if(QFileInfo(ui.Encoderpath->text()).isDir())
+ browser.setDirectory(ui.Encoderpath->text());
+ else
+ browser.setDirectory("/media");
+ browser.setReadOnly(true);
+ browser.setFileMode(QFileDialog::ExistingFile);
+ browser.setAcceptMode(QFileDialog::AcceptOpen);
+ if(browser.exec()) {
+ qDebug() << browser.directory();
+ QStringList files = browser.selectedFiles();
+ setEncoderExec(files.at(0));
+ }
+}
+
+void InstallTalkWindow::setEncoderExec(QString path)
+{
+ ui.Encoderpath->clear();
+ ui.Encoderpath->insert(path);
+}
+
+void InstallTalkWindow::setEncoderOptions(int index)
+{
+ QString options = talkcreator->getEncOpts(ui.Encodercbx->itemText(index));
+ setEncoderOptions(options);
+}
+void InstallTalkWindow::setEncoderOptions(QString options)
+{
+ ui.EncoderOptions->clear();
+ ui.EncoderOptions->insert(options);
+}
+void InstallTalkWindow::setTTSOptions(QString options)
+{
+ ui.TTSOptions->clear();
+ ui.TTSOptions->insert(options);
+}
+void InstallTalkWindow::setTTSOptions(int index)
+{
+ QString options = talkcreator->getTTsOpts(ui.TTScbx->itemText(index));
+ setEncoderOptions(options);
+}
+
+void InstallTalkWindow::accept()
+{
+ logger = new ProgressLoggerGui(this);
+ logger->show();
+
+ QString folderToTalk = ui.lineTalkFolder->text();
+ QString pathEncoder = ui.Encoderpath->text();
+ QString pathTTS = ui.TTSpath->text();
+
+ if(!QFileInfo(folderToTalk).isDir())
+ {
+ logger->addItem(tr("The Folder to Talk is wrong!"),LOGERROR);
+ logger->abort();
+ return;
+ }
+
+ if(!QFileInfo(pathEncoder).exists())
+ {
+ logger->addItem(tr("Path to Encoder is wrong!"),LOGERROR);
+ logger->abort();
+ return;
+ }
+
+ if(!QFileInfo(pathTTS).exists())
+ {
+ logger->addItem(tr("Path to TTS is wrong!"),LOGERROR);
+ logger->abort();
+ return;
+ }
+
+ userSettings->setValue("defaults/folderToTalk",folderToTalk);
+ userSettings->setValue("defaults/pathEncoder",pathEncoder);
+ userSettings->setValue("defaults/pathTTS",pathTTS);
+
+ userSettings->sync();
+
+ talkcreator->setDir(folderToTalk);
+ talkcreator->setTTSexe(pathTTS);
+ talkcreator->setEncexe(pathEncoder);
+ talkcreator->setEncOpts(ui.EncoderOptions->text());
+ talkcreator->setTTsOpts(ui.TTSOptions->text());
+ talkcreator->setTTsType(ui.TTScbx->currentText());
+ talkcreator->setEncType(ui.Encodercbx->currentText());
+
+ talkcreator->setOverwriteTalk(ui.OverwriteTalk->isChecked());
+ talkcreator->setOverwriteWav(ui.OverwriteWav->isChecked());
+ talkcreator->setRemoveWav(ui.RemoveWav->isChecked());
+ talkcreator->setRecursive(ui.recursive->isChecked());
+ talkcreator->setStripExtensions(ui.StripExtensions->isChecked());
+
+ talkcreator->createTalkFiles(logger);
+}
+
+
+void InstallTalkWindow::setDeviceSettings(QSettings *dev)
+{
+ devices = dev;
+ qDebug() << "Install::setDeviceSettings:" << devices;
+
+ QStringList encoders;
+ QStringList encodersOpts;
+ QStringList encodersTemplates;
+
+ QStringList tts;
+ QStringList ttsOpts;
+ QStringList ttsTemplates;
+
+ devices->beginGroup("encoders");
+ QStringList keys = devices->allKeys();
+ qDebug() << keys;
+ for(int i=0; i < keys.size();i++)
+ {
+ encoders << devices->value(keys.at(i),"null").toString();
+ }
+ qDebug() << encoders;
+ devices->endGroup();
+ for(int i=0; i < encoders.size();i++)
+ {
+ devices->beginGroup(encoders.at(i));
+ encodersOpts << devices->value("options","null").toString();
+ encodersTemplates << devices->value("template","null").toString();
+ devices->endGroup();
+ }
+ qDebug() << encodersOpts;
+ qDebug() << encodersTemplates;
+
+ devices->beginGroup("tts");
+ keys = devices->allKeys();
+ qDebug() << keys;
+ for(int i=0; i < keys.size();i++)
+ {
+ tts << devices->value(keys.at(i),"null").toString();
+ }
+ qDebug() << tts;
+ devices->endGroup();
+ for(int i= 0; i < tts.size();i++)
+ {
+ devices->beginGroup(tts.at(i));
+ ttsOpts << devices->value("options","null").toString();
+ ttsTemplates << devices->value("template","null").toString();
+ devices->endGroup();
+ }
+ qDebug() << ttsOpts;
+ qDebug() << ttsTemplates;
+
+ talkcreator->setSupportedEnc(encoders);
+ talkcreator->setSupportedEncOptions(encodersOpts);
+ talkcreator->setSupportedEncTemplates(encodersTemplates);
+
+ talkcreator->setSupportedTTS(tts);
+ talkcreator->setSupportedTTSOptions(ttsOpts);
+ talkcreator->setSupportedTTSTemplates(ttsTemplates);
+
+ ui.Encodercbx->insertItems(0,talkcreator->getSupportedEnc());
+ ui.TTScbx->insertItems(0,talkcreator->getSupportedTTS());
+
+}
+
+
+
+
+void InstallTalkWindow::setUserSettings(QSettings *user)
+{
+ userSettings = user;
+
+
+
+ setTalkFolder(userSettings->value("defaults/folderToTalk").toString());
+ setEncoderExec(userSettings->value("defaults/pathEncoder").toString());
+ setTTSExec(userSettings->value("defaults/pathTTS").toString());
+}
diff --git a/rbutil/rbutilqt/installtalkwindow.h b/rbutil/rbutilqt/installtalkwindow.h
new file mode 100644
index 0000000000..1962d36a52
--- /dev/null
+++ b/rbutil/rbutilqt/installtalkwindow.h
@@ -0,0 +1,66 @@
+/***************************************************************************
+ * __________ __ ___.
+ * Open \______ \ ____ ____ | | _\_ |__ _______ ___
+ * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
+ * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
+ * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
+ * \/ \/ \/ \/ \/
+ *
+ * Copyright (C) 2007 by Dominik Wenger
+ * $Id: installtalkwindow.h 14151 2007-08-02 22:27:51Z domonoky $
+ *
+ * All files in this archive are subject to the GNU General Public License.
+ * See the file COPYING in the source tree root for full license agreement.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ ****************************************************************************/
+
+#ifndef INSTALLTALKWINDOW_H
+#define INSTALLTALKWINDOW_H
+
+#include
+
+#include
+
+#include "ui_installtalkfrm.h"
+#include "progressloggergui.h"
+#include "talkfile.h"
+
+class InstallTalkWindow : public QDialog
+{
+ Q_OBJECT
+ public:
+ InstallTalkWindow(QWidget *parent = 0);
+ void setUserSettings(QSettings*);
+ void setDeviceSettings(QSettings*);
+
+ public slots:
+ void accept(void);
+
+ private slots:
+ void browseFolder(void);
+ void browseTTS(void);
+ void browseEncoder(void);
+
+ void setTalkFolder(QString folder);
+ void setTTSExec(QString path);
+ void setEncoderExec(QString path);
+
+ void setEncoderOptions(int index);
+ void setTTSOptions(int index);
+ void setEncoderOptions(QString options);
+ void setTTSOptions(QString options);
+
+ private:
+ TalkFileCreator* talkcreator;
+ Ui::InstallTalkFrm ui;
+ ProgressLoggerGui* logger;
+ QSettings *devices;
+ QSettings *userSettings;
+
+};
+
+
+#endif
diff --git a/rbutil/rbutilqt/rbutil.ini b/rbutil/rbutilqt/rbutil.ini
index c3d962952a..4052ef45e5 100644
--- a/rbutil/rbutilqt/rbutil.ini
+++ b/rbutil/rbutilqt/rbutil.ini
@@ -337,3 +337,21 @@ resolution=176x220x16
manualname=
brand=Sandisk
+[encoders]
+encoder01 = lame
+
+[tts]
+tts01 = espeak
+tts02 = flite
+
+[lame]
+options = ""
+template = "\"%exe\" %options \"%input\" \"%output\""
+
+[espeak]
+options = ""
+template = "\"%exe\" %options -w \"%wavfile\" \"%text\""
+
+[flite]
+options = ""
+template = "\"%exe\" %options -o \"%wavfile\" \"%text\""
\ No newline at end of file
diff --git a/rbutil/rbutilqt/rbutilqt.cpp b/rbutil/rbutilqt/rbutilqt.cpp
index 5fcfc39d18..8cacdfc78b 100644
--- a/rbutil/rbutilqt/rbutilqt.cpp
+++ b/rbutil/rbutilqt/rbutilqt.cpp
@@ -26,6 +26,7 @@
#include "configure.h"
#include "install.h"
#include "installbl.h"
+#include "installtalkwindow.h"
#include "httpget.h"
#include "installbootloader.h"
@@ -78,7 +79,9 @@ RbUtilQt::RbUtilQt(QWidget *parent) : QMainWindow(parent)
connect(ui.buttonBootloader, SIGNAL(clicked()), this, SLOT(installBl()));
connect(ui.buttonFonts, SIGNAL(clicked()), this, SLOT(installFonts()));
connect(ui.buttonGames, SIGNAL(clicked()), this, SLOT(installDoom()));
-
+ connect(ui.buttonTalk, SIGNAL(clicked()), this, SLOT(createTalkFiles()));
+
+
// disable unimplemented stuff
ui.buttonThemes->setEnabled(false);
ui.buttonSmall->setEnabled(false);
@@ -345,3 +348,12 @@ void RbUtilQt::installDoom()
}
+
+void RbUtilQt::createTalkFiles(void)
+{
+ InstallTalkWindow *installWindow = new InstallTalkWindow(this);
+ installWindow->setUserSettings(userSettings);
+ installWindow->setDeviceSettings(devices);
+ installWindow->show();
+
+}
diff --git a/rbutil/rbutilqt/rbutilqt.h b/rbutil/rbutilqt/rbutilqt.h
index 50bca0b4fa..e23188a136 100644
--- a/rbutil/rbutilqt/rbutilqt.h
+++ b/rbutil/rbutilqt/rbutilqt.h
@@ -59,6 +59,7 @@ class RbUtilQt : public QMainWindow
void installBl(void);
void installFonts(void);
void installDoom(void);
+ void createTalkFiles(void);
void downloadDone(bool);
void downloadDone(int, bool);
void downloadInfo(void);
diff --git a/rbutil/rbutilqt/rbutilqt.pro b/rbutil/rbutilqt/rbutilqt.pro
index 217451cf1b..56d471df65 100644
--- a/rbutil/rbutilqt/rbutilqt.pro
+++ b/rbutil/rbutilqt/rbutilqt.pro
@@ -9,6 +9,8 @@ SOURCES += rbutilqt.cpp \
installbootloader.cpp \
installbl.cpp \
progressloggergui.cpp \
+ installtalkwindow.cpp \
+ talkfile.cpp \
../ipodpatcher/ipodpatcher.c \
../sansapatcher/sansapatcher.c \
irivertools/irivertools.cpp \
@@ -29,6 +31,8 @@ HEADERS += rbutilqt.h \
installzip.h \
installbootloader.h \
installbl.h \
+ installtalkwindow.h \
+ talkfile.h \
progressloggerinterface.h \
progressloggergui.h \
../ipodpatcher/ipodpatcher.h \
@@ -55,7 +59,8 @@ FORMS += rbutilqtfrm.ui \
installfrm.ui \
installprogressfrm.ui \
configurefrm.ui \
- installbootloaderfrm.ui
+ installbootloaderfrm.ui \
+ installtalkfrm.ui
RESOURCES += rbutilqt.qrc
diff --git a/rbutil/rbutilqt/rbutilqt.qrc b/rbutil/rbutilqt/rbutilqt.qrc
index e1ba2a2093..3f62c786da 100644
--- a/rbutil/rbutilqt/rbutilqt.qrc
+++ b/rbutil/rbutilqt/rbutilqt.qrc
@@ -21,6 +21,7 @@
icons/rembootloader_btn.png
icons/remrb_btn.png
icons/system-search.png
+ icons/talkfile_btn.png
icons/themes_btn.png
icons/wizard.xpm
diff --git a/rbutil/rbutilqt/rbutilqtfrm.ui b/rbutil/rbutilqt/rbutilqtfrm.ui
index c8135de184..afa3bb0e76 100644
--- a/rbutil/rbutilqt/rbutilqtfrm.ui
+++ b/rbutil/rbutilqt/rbutilqtfrm.ui
@@ -130,7 +130,7 @@ p, li { white-space: pre-wrap; }
-
- 0
+ 2
@@ -436,7 +436,7 @@ p, li { white-space: pre-wrap; }
- -
+
-
Qt::Vertical
@@ -449,7 +449,7 @@ p, li { white-space: pre-wrap; }
- -
+
-
Qt::Vertical
@@ -462,6 +462,33 @@ p, li { white-space: pre-wrap; }
+ -
+
+
+ Install Talk files
+
+
+ :/icons/icons/talkfile_btn.png
+
+
+
+ 56
+ 46
+
+
+
+
+ -
+
+
+ <html><head><meta name="qrichtext" content="1" /><style type="text/css">
+p, li { white-space: pre-wrap; }
+</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal;">
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Create Talk Files</span></p>
+<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-weight:600;"><span style=" font-weight:400;">Talkfiles are needed to let Rockbox speak File and Foldernames</span></p></body></html>
+
+
+
@@ -675,7 +702,7 @@ p, li { white-space: pre-wrap; }
0
0
600
- 29
+ 21