aboutsummaryrefslogtreecommitdiff
path: root/src/app
diff options
context:
space:
mode:
Diffstat (limited to 'src/app')
-rw-r--r--src/app/builtincommandlineoption.cpp52
-rw-r--r--src/app/builtincommandlineoption.h8
2 files changed, 50 insertions, 10 deletions
diff --git a/src/app/builtincommandlineoption.cpp b/src/app/builtincommandlineoption.cpp
index 29c2a50f5..68ad43771 100644
--- a/src/app/builtincommandlineoption.cpp
+++ b/src/app/builtincommandlineoption.cpp
@@ -21,10 +21,12 @@
#include <QApplication>
#include <qmmp/soundcore.h>
#include <qmmpui/mediaplayer.h>
+#include <qmmpui/generalhandler.h>
#include "builtincommandlineoption.h"
BuiltinCommandLineOption::BuiltinCommandLineOption(QObject *parent) : QObject(parent)
{
+ m_model = 0;
m_options << "--enqueue" << "-e"
<< "--play" << "-p"
<< "--pause" << "-u"
@@ -69,16 +71,15 @@ const QString BuiltinCommandLineOption::helpString() const
void BuiltinCommandLineOption::executeCommand(const QString &option_string,
const QStringList &args,
- const QString &cwd/*,
- MainWindow *mw*/)
+ const QString &cwd)
{
SoundCore *core = SoundCore::instance();
MediaPlayer *player = MediaPlayer::instance();
+ PlayListManager *pl_manager = PlayListManager::instance();
if(!core || !player)
return;
- /*if(option_string == "--enqueue" || option_string == "-e" || option_string.isEmpty())
+ if(option_string == "--enqueue" || option_string == "-e" || option_string.isEmpty())
{
- //QStringList args = commands.value(key);
if(args.isEmpty())
return;
QStringList full_path_list;
@@ -89,10 +90,28 @@ void BuiltinCommandLineOption::executeCommand(const QString &option_string,
else
full_path_list << cwd + "/" + s;
}
- //clear playlist if option is empty
- //mw->setFileList(full_path_list, option_string.isEmpty());
+ pl_manager->activatePlayList(pl_manager->selectedPlayList());
+ if(option_string.isEmpty()) //clear playlist if option is empty
+ {
+ if (core->state() != Qmmp::Stopped)
+ {
+ core->stop();
+ qApp->processEvents(); //receive stop signal
+ }
+ m_model = pl_manager->selectedPlayList();
+ m_model->clear();
+ connect(m_model, SIGNAL(itemAdded(PlayListItem*)), player, SLOT(play()));
+ connect(core, SIGNAL(stateChanged(Qmmp::State)), SLOT(disconnectPl()));
+ connect(m_model, SIGNAL(loaderFinished()), SLOT(disconnectPl()));
+ m_model->add(full_path_list);
+ }
+ else
+ {
+ pl_manager->selectedPlayList()->add(full_path_list);
+ return;
+ }
}
- else*/ if (option_string == "--play" || option_string == "-p")
+ else if (option_string == "--play" || option_string == "-p")
{
player->play();
}
@@ -118,7 +137,10 @@ void BuiltinCommandLineOption::executeCommand(const QString &option_string,
}
else if (option_string == "--play-pause" || option_string == "-t")
{
- //mw->playPause();
+ if (core->state() == Qmmp::Playing)
+ core->pause();
+ else
+ player->play();
}
else if (option_string == "--jump-to-file" || option_string == "-j")
{
@@ -128,10 +150,11 @@ void BuiltinCommandLineOption::executeCommand(const QString &option_string,
{
//mw->close();
qApp->closeAllWindows();
+ qApp->quit();
}
else if (option_string == "--toggle-visibility")
{
- //mw->toggleVisibility();
+ GeneralHandler::instance()->toggleVisibility();
}
else if (option_string == "--add-file")
{
@@ -162,3 +185,14 @@ QHash <QString, QStringList> BuiltinCommandLineOption::splitArgs(const QStringLi
}
return commands;
}
+
+void BuiltinCommandLineOption::disconnectPl()
+{
+ if(m_model)
+ {
+ disconnect(m_model, SIGNAL(itemAdded(PlayListItem*)), MediaPlayer::instance(), SLOT(play()));
+ disconnect(m_model, SIGNAL(loaderFinished()), this, SLOT(disconnectPl()));
+ disconnect(SoundCore::instance(), SIGNAL(stateChanged(Qmmp::State)), this, SLOT(disconnectPl()));
+ m_model = 0;
+ }
+}
diff --git a/src/app/builtincommandlineoption.h b/src/app/builtincommandlineoption.h
index 08d8e2df3..e771d9c63 100644
--- a/src/app/builtincommandlineoption.h
+++ b/src/app/builtincommandlineoption.h
@@ -24,6 +24,8 @@
#include <QHash>
#include <QStringList>
+class PlayListModel;
+
/**
@author Vladimir Kuznetsov <vovanec@gmail.ru>
*/
@@ -42,11 +44,15 @@ public:
bool identify(const QString& str)const;
const QString helpString()const;
void executeCommand(const QString& option, const QStringList &args,
- const QString &cwd/*, MainWindow *mw*/);
+ const QString &cwd);
QHash <QString, QStringList> splitArgs(const QStringList &args) const;
+private slots:
+ void disconnectPl();
+
private:
QStringList m_options;
+ PlayListModel *m_model;
};
#endif