Home | News | Projects | Releases
Bugs | RFE | Repositories | Help
Splitted off task subroutines in a separate C++ source file (frmActivityMgr-tasks...
authorSteve Brokenshire <sbrokenshire@xestia.co.uk>
Mon, 30 Nov 2015 11:52:30 +0000 (11:52 +0000)
committerSteve Brokenshire <sbrokenshire@xestia.co.uk>
Mon, 30 Nov 2015 11:52:30 +0000 (11:52 +0000)
source/actmgr/frmActivityMgr-tasks.cpp [new file with mode: 0644]

diff --git a/source/actmgr/frmActivityMgr-tasks.cpp b/source/actmgr/frmActivityMgr-tasks.cpp
new file mode 100644 (file)
index 0000000..fe6eb3d
--- /dev/null
@@ -0,0 +1,327 @@
+// frmActivityMgr-addtask.cpp - Activity Manager add task subroutines.
+//
+// (c) 2012-2015 Xestia Software Development.
+//
+// This file is part of Xestia Address Book.
+//
+// Xestia Address Book is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by the
+// Free Software Foundation, version 3 of the license.
+//
+// Xestia Address Book is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License along
+// with Xestia Address Book. If not, see <http://www.gnu.org/licenses/>
+
+#include "frmActivityMgr.h"
+
+int frmActivityMgr::AddTask(int TaskType, wxString TaskDetail, wxString TaskAccount, 
+       wxString TaskURL, wxString TaskFilename, wxString TaskFullFilename, 
+       wxString TaskData){
+
+       ActivityTaskID++;
+
+       wxListItem coldata;
+       long itemindex = -1;
+       CardDAV* CardDAVConn = new CardDAV;
+
+       coldata.SetId(ActivityTaskID);
+       coldata.SetData(ActivityTaskID);
+
+       AnimationTimer.StartAnimation();
+
+       // Get the preferences file.
+       
+       wxString PrefFilename = GetUserPrefDir();
+       
+       XABPreferences PrefData(PrefFilename);
+
+       wxString AccountName;
+       wxString AccountDir;
+       wxString AccountAddress;
+       int AccountPort = 0;
+       wxString AccountUsername;
+       wxString AccountPassword;
+       bool AccountSSL = FALSE;
+       wxString AccountPrefix;
+
+       // Look for the account and get the friendly name for the account.
+       
+       for (int i = 0; i < PrefData.accounts.GetCount(); i++){
+       
+               AccountDir = PrefData.accounts.GetAccountDirectory(i);
+               
+               AccountDir.Trim();
+               AccountDir.Append(wxT(".carddav"));
+       
+               if (AccountDir == TaskAccount){
+               
+                       AccountName = PrefData.accounts.GetAccountName(i);
+                       AccountAddress = PrefData.accounts.GetAccountAddress(i);
+                       AccountPort = PrefData.accounts.GetAccountPort(i);
+                       AccountUsername = PrefData.accounts.GetAccountUsername(i);
+                       AccountPassword = PrefData.accounts.GetAccountPassword(i);
+                       AccountPrefix = PrefData.accounts.GetAccountDirPrefix(i);
+                       AccountSSL = PrefData.accounts.GetAccountSSL(i);
+                       
+                       AccountName.Trim();
+                       AccountAddress.Trim();
+                       //AccountPort.Trim();
+                       AccountUsername.Trim();
+                       AccountPassword.Trim();
+                       AccountPrefix.Trim();
+                       break;
+               
+               }
+       
+       }
+       
+       CardDAVConn->SetupConnection(AccountAddress, AccountPort, AccountUsername, AccountPassword, AccountSSL, AccountPrefix, AccountDir);
+       CardDAVConn->SetupVariables(&ActivityList, ActivityTaskID);
+       CardDAVConn->SetupResultBools(&BlankBool, &BlankBool);          
+
+       // TaskType:
+       // 0 - Add a contact.
+       // 1 - Update a contact.
+       // 2 - Delete a contact.
+       // 3 - Account syncronisation.
+
+       if (TaskType == 0){             
+
+               coldata.SetText(_("Adding Contact '") + TaskDetail + _("'"));
+               itemindex = lstActivity->InsertItem(coldata);
+               
+               lstActivity->SetItem(itemindex, 1, AccountName);
+               lstActivity->SetItem(itemindex, 2, _("Queued"));
+               
+               CardDAVConn->SetUploadMode(TRUE);
+               CardDAVConn->SetupData(wxT("PUT"), TaskURL, TaskData);
+               
+               // Setup all of the task details.
+
+               ETagDB *ETagDBPtr = ETagTmrPtr->GetPointer(AccountDir);
+               
+               ActivityListType.insert(std::make_pair(ActivityTaskID, 0));
+               ActivityListData.insert(std::make_pair(ActivityTaskID, TaskData));
+               ActivityListConn.insert(std::make_pair(ActivityTaskID, CardDAVConn));
+               ActivityListIndex.insert(std::make_pair(ActivityTaskID, itemindex));
+               ActivityListTaskDetail.insert(std::make_pair(ActivityTaskID, TaskDetail));
+               ActivityListAccount.insert(std::make_pair(ActivityTaskID, TaskAccount));
+               ActivityListFilename.insert(std::make_pair(ActivityTaskID, TaskFilename));
+               ActivityListFullFilename.insert(std::make_pair(ActivityTaskID, TaskFullFilename));
+               
+               ActivityListETag.insert(std::make_pair(ActivityTaskID, ETagDBPtr->GetETag(TaskFilename)));
+               ActivityListETagOriginal.insert(std::make_pair(ActivityTaskID, ETagDBPtr->GetETagOriginal(TaskFilename)));
+               ActivityList.insert(std::make_pair(ActivityTaskID, 0));
+       
+       } else if (TaskType == 1){
+       
+               coldata.SetText(_("Updating Contact '") + TaskDetail + _("'"));
+               itemindex = lstActivity->InsertItem(coldata);           
+               
+               lstActivity->SetItem(itemindex, 1, AccountName);
+               lstActivity->SetItem(itemindex, 2, _("Queued"));
+               
+               CardDAVConn->SetUploadMode(TRUE);
+               CardDAVConn->SetupData(wxT("PUT"), TaskURL, TaskData);
+               CardDAVConn->SetEditMode(TRUE);
+               
+               ETagDB *ETagDBPtr = ETagTmrPtr->GetPointer(AccountDir);
+               
+               ActivityListType.insert(std::make_pair(ActivityTaskID, 1));
+               ActivityListData.insert(std::make_pair(ActivityTaskID, TaskData));
+               ActivityListConn.insert(std::make_pair(ActivityTaskID, CardDAVConn));
+               ActivityListIndex.insert(std::make_pair(ActivityTaskID, itemindex));
+               ActivityListTaskDetail.insert(std::make_pair(ActivityTaskID, TaskDetail));
+               ActivityListAccount.insert(std::make_pair(ActivityTaskID, TaskAccount));
+               ActivityListFilename.insert(std::make_pair(ActivityTaskID, TaskFilename));
+               ActivityListFullFilename.insert(std::make_pair(ActivityTaskID, TaskFullFilename));
+               
+               ActivityListETag.insert(std::make_pair(ActivityTaskID, ETagDBPtr->GetETag(TaskFilename)));
+               ActivityListETagOriginal.insert(std::make_pair(ActivityTaskID, ETagDBPtr->GetETagOriginal(TaskFilename)));
+               ActivityList.insert(std::make_pair(ActivityTaskID, 0));
+       
+       } else if (TaskType == 2){
+
+               coldata.SetText(_("Deleting Contact '") + TaskDetail + _("'"));
+               itemindex = lstActivity->InsertItem(coldata);
+               
+               lstActivity->SetItem(itemindex, 1, AccountName);
+               lstActivity->SetItem(itemindex, 2, _("Queued"));
+               
+               ETagDB *ETagDBPtr = ETagTmrPtr->GetPointer(AccountDir);
+               
+               ActivityList.insert(std::make_pair(ActivityTaskID, 0));
+               ActivityListType.insert(std::make_pair(ActivityTaskID, 2));
+               ActivityListData.insert(std::make_pair(ActivityTaskID, TaskData));
+               ActivityListAccount.insert(std::make_pair(ActivityTaskID, TaskAccount));
+               ActivityListConn.insert(std::make_pair(ActivityTaskID, CardDAVConn));
+               ActivityListFilename.insert(std::make_pair(ActivityTaskID, TaskFilename));
+               ActivityListIndex.insert(std::make_pair(ActivityTaskID, itemindex));
+       
+       } else if (TaskType == 3){
+
+               coldata.SetText(_("Syncronising All Contacts"));
+               itemindex = lstActivity->InsertItem(coldata);
+               
+               lstActivity->SetItem(itemindex, 1, AccountName);
+               lstActivity->SetItem(itemindex, 2, _("Queued"));
+               
+               ActivityList.insert(std::make_pair(ActivityTaskID, 0));
+               ActivityListType.insert(std::make_pair(ActivityTaskID, 3));
+               ActivityListData.insert(std::make_pair(ActivityTaskID, TaskData));
+               ActivityListConn.insert(std::make_pair(ActivityTaskID, CardDAVConn));
+               ActivityListTaskDetail.insert(std::make_pair(ActivityTaskID, AccountPrefix));
+               ActivityListAccount.insert(std::make_pair(ActivityTaskID, TaskAccount));
+               ActivityListIndex.insert(std::make_pair(ActivityTaskID, itemindex));
+       
+       }
+       
+       ProcessTasksData = TRUE;
+       
+       if (!ActProcessTimer.IsRunning()) {
+       
+               wxCommandEvent event(ACTMGR_STARTTIMER);
+               wxPostEvent(this, event);
+
+               wxCommandEvent eventp(ACTMGR_STARTPROCESSTIMER);
+               wxPostEvent(this, eventp);
+
+               //ActProcessTimer.Start(1000, FALSE);
+               //ActListProcTimer.Start(1000, FALSE);
+       
+       }
+       
+       // Update the recovery database.
+       
+       return ActivityTaskID;
+
+}
+
+void frmActivityMgr::RemoveTask(){
+
+       // Remove task from the recovery database.
+
+}
+
+void frmActivityMgr::StopTask( wxCommandEvent& event ){
+
+       // Check if activity has been completed already before stopping.
+
+       long longSelected = -1;
+       int intSelectedData = 0;
+               
+       longSelected = lstActivity->GetNextItem(longSelected, 
+               wxLIST_NEXT_ALL,
+               wxLIST_STATE_SELECTED);
+
+       intSelectedData = (int)lstActivity->GetItemData(longSelected);
+       
+       if (longSelected == -1){
+               return;
+       }
+       
+       std::map<int,CardDAV*>::iterator CDAVter;
+       
+       CDAVter = ActivityListConn.find(intSelectedData);
+       
+       CDAVter->second->Abort();
+       
+       lstActivity->SetItem(longSelected, 2, _("Stopped"));
+
+}
+
+void frmActivityMgr::StopAllTasks( wxCommandEvent& event ){
+
+       // Check if activity has been completed already before stopping.
+       
+       // TODO: Look through for '1' and stop the running task(s).
+       
+       long longSelected = -1;
+       int intSelectedData = 0;
+               
+       longSelected = lstActivity->GetNextItem(longSelected, 
+               wxLIST_NEXT_ALL,
+               wxLIST_STATE_SELECTED);
+
+       intSelectedData = (int)lstActivity->GetItemData(longSelected);
+       
+       if (longSelected == -1){
+               return;
+       }
+       
+       std::map<int,CardDAV*>::iterator CDAVter;
+       
+       CDAVter = ActivityListConn.find(intSelectedData);
+       
+       CDAVter->second->Abort();
+       
+       lstActivity->SetItem(longSelected, 2, _("Stopped"));
+       AnimationTimer.StopAnimation();
+       bmpActivity->SetBitmap(SleepBitmap);
+       lblDetails->SetLabel(_("No activity."));
+
+}
+
+void frmActivityMgr::RetryTask( wxCommandEvent& event ){
+
+       // Check if activity has been completed already before retrying.
+       
+       long longSelected = -1;
+       int intSelectedData = 0;
+               
+       longSelected = lstActivity->GetNextItem(longSelected, 
+               wxLIST_NEXT_ALL,
+               wxLIST_STATE_SELECTED);
+
+       intSelectedData = (int)lstActivity->GetItemData(longSelected);
+       
+       if (longSelected == -1){
+               return;
+       }
+       
+       std::map<int,CardDAV*>::iterator CDAVter;
+       
+       CDAVter = ActivityListConn.find(intSelectedData);
+       
+       // Restart the task.
+       
+       //CDAVter->second.Abort();
+       
+       std::map<int,int>::iterator Iter;
+       Iter = ActivityList.find(intSelectedData);
+       
+       Iter->second = 0;
+       
+       AnimationTimer.StartAnimation();
+       
+       if (!ActProcessTimer.IsRunning()) {
+       
+               ActProcessTimer.Start(150, FALSE);
+               ActListProcTimer.Start(150, FALSE);
+       
+       }
+       
+       //lstActivity->SetItem(longSelected, 2, _("Processing..."));
+
+}
+
+int frmActivityMgr::GetTaskStatus(int intTaskID){
+
+       int intResult = 2;
+       
+       if (ActivityList.find(intTaskID) == ActivityList.end()){
+       
+               return intResult;
+       
+       }
+       
+       std::map<int,int>::iterator taskiter = ActivityList.find(intTaskID);
+       intResult = taskiter->second;
+       
+       return intResult;
+
+}
\ No newline at end of file
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