diff options
| -rw-r--r-- | src/app/qmmpstarter.cpp | 61 | ||||
| -rw-r--r-- | src/app/qmmpstarter.h | 14 | ||||
| -rw-r--r-- | src/plugins/Ui/skinned/mainwindow.cpp | 19 | ||||
| -rw-r--r-- | src/plugins/Ui/skinned/mainwindow.h | 1 |
4 files changed, 55 insertions, 40 deletions
diff --git a/src/app/qmmpstarter.cpp b/src/app/qmmpstarter.cpp index c24bd5789..e30036ee4 100644 --- a/src/app/qmmpstarter.cpp +++ b/src/app/qmmpstarter.cpp @@ -22,6 +22,7 @@ #include <QDir> #include <QLocalServer> #include <QLocalSocket> +#include <QSettings> #include <cstdlib> #include <iostream> #include <unistd.h> @@ -46,6 +47,9 @@ using namespace std; QMMPStarter::QMMPStarter(int argc,char **argv, QObject* parent) : QObject(parent) { + m_player = 0; + m_core = 0; + m_ui = 0; m_option_manager = new BuiltinCommandLineOption(this); QStringList tmp; for (int i = 1;i < argc;i++) @@ -84,7 +88,7 @@ QMMPStarter::QMMPStarter(int argc,char **argv, QObject* parent) : QObject(parent if(!noStart && m_server->listen (UDS_PATH)) //trying to create server { - startMainWindow(); + startPlayer(); } else if(QFile::exists(UDS_PATH)) { @@ -102,7 +106,7 @@ QMMPStarter::QMMPStarter(int argc,char **argv, QObject* parent) : QObject(parent if(noStart) exit(0); else if(m_server->listen (UDS_PATH)) - startMainWindow(); + startPlayer(); else { qWarning("QMMPStarter: server error: %s", qPrintable(m_server->errorString())); @@ -118,35 +122,58 @@ QMMPStarter::QMMPStarter(int argc,char **argv, QObject* parent) : QObject(parent QMMPStarter::~QMMPStarter() { - /*if (mw) - delete mw;*/ + if (m_ui) + delete m_ui; + + //qDebug("=%d", (int)SoundCore::instance()->state()); } -void QMMPStarter::startMainWindow() +void QMMPStarter::startPlayer() { connect(m_server, SIGNAL(newConnection()), SLOT(readCommand())); QStringList args = argString.split("\n", QString::SkipEmptyParts); - //prepare libqmmp and libqmmpui libraries for playing - /*m_player = */new MediaPlayer(this); - //m_core = */SoundCore::instance(); - /*m_pl_manager = */PlayListManager::instance(); + //prepare libqmmp and libqmmpui libraries for usage + m_player = new MediaPlayer(this); + m_core = SoundCore::instance(); + //additional featuries new PlaylistParser(this); - /*m_generalHandler = */new GeneralHandler(this); + new GeneralHandler(this); + //interface UiFactory *factory = UiLoader::currentUiFactory(); if(factory) + m_ui = factory->create(); + else { - QObject *ui = factory->create(); - //ui->setParent(this); + qWarning("QMMPStarter: no user interface found"); + exit(1); + return; } - - - /*mw = new MainWindow(); + connect(qApp, SIGNAL(aboutToQuit()), SLOT(savePosition())); processCommandArgs(args, QDir::currentPath()); if(args.isEmpty()) - mw->resume();*/ + { + QSettings settings(Qmmp::configFile(), QSettings::IniFormat); + settings.beginGroup("General"); + if(settings.value("resume_playback", false).toBool()) + { + qint64 pos = settings.value("resume_playback_time").toLongLong(); + m_player->play(pos); + } + } +} + +void QMMPStarter::savePosition() +{ + QSettings settings(Qmmp::configFile(), QSettings::IniFormat); + settings.beginGroup("General"); + settings.setValue("resume_playback", m_core->state() == Qmmp::Playing && + settings.value("resume_on_startup", false).toBool()); + settings.setValue("resume_playback_time", m_core->totalTime() > 0 ? m_core->elapsed() : 0); + settings.endGroup(); + m_core->stop(); } void QMMPStarter::writeCommand() @@ -208,7 +235,7 @@ QString QMMPStarter::processCommandArgs(const QStringList &slist, const QString& } if(!paths.isEmpty()) { - m_option_manager->executeCommand(QString(), paths, cwd/*, mw*/); //add paths only + m_option_manager->executeCommand(QString(), paths, cwd); //add paths only return QString(); } QHash<QString, QStringList> commands = m_option_manager->splitArgs(slist); diff --git a/src/app/qmmpstarter.h b/src/app/qmmpstarter.h index 95596ea49..6758b1557 100644 --- a/src/app/qmmpstarter.h +++ b/src/app/qmmpstarter.h @@ -27,7 +27,8 @@ class QLocalServer; class QLocalSocket; -class MainWindow; +class MediaPlayer; +class SoundCore; class BuiltinCommandLineOption; /*! @@ -44,12 +45,13 @@ public: ~QMMPStarter(); -protected slots: +private slots: /*! * Passes command args to the running application */ void writeCommand(); void readCommand(); + void savePosition(); private: QString processCommandArgs(const QStringList &list,const QString& cwd); @@ -57,16 +59,16 @@ private: * Prints usage */ void printUsage(); - /*! * Prints version of program */ void printVersion(); - - void startMainWindow(); + void startPlayer(); private: - //MainWindow* mw; + MediaPlayer *m_player; + SoundCore *m_core; + QObject *m_ui; QString argString; BuiltinCommandLineOption* m_option_manager; QLocalServer *m_server; diff --git a/src/plugins/Ui/skinned/mainwindow.cpp b/src/plugins/Ui/skinned/mainwindow.cpp index fdbe51adb..cfb6bf927 100644 --- a/src/plugins/Ui/skinned/mainwindow.cpp +++ b/src/plugins/Ui/skinned/mainwindow.cpp @@ -129,7 +129,9 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) } MainWindow::~MainWindow() -{} +{ + qDebug("%s", Q_FUNC_INFO); +} void MainWindow::play() { @@ -336,9 +338,6 @@ void MainWindow::writeSettings() settings.endGroup(); // playback state settings.beginGroup("General"); - settings.setValue("resume_playback", m_core->state() == Qmmp::Playing && - settings.value("resume_on_startup", false).toBool()); - settings.setValue("resume_playback_time", m_core->totalTime() > 0 ? m_core->elapsed() : 0); settings.setValue("double_size", ACTION(ActionManager::WM_DOUBLE_SIZE)->isChecked()); settings.setValue("always_on_top", ACTION(ActionManager::WM_ALLWAYS_ON_TOP)->isChecked()); settings.setValue("show_on_all_desktops", ACTION(ActionManager::WM_STICKY)->isChecked()); @@ -457,7 +456,6 @@ void MainWindow::createActions() Dock::instance()->addActions(m_mainMenu->actions()); } - void MainWindow::about() { AboutDialog dlg(this); @@ -603,14 +601,3 @@ void MainWindow::keyPressEvent(QKeyEvent *ke) ke->modifiers(), ke->text(),ke->isAutoRepeat(), ke->count()); QApplication::sendEvent(m_playlist,&event); } - -void MainWindow::resume() -{ - QSettings settings(Qmmp::configFile(), QSettings::IniFormat); - settings.beginGroup("General"); - if(settings.value("resume_playback", false).toBool()) - { - qint64 pos = settings.value("resume_playback_time").toLongLong(); - m_player->play(pos); - } -} diff --git a/src/plugins/Ui/skinned/mainwindow.h b/src/plugins/Ui/skinned/mainwindow.h index a3cfa8b99..0069ecafb 100644 --- a/src/plugins/Ui/skinned/mainwindow.h +++ b/src/plugins/Ui/skinned/mainwindow.h @@ -59,7 +59,6 @@ public: void setVolume(int volume, int balance); SoundCore* soundCore()const; MainDisplay* mainDisplay()const; - void resume(); public slots: void previous(); |
