aboutsummaryrefslogtreecommitdiff
path: root/src/ui/qmmpstarter.cpp
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2011-04-01 19:18:05 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2011-04-01 19:18:05 +0000
commitdb37033dd5ec69524f611b65cb74ded1141a9ccc (patch)
tree8c577685f2e5edac45c7533d45b94caab626f12a /src/ui/qmmpstarter.cpp
parent68788ace91e7b9feab2b8170298dfcf7ee06859a (diff)
downloadqmmp-db37033dd5ec69524f611b65cb74ded1141a9ccc.tar.gz
qmmp-db37033dd5ec69524f611b65cb74ded1141a9ccc.tar.bz2
qmmp-db37033dd5ec69524f611b65cb74ded1141a9ccc.zip
some code cleanup
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@2142 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/ui/qmmpstarter.cpp')
-rw-r--r--src/ui/qmmpstarter.cpp48
1 files changed, 42 insertions, 6 deletions
diff --git a/src/ui/qmmpstarter.cpp b/src/ui/qmmpstarter.cpp
index c084cf5aa..71bef91f6 100644
--- a/src/ui/qmmpstarter.cpp
+++ b/src/ui/qmmpstarter.cpp
@@ -1,5 +1,5 @@
/***************************************************************************
- * Copyright (C) 2006-2010 by Ilya Kotov *
+ * Copyright (C) 2006-2011 by Ilya Kotov *
* forkotov02@hotmail.ru *
* *
* This program is free software; you can redistribute it and/or modify *
@@ -112,7 +112,7 @@ QMMPStarter::QMMPStarter(int argc,char **argv, QObject* parent) : QObject(parent
exit(0);
}
-QMMPStarter::~ QMMPStarter()
+QMMPStarter::~QMMPStarter()
{
if (mw)
delete mw;
@@ -121,8 +121,11 @@ QMMPStarter::~ QMMPStarter()
void QMMPStarter::startMainWindow()
{
connect(m_server, SIGNAL(newConnection()), SLOT(readCommand()));
- QStringList arg_l = argString.split("\n", QString::SkipEmptyParts);
- mw = new MainWindow(arg_l,m_option_manager,0);
+ QStringList args = argString.split("\n", QString::SkipEmptyParts);
+ mw = new MainWindow();
+ processCommandArgs(args, QDir::currentPath());
+ if(args.isEmpty())
+ mw->resume();
}
void QMMPStarter::writeCommand()
@@ -153,7 +156,7 @@ void QMMPStarter::writeCommand()
}
void QMMPStarter::readCommand()
-{
+{
QLocalSocket *socket = m_server->nextPendingConnection();
socket->waitForReadyRead();
QByteArray inputArray = socket->readAll();
@@ -161,7 +164,7 @@ void QMMPStarter::readCommand()
return;
QStringList slist = QString::fromUtf8(inputArray.data()).split("\n",QString::SkipEmptyParts);
QString cwd = slist.takeAt(0);
- QString out = mw ? mw->processCommandArgs(slist, cwd) : QString();
+ QString out = processCommandArgs(slist, cwd);
if(!out.isEmpty())
{
//writing answer
@@ -171,6 +174,39 @@ void QMMPStarter::readCommand()
socket->deleteLater();
}
+QString QMMPStarter::processCommandArgs(const QStringList &slist, const QString& cwd)
+{
+ if(slist.isEmpty())
+ return QString();
+ QStringList paths;
+ foreach(QString arg, slist) //detect file/directory paths
+ {
+ if(arg.startsWith("-"))
+ break;
+ paths.append(arg);
+ }
+ if(!paths.isEmpty())
+ {
+ m_option_manager->executeCommand(QString(), paths, cwd, mw); //add paths only
+ return QString();
+ }
+ QHash<QString, QStringList> commands = m_option_manager->splitArgs(slist);
+ if(commands.isEmpty())
+ return QString();
+ foreach(QString key, commands.keys())
+ {
+ if(key == "--no-start")
+ continue;
+ if (CommandLineManager::hasOption(key))
+ return CommandLineManager::executeCommand(key, commands.value(key));
+ else if (m_option_manager->identify(key))
+ m_option_manager->executeCommand(key, commands.value(key), cwd, mw);
+ else
+ return QString();
+ }
+ return QString();
+}
+
void QMMPStarter::printUsage()
{
cout << qPrintable(tr("Usage: qmmp [options] [files]")) << endl;