diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2014-03-04 11:40:07 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2014-03-04 11:40:07 +0000 |
| commit | 1484a13bf2f2398236d51f33bb8311db9b9920c5 (patch) | |
| tree | 5644efc460ef00790b83e52148e49a1cd32adc30 | |
| parent | c3972ebea91d079c1effd76788143011841d9e46 (diff) | |
| download | qmmp-1484a13bf2f2398236d51f33bb8311db9b9920c5.tar.gz qmmp-1484a13bf2f2398236d51f33bb8311db9b9920c5.tar.bz2 qmmp-1484a13bf2f2398236d51f33bb8311db9b9920c5.zip | |
fixed 'eject' button function
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@4118 90c681e8-e032-0410-971d-27865f9a5e38
| -rw-r--r-- | src/plugins/Ui/skinned/display.cpp | 6 | ||||
| -rw-r--r-- | src/plugins/Ui/skinned/mainwindow.cpp | 7 | ||||
| -rw-r--r-- | src/plugins/Ui/skinned/mainwindow.h | 3 | ||||
| -rw-r--r-- | src/plugins/Ui/skinned/titlebar.cpp | 4 | ||||
| -rw-r--r-- | src/qmmpui/uihelper.cpp | 43 | ||||
| -rw-r--r-- | src/qmmpui/uihelper.h | 12 |
6 files changed, 65 insertions, 10 deletions
diff --git a/src/plugins/Ui/skinned/display.cpp b/src/plugins/Ui/skinned/display.cpp index e72bf75d7..a91f62af9 100644 --- a/src/plugins/Ui/skinned/display.cpp +++ b/src/plugins/Ui/skinned/display.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2006-2013 by Ilya Kotov * + * Copyright (C) 2006-2014 by Ilya Kotov * * forkotov02@hotmail.ru * * * * This program is free software; you can redistribute it and/or modify * @@ -71,8 +71,8 @@ MainDisplay::MainDisplay (MainWindow *parent) m_next->setToolTip(tr("Next")); connect (m_next,SIGNAL (clicked()),parent,SLOT (next())); m_eject = new Button (this, Skin::BT_EJECT_N,Skin::BT_EJECT_P, Skin::CUR_NORMAL); - m_eject->setToolTip(tr("Add file")); - connect (m_eject,SIGNAL (clicked()),parent,SLOT (addFile())); + m_eject->setToolTip(tr("Play files")); + connect (m_eject,SIGNAL (clicked()),parent, SLOT(playFiles())); connect (m_skin, SIGNAL (skinChanged()), this, SLOT (updateSkin())); m_vis = new MainVisual (this); diff --git a/src/plugins/Ui/skinned/mainwindow.cpp b/src/plugins/Ui/skinned/mainwindow.cpp index 0ef4c1053..374c7558e 100644 --- a/src/plugins/Ui/skinned/mainwindow.cpp +++ b/src/plugins/Ui/skinned/mainwindow.cpp @@ -97,7 +97,7 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) connect (m_playlist,SIGNAL(play()),SLOT(play())); connect (m_playlist,SIGNAL(pause()), m_core ,SLOT(pause())); connect (m_playlist,SIGNAL(stop()),SLOT(stop())); - connect (m_playlist,SIGNAL(eject()),SLOT(addFile())); + connect (m_playlist,SIGNAL(eject()),SLOT(playFiles())); connect (m_playlist,SIGNAL(loadPlaylist()),SLOT(loadPlaylist())); connect (m_playlist,SIGNAL(savePlaylist()),SLOT(savePlaylist())); @@ -212,6 +212,11 @@ void MainWindow::addFile() m_uiHelper->addFile(this); } +void MainWindow::playFiles() +{ + m_uiHelper->playFiles(this); +} + void MainWindow::changeEvent (QEvent * event) { if (event->type() == QEvent::ActivationChange) diff --git a/src/plugins/Ui/skinned/mainwindow.h b/src/plugins/Ui/skinned/mainwindow.h index 95b42f2da..da5e704f1 100644 --- a/src/plugins/Ui/skinned/mainwindow.h +++ b/src/plugins/Ui/skinned/mainwindow.h @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2006-2012 by Ilya Kotov * + * Copyright (C) 2006-2014 by Ilya Kotov * * forkotov02@hotmail.ru * * * * This program is free software; you can redistribute it and/or modify * @@ -72,6 +72,7 @@ public slots: void addDir(); void addFile(); + void playFiles(); void addUrl(); void loadPlaylist(); diff --git a/src/plugins/Ui/skinned/titlebar.cpp b/src/plugins/Ui/skinned/titlebar.cpp index a1c24435b..2cb0a9365 100644 --- a/src/plugins/Ui/skinned/titlebar.cpp +++ b/src/plugins/Ui/skinned/titlebar.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2007-2009 by Ilya Kotov * + * Copyright (C) 2007-2014 by Ilya Kotov * * forkotov02@hotmail.ru * * * * This program is free software; you can redistribute it and/or modify * @@ -168,7 +168,7 @@ void TitleBar::shade() connect (m_control, SIGNAL (playClicked()), m_mw, SLOT (play())); connect (m_control, SIGNAL (pauseClicked()), m_mw, SLOT (pause())); connect (m_control, SIGNAL (stopClicked()), m_mw, SLOT (stop())); - connect (m_control, SIGNAL (ejectClicked()), m_mw, SLOT (addFile())); + connect (m_control, SIGNAL (ejectClicked()), m_mw, SLOT (playFiles())); m_visual = new ShadedVisual(this); Visual::add(m_visual); m_visual->show(); diff --git a/src/qmmpui/uihelper.cpp b/src/qmmpui/uihelper.cpp index be7ce90bf..e7eb3392a 100644 --- a/src/qmmpui/uihelper.cpp +++ b/src/qmmpui/uihelper.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2008-2013 by Ilya Kotov * + * Copyright (C) 2008-2014 by Ilya Kotov * * forkotov02@hotmail.ru * * * * This program is free software; you can redistribute it and/or modify * @@ -23,6 +23,7 @@ #include <QWidget> #include <QAction> #include <QSettings> +#include <qmmp/soundcore.h> #include <qmmp/metadatamanager.h> #include <qmmpui/filedialog.h> #include <qmmpui/playlistparser.h> @@ -32,6 +33,7 @@ #include "jumptotrackdialog_p.h" #include "aboutdialog_p.h" #include "addurldialog_p.h" +#include "mediaplayer.h" #include "uihelper.h" UiHelper *UiHelper::m_instance = 0; @@ -43,6 +45,7 @@ UiHelper::UiHelper(QObject *parent) m_toolsMenu = 0; m_playlistMenu = 0; m_jumpDialog = 0; + m_model = 0; General::create(parent); QSettings settings(Qmmp::configFile(), QSettings::IniFormat); m_lastDir = settings.value("General/last_dir", QDir::homePath()).toString(); //last directory @@ -139,6 +142,19 @@ void UiHelper::addFile(QWidget *parent, PlayListModel *model) tr("Select one or more files to open"), filters.join(";;")); } +void UiHelper::playFiles(QWidget *parent, PlayListModel *model) +{ + QStringList filters; + filters << tr("All Supported Bitstreams")+" (" + + MetaDataManager::instance()->nameFilters().join (" ") +")"; + filters << MetaDataManager::instance()->filters(); + m_model = model; + FileDialog::popup(parent, FileDialog::AddDirsFiles, &m_lastDir, + this, SLOT(playSelectedFiles(const QStringList &)), + tr("Select one or more files to play"), filters.join(";;")); + +} + void UiHelper::addDirectory(QWidget *parent, PlayListModel *model) { FileDialog::popup(parent, FileDialog::AddDirs, &m_lastDir, @@ -161,7 +177,7 @@ void UiHelper::loadPlayList(QWidget *parent, PlayListModel *model) QString mask = tr("Playlist Files") + " (" + PlayListParser::nameFilters().join(" ") + ")"; //TODO use nonmodal dialog and multiplier playlists - QString f_name = FileDialog::getOpenFileName(parent ,tr("Open Playlist"), m_lastDir, mask); + QString f_name = FileDialog::getOpenFileName(parent, tr("Open Playlist"), m_lastDir, mask); if (!f_name.isEmpty()) { model->clear(); @@ -264,3 +280,26 @@ void UiHelper::removeAction(QObject *action) { removeAction((QAction *) action); } + +void UiHelper::playSelectedFiles(const QStringList &files) +{ + if(files.isEmpty()) + return; + if(!PlayListManager::instance()->playLists().contains(m_model)) + return; + 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())); + m_model->add(files); +} + +void UiHelper::disconnectPl() +{ + PlayListModel *model = qobject_cast<PlayListModel*>(sender()); + if(model) + { + disconnect(model, SIGNAL(trackAdded(PlayListTrack*)), MediaPlayer::instance(), SLOT(play())); + disconnect(model, SIGNAL(loaderFinished()), this, SLOT(disconnectPl())); + } +} diff --git a/src/qmmpui/uihelper.h b/src/qmmpui/uihelper.h index f3fc2c2a9..bec1f4a10 100644 --- a/src/qmmpui/uihelper.h +++ b/src/qmmpui/uihelper.h @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2008-2012 by Ilya Kotov * + * Copyright (C) 2008-2014 by Ilya Kotov * * forkotov02@hotmail.ru * * * * This program is free software; you can redistribute it and/or modify * @@ -95,6 +95,13 @@ public: void addFile(QWidget *parent = qApp->activeWindow(), PlayListModel *model = PlayListManager::instance()->selectedPlayList()); /*! + * Opens 'Play Files' dialog + * @param parent Parent widget + * @param model Destination playlist model + */ + void playFiles(QWidget *parent = qApp->activeWindow(), + PlayListModel *model = PlayListManager::instance()->selectedPlayList()); + /*! * Opens 'Add Directory' dialog * @param parent Parent widget * @param model Destination playlist model @@ -167,6 +174,8 @@ signals: private slots: void removeAction(QObject *action); + void playSelectedFiles(const QStringList &files); + void disconnectPl(); private: QMap <GeneralFactory*, General*> m_generals; @@ -176,6 +185,7 @@ private: QPointer<QMenu> m_playlistMenu; QString m_lastDir; QPointer <JumpToTrackDialog> m_jumpDialog; + PlayListModel *m_model; static UiHelper* m_instance; }; |
