diff options
| -rw-r--r-- | src/ui/mainwindow.cpp | 43 | ||||
| -rw-r--r-- | src/ui/mainwindow.h | 7 | ||||
| -rw-r--r-- | src/ui/qmmpstarter.cpp | 48 | ||||
| -rw-r--r-- | src/ui/qmmpstarter.h | 8 |
4 files changed, 50 insertions, 56 deletions
diff --git a/src/ui/mainwindow.cpp b/src/ui/mainwindow.cpp index f4f7fa4e6..4b9a243fd 100644 --- a/src/ui/mainwindow.cpp +++ b/src/ui/mainwindow.cpp @@ -53,15 +53,13 @@ #define KEY_OFFSET 10000 -MainWindow::MainWindow(const QStringList& args, BuiltinCommandLineOption* option_manager, QWidget *parent) - : QMainWindow(parent) +MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) { #ifdef Q_WS_X11 qDebug("MainWindow: detected wm: %s", qPrintable(WindowSystem::netWindowManagerName())); #endif m_vis = 0; m_update = false; - m_option_manager = option_manager; setWindowIcon(QIcon(":/32x32/qmmp.png")); setWindowFlags(Qt::Window | Qt::FramelessWindowHint | Qt::WindowCloseButtonHint | Qt::WindowSystemMenuHint); @@ -127,14 +125,8 @@ MainWindow::MainWindow(const QStringList& args, BuiltinCommandLineOption* option m_display->setPL(m_playlist); dock->updateDock(); m_pl_manager->currentPlayList()->doCurrentVisibleRequest(); -#ifndef Q_OS_WIN32 - QString cwd = QDir::currentPath(); - processCommandArgs(args,cwd); -#endif if (m_startHidden && m_generalHandler->visibilityControl()) toggleVisibility(); - if(args.isEmpty()) - resume(); } MainWindow::~MainWindow() @@ -575,39 +567,6 @@ void MainWindow::playPause() play(); } -QString MainWindow::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, this); //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, this); - else - return QString(); - } - return QString(); -} - void MainWindow::jumpToFile() { if (m_jumpDialog->isHidden()) diff --git a/src/ui/mainwindow.h b/src/ui/mainwindow.h index 72469518a..a3cfa8b99 100644 --- a/src/ui/mainwindow.h +++ b/src/ui/mainwindow.h @@ -41,7 +41,6 @@ class GeneralHandler; class MediaPlayer; class QMenu; class QKeyEvent; -class BuiltinCommandLineOption; /** @author Ilya Kotov <forkotov02@hotmail.ru> @@ -50,7 +49,7 @@ class MainWindow : public QMainWindow { Q_OBJECT public: - MainWindow(const QStringList& args, BuiltinCommandLineOption*, QWidget *parent); + MainWindow(QWidget *parent = 0); ~MainWindow(); @@ -60,7 +59,7 @@ public: void setVolume(int volume, int balance); SoundCore* soundCore()const; MainDisplay* mainDisplay()const; - QString processCommandArgs(const QStringList &list,const QString& cwd); + void resume(); public slots: void previous(); @@ -102,7 +101,6 @@ private: void readSettings(); void writeSettings(); void createActions(); - void resume(); SoundCore *m_core; QMenu *m_mainMenu; MainDisplay *m_display; @@ -118,7 +116,6 @@ private: JumpToTrackDialog* m_jumpDialog; bool m_hideOnClose, m_startHidden; VisualMenu *m_visMenu; - BuiltinCommandLineOption* m_option_manager; GeneralHandler *m_generalHandler; MediaPlayer *m_player; }; 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; diff --git a/src/ui/qmmpstarter.h b/src/ui/qmmpstarter.h index de01d08d7..314716084 100644 --- a/src/ui/qmmpstarter.h +++ b/src/ui/qmmpstarter.h @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2006 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 * @@ -42,15 +42,17 @@ class QMMPStarter : public QObject public: QMMPStarter(int argc,char ** argv,QObject* parent = 0); ~QMMPStarter(); -protected slots: + +protected slots: /*! * Passes command args to the running application */ void writeCommand(); - void readCommand(); + private: + QString processCommandArgs(const QStringList &list,const QString& cwd); /*! * Prints usage */ |
