Added build script of Debian
[qtrapids] / src / client / MainWindow.h
index 9b55d5b..2b017b8 100644 (file)
@@ -1,11 +1,9 @@
 /***************************************************************************
- *   Copyright (C) 2009 by Lassi Väätämöinen   *
- *   lassi.vaatamoinen@ixonos.com   *
+ *   Copyright (C) 2010 by Ixonos Plc   *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
  *   it under the terms of the GNU General Public License as published by  *
- *   the Free Software Foundation; either version 2 of the License, or     *
- *   (at your option) any later version.                                   *
+ *   the Free Software Foundation; version 2 of the License.               *
  *                                                                         *
  *   This program is distributed in the hope that it will be useful,       *
  *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
@@ -23,6 +21,7 @@
 #include <QMainWindow>
 #include <QSettings>
 
+#include "PluginInterface.h"
 #include "proxy.h"
 
 class QTabWidget;
@@ -37,14 +36,26 @@ class SeedView;
 /**
    @author Lassi Väätämöinen <lassi.vaatamoinen@ixonos.com>
 */
-class MainWindow : public QMainWindow
+class MainWindow : public QMainWindow, public PluginHostInterface 
 {
+
        Q_OBJECT;
 
 public:
 
        MainWindow();
-       ~MainWindow();
+       virtual ~MainWindow();
+
+       // Implemented from PluginHostInterface
+       virtual bool setGui(QWidget* widget, PluginWidgetType type = UNKNOWN_TYPE, qtrapids::PluginInterface* plugin = NULL);
+       virtual void addPluginWidget(QWidget* widget, PluginWidgetType type = UNKNOWN_TYPE);
+       virtual void addToolbar(QWidget* widget, PluginWidgetType type = UNKNOWN_TYPE);
+       virtual void addToolItem(QWidget* widget, PluginWidgetType type = UNKNOWN_TYPE);
+       virtual void addMenu(QWidget* widget, PluginWidgetType type = UNKNOWN_TYPE);
+       virtual void addMenuItem(QWidget* widget, PluginWidgetType type = UNKNOWN_TYPE);
+       virtual bool eventRequest(QVariant param, PluginRequest req = UNKNOWN_REQUEST);
+       
+       void RestoreSettings();
 
        void connectToServer() {
                qDBusRegisterMetaType<qtrapids::TorrentState>();
@@ -54,8 +65,11 @@ public:
                        , SIGNAL(alert(qtrapids::TorrentState
                                       , qtrapids::ParamsMap_t))
                        , this
-                       , SLOT(alert(qtrapids::TorrentState
+                       , SLOT(on_alert(qtrapids::TorrentState
                                     , qtrapids::ParamsMap_t)));
+               // Request server state. 
+               // NOTE: This call starts qtrapids-server automatically with the GUI, 
+               // if the .service file is in /usr/share/dbus-1/services/
                server_.getState();
        }
 
@@ -67,21 +81,36 @@ private slots:
        void on_openAction_clicked();
        void on_removeAction_clicked();
        void on_quitAction_clicked();
+       void on_startDaemonAction_clicked();
+       void on_stopDaemonAction_clicked();
+       void on_serverTerminated();
+       void on_columnsAction_clicked();
        void on_preferencesAction_clicked();
        void on_aboutAction_clicked();
        void on_aboutQtAction_clicked();
+       void on_tabWidget_tabCloseRequested(int index);
        void on_downloadItemSelectionChanged();
        void on_seedItemSelectionChanged();
        void handleToolBarAction(QAction* action);
-       void on_torrentFileSelected(const QString& file);
-       void alert(qtrapids::TorrentState, qtrapids::ParamsMap_t);
+       void on_torrentFileSelected(QString file);
+       void on_alert(qtrapids::TorrentState, qtrapids::ParamsMap_t);
 
+       
+private:
+       void LoadPlugins();
+       void StartTorrentFromBufferData(char const* data, int size);
+               
 private:
        QTabWidget *tabWidget_;
        DownloadView *dlView_;
        SeedView *seedView_;
+       QWidget *searchWidget_;
+       QAction *startDaemonAction_, *stopDaemonAction_;
        PreferencesDialog *preferencesDialog_;
        QSettings settings_;
+       QList<QDir> pluginDirs_;
+       QStringList pluginFileNames_;
+
 
        //std::vector< std::auto_ptr<QTorrentHandle> const > torrentHandles_;