/*************************************************************************************************************************************************************************/ //Reakcja na zaznaczenie/odznaczenie pola checkbox - za pomocą funkcji changeCheckStatus zmieniana jest wartość stutusu w bazie dla konkretnego zadania private void TasksList_ItemCheck(object sender, ItemCheckEventArgs e) { if (e.NewValue == CheckState.Checked) { DataBaseSession.changeCheckStatus(toDoList[e.Index].Id, 1); //jeśli pole zostało zaznaczone } else { DataBaseSession.changeCheckStatus(toDoList[e.Index].Id, 0); //jeśli zostało odznaczone } }
/*************************************************************************************************************************************************************************/ /***********************************************************OBSLUGA KLAWISZY DLA TEXT BOXA********************************************************************************/ private void EditTextBox_KeyDown(object sender, KeyEventArgs e) { //pole tekstowe pojawia się tylko wówczas gdy dodawane będzie nowe zadane, bądź edytowane już istniejące, rozpoznawane na podstawie trybu (mode) if (e.KeyCode == Keys.Enter && editTextBox.Visible == true) { if (mode == 1) { if (editTextBox.Text != "") { toDoList.Add(DataBaseSession.addTaskToDo(taskCalendar.SelectionRange.Start.ToShortDateString(), editTextBox.Text)); tasksList.Items.Add(editTextBox.Text); editTextBox.Visible = false; tasksList.Enabled = true; tasksList.SelectedIndex = tasksList.Items.Count - 1; //by zaznaczone było ostatnie zadanie(właśnie dodane), niezależnie od tego które zaznaczone było wcześniej MessageBox.Show("Dodane!"); mode = 0; } else { MessageBox.Show("Pole tekstowe nie może być puste!", "Błąd"); } } else if (mode == 2) { if (editTextBox.Text != "") { int x = tasksList.SelectedIndex; DataBaseSession.editTaskToDo(toDoList[x].Id, editTextBox.Text); MessageBox.Show("Edytowane"); tasksList.Items[tasksList.SelectedIndex] = editTextBox.Text; editTextBox.Visible = false; tasksList.Enabled = true; mode = 0; } else { MessageBox.Show("Pole tekstowe nie może być puste!", "Błąd"); } } tasksList.Focus(); } if (e.KeyCode == Keys.Escape) //jeśli pole tekstowe jest widoczne - czyli w trybie edycji lub dodawania, esc przenosi do listy, wyłączając jednocześnie tryb dodawania/edycji { editTextBox.Text = ""; editTextBox.Visible = false; tasksList.Enabled = true; tasksList.Focus(); mode = 0; } }
//Pomocnicza funkcja do usuwania, by uniknąć pisania dwa razy tego samego w kodzie private void deleteTask() { DialogResult dialogResult = MessageBox.Show("Czy na pewno chcesz usunąć to zadanie z listy?", "Uwaga", MessageBoxButtons.YesNo); if (dialogResult == DialogResult.Yes) { int x = tasksList.SelectedIndex; tasksList.Items.RemoveAt(x); DataBaseSession.deleteTaskToDo(toDoList[x].Id); toDoList.RemoveAt(x); if (x > 0) { tasksList.SelectedIndex = x - 1; //aby zaznaczone zostało zadanie, które było przed usuniętym } } }
//Reakcja na zdarzenie zmiany daty w kalendarzu - aktualnie widoczna lista jest czyszczona i wypełniana "zdarzeniami" które są zaplanowane na zaznaczoną datę private void TaskCalendar_DateChanged(object sender, DateRangeEventArgs e) { editTextBox.Visible = false; editTextBox.Text = ""; mode = 0; tasksList.Items.Clear(); toDoList = DataBaseSession.getListByDate(taskCalendar.SelectionRange.Start.ToShortDateString()); foreach (TaskToDo task in toDoList) { int x = tasksList.Items.Add(task.Description); if (task.Status == 1) { tasksList.SetItemChecked(x, true); } else { tasksList.SetItemChecked(x, false); } } }
int mode = 0; // 1 - tryb dodawania, 2 - tryb edycji public MainWindow() { InitializeComponent(); editTextBox.Visible = false; /***********************************************************POBIERANIE LIST Z ZADANIAMI NA PODSTAWIE DATY*************************************************************/ //pobranie z bazy listy zadań na dany dzień na podstawie daty w której została uruchomiana aplikacja toDoList = DataBaseSession.getListByDate((DateTime.Now.ToShortDateString())); foreach (TaskToDo task in toDoList) { int x = tasksList.Items.Add(task.Description); if (task.Status == 1) { tasksList.SetItemChecked(x, true); } else { tasksList.SetItemChecked(x, false); } } //powiadomienia na dziś po włączeniu aplikacji: liczba pozostałych do wykonania zadań int tasksCount = tasksList.Items.Count; int tasksChecked = tasksList.CheckedItems.Count; int tasksToDo = tasksCount - tasksChecked; if (tasksToDo != 0) { MessageBox.Show("Masz dziś niewykonane zadania! Liczba pozostałych zadań: " + tasksToDo, "Uwaga!"); } else { MessageBox.Show("Wszystkie zadania z listy na dziś zostały wykonane :)", "Gratulacje!"); } }