From b13664d07d62f8b78c3a2a0d2f879b67262be8b4 Mon Sep 17 00:00:00 2001 From: lvaatamoinen Date: Fri, 8 Jan 2010 15:16:49 +0000 Subject: [PATCH] - Implementde server process termination from client UI - TODO: Check if we need some clean up after termination. git-svn-id: file:///svnroot/qtrapids/trunk@60 42ac0dd5-4c8c-4c71-bb3e-ecdfe252ffda --- dbus/com.ixonos.qtrapids.xml | 6 ++++++ src/client/MainWindow.cpp | 9 +++++++++ src/client/MainWindow.h | 1 + src/server/TorrentSession.cpp | 8 +++++++- src/server/TorrentSession.hpp | 8 ++++---- src/server/main.cpp | 1 + 6 files changed, 28 insertions(+), 5 deletions(-) diff --git a/dbus/com.ixonos.qtrapids.xml b/dbus/com.ixonos.qtrapids.xml index 05d9bbf..ac00a19 100644 --- a/dbus/com.ixonos.qtrapids.xml +++ b/dbus/com.ixonos.qtrapids.xml @@ -40,6 +40,12 @@ value="qtrapids::ParamsMap_t"/> + + + + + + diff --git a/src/client/MainWindow.cpp b/src/client/MainWindow.cpp index 221ac60..7e33bf4 100644 --- a/src/client/MainWindow.cpp +++ b/src/client/MainWindow.cpp @@ -75,6 +75,8 @@ MainWindow::MainWindow() : QAction *removeAction = tempMenu->addAction(tr("&Remove")); removeAction->setEnabled(false); QAction *quitAction = tempMenu->addAction(tr("&Quit")); + QAction *stopDaemonAction = tempMenu->addAction(tr("Stop &daemon")); + tempMenu = menuBar->addMenu(tr("&View")); QAction *columnsAction = tempMenu->addAction(tr("&Columns")); @@ -91,6 +93,7 @@ MainWindow::MainWindow() : connect(removeAction, SIGNAL(triggered()), this, SLOT(on_removeAction_clicked())); connect(this, SIGNAL(itemSelected(bool)), removeAction, SLOT(setEnabled(bool))); connect(quitAction, SIGNAL(triggered()), this, SLOT(on_quitAction_clicked())); + connect(stopDaemonAction, SIGNAL(triggered()), this, SLOT(on_stopDaemonAction_clicked())); connect(columnsAction, SIGNAL(triggered()), this, SLOT(on_columnsAction_clicked())); connect(preferencesAction, SIGNAL(triggered()), this, SLOT(on_preferencesAction_clicked())); connect(aboutAction, SIGNAL(triggered()), this, SLOT(on_aboutAction_clicked())); @@ -340,6 +343,12 @@ void MainWindow::on_quitAction_clicked() } +void MainWindow::on_stopDaemonAction_clicked() +{ + server_.terminateSession(); +} + + void MainWindow::on_columnsAction_clicked() { ColumnSelectorDialog *dialog = new ColumnSelectorDialog(dlView_); diff --git a/src/client/MainWindow.h b/src/client/MainWindow.h index 1c7efd3..7c822e2 100644 --- a/src/client/MainWindow.h +++ b/src/client/MainWindow.h @@ -80,6 +80,7 @@ private slots: void on_openAction_clicked(); void on_removeAction_clicked(); void on_quitAction_clicked(); + void on_stopDaemonAction_clicked(); void on_columnsAction_clicked(); void on_preferencesAction_clicked(); void on_aboutAction_clicked(); diff --git a/src/server/TorrentSession.cpp b/src/server/TorrentSession.cpp index 09bde96..b877470 100644 --- a/src/server/TorrentSession.cpp +++ b/src/server/TorrentSession.cpp @@ -23,7 +23,7 @@ TorrentSession::TorrentSession(QObject *parent, QSettings *settings) QDBusConnection dbus = QDBusConnection::sessionBus(); dbus.registerObject("/qtrapids", this); dbus.registerService("com.ixonos.qtrapids"); - + alertWaiter_->allAlerts(); connect(alertWaiter_, SIGNAL(alert()), this, SLOT(on_alert())); alertWaiter_->start(); @@ -248,4 +248,10 @@ qtrapids::ParamsMap_t TorrentSession::getOptions() } +void TorrentSession::terminateSession() +{ + qDebug() << "Terminate called"; + emit terminate(); +} + } // namespace qtrapids diff --git a/src/server/TorrentSession.hpp b/src/server/TorrentSession.hpp index 799f62b..66b6b54 100644 --- a/src/server/TorrentSession.hpp +++ b/src/server/TorrentSession.hpp @@ -50,21 +50,21 @@ class TorrentSession : public QObject Q_CLASSINFO("D-Bus Interface", "com.ixonos.qtrapids"); public: - TorrentSession(QObject *parent, QSettings *); public slots: - void getState(); void addTorrent(const QString &path, const QString &save_path , qtrapids::ParamsMap_t other_params); void removeTorrent(const QString &hash); void setOptions(qtrapids::ParamsMap_t options); qtrapids::ParamsMap_t getOptions(); - + void terminateSession(); + signals: void alert(qtrapids::TorrentState info, qtrapids::ParamsMap_t other_info); - + void terminate(); + private slots: void on_alert(); diff --git a/src/server/main.cpp b/src/server/main.cpp index 7c3ab9f..fbb1283 100644 --- a/src/server/main.cpp +++ b/src/server/main.cpp @@ -15,5 +15,6 @@ int main(int argc, char *argv[]) QCoreApplication app(argc, argv); TorrentSession server(&app, &settings); + QObject::connect(&server, SIGNAL(terminate()), &app, SLOT(quit())); return app.exec(); } -- 1.7.9.5