Home | News | Projects | Releases
Bugs | RFE | Repositories | Help
61ed510e7faabe7c4d96d90a233ccfb4ad7543fa
[xestiaab/.git] / source / actmgr / frmActivityMgr-tasks.cpp
1 // frmActivityMgr-addtask.cpp - Activity Manager add task subroutines.
2 //
3 // (c) 2012-2015 Xestia Software Development.
4 //
5 // This file is part of Xestia Address Book.
6 //
7 // Xestia Address Book is free software: you can redistribute it and/or modify
8 // it under the terms of the GNU General Public License as published by the
9 // Free Software Foundation, version 3 of the license.
10 //
11 // Xestia Address Book is distributed in the hope that it will be useful,
12 // but WITHOUT ANY WARRANTY; without even the implied warranty of
13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 // GNU General Public License for more details.
15 //
16 // You should have received a copy of the GNU General Public License along
17 // with Xestia Address Book. If not, see <http://www.gnu.org/licenses/>
19 #include "frmActivityMgr.h"
21 int frmActivityMgr::AddTask(int TaskType, wxString TaskDetail, wxString TaskAccount, 
22         wxString TaskURL, wxString TaskFilename, wxString TaskFullFilename, 
23         wxString TaskData){
25         ActivityTaskID++;
27         wxListItem coldata;
28         long itemindex = -1;
29         CardDAV* CardDAVConn = new CardDAV;
31         coldata.SetId(ActivityTaskID);
32         coldata.SetData(ActivityTaskID);
34         if (ApplicationSleepMode == FALSE){
35                 
36                 AnimationTimer.StartAnimation();
37                 
38         }
40         // Get the preferences file.
41         
42         wxString PrefFilename = GetUserPrefDir();
43         
44         XABPreferences PrefData(PrefFilename);
46         wxString AccountName;
47         wxString AccountDir;
48         wxString AccountAddress;
49         int AccountPort = 0;
50         wxString AccountUsername;
51         wxString AccountPassword;
52         bool AccountSSL = FALSE;
53         wxString AccountPrefix;
55         // Look for the account and get the friendly name for the account.
56         
57         for (int i = 0; i < PrefData.accounts.GetCount(); i++){
58         
59                 AccountDir = PrefData.accounts.GetAccountDirectory(i);
60                 
61                 AccountDir.Trim();
62                 AccountDir.Append(wxT(".carddav"));
63         
64                 if (AccountDir == TaskAccount){
65                 
66                         AccountName = PrefData.accounts.GetAccountName(i);
67                         AccountAddress = PrefData.accounts.GetAccountAddress(i);
68                         AccountPort = PrefData.accounts.GetAccountPort(i);
69                         AccountUsername = PrefData.accounts.GetAccountUsername(i);
70                         AccountPassword = PrefData.accounts.GetAccountPassword(i);
71                         AccountPrefix = PrefData.accounts.GetAccountDirPrefix(i);
72                         AccountSSL = PrefData.accounts.GetAccountSSL(i);
73                         
74                         AccountName.Trim();
75                         AccountAddress.Trim();
76                         //AccountPort.Trim();
77                         AccountUsername.Trim();
78                         AccountPassword.Trim();
79                         AccountPrefix.Trim();
80                         break;
81                 
82                 }
83         
84         }
85         
86         ActivityMgrAccountSettings AccountSettings;
87         AccountSettings.Address = AccountAddress;
88         AccountSettings.Port = AccountPort;
89         AccountSettings.Username = AccountUsername;
90         AccountSettings.Password = AccountPassword;
91         AccountSettings.SSL = AccountSSL;
92         AccountSettings.Prefix = AccountPrefix;
93         AccountSettings.Dir = AccountDir;
94         
95         CardDAVConn->SetupConnection(AccountAddress, AccountPort, AccountUsername, AccountPassword, AccountSSL, AccountPrefix, AccountDir);
96         CardDAVConn->SetupVariables(&ActivityList, ActivityTaskID);
97         CardDAVConn->SetupResultBools(&BlankBool, &BlankBool);          
99         // TaskType:
100         // 0 - Add a contact.
101         // 1 - Update a contact.
102         // 2 - Delete a contact.
103         // 3 - Account syncronisation.
105         if (TaskType == 0){             
107                 coldata.SetText(_("Adding Contact '") + TaskDetail + _("'"));
108                 itemindex = lstActivity->InsertItem(coldata);
109                 
110                 lstActivity->SetItem(itemindex, 1, AccountName);
111                 lstActivity->SetItem(itemindex, 2, _("Queued"));
112                 
113                 CardDAVConn->SetUploadMode(TRUE);
114                 CardDAVConn->SetupData(wxT("PUT"), TaskURL, TaskData);
115                 
116                 // Setup all of the task details.
118                 ETagDB *ETagDBPtr = ETagTmrPtr->GetPointer(AccountDir);
119                 
120                 CardDAV2 *ConnObject = new CardDAV2(AccountAddress.ToStdString(), AccountPort, AccountUsername.ToStdString(), AccountPassword.ToStdString(), AccountSSL, AccountPrefix.ToStdString(), AccountDir.ToStdString());
121                 ConnObject->SetupConnectionObject();
122                 
123                 ActivityListType.insert(std::make_pair(ActivityTaskID, 0));
124                 ActivityListData.insert(std::make_pair(ActivityTaskID, TaskData));
125                 ActivityListURL.insert(std::make_pair(ActivityTaskID, TaskURL));
126                 ActivityListEditMode.insert(std::make_pair(ActivityTaskID, false));
127                 ActivityListConn.insert(std::make_pair(ActivityTaskID, CardDAVConn));
128                 ActivityListConnObject.insert(std::make_pair(ActivityTaskID, ConnObject));
129                 ActivityListIndex.insert(std::make_pair(ActivityTaskID, itemindex));
130                 ActivityListTaskDetail.insert(std::make_pair(ActivityTaskID, TaskDetail));
131                 ActivityListAccount.insert(std::make_pair(ActivityTaskID, TaskAccount));
132                 ActivityListFilename.insert(std::make_pair(ActivityTaskID, TaskFilename));
133                 ActivityListFullFilename.insert(std::make_pair(ActivityTaskID, TaskFullFilename));
134                 ActivityListAccSettings.insert(std::make_pair(ActivityTaskID, AccountSettings));
135                 
136                 ActivityListETag.insert(std::make_pair(ActivityTaskID, ETagDBPtr->GetETag(TaskFilename)));
137                 ActivityListETagOriginal.insert(std::make_pair(ActivityTaskID, ETagDBPtr->GetETagOriginal(TaskFilename)));
138                 ActivityList.insert(std::make_pair(ActivityTaskID, 0));
139         
140         } else if (TaskType == 1){
141         
142                 coldata.SetText(_("Updating Contact '") + TaskDetail + _("'"));
143                 itemindex = lstActivity->InsertItem(coldata);           
144                 
145                 lstActivity->SetItem(itemindex, 1, AccountName);
146                 lstActivity->SetItem(itemindex, 2, _("Queued"));
147                 
148                 ETagDB *ETagDBPtr = ETagTmrPtr->GetPointer(AccountDir);
150                 CardDAV2 *ConnObject = new CardDAV2(AccountAddress.ToStdString(), AccountPort, AccountUsername.ToStdString(), AccountPassword.ToStdString(), AccountSSL, AccountPrefix.ToStdString(), AccountDir.ToStdString());
151                 ConnObject->SetupConnectionObject();
152                 
153                 ActivityListType.insert(std::make_pair(ActivityTaskID, 1));
154                 ActivityListData.insert(std::make_pair(ActivityTaskID, TaskData));
155                 ActivityListURL.insert(std::make_pair(ActivityTaskID, TaskURL));
156                 ActivityListEditMode.insert(std::make_pair(ActivityTaskID, true));
157                 ActivityListConnObject.insert(std::make_pair(ActivityTaskID, ConnObject));
158                 ActivityListIndex.insert(std::make_pair(ActivityTaskID, itemindex));
159                 ActivityListTaskDetail.insert(std::make_pair(ActivityTaskID, TaskDetail));
160                 ActivityListAccount.insert(std::make_pair(ActivityTaskID, TaskAccount));
161                 ActivityListFilename.insert(std::make_pair(ActivityTaskID, TaskFilename));
162                 ActivityListFullFilename.insert(std::make_pair(ActivityTaskID, TaskFullFilename));
163                 ActivityListAccSettings.insert(std::make_pair(ActivityTaskID, AccountSettings));
164                 
165                 ActivityListETag.insert(std::make_pair(ActivityTaskID, ETagDBPtr->GetETag(TaskFilename)));
166                 ActivityListETagOriginal.insert(std::make_pair(ActivityTaskID, ETagDBPtr->GetETagOriginal(TaskFilename)));
167                 ActivityList.insert(std::make_pair(ActivityTaskID, 0));
168         
169         } else if (TaskType == 2){
171                 coldata.SetText(_("Deleting Contact '") + TaskDetail + _("'"));
172                 itemindex = lstActivity->InsertItem(coldata);
173                 
174                 lstActivity->SetItem(itemindex, 1, AccountName);
175                 lstActivity->SetItem(itemindex, 2, _("Queued"));
176                 
177                 ETagDB *ETagDBPtr = ETagTmrPtr->GetPointer(AccountDir);
178                 
179                 CardDAV2 *ConnObject = new CardDAV2(AccountAddress.ToStdString(), AccountPort, AccountUsername.ToStdString(), AccountPassword.ToStdString(), AccountSSL, AccountPrefix.ToStdString(), AccountDir.ToStdString());
180                 ConnObject->SetupConnectionObject();
181                 
182                 ActivityList.insert(std::make_pair(ActivityTaskID, 0));
183                 ActivityListType.insert(std::make_pair(ActivityTaskID, 2));
184                 ActivityListData.insert(std::make_pair(ActivityTaskID, TaskData));
185                 ActivityListURL.insert(std::make_pair(ActivityTaskID, TaskURL));
186                 ActivityListAccount.insert(std::make_pair(ActivityTaskID, TaskAccount));
187                 ActivityListFilename.insert(std::make_pair(ActivityTaskID, TaskFilename));
188                 ActivityListConnObject.insert(std::make_pair(ActivityTaskID, ConnObject));
189                 ActivityListIndex.insert(std::make_pair(ActivityTaskID, itemindex));
190                 ActivityListAccSettings.insert(std::make_pair(ActivityTaskID, AccountSettings));
191         
192         } else if (TaskType == 3){
194                 coldata.SetText(_("Syncronising All Contacts"));
195                 itemindex = lstActivity->InsertItem(coldata);
196                 
197                 lstActivity->SetItem(itemindex, 1, AccountName);
198                 lstActivity->SetItem(itemindex, 2, _("Queued"));
199                 
200                 ActivityList.insert(std::make_pair(ActivityTaskID, 0));
201                 ActivityListType.insert(std::make_pair(ActivityTaskID, 3));
202                 ActivityListData.insert(std::make_pair(ActivityTaskID, TaskData));
203                 ActivityListConn.insert(std::make_pair(ActivityTaskID, CardDAVConn));
204                 ActivityListTaskDetail.insert(std::make_pair(ActivityTaskID, AccountPrefix));
205                 ActivityListAccount.insert(std::make_pair(ActivityTaskID, TaskAccount));
206                 ActivityListIndex.insert(std::make_pair(ActivityTaskID, itemindex));
207                 ActivityListAccSettings.insert(std::make_pair(ActivityTaskID, AccountSettings));
208         
209         }
210         
211         ProcessTasksData = TRUE;
212         
213         if (!ActProcessTimer.IsRunning() && ApplicationSleepMode == FALSE) {
214         
215                 wxCommandEvent event(ACTMGR_STARTTIMER);
216                 wxPostEvent(this, event);
218                 wxCommandEvent eventp(ACTMGR_STARTPROCESSTIMER);
219                 wxPostEvent(this, eventp);
221                 //ActProcessTimer.Start(1000, FALSE);
222                 //ActListProcTimer.Start(1000, FALSE);
223         
224         }
225         
226         // Update the recovery database.
227         
228         return ActivityTaskID;
232 void frmActivityMgr::RemoveTask(){
234         // Remove task from the recovery database.
238 void frmActivityMgr::StopTask( wxCommandEvent& event ){
240         // Check if activity has been completed already before stopping.
242         long longSelected = -1;
243         int intSelectedData = 0;
244                 
245         longSelected = lstActivity->GetNextItem(longSelected, 
246                 wxLIST_NEXT_ALL,
247                 wxLIST_STATE_SELECTED);
249         intSelectedData = (int)lstActivity->GetItemData(longSelected);
250         
251         if (longSelected == -1){
252                 return;
253         }
254         
255         std::map<int,CardDAV*>::iterator CDAVter;
256         
257         CDAVter = ActivityListConn.find(intSelectedData);
258         
259         CDAVter->second->Abort();
260         
261         lstActivity->SetItem(longSelected, 2, _("Stopped"));
265 void frmActivityMgr::StopAllTasks( wxCommandEvent& event ){
267         // Check if activity has been completed already before stopping.
268         
269         // TODO: Look through for '1' and stop the running task(s).
270         
271         long longSelected = -1;
272         int intSelectedData = 0;
273                 
274         longSelected = lstActivity->GetNextItem(longSelected, 
275                 wxLIST_NEXT_ALL,
276                 wxLIST_STATE_SELECTED);
278         intSelectedData = (int)lstActivity->GetItemData(longSelected);
279         
280         if (longSelected == -1){
281                 return;
282         }
283         
284         std::map<int,CardDAV*>::iterator CDAVter;
285         
286         CDAVter = ActivityListConn.find(intSelectedData);
287         
288         CDAVter->second->Abort();
289         
290         lstActivity->SetItem(longSelected, 2, _("Stopped"));
291         AnimationTimer.StopAnimation();
292         bmpActivity->SetBitmap(SleepBitmap);
293         lblDetails->SetLabel(_("No activity."));
297 void frmActivityMgr::RetryTask( wxCommandEvent& event ){
299         // Check if activity has been completed already before retrying.
300         
301         long longSelected = -1;
302         int intSelectedData = 0;
303                 
304         longSelected = lstActivity->GetNextItem(longSelected, 
305                 wxLIST_NEXT_ALL,
306                 wxLIST_STATE_SELECTED);
308         intSelectedData = (int)lstActivity->GetItemData(longSelected);
309         
310         if (longSelected == -1){
311                 return;
312         }
313         
314         std::map<int,CardDAV*>::iterator CDAVter;
315         
316         CDAVter = ActivityListConn.find(intSelectedData);
317         
318         // Restart the task.
319         
320         //CDAVter->second.Abort();
321         
322         std::map<int,int>::iterator Iter;
323         Iter = ActivityList.find(intSelectedData);
324         
325         Iter->second = 0;
326         
327         AnimationTimer.StartAnimation();
328         
329         if (!ActProcessTimer.IsRunning()) {
330         
331                 ActProcessTimer.Start(150, FALSE);
332                 ActListProcTimer.Start(150, FALSE);
333         
334         }
335         
336         //lstActivity->SetItem(longSelected, 2, _("Processing..."));
340 int frmActivityMgr::GetTaskStatus(int intTaskID){
342         int intResult = 2;
343         
344         if (ActivityList.find(intTaskID) == ActivityList.end()){
345         
346                 return intResult;
347         
348         }
349         
350         std::map<int,int>::iterator taskiter = ActivityList.find(intTaskID);
351         intResult = taskiter->second;
352         
353         return intResult;
Xestia Software Development
Yn Maystri
© 2006 - 2019 Xestia Software Development
Software

Xestia Address Book
Xestia Calendar
Development

Xestia Gelforn
Everything else

About
News
Privacy Policy