forked from alphaonex86/Ultracopier
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCopyListener.h
executable file
·114 lines (109 loc) · 4.09 KB
/
CopyListener.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
/** \file CopyListener.h
\brief Define the class to load the plugin and lunch it
\author alpha_one_x86
\version 0.3
\date 2010
\licence GPL3, see the file COPYING */
#ifndef COPYLISTENER_H
#define COPYLISTENER_H
#include <QObject>
#include <QList>
#include <QPluginLoader>
#include "interface/PluginInterface_Listener.h"
#include "Environment.h"
#include "GlobalClass.h"
#include "PluginLoader.h"
/** \brief to load all the listener and parse all event */
class CopyListener : public QObject, public GlobalClass
{
Q_OBJECT
public:
explicit CopyListener(QObject *parent = 0);
~CopyListener();
/** \brief send of one listener is loaded */
bool oneListenerIsLoaded();
/** \brief to resend the state */
void resendState();
private slots:
//void newPlugin();
void newPluginCopy(const quint32 &orderId,const QStringList &sources);
void newPluginCopy(const quint32 &orderId,const QStringList &sources,const QString &destination);
void newPluginMove(const quint32 &orderId,const QStringList &sources);
void newPluginMove(const quint32 &orderId,const QStringList &sources,const QString &destination);
void onePluginAdded(const PluginsAvailable &plugin);
void onePluginWillBeRemoved(const PluginsAvailable &plugin);
void newState(const ListeningState &state);
#ifdef ULTRACOPIER_DEBUG
void debugInformation(DebugLevel level,const QString& fonction,const QString& text,const QString& file,const int& ligne);
#endif // ULTRACOPIER_DEBUG
void allPluginIsloaded();
public slots:
/** \brief the copy is finished
\param orderId id used when it have send the copy
\param withError true if it have found error
\see newCopy()
\see newMove()
*/
void copyFinished(const quint32 & orderId,const bool &withError);
/** \brief the copy is canceled by the user
\param orderId id used when it have send the copy
\see newCopy()
\see newMove()
*/
void copyCanceled(const quint32 & orderId);
/** \brief try listen, to get copy/move from external source (mainly the file manager)
\see close()
*/
void listen();
/** \brief stop listen, to get copy/move from external source (mainly the file manager)
\see listen()
*/
void close();
/** new copy without destination have been pased by the CLI */
void newCopy(QStringList sources);
/** new copy with destination have been pased by the CLI */
void newCopy(QStringList sources,QString destination);
/** new move without destination have been pased by the CLI */
void newMove(QStringList sources);
/** new move with destination have been pased by the CLI */
void newMove(QStringList sources,QString destination);
signals:
void newCopy(quint32 orderId,QStringList protocolsUsedForTheSources,QStringList sources);
void newCopy(quint32 orderId,QStringList protocolsUsedForTheSources,QStringList sources,QString protocolsUsedForTheDestination,QString destination);
void newMove(quint32 orderId,QStringList protocolsUsedForTheSources,QStringList sources);
void newMove(quint32 orderId,QStringList protocolsUsedForTheSources,QStringList sources,QString protocolsUsedForTheDestination,QString destination);
void listenerReady(ListeningState state,bool havePlugin,bool someAreInWaitOfReply);
void pluginLoaderReady(CatchState state,bool havePlugin,bool someAreInWaitOfReply);
void previouslyPluginAdded(PluginsAvailable);
private:
struct PluginListener
{
PluginInterface_Listener *listenInterface;
QPluginLoader *pluginLoader;
QString path;
ListeningState state;
bool inWaitOfReply;
LocalPluginOptions *options;
};
QList<PluginListener> pluginList;
//for the options
quint32 nextOrderId;
QList<quint32> orderList;
//for the copy as suspend
struct CopyRunning
{
PluginInterface_Listener *listenInterface;
quint32 pluginOrderId;
quint32 orderId;
};
QList<CopyRunning> copyRunningList;
quint32 incrementOrderId();
bool tryListen;
PluginLoader pluginLoader;
ListeningState last_state;
bool last_have_plugin,last_inWaitOfReply;
void sendState(bool force=false);
QStringList parseWildcardSources(QStringList sources);
QStringList stripSeparator(QStringList sources);
};
#endif // COPYLISTENER_H