Home | News | Projects | Releases
Bugs | RFE | Repositories | Help
Added ActivityListAccSettings to eventually replace ActivityListConn
[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         AnimationTimer.StartAnimation();
36         // Get the preferences file.
37         
38         wxString PrefFilename = GetUserPrefDir();
39         
40         XABPreferences PrefData(PrefFilename);
42         wxString AccountName;
43         wxString AccountDir;
44         wxString AccountAddress;
45         int AccountPort = 0;
46         wxString AccountUsername;
47         wxString AccountPassword;
48         bool AccountSSL = FALSE;
49         wxString AccountPrefix;
51         // Look for the account and get the friendly name for the account.
52         
53         for (int i = 0; i < PrefData.accounts.GetCount(); i++){
54         
55                 AccountDir = PrefData.accounts.GetAccountDirectory(i);
56                 
57                 AccountDir.Trim();
58                 AccountDir.Append(wxT(".carddav"));
59         
60                 if (AccountDir == TaskAccount){
61                 
62                         AccountName = PrefData.accounts.GetAccountName(i);
63                         AccountAddress = PrefData.accounts.GetAccountAddress(i);
64                         AccountPort = PrefData.accounts.GetAccountPort(i);
65                         AccountUsername = PrefData.accounts.GetAccountUsername(i);
66                         AccountPassword = PrefData.accounts.GetAccountPassword(i);
67                         AccountPrefix = PrefData.accounts.GetAccountDirPrefix(i);
68                         AccountSSL = PrefData.accounts.GetAccountSSL(i);
69                         
70                         AccountName.Trim();
71                         AccountAddress.Trim();
72                         //AccountPort.Trim();
73                         AccountUsername.Trim();
74                         AccountPassword.Trim();
75                         AccountPrefix.Trim();
76                         break;
77                 
78                 }
79         
80         }
81         
82         ActivityMgrAccountSettings AccountSettings;
83         AccountSettings.Address = AccountAddress;
84         AccountSettings.Port = AccountPort;
85         AccountSettings.Username = AccountUsername;
86         AccountSettings.Password = AccountPassword;
87         AccountSettings.SSL = AccountSSL;
88         AccountSettings.Prefix = AccountPrefix;
89         AccountSettings.Dir = AccountDir;
90         
91         CardDAVConn->SetupConnection(AccountAddress, AccountPort, AccountUsername, AccountPassword, AccountSSL, AccountPrefix, AccountDir);
92         CardDAVConn->SetupVariables(&ActivityList, ActivityTaskID);
93         CardDAVConn->SetupResultBools(&BlankBool, &BlankBool);          
95         // TaskType:
96         // 0 - Add a contact.
97         // 1 - Update a contact.
98         // 2 - Delete a contact.
99         // 3 - Account syncronisation.
101         if (TaskType == 0){             
103                 coldata.SetText(_("Adding Contact '") + TaskDetail + _("'"));
104                 itemindex = lstActivity->InsertItem(coldata);
105                 
106                 lstActivity->SetItem(itemindex, 1, AccountName);
107                 lstActivity->SetItem(itemindex, 2, _("Queued"));
108                 
109                 CardDAVConn->SetUploadMode(TRUE);
110                 CardDAVConn->SetupData(wxT("PUT"), TaskURL, TaskData);
111                 
112                 // Setup all of the task details.
114                 ETagDB *ETagDBPtr = ETagTmrPtr->GetPointer(AccountDir);
115                 
116                 ActivityListType.insert(std::make_pair(ActivityTaskID, 0));
117                 ActivityListData.insert(std::make_pair(ActivityTaskID, TaskData));
118                 ActivityListConn.insert(std::make_pair(ActivityTaskID, CardDAVConn));
119                 ActivityListIndex.insert(std::make_pair(ActivityTaskID, itemindex));
120                 ActivityListTaskDetail.insert(std::make_pair(ActivityTaskID, TaskDetail));
121                 ActivityListAccount.insert(std::make_pair(ActivityTaskID, TaskAccount));
122                 ActivityListFilename.insert(std::make_pair(ActivityTaskID, TaskFilename));
123                 ActivityListFullFilename.insert(std::make_pair(ActivityTaskID, TaskFullFilename));
124                 ActivityListAccSettings.insert(std::make_pair(ActivityTaskID, AccountSettings));
125                 
126                 ActivityListETag.insert(std::make_pair(ActivityTaskID, ETagDBPtr->GetETag(TaskFilename)));
127                 ActivityListETagOriginal.insert(std::make_pair(ActivityTaskID, ETagDBPtr->GetETagOriginal(TaskFilename)));
128                 ActivityList.insert(std::make_pair(ActivityTaskID, 0));
129         
130         } else if (TaskType == 1){
131         
132                 coldata.SetText(_("Updating Contact '") + TaskDetail + _("'"));
133                 itemindex = lstActivity->InsertItem(coldata);           
134                 
135                 lstActivity->SetItem(itemindex, 1, AccountName);
136                 lstActivity->SetItem(itemindex, 2, _("Queued"));
137                 
138                 CardDAVConn->SetUploadMode(TRUE);
139                 CardDAVConn->SetupData(wxT("PUT"), TaskURL, TaskData);
140                 CardDAVConn->SetEditMode(TRUE);
141                 
142                 ETagDB *ETagDBPtr = ETagTmrPtr->GetPointer(AccountDir);
143                 
144                 ActivityListType.insert(std::make_pair(ActivityTaskID, 1));
145                 ActivityListData.insert(std::make_pair(ActivityTaskID, TaskData));
146                 ActivityListConn.insert(std::make_pair(ActivityTaskID, CardDAVConn));
147                 ActivityListIndex.insert(std::make_pair(ActivityTaskID, itemindex));
148                 ActivityListTaskDetail.insert(std::make_pair(ActivityTaskID, TaskDetail));
149                 ActivityListAccount.insert(std::make_pair(ActivityTaskID, TaskAccount));
150                 ActivityListFilename.insert(std::make_pair(ActivityTaskID, TaskFilename));
151                 ActivityListFullFilename.insert(std::make_pair(ActivityTaskID, TaskFullFilename));
152                 ActivityListAccSettings.insert(std::make_pair(ActivityTaskID, AccountSettings));
153                 
154                 ActivityListETag.insert(std::make_pair(ActivityTaskID, ETagDBPtr->GetETag(TaskFilename)));
155                 ActivityListETagOriginal.insert(std::make_pair(ActivityTaskID, ETagDBPtr->GetETagOriginal(TaskFilename)));
156                 ActivityList.insert(std::make_pair(ActivityTaskID, 0));
157         
158         } else if (TaskType == 2){
160                 coldata.SetText(_("Deleting Contact '") + TaskDetail + _("'"));
161                 itemindex = lstActivity->InsertItem(coldata);
162                 
163                 lstActivity->SetItem(itemindex, 1, AccountName);
164                 lstActivity->SetItem(itemindex, 2, _("Queued"));
165                 
166                 ETagDB *ETagDBPtr = ETagTmrPtr->GetPointer(AccountDir);
167                 
168                 ActivityList.insert(std::make_pair(ActivityTaskID, 0));
169                 ActivityListType.insert(std::make_pair(ActivityTaskID, 2));
170                 ActivityListData.insert(std::make_pair(ActivityTaskID, TaskData));
171                 ActivityListAccount.insert(std::make_pair(ActivityTaskID, TaskAccount));
172                 ActivityListConn.insert(std::make_pair(ActivityTaskID, CardDAVConn));
173                 ActivityListFilename.insert(std::make_pair(ActivityTaskID, TaskFilename));
174                 ActivityListIndex.insert(std::make_pair(ActivityTaskID, itemindex));
175                 ActivityListAccSettings.insert(std::make_pair(ActivityTaskID, AccountSettings));
176         
177         } else if (TaskType == 3){
179                 coldata.SetText(_("Syncronising All Contacts"));
180                 itemindex = lstActivity->InsertItem(coldata);
181                 
182                 lstActivity->SetItem(itemindex, 1, AccountName);
183                 lstActivity->SetItem(itemindex, 2, _("Queued"));
184                 
185                 ActivityList.insert(std::make_pair(ActivityTaskID, 0));
186                 ActivityListType.insert(std::make_pair(ActivityTaskID, 3));
187                 ActivityListData.insert(std::make_pair(ActivityTaskID, TaskData));
188                 ActivityListConn.insert(std::make_pair(ActivityTaskID, CardDAVConn));
189                 ActivityListTaskDetail.insert(std::make_pair(ActivityTaskID, AccountPrefix));
190                 ActivityListAccount.insert(std::make_pair(ActivityTaskID, TaskAccount));
191                 ActivityListIndex.insert(std::make_pair(ActivityTaskID, itemindex));
192                 ActivityListAccSettings.insert(std::make_pair(ActivityTaskID, AccountSettings));
193         
194         }
195         
196         ProcessTasksData = TRUE;
197         
198         if (!ActProcessTimer.IsRunning()) {
199         
200                 wxCommandEvent event(ACTMGR_STARTTIMER);
201                 wxPostEvent(this, event);
203                 wxCommandEvent eventp(ACTMGR_STARTPROCESSTIMER);
204                 wxPostEvent(this, eventp);
206                 //ActProcessTimer.Start(1000, FALSE);
207                 //ActListProcTimer.Start(1000, FALSE);
208         
209         }
210         
211         // Update the recovery database.
212         
213         return ActivityTaskID;
217 void frmActivityMgr::RemoveTask(){
219         // Remove task from the recovery database.
223 void frmActivityMgr::StopTask( wxCommandEvent& event ){
225         // Check if activity has been completed already before stopping.
227         long longSelected = -1;
228         int intSelectedData = 0;
229                 
230         longSelected = lstActivity->GetNextItem(longSelected, 
231                 wxLIST_NEXT_ALL,
232                 wxLIST_STATE_SELECTED);
234         intSelectedData = (int)lstActivity->GetItemData(longSelected);
235         
236         if (longSelected == -1){
237                 return;
238         }
239         
240         std::map<int,CardDAV*>::iterator CDAVter;
241         
242         CDAVter = ActivityListConn.find(intSelectedData);
243         
244         CDAVter->second->Abort();
245         
246         lstActivity->SetItem(longSelected, 2, _("Stopped"));
250 void frmActivityMgr::StopAllTasks( wxCommandEvent& event ){
252         // Check if activity has been completed already before stopping.
253         
254         // TODO: Look through for '1' and stop the running task(s).
255         
256         long longSelected = -1;
257         int intSelectedData = 0;
258                 
259         longSelected = lstActivity->GetNextItem(longSelected, 
260                 wxLIST_NEXT_ALL,
261                 wxLIST_STATE_SELECTED);
263         intSelectedData = (int)lstActivity->GetItemData(longSelected);
264         
265         if (longSelected == -1){
266                 return;
267         }
268         
269         std::map<int,CardDAV*>::iterator CDAVter;
270         
271         CDAVter = ActivityListConn.find(intSelectedData);
272         
273         CDAVter->second->Abort();
274         
275         lstActivity->SetItem(longSelected, 2, _("Stopped"));
276         AnimationTimer.StopAnimation();
277         bmpActivity->SetBitmap(SleepBitmap);
278         lblDetails->SetLabel(_("No activity."));
282 void frmActivityMgr::RetryTask( wxCommandEvent& event ){
284         // Check if activity has been completed already before retrying.
285         
286         long longSelected = -1;
287         int intSelectedData = 0;
288                 
289         longSelected = lstActivity->GetNextItem(longSelected, 
290                 wxLIST_NEXT_ALL,
291                 wxLIST_STATE_SELECTED);
293         intSelectedData = (int)lstActivity->GetItemData(longSelected);
294         
295         if (longSelected == -1){
296                 return;
297         }
298         
299         std::map<int,CardDAV*>::iterator CDAVter;
300         
301         CDAVter = ActivityListConn.find(intSelectedData);
302         
303         // Restart the task.
304         
305         //CDAVter->second.Abort();
306         
307         std::map<int,int>::iterator Iter;
308         Iter = ActivityList.find(intSelectedData);
309         
310         Iter->second = 0;
311         
312         AnimationTimer.StartAnimation();
313         
314         if (!ActProcessTimer.IsRunning()) {
315         
316                 ActProcessTimer.Start(150, FALSE);
317                 ActListProcTimer.Start(150, FALSE);
318         
319         }
320         
321         //lstActivity->SetItem(longSelected, 2, _("Processing..."));
325 int frmActivityMgr::GetTaskStatus(int intTaskID){
327         int intResult = 2;
328         
329         if (ActivityList.find(intTaskID) == ActivityList.end()){
330         
331                 return intResult;
332         
333         }
334         
335         std::map<int,int>::iterator taskiter = ActivityList.find(intTaskID);
336         intResult = taskiter->second;
337         
338         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