Merge pull request #4521 from Korvox/master

Add an option to pull all music files recursively into transcoding
This commit is contained in:
John Maguire 2014-10-08 12:37:16 +02:00
commit aa3671b54a
3 changed files with 40 additions and 0 deletions

View File

@ -26,6 +26,7 @@
#include <QPushButton> #include <QPushButton>
#include <QFileDialog> #include <QFileDialog>
#include <QDirIterator>
#include <QSettings> #include <QSettings>
#include <QDateTime> #include <QDateTime>
@ -73,6 +74,7 @@ TranscodeDialog::TranscodeDialog(QWidget* parent)
QSettings s; QSettings s;
s.beginGroup(kSettingsGroup); s.beginGroup(kSettingsGroup);
last_add_dir_ = s.value("last_add_dir", QDir::homePath()).toString(); last_add_dir_ = s.value("last_add_dir", QDir::homePath()).toString();
last_import_dir_ = s.value("last_import_dir", QDir::homePath()).toString();
QString last_output_format = s.value("last_output_format", "ogg").toString(); QString last_output_format = s.value("last_output_format", "ogg").toString();
for (int i = 0; i < ui_->format->count(); ++i) { for (int i = 0; i < ui_->format->count(); ++i) {
@ -97,6 +99,7 @@ TranscodeDialog::TranscodeDialog(QWidget* parent)
// Connect stuff // Connect stuff
connect(ui_->add, SIGNAL(clicked()), SLOT(Add())); connect(ui_->add, SIGNAL(clicked()), SLOT(Add()));
connect(ui_->import, SIGNAL(clicked()), SLOT(Import()));
connect(ui_->remove, SIGNAL(clicked()), SLOT(Remove())); connect(ui_->remove, SIGNAL(clicked()), SLOT(Remove()));
connect(start_button_, SIGNAL(clicked()), SLOT(Start())); connect(start_button_, SIGNAL(clicked()), SLOT(Start()));
connect(cancel_button_, SIGNAL(clicked()), SLOT(Cancel())); connect(cancel_button_, SIGNAL(clicked()), SLOT(Cancel()));
@ -226,6 +229,31 @@ void TranscodeDialog::Add() {
s.setValue("last_add_dir", last_add_dir_); s.setValue("last_add_dir", last_add_dir_);
} }
void TranscodeDialog::Import() {
QString path = QFileDialog::getExistingDirectory(
this, tr("Open a directory to import music from"),
last_import_dir_, QFileDialog::ShowDirsOnly);
if (path.isEmpty()) return;
QStringList filenames;
QStringList audioTypes = QString(FileView::kFileFilter).split(" ",
QString::SkipEmptyParts);
QDirIterator files(path, audioTypes, QDir::Files | QDir::Readable,
QDirIterator::Subdirectories);
while (files.hasNext()) {
filenames << files.next();
}
SetFilenames(filenames);
last_import_dir_ = path;
QSettings settings;
settings.beginGroup(kSettingsGroup);
settings.setValue("last_import_dir", last_import_dir_);
}
void TranscodeDialog::SetFilenames(const QStringList& filenames) { void TranscodeDialog::SetFilenames(const QStringList& filenames) {
for (const QString& filename : filenames) { for (const QString& filename : filenames) {
QString name = filename.section('/', -1, -1); QString name = filename.section('/', -1, -1);

View File

@ -45,6 +45,7 @@ class TranscodeDialog : public QDialog {
private slots: private slots:
void Add(); void Add();
void Import();
void Remove(); void Remove();
void Start(); void Start();
void Cancel(); void Cancel();
@ -74,6 +75,7 @@ class TranscodeDialog : public QDialog {
QPushButton* close_button_; QPushButton* close_button_;
QString last_add_dir_; QString last_add_dir_;
QString last_import_dir_;
Transcoder* transcoder_; Transcoder* transcoder_;
int queued_; int queued_;

View File

@ -88,6 +88,16 @@
</property> </property>
</spacer> </spacer>
</item> </item>
<item>
<widget class="QPushButton" name="import">
<property name="toolTip">
<string>Add all tracks from a directory and all its subdirectories</string>
</property>
<property name="text">
<string>Import...</string>
</property>
</widget>
</item>
</layout> </layout>
</item> </item>
</layout> </layout>