1 #include "QTMegaListener.h"
2 #include "QTMegaEvent.h"
3
4 #include <QCoreApplication>
5
6 using namespace mega;
7 using namespace std;
8
QTMegaListener(MegaApi * megaApi,MegaListener * listener)9 QTMegaListener::QTMegaListener(MegaApi *megaApi, MegaListener *listener) : QObject()
10 {
11 this->megaApi = megaApi;
12 this->listener = listener;
13 }
14
~QTMegaListener()15 QTMegaListener::~QTMegaListener()
16 {
17 this->listener = NULL;
18 if (megaApi)
19 {
20 megaApi->removeListener(this);
21 }
22 }
23
onRequestStart(MegaApi * api,MegaRequest * request)24 void QTMegaListener::onRequestStart(MegaApi *api, MegaRequest *request)
25 {
26 if (request->getType() == MegaRequest::TYPE_DELETE)
27 {
28 megaApi = NULL;
29 }
30
31 QTMegaEvent *event = new QTMegaEvent(api, (QEvent::Type)QTMegaEvent::OnRequestStart);
32 event->setRequest(request->copy());
33 QCoreApplication::postEvent(this, event, INT_MIN);
34 }
35
onRequestFinish(MegaApi * api,MegaRequest * request,MegaError * e)36 void QTMegaListener::onRequestFinish(MegaApi *api, MegaRequest *request, MegaError *e)
37 {
38 QTMegaEvent *event = new QTMegaEvent(api, (QEvent::Type)QTMegaEvent::OnRequestFinish);
39 event->setRequest(request->copy());
40 event->setError(e->copy());
41 QCoreApplication::postEvent(this, event, INT_MIN);
42 }
43
onRequestUpdate(MegaApi * api,MegaRequest * request)44 void QTMegaListener::onRequestUpdate(MegaApi *api, MegaRequest *request)
45 {
46 QTMegaEvent *event = new QTMegaEvent(api, (QEvent::Type)QTMegaEvent::OnRequestUpdate);
47 event->setRequest(request->copy());
48 QCoreApplication::postEvent(this, event, INT_MIN);
49 }
50
onRequestTemporaryError(MegaApi * api,MegaRequest * request,MegaError * e)51 void QTMegaListener::onRequestTemporaryError(MegaApi *api, MegaRequest *request, MegaError *e)
52 {
53 QTMegaEvent *event = new QTMegaEvent(api, (QEvent::Type)QTMegaEvent::OnRequestTemporaryError);
54 event->setRequest(request->copy());
55 event->setError(e->copy());
56 QCoreApplication::postEvent(this, event, INT_MIN);
57 }
58
onTransferStart(MegaApi * api,MegaTransfer * transfer)59 void QTMegaListener::onTransferStart(MegaApi *api, MegaTransfer *transfer)
60 {
61 QTMegaEvent *event = new QTMegaEvent(api, (QEvent::Type)QTMegaEvent::OnTransferStart);
62 event->setTransfer(transfer->copy());
63 QCoreApplication::postEvent(this, event, INT_MIN);
64 }
65
onTransferFinish(MegaApi * api,MegaTransfer * transfer,MegaError * e)66 void QTMegaListener::onTransferFinish(MegaApi *api, MegaTransfer *transfer, MegaError *e)
67 {
68 QTMegaEvent *event = new QTMegaEvent(api, (QEvent::Type)QTMegaEvent::OnTransferFinish);
69 event->setTransfer(transfer->copy());
70 event->setError(e->copy());
71 QCoreApplication::postEvent(this, event, INT_MIN);
72 }
73
onTransferUpdate(MegaApi * api,MegaTransfer * transfer)74 void QTMegaListener::onTransferUpdate(MegaApi *api, MegaTransfer *transfer)
75 {
76 QTMegaEvent *event = new QTMegaEvent(api, (QEvent::Type)QTMegaEvent::OnTransferUpdate);
77 event->setTransfer(transfer->copy());
78 QCoreApplication::postEvent(this, event, INT_MIN);
79 }
80
onTransferTemporaryError(MegaApi * api,MegaTransfer * transfer,MegaError * e)81 void QTMegaListener::onTransferTemporaryError(MegaApi *api, MegaTransfer *transfer, MegaError *e)
82 {
83 QTMegaEvent *event = new QTMegaEvent(api, (QEvent::Type)QTMegaEvent::OnTransferTemporaryError);
84 event->setTransfer(transfer->copy());
85 event->setError(e->copy());
86 QCoreApplication::postEvent(this, event, INT_MIN);
87 }
88
onUsersUpdate(MegaApi * api,MegaUserList * users)89 void QTMegaListener::onUsersUpdate(MegaApi *api, MegaUserList *users)
90 {
91 QTMegaEvent *event = new QTMegaEvent(api, (QEvent::Type)QTMegaEvent::OnUsersUpdate);
92 event->setUsers(users ? users->copy() : NULL);
93 QCoreApplication::postEvent(this, event, INT_MIN);
94 }
95
onUserAlertsUpdate(MegaApi * api,MegaUserAlertList * alerts)96 void QTMegaListener::onUserAlertsUpdate(MegaApi *api, MegaUserAlertList *alerts)
97 {
98 QTMegaEvent *event = new QTMegaEvent(api, (QEvent::Type)QTMegaEvent::OnUserAlertsUpdate);
99 event->setUserAlerts(alerts ? alerts->copy() : NULL);
100 QCoreApplication::postEvent(this, event, INT_MIN);
101 }
102
onNodesUpdate(MegaApi * api,MegaNodeList * nodes)103 void QTMegaListener::onNodesUpdate(MegaApi *api, MegaNodeList *nodes)
104 {
105 QTMegaEvent *event = new QTMegaEvent(api, (QEvent::Type)QTMegaEvent::OnNodesUpdate);
106 event->setNodes(nodes ? nodes->copy() : NULL);
107 QCoreApplication::postEvent(this, event, INT_MIN);
108 }
109
onAccountUpdate(MegaApi * api)110 void QTMegaListener::onAccountUpdate(MegaApi *api)
111 {
112 QTMegaEvent *event = new QTMegaEvent(api, (QEvent::Type)QTMegaEvent::OnAccountUpdate);
113 QCoreApplication::postEvent(this, event, INT_MIN);
114 }
115
onReloadNeeded(MegaApi * api)116 void QTMegaListener::onReloadNeeded(MegaApi *api)
117 {
118 QTMegaEvent *event = new QTMegaEvent(api, (QEvent::Type)QTMegaEvent::OnReloadNeeded);
119 QCoreApplication::postEvent(this, event, INT_MIN);
120 }
121
onEvent(MegaApi * api,MegaEvent * e)122 void QTMegaListener::onEvent(MegaApi *api, MegaEvent *e)
123 {
124 QTMegaEvent *event = new QTMegaEvent(api, (QEvent::Type)QTMegaEvent::OnEvent);
125 event->setEvent(e->copy());
126 QCoreApplication::postEvent(this, event, INT_MIN);
127 }
128
129 #ifdef ENABLE_SYNC
onSyncStateChanged(MegaApi * api,MegaSync * sync)130 void QTMegaListener::onSyncStateChanged(MegaApi *api, MegaSync *sync)
131 {
132 QTMegaEvent *event = new QTMegaEvent(api, (QEvent::Type)QTMegaEvent::OnSyncStateChanged);
133 event->setSync(sync->copy());
134 QCoreApplication::postEvent(this, event, INT_MIN);
135 }
136
onSyncFileStateChanged(MegaApi * api,MegaSync * sync,string * localPath,int newState)137 void QTMegaListener::onSyncFileStateChanged(MegaApi *api, MegaSync *sync, string *localPath, int newState)
138 {
139 QTMegaEvent *event = new QTMegaEvent(api, (QEvent::Type)QTMegaEvent::OnFileSyncStateChanged);
140 event->setSync(sync->copy());
141 event->setLocalPath(new string(*localPath));
142 event->setNewState(newState);
143 QCoreApplication::postEvent(this, event, INT_MIN);
144 }
145
onGlobalSyncStateChanged(MegaApi * api)146 void QTMegaListener::onGlobalSyncStateChanged(MegaApi *api)
147 {
148 QTMegaEvent *event = new QTMegaEvent(api, (QEvent::Type)QTMegaEvent::OnGlobalSyncStateChanged);
149 QCoreApplication::postEvent(this, event, INT_MIN);
150 }
151 #endif
152
customEvent(QEvent * e)153 void QTMegaListener::customEvent(QEvent *e)
154 {
155 QTMegaEvent *event = (QTMegaEvent *)e;
156 switch(event->type())
157 {
158 case QTMegaEvent::OnRequestStart:
159 if(listener) listener->onRequestStart(event->getMegaApi(), event->getRequest());
160 break;
161 case QTMegaEvent::OnRequestUpdate:
162 if(listener) listener->onRequestUpdate(event->getMegaApi(), event->getRequest());
163 break;
164 case QTMegaEvent::OnRequestFinish:
165 if(listener) listener->onRequestFinish(event->getMegaApi(), event->getRequest(), event->getError());
166 break;
167 case QTMegaEvent::OnRequestTemporaryError:
168 if(listener) listener->onRequestTemporaryError(event->getMegaApi(), event->getRequest(), event->getError());
169 break;
170 case QTMegaEvent::OnTransferStart:
171 if(listener) listener->onTransferStart(event->getMegaApi(), event->getTransfer());
172 break;
173 case QTMegaEvent::OnTransferTemporaryError:
174 if(listener) listener->onTransferTemporaryError(event->getMegaApi(), event->getTransfer(), event->getError());
175 break;
176 case QTMegaEvent::OnTransferUpdate:
177 if(listener) listener->onTransferUpdate(event->getMegaApi(), event->getTransfer());
178 break;
179 case QTMegaEvent::OnTransferFinish:
180 if(listener) listener->onTransferFinish(event->getMegaApi(), event->getTransfer(), event->getError());
181 break;
182 case QTMegaEvent::OnUsersUpdate:
183 if(listener) listener->onUsersUpdate(event->getMegaApi(), event->getUsers());
184 break;
185 case QTMegaEvent::OnUserAlertsUpdate:
186 if(listener) listener->onUserAlertsUpdate(event->getMegaApi(), event->getUserAlerts());
187 break;
188 case QTMegaEvent::OnNodesUpdate:
189 if(listener) listener->onNodesUpdate(event->getMegaApi(), event->getNodes());
190 break;
191 case QTMegaEvent::OnAccountUpdate:
192 if(listener) listener->onAccountUpdate(event->getMegaApi());
193 break;
194 case QTMegaEvent::OnReloadNeeded:
195 if(listener) listener->onReloadNeeded(event->getMegaApi());
196 break;
197 case QTMegaEvent::OnEvent:
198 if(listener) listener->onEvent(event->getMegaApi(), event->getEvent());
199 break;
200 #if ENABLE_SYNC
201 case QTMegaEvent::OnSyncStateChanged:
202 if(listener) listener->onSyncStateChanged(event->getMegaApi(), event->getSync());
203 break;
204 case QTMegaEvent::OnFileSyncStateChanged:
205 if(listener) listener->onSyncFileStateChanged(event->getMegaApi(), event->getSync(), event->getLocalPath(), event->getNewState());
206 break;
207 case QTMegaEvent::OnGlobalSyncStateChanged:
208 if(listener) listener->onGlobalSyncStateChanged(event->getMegaApi());
209 break;
210 #endif
211 default:
212 break;
213 }
214 }
215