예제 #1
0
 internal static void SuggestTask()
 {
     SetPidginStatus("Available", "");
     Notification notify;
     Tasks tasks = new Tasks();
     tasks.Load();
     Task task = tasks.GetPriority();
     if (task != null)
     {
         notify = new Notification("Tasks", "This is the next priority task:\n" + task.Summary);
         notify.AddAction("select", "Select", HandleSelectTask);
         notify.AddAction("postpone", "Delay", HandlePostponeTask);
         notify.AddAction("AddTask", "Add Task", HandleAddTask);
         notify.Timeout = 0;
         notify.Urgency = Urgency.Critical;
         notify.Show();
     }
     else
     {
         notify = new Notification("Tasks", "What are you working on?");
         notify.AddAction("AddTask", "Add Task", HandleAddTask);
         notify.Timeout = 0;
         notify.Urgency = Urgency.Critical;
         notify.Show();
     }
 }
예제 #2
0
 static void HandleDoNothing(object sender, ActionArgs e)
 {
     Tasks tasks = new Tasks();
     tasks.Load();
     Task current = tasks.CurrentTask();
     if (!current.IsWorked(DateTime.Now))
     {
         current.Worked.Add(DateTime.Now);
     }
     tasks.Save();
     SetPidginStatus("Busy", current.Summary);
 }
예제 #3
0
 protected void OnButtonOkClicked(object sender, System.EventArgs e)
 {
     Tasks tasks = new Tasks();
     tasks.Load();
     if (current.Active)
     {
         tasks.SetTaskNotActive();
     }
     List<Subtask> subtasks = Subtasks();
     if (!edit)
     {
         task = new Task(DateTime.Now, summary.Text, description.Buffer.Text, priority.Active*5, current.Active);
         if (current.Active)
         {
             task.Start = DateTime.Now;
             if (!task.IsWorked(DateTime.Now))
             {
                 task.Worked.Add(DateTime.Now);
             }
         }
         task.Subtasks = subtasks;
         tasks.tasks.Add(task);
         tasks.Save();
     }
     else
     {
         DateTime start = task.Date;
         List<DateTime> worked = new List<DateTime>();
         foreach (DateTime date in task.Worked)
         {
             worked.Add(date);
         }
         tasks.Remove(task);
         task = new Task(start, summary.Text, description.Buffer.Text, priority.Active*5, current.Active);
         foreach (DateTime date in worked)
         {
             task.Worked.Add(date);
         }
         if (current.Active)
         {
             task.Start = DateTime.Now;
             if (!task.IsWorked(DateTime.Now))
             {
                 task.Worked.Add(DateTime.Now);
             }
         }
         task.Subtasks = subtasks;
         tasks.tasks.Add(task);
         tasks.Save();
     }
 }
예제 #4
0
 internal static void DisplayMessage()
 {
     Tasks tasks = new Tasks();
     tasks.Load();
     Task current = tasks.CurrentTask();
     Notification notify;
     if (current != null)
     {
         notify = new Notification("Tasks", "Are you still working on this task?\n" + current.Summary);
         notify.AddAction("yes", "Yes", HandleDoNothing);
         notify.AddAction("view", "View", HandleEditTask);
         notify.AddAction("finish", "Finish", HandleFinishedTask);
         notify.Timeout = 0;
         notify.Urgency = Urgency.Critical;
         notify.Show();
     }
     else
     {
         SuggestTask();
     }
 }
예제 #5
0
 static void HandleEditTask(object sender, ActionArgs e)
 {
     Tasks tasks = new Tasks();
     tasks.Load();
     EditTask(tasks.CurrentTask());
 }
예제 #6
0
 static void SelectTask()
 {
     Tasks tasks = new Tasks();
     tasks.Load();
     tasks.FinishCurrentTaskAndStartPriorityTask();
     Task current = tasks.CurrentTask();
     SetPidginStatus("Busy", current.Summary);
 }
예제 #7
0
 static void HandlePostponeTask(object sender, ActionArgs e)
 {
     Tasks tasks = new Tasks();
     tasks.Load();
     tasks.PostponePriorityTask();
     SuggestTask();
 }
예제 #8
0
 static void HandleFinishedTask(object sender, ActionArgs e)
 {
     Tasks tasks = new Tasks();
     tasks.Load();
     Task task = tasks.CurrentTask();
     tasks.SetCurrentTaskFinished();
     Notification notify = new Notification();
     notify.Summary = "Task Finished";
     notify.Body = task.Summary;
     notify.Urgency = Urgency.Critical;
     notify.Show();
     SuggestTask();
 }
예제 #9
0
 internal static int GenerateRandomID()
 {
     Random rand;
     Tasks tasks = new Tasks ();
     tasks.Load ();
     bool done = true;
     int id;
     do {
         rand = new Random (DateTime.Now.Millisecond + DateTime.Now.Second + DateTime.Now.Minute + DateTime.Now.Hour + DateTime.Now.Day + DateTime.Now.Month + DateTime.Now.Year); // So we don't get stuck in an infinite loop
         id = rand.Next (100000000, 999999999); //Generate a random ID.
         foreach (Task task in tasks.tasks) {
             foreach (Subtask subtask in task.Subtasks) {
                 if (subtask.ID == id)
                     done = false;
             }
             if (task.ID == id)
                 done = false;
         }
     } while (!done);
     return id;
 }
예제 #10
0
        void PopulateWindow()
        {
            tasks = new Tasks();

            TreeViewColumn inProgress = new TreeViewColumn();
            TreeViewColumn summary = new TreeViewColumn();
            TreeViewColumn date = new TreeViewColumn();
            TreeViewColumn id = new TreeViewColumn();
            id.Visible = false;

            taskTreeView.HeadersVisible = false;
            taskTreeView.AppendColumn(inProgress);
            taskTreeView.AppendColumn(summary);
            taskTreeView.AppendColumn(date);
            taskTreeView.AppendColumn(id);

            taskList = new ListStore(typeof (bool), typeof (string), typeof (string), typeof (string));
            taskTreeView.Model = taskList;

            //Render the cells
            CellRendererToggle inProgressCell = new CellRendererToggle();
            inProgress.PackStart(inProgressCell, true);
            inProgressCell.Xpad = 10;
            inProgressCell.Ypad = 10;
            CellRendererText summaryCell = new CellRendererText();
            summary.PackStart(summaryCell, true);
            summaryCell.Xpad = 10;
            summaryCell.Ypad = 10;
            summaryCell.Editable = true;
            summaryCell.Edited += HandleSummaryCellEdited;
            CellRendererText dateCell = new CellRendererText();
            date.PackStart(dateCell, true);
            dateCell.Xpad = 10;
            dateCell.Ypad = 10;
            CellRendererText idCell = new CellRendererText();
            id.PackStart(idCell, true);
            idCell.Xpad = 10;
            idCell.Ypad = 10;

            inProgress.AddAttribute(inProgressCell, "active", 0);
            summary.AddAttribute(summaryCell, "text", 1);
            date.AddAttribute(dateCell, "text", 2);
            id.AddAttribute(idCell, "text", 3);

            Refresh();
        }
예제 #11
0
 static void HandleEditTaskActivated(object sender, EventArgs e)
 {
     Tasks tasks = new Tasks();
     tasks.Load();
     RequestWork.EditTask(tasks.CurrentTask());
 }
예제 #12
0
 static void MenuViewTaskActivated(object sender, EventArgs e)
 {
     Tasks tasks = new Tasks();
     tasks.Load();
     Task current = tasks.CurrentTask();
     Notification notify = new Notification(current.Summary, current.Description.Substring(0, (current.Description.Length > 1000 ? 1000 : current.Description.Length)));
     notify.AddAction("edit", "Edit", HandleEditTaskActivated);
     notify.AddAction("finish", "Mark Finished", MenuFinishTaskActivated);
     notify.AddAction("list", "Tasks", HandleViewTaskListActivated);
     notify.Urgency = Urgency.Critical;
     notify.Show();
 }
예제 #13
0
 static void MenuFinishTaskActivated(object sender, EventArgs e)
 {
     Tasks tasks = new Tasks();
     tasks.Load();
     Task task = tasks.CurrentTask();
     tasks.SetCurrentTaskFinished();
     Notification notify = new Notification();
     notify.Summary = "Task Finished";
     notify.Body = task.Summary;
     notify.Urgency = Urgency.Critical;
     notify.Show();
     RequestWork.SuggestTask();
 }