mirror of
https://github.com/Rockbox/rockbox.git
synced 2025-12-08 20:55:17 -05:00
Rework talkfile creation window.
Support selecting multiple folders by replacing the provided path with a tree view that allows selecting multiple entries. The view is limited to the selected mountpoint (i.e. the player) so this removes the possibility of generating talk files for files that are not on the player. However, since Rockbox Utility disables most functionality without an attached player this isn't too much of a problem. Creating a standalone application for talkfile creation that is not limited to the player is possible as well. Change-Id: Ic68e7556f2e2e5b9c121aaba759a42a4d1d9d53a
This commit is contained in:
parent
da08e5059a
commit
b4dee8958f
3 changed files with 160 additions and 186 deletions
|
|
@ -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();
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue