diff options
Diffstat (limited to 'src')
6 files changed, 52 insertions, 123 deletions
diff --git a/src/plugins/FileDialogs/TwoPanelFileDialog/twopanelfiledialog.cpp b/src/plugins/FileDialogs/TwoPanelFileDialog/twopanelfiledialog.cpp index be67c0e53..3285f5dda 100644 --- a/src/plugins/FileDialogs/TwoPanelFileDialog/twopanelfiledialog.cpp +++ b/src/plugins/FileDialogs/TwoPanelFileDialog/twopanelfiledialog.cpp @@ -1,5 +1,5 @@ /************************************************************************** -* Copyright (C) 2008-2012 by Ilya Kotov * +* Copyright (C) 2016 by Ilya Kotov * * forkotov02@hotmail.ru * * * * This program is free software; you can redistribute it and/or modify * @@ -28,7 +28,7 @@ TwoPanelFileDialog::TwoPanelFileDialog() { m_dialog = new TwoPanelFileDialogImpl(); - connect(m_dialog, SIGNAL(filesAdded(QStringList)), SIGNAL(filesAdded(QStringList))); + connect(m_dialog, SIGNAL(filesSelected(QStringList, bool)), SIGNAL(filesSelected(QStringList,bool))); } TwoPanelFileDialog::~TwoPanelFileDialog() @@ -45,37 +45,11 @@ void TwoPanelFileDialog::raise(const QString &dir, Mode mode, const QString &cap m_dialog->raise(); } -QString TwoPanelFileDialog::existingDirectory(QWidget *parent, const QString &caption, const QString &dir) +QStringList TwoPanelFileDialog::exec(QWidget *parent, const QString &dir, FileDialog::Mode mode, const QString &caption, const QString &filter, QString *) { TwoPanelFileDialogImpl *dialog = new TwoPanelFileDialogImpl(parent); dialog->setWindowTitle(caption); - dialog->setModeAndMask(dir, FileDialog::AddDir); - QStringList l; - if (dialog->exec() == QDialog::Accepted) - l = dialog->selectedFiles(); - dialog->deleteLater(); - return l.isEmpty() ? QString() : l.at(0); -} - -QString TwoPanelFileDialog::openFileName(QWidget *parent, const QString &caption, - const QString &dir, const QString &filter, QString*) -{ - TwoPanelFileDialogImpl *dialog = new TwoPanelFileDialogImpl(parent); - dialog->setWindowTitle(caption); - dialog->setModeAndMask(dir, FileDialog::AddFile, filter.split(";;")); - QStringList l; - if (dialog->exec() == QDialog::Accepted) - l = dialog->selectedFiles(); - dialog->deleteLater(); - return l.isEmpty() ? QString() : l.at(0); -} - -QStringList TwoPanelFileDialog::openFileNames(QWidget *parent, const QString &caption, - const QString &dir, const QString &filter, QString *) -{ - TwoPanelFileDialogImpl *dialog = new TwoPanelFileDialogImpl(parent); - dialog->setWindowTitle(caption); - dialog->setModeAndMask(dir, FileDialog::AddFiles, filter.split(";;")); + dialog->setModeAndMask(dir, mode, filter.split(";;", QString::SkipEmptyParts)); QStringList l; if (dialog->exec() == QDialog::Accepted) l = dialog->selectedFiles(); @@ -83,22 +57,6 @@ QStringList TwoPanelFileDialog::openFileNames(QWidget *parent, const QString &ca return l; } -QString TwoPanelFileDialog::saveFileName (QWidget *parent, const QString &caption, - const QString &dir, const QString &filter, QString*) -{ - TwoPanelFileDialogImpl *dialog = new TwoPanelFileDialogImpl(parent); - dialog->setWindowTitle(caption); - dialog->setModeAndMask(dir, FileDialog::SaveFile, filter.split(";;")); - QStringList l; - if (dialog->exec() == QDialog::Accepted) - l = dialog->selectedFiles(); - dialog->deleteLater(); - if (l.isEmpty()) - return QString(); - else - return l.at(0); -} - FileDialog* TwoPanelFileDialogFactory::create() { return new TwoPanelFileDialog(); diff --git a/src/plugins/FileDialogs/TwoPanelFileDialog/twopanelfiledialog.h b/src/plugins/FileDialogs/TwoPanelFileDialog/twopanelfiledialog.h index 9f3c5ae86..867e4c9e2 100644 --- a/src/plugins/FileDialogs/TwoPanelFileDialog/twopanelfiledialog.h +++ b/src/plugins/FileDialogs/TwoPanelFileDialog/twopanelfiledialog.h @@ -1,5 +1,5 @@ /************************************************************************** -* Copyright (C) 2008-2012 by Ilya Kotov * +* Copyright (C) 2016 by Ilya Kotov * * forkotov02@hotmail.ru * * * * This program is free software; you can redistribute it and/or modify * @@ -26,6 +26,9 @@ class TwoPanelFileDialogImpl; +/*! + * @author Ilya Kotov <forkotov02@hotmail.ru> + */ class TwoPanelFileDialog : public FileDialog { Q_OBJECT @@ -33,32 +36,13 @@ public: TwoPanelFileDialog(); virtual ~TwoPanelFileDialog(); - void raise(const QString &dir = QString(), - Mode mode = AddFiles, - const QString &caption = QString(), - const QStringList &mask = QStringList()); +protected: + void raise(const QString &dir, Mode mode, const QString &caption, + const QStringList &mask); - QString existingDirectory(QWidget *parent = 0, - const QString &caption = QString(), - const QString &dir = QString()); + QStringList exec(QWidget *parent, const QString &dir, Mode mode, + const QString &caption, const QString &filter, QString *); - QString openFileName(QWidget *parent = 0, - const QString &caption = QString(), - const QString &dir = QString(), - const QString &filter = QString(), - QString *selectedFilter = 0); - - QStringList openFileNames(QWidget *parent = 0, - const QString &caption = QString(), - const QString &dir = QString(), - const QString &filter = QString(), - QString *selectedFilter = 0); - - QString saveFileName (QWidget *parent = 0, - const QString &caption = QString(), - const QString &dir = QString(), - const QString &filter = QString(), - QString *selectedFilter = 0); private: TwoPanelFileDialogImpl *m_dialog; @@ -72,14 +56,10 @@ class TwoPanelFileDialogFactory : public QObject, public FileDialogFactory Q_OBJECT Q_INTERFACES(FileDialogFactory) public: - virtual FileDialog* create(); - virtual const FileDialogProperties properties() const; - virtual void showAbout(QWidget*); - virtual QTranslator *createTranslator(QObject *parent); - virtual ~TwoPanelFileDialogFactory() - { - ; - } + FileDialog* create(); + const FileDialogProperties properties() const; + void showAbout(QWidget*); + QTranslator *createTranslator(QObject *parent); }; diff --git a/src/plugins/FileDialogs/TwoPanelFileDialog/twopanelfiledialogimpl.cpp b/src/plugins/FileDialogs/TwoPanelFileDialog/twopanelfiledialogimpl.cpp index 5eaa269f7..ca9ddd400 100644 --- a/src/plugins/FileDialogs/TwoPanelFileDialog/twopanelfiledialogimpl.cpp +++ b/src/plugins/FileDialogs/TwoPanelFileDialog/twopanelfiledialogimpl.cpp @@ -18,7 +18,6 @@ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * ***************************************************************************/ -#include "twopanelfiledialogimpl.h" #include <QDirModel> #include <QApplication> @@ -27,8 +26,8 @@ #include <QSettings> #include <QMessageBox> #include <QHeaderView> - #include <qmmp/qmmp.h> +#include "twopanelfiledialogimpl.h" #define HISTORY_SIZE 8 @@ -74,10 +73,7 @@ TwoPanelFileDialogImpl::TwoPanelFileDialogImpl(QWidget * parent) : QDialog(paren connect(m_ui.fileListWidget, SIGNAL(itemSelectionChanged()), SLOT(updateFileSelection ())); - //PathCompleter* fileCompleter = new PathCompleter (m_fileModel, m_ui.fileListView, this); - //m_ui.fileNameLineEdit->setCompleter (fileCompleter); QSettings settings(Qmmp::configFile(), QSettings::IniFormat); - //closeOnAddToolButton->setChecked(settings.value("TwoPanelFileDialog/close_on_add", false).toBool()); restoreGeometry(settings.value("TwoPanelFileDialog/geometry").toByteArray()); m_history = settings.value("TwoPanelFileDialog/history").toStringList(); m_ui.lookInComboBox->addItems(m_history); @@ -97,7 +93,7 @@ TwoPanelFileDialogImpl::~TwoPanelFileDialogImpl() { } -QStringList TwoPanelFileDialogImpl::selectedFiles () +QStringList TwoPanelFileDialogImpl::selectedFiles() const { QStringList l; if (m_mode == FileDialog::SaveFile) @@ -184,7 +180,8 @@ void TwoPanelFileDialogImpl::updateFileSelection () m_ui.addButton->setEnabled(true); m_ui.playButton->setEnabled(false); - if(m_mode == FileDialog::AddFiles || m_mode == FileDialog::AddDirsFiles || m_mode == FileDialog::AddFile) + if(m_mode == FileDialog::AddFiles || m_mode == FileDialog::AddDirsFiles || m_mode == FileDialog::AddFile + || m_mode == FileDialog::PlayDirsFiles) { foreach(str, paths) { @@ -244,9 +241,9 @@ void TwoPanelFileDialogImpl::on_lookInComboBox_activated(const QString &path) }*/ } -void TwoPanelFileDialogImpl::on_fileListView_doubleClicked(const QModelIndex& ind) +/*void TwoPanelFileDialogImpl::on_fileListView_doubleClicked(const QModelIndex& ind) { - /*if (ind.isValid()) + if (ind.isValid()) { QFileInfo info = m_model->fileInfo(ind); if (info.isDir()) @@ -265,8 +262,8 @@ void TwoPanelFileDialogImpl::on_fileListView_doubleClicked(const QModelIndex& in addToHistory(l[0]); addFiles(l); } - }*/ -} + } +}*/ void TwoPanelFileDialogImpl::on_fileNameLineEdit_textChanged (const QString &text) { @@ -293,24 +290,22 @@ void TwoPanelFileDialogImpl::on_addButton_clicked() if(!l.isEmpty()) { addToHistory(l.first()); - addFiles(l); + addFiles(l, false); } } void TwoPanelFileDialogImpl::on_playButton_clicked() { - foreach (QString path, selectedFiles()) + QStringList l = selectedFiles(); + + if(!l.isEmpty()) { - if(QFileInfo(path).isFile()) - { - emit playRequest(path); - return; - } + addToHistory(l.first()); + addFiles(l, true); } } -void TwoPanelFileDialogImpl::setModeAndMask(const QString& path, FileDialog::Mode m, const QStringList& mask, - bool showPlayButton) +void TwoPanelFileDialogImpl::setModeAndMask(const QString& path, FileDialog::Mode m, const QStringList& mask) { m_mode = m; m_ui.dirListView->clearSelection(); @@ -342,13 +337,15 @@ void TwoPanelFileDialogImpl::setModeAndMask(const QString& path, FileDialog::Mod m_ui.fileNameLineEdit->setText(fileName); m_ui.addButton->setEnabled(!fileName.isEmpty()); - m_ui.playButton->setVisible(showPlayButton); + m_ui.playButton->setVisible(m == FileDialog::PlayDirsFiles); + switch (m) { case FileDialog::AddFile: case FileDialog::AddFiles: case FileDialog::AddDirsFiles: + case FileDialog::PlayDirsFiles: { m_ui.fileListWidget->setVisible(true); m_ui.addButton->setText(tr("Add")); @@ -425,7 +422,6 @@ void TwoPanelFileDialogImpl::updateFileList(const QString &path) void TwoPanelFileDialogImpl::hideEvent (QHideEvent *event) { QSettings settings(Qmmp::configFile(), QSettings::IniFormat); - //settings.setValue("TwoPanelFileDialog/close_on_add", closeOnAddToolButton->isChecked()); settings.setValue("TwoPanelFileDialog/geometry", saveGeometry()); settings.setValue("TwoPanelFileDialog/history", m_history); QWidget::hideEvent(event); @@ -448,11 +444,11 @@ void TwoPanelFileDialogImpl::addToHistory(const QString &path) m_ui.lookInComboBox->addItems(m_history); } -void TwoPanelFileDialogImpl::addFiles(const QStringList &list) +void TwoPanelFileDialogImpl::addFiles(const QStringList &list, bool play) { if (!isModal()) { - emit filesAdded(list); + emit filesSelected(list, play); accept(); } else if (m_mode == FileDialog::SaveFile) diff --git a/src/plugins/FileDialogs/TwoPanelFileDialog/twopanelfiledialogimpl.h b/src/plugins/FileDialogs/TwoPanelFileDialog/twopanelfiledialogimpl.h index 25da172d2..1e58920e8 100644 --- a/src/plugins/FileDialogs/TwoPanelFileDialog/twopanelfiledialogimpl.h +++ b/src/plugins/FileDialogs/TwoPanelFileDialog/twopanelfiledialogimpl.h @@ -1,5 +1,5 @@ /************************************************************************** -* Copyright (C) 20016 by Ilya Kotov * +* Copyright (C) 2016 by Ilya Kotov * * forkotov02@hotmail.ru * * * * This program is free software; you can redistribute it and/or modify * @@ -28,7 +28,9 @@ #include <qmmpui/filedialog.h> #include <QFileSystemModel> - +/*! + * @author Ilya Kotov <forkotov02@hotmail.ru> + */ class TwoPanelFileDialogImpl : public QDialog { Q_OBJECT @@ -37,41 +39,34 @@ public: ~TwoPanelFileDialogImpl(); - void setModeAndMask(const QString &path, FileDialog::Mode m, const QStringList& mask = QStringList(), - bool showPlayButton = false); - QStringList selectedFiles (); + void setModeAndMask(const QString &path, FileDialog::Mode m, const QStringList& mask); + QStringList selectedFiles() const; signals: - void filesAdded(const QStringList&); - void playRequest(const QString&); + void filesSelected(const QStringList &selected, bool play); private slots: void updateDirSelection(const QItemSelection&s, const QItemSelection&); void updateFileSelection(); void on_dirListView_doubleClicked(const QModelIndex&ind); - void on_lookInComboBox_activated(const QString&); - - void on_fileListView_doubleClicked(const QModelIndex&); + //void on_fileListView_doubleClicked(const QModelIndex&); void on_fileNameLineEdit_textChanged (const QString &text); void on_addButton_clicked(); void on_playButton_clicked(); void on_fileTypeComboBox_activated(int); - private: void updateFileList(const QString &path); void hideEvent (QHideEvent *event); + void addToHistory(const QString &path); + void addFiles(const QStringList &list, bool play); + int m_mode; QFileSystemModel* m_dirModel; - Ui::TwoPanelFileDialog m_ui; - - void addToHistory(const QString &path); - void addFiles(const QStringList &list); QStringList m_history; QStringList m_filters; - }; class PathCompleter : public QCompleter diff --git a/src/qmmpui/filedialog.cpp b/src/qmmpui/filedialog.cpp index d1e802d18..e85ca03b6 100644 --- a/src/qmmpui/filedialog.cpp +++ b/src/qmmpui/filedialog.cpp @@ -221,7 +221,7 @@ void FileDialog::init(QObject* receiver, const char* member, QString *dir) disconnect(); if (receiver && member) { - connect(this,SIGNAL(filesSelected(QStringList)), receiver, member); + connect(this,SIGNAL(filesSelected(QStringList, bool)), receiver, member); connect(this,SIGNAL(filesSelected(QStringList)), SLOT(updateLastDir(QStringList))); m_initialized = true; } diff --git a/src/qmmpui/uihelper.cpp b/src/qmmpui/uihelper.cpp index 4548bce42..b93638ced 100644 --- a/src/qmmpui/uihelper.cpp +++ b/src/qmmpui/uihelper.cpp @@ -160,7 +160,7 @@ void UiHelper::playFiles(QWidget *parent, PlayListModel *model) void UiHelper::addDirectory(QWidget *parent, PlayListModel *model) { FileDialog::popup(parent, FileDialog::AddDirs, &m_lastDir, - model, SLOT(add(const QStringList&)), + model, SLOT(add(QStringList)), tr("Choose a directory")); } @@ -303,7 +303,7 @@ void UiHelper::playSelectedFiles(const QStringList &files) m_model->clear(); PlayListManager::instance()->activatePlayList(m_model); connect(m_model, SIGNAL(trackAdded(PlayListTrack*)), MediaPlayer::instance(), SLOT(play())); - connect(m_model, SIGNAL(loaderFinished()), SLOT(disconnectPl())); + connect(m_model, SIGNAL(trackAdded(PlayListTrack*)), SLOT(disconnectPl())); m_model->add(files); } @@ -313,6 +313,6 @@ void UiHelper::disconnectPl() if(model) { disconnect(model, SIGNAL(trackAdded(PlayListTrack*)), MediaPlayer::instance(), SLOT(play())); - disconnect(model, SIGNAL(loaderFinished()), this, SLOT(disconnectPl())); + disconnect(model, SIGNAL(trackAdded(PlayListTrack*)), this, SLOT(disconnectPl())); } } |
