Esempio n. 1
0
        private static void InsertTask(Data.TaskList taskList, Data.Task task)
        {
            var gtask = new Task();

            gtask.Title     = task.Title;
            gtask.Status    = task.DoneDate.HasValue ? "completed" : "needsAction";
            gtask.Completed = task.DoneDate.HasValue ? System.Xml.XmlConvert.ToString(task.DoneDate.Value, XmlDateTimeSerializationMode.Utc) : null;
            gtask.Due       = task.DueDate.HasValue ? System.Xml.XmlConvert.ToString(task.DueDate.Value, XmlDateTimeSerializationMode.Utc) : null;
            gtask.Notes     = task.Notes;

            var req = Service.Tasks.Insert(gtask, taskList.Id);


            if (task.PreviousId != "")
            {
                req.Previous = TasksReferenceManager.GetGoogleTaskId(taskList.Title, task.PreviousId);
            }
            if (task.ParentId != "")
            {
                req.Parent = TasksReferenceManager.GetGoogleTaskId(taskList.Title, task.ParentId);
            }

            var googleTaskId = req.Fetch().Id;

            TasksReferenceManager.AddNewReference(taskList.Title, task.Id, googleTaskId);
        }
Esempio n. 2
0
        public static void SubmitLocalTaskChanges(Data.TaskList taskList, TaskChanges localchanges)
        {
            foreach (var change in localchanges)
            {
                switch (change.TaskChangeType)
                {
                case TaskChangeType.None:
                    break;

                case TaskChangeType.Create:
                    InsertTask(taskList, change.NewTask);
                    break;

                case TaskChangeType.Change:
                    UpdateTask(taskList, change.NewTask);
                    break;

                case TaskChangeType.ChangeAndMove:
                    UpdateTask(taskList, change.NewTask);
                    MoveTask(taskList, change.NewTask);
                    break;

                case TaskChangeType.Delete:
                    DeleteTask(taskList, change.Id);
                    break;

                default:
                    throw new ArgumentOutOfRangeException();
                }
            }
            if (localchanges.Count > 0)
            {
                TasksReferenceManager.SaveReferencesToXml(taskList.Title);
            }
        }
Esempio n. 3
0
        private static void DeleteTask(Data.TaskList taskList, string taskId)
        {
            var googleTaskId = TasksReferenceManager.GetGoogleTaskId(taskList.Title, taskId);

            if (googleTaskId == "")
            {
                return;
            }

            Service.Tasks.Delete(taskList.Id, googleTaskId).Fetch();
            TasksReferenceManager.RemoveReference(taskList.Title, taskId, googleTaskId);
        }
Esempio n. 4
0
        //try
        //{
        //    request.Fetch();
        //    CommandLine.WriteResult("Result", "Success!");
        //}
        //catch (GoogleApiRequestException ex)
        //{
        //    CommandLine.WriteResult(
        //        "Result", "Failure! (" + ex.RequestError.Code + " - " + ex.RequestError.Message + ")");
        //}

        private static void MoveTask(Data.TaskList taskList, Data.Task task)
        {
            var googleTaskId = TasksReferenceManager.GetGoogleTaskId(taskList.Title, task.Id);

            if (googleTaskId == "")
            {
                return;
            }

            var req = Service.Tasks.Move(taskList.Id, googleTaskId);

            req.Previous = TasksReferenceManager.GetGoogleTaskId(taskList.Title, task.PreviousId);
            req.Parent   = TasksReferenceManager.GetGoogleTaskId(taskList.Title, task.ParentId);

            req.Fetch();
        }
        public static void SaveAbstractSpoonTaskListToXmlFile(string folderpath, string extension, Data.TaskList taskList)
        {
            var settings = new XmlWriterSettings {
                Indent = true, Encoding = System.Text.Encoding.Unicode
            };

            var writer = XmlWriter.Create(folderpath + taskList.Title + "." + extension, settings);

            writer.WriteStartDocument();

            writer.WriteStartElement("TODOLIST");
            writer.WriteAttributeString("NEXTUNIQUEID", TasksReferenceManager.GetNextUniqueAbstractSpoonId(taskList));
            WriteTasksToXml(writer, taskList.TopTask.ChildTasks);
            writer.WriteEndDocument();

            writer.Flush();
            writer.Close();
        }
Esempio n. 6
0
        private static void UpdateTask(Data.TaskList taskList, Data.Task task)
        {
            var googleTaskId = TasksReferenceManager.GetGoogleTaskId(taskList.Title, task.Id);

            if (googleTaskId == "")
            {
                return;
            }

            Task gtask = Service.Tasks.Get(taskList.Id, googleTaskId).Fetch();

            gtask.Title     = task.Title;
            gtask.Status    = task.DoneDate.HasValue ? "completed" : "needsAction";
            gtask.Completed = task.DoneDate.HasValue ? System.Xml.XmlConvert.ToString(task.DoneDate.Value, XmlDateTimeSerializationMode.Utc) : null;
            gtask.Due       = task.DueDate.HasValue ? System.Xml.XmlConvert.ToString(task.DueDate.Value, XmlDateTimeSerializationMode.Utc) : null;
            gtask.Notes     = task.Notes;


            Service.Tasks.Update(gtask, taskList.Id, googleTaskId).Fetch();
        }
Esempio n. 7
0
        private static void Sync(bool doReset = false, string taskListTitle = "")
        {
            if (!FolderPath.ValidateTodoFilePath())
            {
                Console.WriteLine("The setting TodoFilePath in app.config failed to load");
                return;
            }

            FilesHelper.EnsureFoldersExists();

            Console.WriteLine("Logging into Google Task Service ...");
            GoogleTasksManager.LogonToService();

            //Submit local task list changes to remote server
            if (!doReset && taskListTitle == "")
            {
                var listChanges = ChangeListManager.CreateListOfLocalListChangesToSubmitRemotely();
                if (listChanges.Count > 0)
                {
                    Console.WriteLine("Submit local task list changes... ");

                    GoogleTasksManager.SubmitLocalTaskListChanges(listChanges);

                    FilesHelper.DeleteLocalTaskLists(listChanges);
                }
            }

            //Load remote task lists.
            var remoteTaskLists = GoogleTasksManager.LoadLists(taskListTitle);

            if (remoteTaskLists.Count == 0)
            {
                Console.WriteLine("\nNo remoteTaskList found.");
                return;
            }

            //Reset all local tasklists when this option is selected
            if (doReset && taskListTitle == "")
            {
                FilesHelper.DeleteAllTaskLists();
            }

            //For each remote task list, downloading task list or sync with local task list.
            foreach (var remoteTaskList in remoteTaskLists)
            {
                Console.WriteLine("Syncing TaskList " + remoteTaskList.Title + "...");

                Data.TaskList localTaskList = null;

                if (!doReset)
                {
                    localTaskList = AbstractSpoonXmlManager.LoadTaskListFromXmlFile(FolderPath.TodoFilePath, "tdl", remoteTaskList.Title);
                    var localTaskListSync    = AbstractSpoonXmlManager.LoadTaskListFromXmlFile(FolderPath.LocalChangesCompareFilePath, "xml", remoteTaskList.Title);
                    var localTaskListChanges = ChangeListManager.CreateListOfLocalTaskChanges(localTaskListSync, localTaskList);
                    // Send all changes in local file to remote server (Google Task Cloud).
                    Console.WriteLine("Local change count:" + localTaskListChanges.Count);
                    GoogleTasksManager.SubmitLocalTaskChanges(remoteTaskList, localTaskListChanges);
                }

                GoogleTasksManager.LoadTasks(remoteTaskList);

                TasksReferenceManager.ConvertTaskIdToAbstractSpoon(remoteTaskList);

                if (!doReset)
                {
                    AbstractSpoonXmlManager.TransferXmlAttributesAndElements(remoteTaskList, localTaskList);
                }

                AbstractSpoonXmlManager.SaveAbstractSpoonTaskListToXmlFile(FolderPath.TodoFilePath, "tdl", remoteTaskList);
                AbstractSpoonXmlManager.SaveAbstractSpoonTaskListToXmlFile(FolderPath.LocalChangesCompareFilePath, "xml", remoteTaskList);

                Console.WriteLine("Done");
            }
            // Delete local tasklists where not existing on remote server.
            if (taskListTitle == "")
            {
                string[] localTodoFiles = FilesHelper.GetTodoFiles();

                foreach (var remotelyDeleted in ChangeListManager.GetChangeListOfRemotelyDeletedLists(localTodoFiles, remoteTaskLists))
                {
                    Console.WriteLine("Delete local verison of \"" + remotelyDeleted.Title + "\"");
                    FilesHelper.DeleteLocalTaskListByTitle(remotelyDeleted.Title);
                }
            }
        }