summaryrefslogtreecommitdiff
path: root/EventDispatcher.h
diff options
context:
space:
mode:
Diffstat (limited to 'EventDispatcher.h')
-rw-r--r--EventDispatcher.h97
1 files changed, 97 insertions, 0 deletions
diff --git a/EventDispatcher.h b/EventDispatcher.h
new file mode 100644
index 0000000..77b1948
--- /dev/null
+++ b/EventDispatcher.h
@@ -0,0 +1,97 @@
+/** \file EventDispatcher.h
+\brief Define the class of the event dispatcher
+\author alpha_one_x86
+\licence GPL3, see the file COPYING */
+
+#ifndef EVENT_DISPATCHER_H
+#define EVENT_DISPATCHER_H
+
+#include <QObject>
+#include <QStringList>
+#include <QString>
+#include <QTimer>
+#include <QList>
+#include <QUrl>
+
+#include "Environment.h"
+#include "Core.h"
+#include "SystrayIcon.h"
+#include "OptionEngine.h"
+#include "HelpDialog.h"
+#ifndef ULTRACOPIER_VERSION_PORTABLE
+#include "SessionLoader.h"
+#endif
+#ifdef ULTRACOPIER_INTERNET_SUPPORT
+#include "InternetUpdater.h"
+#endif
+#include "CopyListener.h"
+#include "OptionDialog.h"
+#include "CopyEngineManager.h"
+#include "LocalListener.h"
+#include "CliParser.h"
+
+/** \brief Define the class of the event dispatcher
+
+This class provide a core for dispatch the event of signal/slot, it checks too if not other instance is running */
+class EventDispatcher : public QObject
+{
+ Q_OBJECT
+ public:
+ /// \brief Initiate the ultracopier event dispatcher and check if no other session is running
+ EventDispatcher();
+ /// \brief Destroy the ultracopier event dispatcher
+ ~EventDispatcher();
+ /// \brief return if need be close
+ bool shouldBeClosed();
+ #if defined(Q_OS_WIN32) || defined(Q_OS_MAC)
+ static std::string GetOSDisplayString();
+ #endif
+ public slots:
+ /// \brief Quit ultracopier
+ void quit();
+ signals:
+ /** \brief Send that's caught state have changed for CatchedState::Uncatched or CatchedState::Semicatched or CatchedState::Catched
+ \see CatchState
+ \see tryCatchCopy()
+ \see tryUncatchCopy()
+ \param State is the new state */
+ void catchCopyStateChanged(Ultracopier::CatchState state) const;
+ /** \brief Send that's copy/move task is finished in returning the copyMoveEventId
+ \see routeCopyMoveEvent()
+ \param copyMoveEventId The task id generated by routeCopyMoveEvent() */
+ void copyMoveEventIsFinish(int copyMoveEventId) const;
+ private:
+ /// \brief To have counter for increment the copyMoveEventId at each request
+ int copyMoveEventIdIndex;
+ /// \brief To store windows windows session
+ struct CoreSession
+ {
+ Core * CoreWindow;
+ std::vector<int> copyMoveEventIdManaged;
+ };
+ /// \brief the systray icon
+ SystrayIcon *backgroundIcon;
+ /// \brief To lunch event only when the event loop is setup
+ QTimer lunchInitFunction;
+ /// \brief the help dialog
+ HelpDialog theHelp;
+ #ifndef ULTRACOPIER_VERSION_PORTABLE
+ /// \brief the session loader
+ SessionLoader *sessionloader;
+ #endif
+ bool stopIt;
+ CopyListener *copyServer;
+ Core *core;
+ OptionDialog optionDialog;
+ #ifdef ULTRACOPIER_INTERNET_SUPPORT
+ InternetUpdater internetUpdater;
+ #endif
+ CopyEngineManager *copyEngineList;
+ LocalListener localListener;
+ CliParser cliParser;
+ private slots:
+ /// \brief Called when event loop is setup
+ void initFunction();
+};
+
+#endif // EVENT_DISPATCHER_H