private void OnEnable() { pomodoroState = PomodoroState.Stopped; pomodoroTasks = new List <PomodoroTask>(); if (!File.Exists(TaskFile)) { using (var stream = File.CreateText(TaskFile)) { stream.WriteLine(string.Empty); } } foreach (var line in File.ReadLines(TaskFile)) { if (string.IsNullOrEmpty(line)) { continue; } var pomodoroTask = new PomodoroTask { Title = line, }; pomodoroTasks.Add(pomodoroTask); } newPomodoroTask = new PomodoroTask { Title = string.Empty, }; RestoreProgression(); }
private void RestoreProgression() { if (EditorPrefs.GetBool("Pomodoro.enable", true)) { var stateString = EditorPrefs.GetString("Pomodoro.pomodoroState"); Enum.TryParse(stateString, out pomodoroState); var workingTaskTitle = EditorPrefs.GetString("Pomodoro.workingTask"); if (!string.IsNullOrEmpty(workingTaskTitle)) { workingTask = new PomodoroTask { Title = workingTaskTitle, }; } var durationString = EditorPrefs.GetString("Pomodoro.duration"); if (long.TryParse(durationString, out var durationTick)) { duration = TimeSpan.FromTicks(durationTick); } var lastTickString = EditorPrefs.GetString("Pomodoro.lastTick"); if (long.TryParse(lastTickString, out var lastTickValue)) { lastTick = new DateTime(lastTickValue); } } }
private void StartBreak() { workingTask = null; duration = TimeSpan.FromMinutes(BreakTime); pomodoroState = PomodoroState.BreakDoing; }
private void StopTask() { if (workingTask == null) { return; } workingTask = null; pomodoroState = PomodoroState.Stopped; CleanProgression(); }
private IEnumerable <Execution> AdaptExecution(PomodoroTask pomodoroTask) { var executions = new List <Execution>(); // adapt finished pomodoros executions.AddRange(pomodoroTask.FinishedPomodoros.Select((f) => new Execution { Start = f - TimeSpan.FromMinutes(25), Duration = TimeSpan.FromMinutes(25) })); // adapt zen executions executions.AddRange(pomodoroTask.ExecutedMinutes.Select((e) => new Execution { Start = e.Item1 - TimeSpan.FromMinutes(e.Item2), Duration = TimeSpan.FromMinutes(e.Item2) })); return(executions); }
private void StartTask() { if (!pomodoroTasks.Any()) { return; } workingTask = pomodoroTasks.FirstOrDefault(); if (workingTask == null) { return; } pomodoroTasks.Remove(workingTask); duration = TimeSpan.FromMinutes(TaskTime); pomodoroState = PomodoroState.TaskDoing; }
private Task AdaptData(PomodoroTask pomodoroTask) { // adapt task var task = new Task { Name = pomodoroTask.Title, Description = pomodoroTask.Description, Group = pomodoroTask.Group, Start = pomodoroTask.StartDate, End = pomodoroTask.Deadline.Value, Executions = AdaptExecution(pomodoroTask) }; // assign task reference foreach(var execution in task.Executions) { execution.Task = task; } return task; }
private Task AdaptData(PomodoroTask pomodoroTask) { // adapt task var task = new Task { Name = pomodoroTask.Title, Description = pomodoroTask.Description, Group = pomodoroTask.Group, Start = pomodoroTask.StartDate, End = pomodoroTask.Deadline.Value, Executions = AdaptExecution(pomodoroTask) }; // assign task reference foreach (var execution in task.Executions) { execution.Task = task; } return(task); }
private IEnumerable<Execution> AdaptExecution(PomodoroTask pomodoroTask) { var executions = new List<Execution>(); // adapt finished pomodoros executions.AddRange(pomodoroTask.FinishedPomodoros.Select((f) => new Execution { Start = f - TimeSpan.FromMinutes(25), Duration = TimeSpan.FromMinutes(25) })); // adapt zen executions executions.AddRange(pomodoroTask.ExecutedMinutes.Select((e) => new Execution { Start = e.Item1-TimeSpan.FromMinutes(e.Item2), Duration = TimeSpan.FromMinutes(e.Item2) })); return executions; }
private void DrawTasks() { EditorGUILayout.BeginVertical(); PomodoroTask toUpdateTask = null; var updateType = UpdateType.None; var originColor = GUI.backgroundColor; var index = 0; foreach (var pomodoroTask in pomodoroTasks) { EditorGUILayout.BeginHorizontal(); pomodoroTask.Title = EditorGUILayout.TextField($"Task #{++index}", pomodoroTask.Title); GUI.backgroundColor = Color.red; if (GUILayout.Button("✘", GUILayout.Width(20))) { updateType = UpdateType.Remove; toUpdateTask = pomodoroTask; } if (GUILayout.Button("↑", GUILayout.Width(20))) { updateType = UpdateType.Up; toUpdateTask = pomodoroTask; } if (GUILayout.Button("↓", GUILayout.Width(20))) { updateType = UpdateType.Down; toUpdateTask = pomodoroTask; } GUI.backgroundColor = originColor; EditorGUILayout.EndHorizontal(); } if (toUpdateTask != null) { switch (updateType) { case UpdateType.Remove: pomodoroTasks.Remove(toUpdateTask); break; case UpdateType.Up: var moveUpIndex = pomodoroTasks.IndexOf(toUpdateTask); if (moveUpIndex == 0) { break; } pomodoroTasks.Remove(toUpdateTask); pomodoroTasks.Insert(moveUpIndex - 1, toUpdateTask); break; case UpdateType.Down: var moveDownIndex = pomodoroTasks.IndexOf(toUpdateTask); if (moveDownIndex == pomodoroTasks.Count - 1) { break; } pomodoroTasks.Remove(toUpdateTask); pomodoroTasks.Insert(moveDownIndex + 1, toUpdateTask); break; } } EditorGUILayout.BeginHorizontal(); newPomodoroTask.Title = EditorGUILayout.TextField("New Task", newPomodoroTask.Title); GUI.backgroundColor = Color.green; if (GUILayout.Button("✚", GUILayout.Width(70))) { pomodoroTasks.Add(newPomodoroTask); newPomodoroTask = new PomodoroTask { Title = string.Empty, }; } GUI.backgroundColor = originColor; EditorGUILayout.EndHorizontal(); EditorGUILayout.EndVertical(); }