summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--rbutil/rbutilqt/installtalkfrm.ui246
-rw-r--r--rbutil/rbutilqt/installtalkwindow.cpp90
-rw-r--r--rbutil/rbutilqt/installtalkwindow.h2
3 files changed, 156 insertions, 182 deletions
diff --git a/rbutil/rbutilqt/installtalkfrm.ui b/rbutil/rbutilqt/installtalkfrm.ui
index de9a199..216a473 100644
--- a/rbutil/rbutilqt/installtalkfrm.ui
+++ b/rbutil/rbutilqt/installtalkfrm.ui
@@ -9,15 +9,15 @@
<rect>
<x>0</x>
<y>0</y>
- <width>600</width>
- <height>450</height>
+ <width>722</width>
+ <height>448</height>
</rect>
</property>
<property name="windowTitle">
<string>Install Talk Files</string>
</property>
<layout class="QGridLayout" name="gridLayout_2">
- <item row="0" column="0" rowspan="6">
+ <item row="0" column="0" rowspan="4">
<widget class="QLabel" name="label">
<property name="text">
<string/>
@@ -30,59 +30,37 @@
</property>
</widget>
</item>
- <item row="0" column="1" colspan="3">
- <widget class="QLabel" name="label_2">
- <property name="text">
- <string>Select the Folder to generate Talkfiles for.</string>
- </property>
- </widget>
- </item>
- <item row="1" column="1" colspan="2">
- <widget class="QLineEdit" name="lineTalkFolder">
- <property name="accessibleName">
- <string>Talkfile Folder</string>
- </property>
- </widget>
- </item>
- <item row="1" column="3">
- <widget class="QPushButton" name="buttonBrowse">
- <property name="text">
- <string>&amp;Browse</string>
- </property>
- <property name="icon">
- <iconset resource="rbutilqt.qrc">
- <normaloff>:/icons/system-search.png</normaloff>:/icons/system-search.png</iconset>
- </property>
- </widget>
- </item>
<item row="2" column="1" colspan="3">
- <widget class="QGroupBox" name="groupBox_2">
+ <widget class="QGroupBox" name="groupBox">
<property name="title">
- <string>Generation settings</string>
+ <string>Generation options</string>
</property>
- <layout class="QGridLayout" name="gridLayout_3">
- <item row="0" column="0">
- <widget class="QLabel" name="labelTtsProfile">
+ <layout class="QGridLayout" name="gridLayout">
+ <item row="7" column="0">
+ <widget class="QCheckBox" name="StripExtensions">
<property name="text">
- <string>TTS profile:</string>
+ <string>Strip Extensions</string>
+ </property>
+ <property name="checked">
+ <bool>false</bool>
</property>
</widget>
</item>
- <item row="0" column="1">
- <widget class="QPushButton" name="change">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Minimum" vsizetype="Minimum">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
+ <item row="1" column="0">
+ <widget class="QCheckBox" name="talkFiles">
<property name="text">
- <string>Change</string>
+ <string>Generate for files</string>
+ </property>
+ <property name="checked">
+ <bool>true</bool>
+ </property>
+ <property name="tristate">
+ <bool>false</bool>
</property>
</widget>
</item>
- <item row="1" column="1">
- <spacer>
+ <item row="0" column="1">
+ <spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
@@ -94,124 +72,60 @@
</property>
</spacer>
</item>
- </layout>
- </widget>
- </item>
- <item row="4" column="2">
- <spacer>
- <property name="orientation">
- <enum>Qt::Vertical</enum>
- </property>
- <property name="sizeHint" stdset="0">
- <size>
- <width>20</width>
- <height>40</height>
- </size>
- </property>
- </spacer>
- </item>
- <item row="5" column="1">
- <spacer>
- <property name="orientation">
- <enum>Qt::Horizontal</enum>
- </property>
- <property name="sizeHint" stdset="0">
- <size>
- <width>40</width>
- <height>20</height>
- </size>
- </property>
- </spacer>
- </item>
- <item row="5" column="2" colspan="2">
- <layout class="QHBoxLayout">
- <item>
- <widget class="QPushButton" name="buttonOk">
- <property name="text">
- <string>&amp;Install</string>
- </property>
- <property name="icon">
- <iconset resource="rbutilqt.qrc">
- <normaloff>:/icons/go-next.png</normaloff>:/icons/go-next.png</iconset>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QPushButton" name="buttonCancel">
- <property name="text">
- <string>&amp;Cancel</string>
- </property>
- <property name="icon">
- <iconset resource="rbutilqt.qrc">
- <normaloff>:/icons/process-stop.png</normaloff>:/icons/process-stop.png</iconset>
- </property>
- </widget>
- </item>
- </layout>
- </item>
- <item row="3" column="1" colspan="3">
- <widget class="QGroupBox" name="groupBox">
- <property name="title">
- <string>Generation options</string>
- </property>
- <layout class="QGridLayout" name="gridLayout">
- <item row="2" column="1">
- <widget class="QLineEdit" name="ignoreFiles"/>
- </item>
- <item row="2" column="0">
- <widget class="QLabel" name="label_3">
+ <item row="0" column="0">
+ <widget class="QLabel" name="labelTtsProfile">
<property name="text">
- <string>Ignore files (comma seperated Wildcards):</string>
+ <string>TTS profile:</string>
</property>
</widget>
</item>
- <item row="0" column="0">
- <widget class="QCheckBox" name="talkFiles">
+ <item row="1" column="1" colspan="2">
+ <widget class="QCheckBox" name="talkFolders">
<property name="text">
- <string>Generate .talk files for Files</string>
+ <string>Generate for folders</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
- <property name="tristate">
- <bool>false</bool>
- </property>
</widget>
</item>
<item row="4" column="0">
- <widget class="QCheckBox" name="talkFolders">
+ <widget class="QCheckBox" name="recursive">
<property name="text">
- <string>Generate .talk files for Folders</string>
+ <string>Recurse into folders</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
- <item row="5" column="0">
- <widget class="QCheckBox" name="recursive">
- <property name="text">
- <string>Run recursive</string>
+ <item row="0" column="2">
+ <widget class="QPushButton" name="change">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Minimum" vsizetype="Minimum">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
</property>
- <property name="checked">
- <bool>true</bool>
+ <property name="text">
+ <string>Change</string>
</property>
</widget>
</item>
- <item row="6" column="0">
- <widget class="QCheckBox" name="StripExtensions">
+ <item row="8" column="0">
+ <widget class="QCheckBox" name="checkBox">
<property name="text">
- <string>Strip Extensions</string>
- </property>
- <property name="checked">
- <bool>false</bool>
+ <string>Ignore files</string>
</property>
</widget>
</item>
- <item row="7" column="0">
+ <item row="8" column="1" colspan="2">
+ <widget class="QLineEdit" name="ignoreFiles"/>
+ </item>
+ <item row="4" column="1" colspan="2">
<widget class="QCheckBox" name="GenerateOnlyNew">
<property name="text">
- <string>Create only new Talkfiles</string>
+ <string>Skip existing</string>
</property>
<property name="checked">
<bool>true</bool>
@@ -221,14 +135,72 @@
</layout>
</widget>
</item>
+ <item row="3" column="2" colspan="2">
+ <layout class="QHBoxLayout">
+ <item>
+ <widget class="QPushButton" name="buttonOk">
+ <property name="text">
+ <string>&amp;Install</string>
+ </property>
+ <property name="icon">
+ <iconset resource="rbutilqt.qrc">
+ <normaloff>:/icons/go-next.png</normaloff>:/icons/go-next.png</iconset>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPushButton" name="buttonCancel">
+ <property name="text">
+ <string>&amp;Cancel</string>
+ </property>
+ <property name="icon">
+ <iconset resource="rbutilqt.qrc">
+ <normaloff>:/icons/process-stop.png</normaloff>:/icons/process-stop.png</iconset>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item row="1" column="1" colspan="3">
+ <widget class="QTreeView" name="treeView"/>
+ </item>
+ <item row="0" column="1" colspan="3">
+ <widget class="QLabel" name="label_2">
+ <property name="text">
+ <string>Select folders for Talkfile generation (Ctrl for multiselect)</string>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="1">
+ <spacer>
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>QSizePolicy::Expanding</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>20</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
</layout>
</widget>
<tabstops>
- <tabstop>lineTalkFolder</tabstop>
- <tabstop>buttonBrowse</tabstop>
- <tabstop>change</tabstop>
<tabstop>buttonOk</tabstop>
<tabstop>buttonCancel</tabstop>
+ <tabstop>treeView</tabstop>
+ <tabstop>change</tabstop>
+ <tabstop>talkFiles</tabstop>
+ <tabstop>talkFolders</tabstop>
+ <tabstop>recursive</tabstop>
+ <tabstop>GenerateOnlyNew</tabstop>
+ <tabstop>StripExtensions</tabstop>
+ <tabstop>checkBox</tabstop>
+ <tabstop>ignoreFiles</tabstop>
</tabstops>
<resources>
<include location="rbutilqt.qrc"/>
diff --git a/rbutil/rbutilqt/installtalkwindow.cpp b/rbutil/rbutilqt/installtalkwindow.cpp
index de723ae..f2e042e 100644
--- a/rbutil/rbutilqt/installtalkwindow.cpp
+++ b/rbutil/rbutilqt/installtalkwindow.cpp
@@ -28,47 +28,42 @@ InstallTalkWindow::InstallTalkWindow(QWidget *parent) : QDialog(parent)
ui.setupUi(this);
talkcreator = new TalkFileCreator(this);
- connect(ui.buttonBrowse, SIGNAL(clicked()), this, SLOT(browseFolder()));
connect(ui.change,SIGNAL(clicked()),this,SLOT(change()));
ui.recursive->setChecked(true);
ui.GenerateOnlyNew->setChecked(true);
ui.StripExtensions->setChecked(true);
- updateSettings();
-}
+ fsm = new QFileSystemModel(this);
+ QString mp = RbSettings::value(RbSettings::Mountpoint).toString();
+ fsm->setRootPath(mp);
+ ui.treeView->setModel(fsm);
+ ui.treeView->setSelectionMode(QAbstractItemView::ExtendedSelection);
+ ui.treeView->setRootIndex(fsm->index(mp));
+ qDebug() << fsm->columnCount();
+ fsm->setFilter(QDir::AllDirs | QDir::NoDotAndDotDot);
+ for(int i = 1; i < fsm->columnCount(); i++)
+ ui.treeView->setColumnHidden(i, true);
+ ui.treeView->setHeaderHidden(true);
-void InstallTalkWindow::browseFolder()
-{
- QString selected;
- QString startfolder;
- if(QFileInfo(ui.lineTalkFolder->text()).isDir())
- {
- startfolder = ui.lineTalkFolder->text();
- }
- else
- {
- startfolder = RbSettings::value(RbSettings::Mountpoint).toString();
- }
- selected = QFileDialog::getExistingDirectory(this,
- tr("Select folder to create talk files"), startfolder);
- if(!selected.isEmpty())
- {
- ui.lineTalkFolder->setText(selected);
- }
+ updateSettings();
}
void InstallTalkWindow::change()
{
- Config *cw = new Config(this,4);
+ Config *cw = new Config(this, 4);
// make sure the current selected folder doesn't get lost on settings
- // changes. If the current selection is invalid don't accept it so
- // it gets reset to the old value after closing the settings dialog.
- QString folderToTalk = ui.lineTalkFolder->text();
- if(QFileInfo(folderToTalk).isDir())
- RbSettings::setValue(RbSettings::LastTalkedFolder, folderToTalk);
+ // changes.
+ QModelIndexList si = ui.treeView->selectionModel()->selectedIndexes();
+ QStringList foldersToTalk;
+ for(int i = 0; i < si.size(); i++) {
+ if(si.at(i).column() == 0) {
+ foldersToTalk.append(fsm->filePath(si.at(i)));
+ }
+ }
+ RbSettings::setValue(RbSettings::LastTalkedFolder, foldersToTalk);
connect(cw, SIGNAL(settingsUpdated()), this, SLOT(updateSettings()));
cw->show();
@@ -78,24 +73,20 @@ void InstallTalkWindow::accept()
{
logger = new ProgressLoggerGui(this);
+ QModelIndexList si = ui.treeView->selectionModel()->selectedIndexes();
+ QStringList foldersToTalk;
+ for(int i = 0; i < si.size(); i++) {
+ if(si.at(i).column() == 0) {
+ foldersToTalk.append(fsm->filePath(si.at(i)));
+ }
+ }
connect(logger,SIGNAL(closed()),this,SLOT(close()));
logger->show();
-
- QString folderToTalk = ui.lineTalkFolder->text();
-
- if(!QFileInfo(folderToTalk).isDir())
- {
- logger->addItem(tr("The Folder to Talk is wrong!"),LOGERROR);
- logger->setFinished();
- return;
- }
-
- RbSettings::setValue(RbSettings::LastTalkedFolder, folderToTalk);
+ RbSettings::setValue(RbSettings::LastTalkedFolder, foldersToTalk);
RbSettings::sync();
- talkcreator->setDir(QDir(folderToTalk));
talkcreator->setMountPoint(RbSettings::value(RbSettings::Mountpoint).toString());
talkcreator->setGenerateOnlyNew(ui.GenerateOnlyNew->isChecked());
@@ -110,7 +101,10 @@ void InstallTalkWindow::accept()
connect(talkcreator, SIGNAL(logProgress(int, int)), logger, SLOT(setProgress(int, int)));
connect(logger,SIGNAL(aborted()),talkcreator,SLOT(abort()));
- talkcreator->createTalkFiles();
+ for(int i = 0; i < foldersToTalk.size(); i++) {
+ talkcreator->setDir(QDir(foldersToTalk.at(i)));
+ talkcreator->createTalkFiles();
+ }
}
@@ -119,14 +113,22 @@ void InstallTalkWindow::updateSettings(void)
QString ttsName = RbSettings::value(RbSettings::Tts).toString();
TTSBase* tts = TTSBase::getTTS(this,ttsName);
if(tts->configOk())
- ui.labelTtsProfile->setText(tr("Selected TTS engine: <b>%1</b>")
+ ui.labelTtsProfile->setText(tr("<b>%1</b>")
.arg(TTSBase::getTTSName(ttsName)));
else
- ui.labelTtsProfile->setText(tr("Selected TTS engine: <b>%1</b>")
+ ui.labelTtsProfile->setText(tr("<b>%1</b>")
.arg("Invalid TTS configuration!"));
- ui.lineTalkFolder->setText(
- RbSettings::value(RbSettings::LastTalkedFolder).toString());
+ QStringList folders = RbSettings::value(RbSettings::LastTalkedFolder).toStringList();
+ for(int i = 0; i < folders.size(); ++i) {
+ QModelIndex mi = fsm->index(folders.at(i));
+ ui.treeView->selectionModel()->select(mi, QItemSelectionModel::Select);
+ // make sure all parent items are expanded.
+ while((mi = mi.parent()) != QModelIndex()) {
+ ui.treeView->setExpanded(mi, true);
+ }
+ }
+
emit settingsUpdated();
}
diff --git a/rbutil/rbutilqt/installtalkwindow.h b/rbutil/rbutilqt/installtalkwindow.h
index acac221..ab23395 100644
--- a/rbutil/rbutilqt/installtalkwindow.h
+++ b/rbutil/rbutilqt/installtalkwindow.h
@@ -38,7 +38,6 @@ class InstallTalkWindow : public QDialog
void change(void);
private slots:
- void browseFolder(void);
void updateSettings(void);
signals:
@@ -49,6 +48,7 @@ class InstallTalkWindow : public QDialog
TalkFileCreator* talkcreator;
Ui::InstallTalkFrm ui;
ProgressLoggerGui* logger;
+ QFileSystemModel *fsm;
};
#endif