aboutsummaryrefslogtreecommitdiff
path: root/src/qmmpui
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2014-03-04 11:40:07 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2014-03-04 11:40:07 +0000
commit1484a13bf2f2398236d51f33bb8311db9b9920c5 (patch)
tree5644efc460ef00790b83e52148e49a1cd32adc30 /src/qmmpui
parentc3972ebea91d079c1effd76788143011841d9e46 (diff)
downloadqmmp-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
Diffstat (limited to 'src/qmmpui')
-rw-r--r--src/qmmpui/uihelper.cpp43
-rw-r--r--src/qmmpui/uihelper.h12
2 files changed, 52 insertions, 3 deletions
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;
};