diff options
| -rw-r--r-- | rbutil/rbutilqt/installtalkfrm.ui | 246 | ||||
| -rw-r--r-- | rbutil/rbutilqt/installtalkwindow.cpp | 90 | ||||
| -rw-r--r-- | rbutil/rbutilqt/installtalkwindow.h | 2 |
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>&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>&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>&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>&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>&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 |