Exemplo n.º 1
0
        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();
        }
Exemplo n.º 2
0
        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);
                }
            }
        }
Exemplo n.º 3
0
        private void StartBreak()
        {
            workingTask = null;
            duration    = TimeSpan.FromMinutes(BreakTime);

            pomodoroState = PomodoroState.BreakDoing;
        }
Exemplo n.º 4
0
        private void StopTask()
        {
            if (workingTask == null)
            {
                return;
            }

            workingTask = null;

            pomodoroState = PomodoroState.Stopped;

            CleanProgression();
        }
Exemplo n.º 5
0
        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);
        }
Exemplo n.º 6
0
        private void StartTask()
        {
            if (!pomodoroTasks.Any())
            {
                return;
            }

            workingTask = pomodoroTasks.FirstOrDefault();
            if (workingTask == null)
            {
                return;
            }

            pomodoroTasks.Remove(workingTask);
            duration = TimeSpan.FromMinutes(TaskTime);

            pomodoroState = PomodoroState.TaskDoing;
        }
Exemplo n.º 7
0
        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;
        }
Exemplo n.º 8
0
        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);
        }
Exemplo n.º 9
0
        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;
        }
Exemplo n.º 10
0
        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();
        }