/// <summary> /// Todo一覧を表示する /// </summary> /// <param name="viewArea">表示するエリア</param> /// <param name="modify">修正ボタンを押した際の挙動(フォーム部分の変更を行うメソッドを受け取る)</param> public void Show(FlowLayoutPanel viewArea, Action <string, string, string> modify) { ////全て削除して綺麗にしておく viewArea.Controls.Clear(); TodoDB db = new TodoDB(); Todo todo = new Todo(); List <DataType> dataAll = db.All(); // 期間ありデータ foreach (DataType data in dataAll.Where(d => !d.ToBeDetermined).OrderBy(d => d.Deadline).ToList()) { // 一つずつデータを受け取りパネルデータを受け取り追加する Panel panelData = todo.Create(data, this.CompleteTaskStyle, modify); this.TodoRelayout(panelData, viewArea.Width); viewArea.Controls.Add(panelData); } // 期間なしデータ foreach (DataType data in dataAll.Where(d => d.ToBeDetermined).OrderBy(d => d.Deadline).ToList()) { // 一つずつデータを受け取りパネルデータを受け取り追加する Panel panelData = todo.Create(data, this.CompleteTaskStyle, modify); this.TodoRelayout(panelData, viewArea.Width); viewArea.Controls.Add(panelData); } }
/// <summary> /// Todo1データを削除する /// </summary> /// <param name="pnlArea">Todo1データ</param> public void Delete(Panel pnlArea) { int id = Convert.ToInt32(pnlArea.Tag.ToString()); TodoDB db = new TodoDB(); db.DeleteToDo(id); }
/// <summary> /// 1週間以内に完了したタスクを表示する /// </summary> private void ShowComplete1WeekTask() { // 1週間以内に削除したタスクを表示する TodoDB db = new TodoDB(); List <TodoManager.CompleteDataType> dataList = db.Complete1WeekTask(); this.ShowCompleteTask(dataList); }
/// <summary> /// 任意の期間の完了タスクを表示する /// </summary> /// <param name="startTime">開始日</param> /// <param name="endTime">完了日</param> private void ShowCompleteAnyPeriodTask(DateTime startTime, DateTime endTime) { if (endTime < startTime) { MessageBox.Show("開始期日は、終了期日より前に設定してください"); return; } // 任意の期間内に削除したタスクを表示する TodoDB db = new TodoDB(); List <TodoManager.CompleteDataType> dataList = db.CompleteAnyPeriodTask(startTime, endTime); this.ShowCompleteTask(dataList); }
/// <summary> /// 期限有り時データを作成 /// </summary> /// <param name="flpViewArea">ToDoデータを保持するエリア</param> /// <param name="modify">修正ボタンを押した際の挙動(フォーム部分の変更を行うメソッドを受け取る)</param> /// <param name="contents">内容</param> /// <param name="deadline">期限</param> /// <param name="tobedetermined">未定フラグ</param> /// <returns>true:作成成功, false:作成失敗</returns> private bool Create(FlowLayoutPanel flpViewArea, Action <string, string, string> modify, string contents, DateTime deadline, bool tobedetermined) { // データに不備があれば終了する if (contents == string.Empty) { MessageBox.Show("内容が空欄です"); return(false); } DataType d = new DataType(); d.Contents = contents; d.CreateTime = DateTime.Today; d.Deadline = Convert.ToDateTime(deadline.ToString("yyyy-MM-dd")); // 時間を落とす d.ToBeDetermined = tobedetermined; d.ExecuteUser = Environment.UserName; try { TodoDB db = new TodoDB(); d.Id = db.InsertToDo(d); } catch { throw; } // 表示する Todo todo = new Todo(); Panel panelData = todo.Create(d, this.CompleteTaskStyle, modify); TodoManager todoMG = TodoManager.GetInstanse(); todoMG.TodoRelayout(panelData, flpViewArea.Width); flpViewArea.Controls.Add(panelData); // 並び替えを行う this.RelocateTodo(flpViewArea, d); return(true); }
/// <summary> /// 完了したタスク一覧をクリックした際の処理 /// </summary> /// <param name="sender">Event時Object</param> /// <param name="e">Event時Argument</param> private void DgvCompleteTaskList_CellContentClick(object sender, DataGridViewCellEventArgs e) { // 復帰ボタンの列で1行目以降でイベントが発生したとき意外は何もしない if (-1 == e.RowIndex || e.ColumnIndex != 1) { return; } // 完了タスクを復帰させる int id = Convert.ToInt32(this.DgvCompleteTaskList.Rows[e.RowIndex].Cells[0].Value); TodoDB db = new TodoDB(); try { // タスクを復活させる。 db.RestoreCompleteTask(id); // データを復活させたらフラグを立てておく(フォームを閉じた後で親のフォームから復帰させた事実を知る方法として保持しておく) this.FlagDataRestore = true; // DataGridViewの内容を再読み込みをする if (this.RbtnCompleteToday.Checked) { this.ShowCompleteTodayTask(); } else if (this.RbtnComplete1Week.Checked) { this.ShowComplete1WeekTask(); } else { DateTime startTime = this.DtpStartTime.Value; DateTime endTime = this.DtpEndTime.Value; this.ShowCompleteAnyPeriodTask(startTime, endTime); } } catch { throw; } }
/// <summary> /// ToDoデータのUpdate /// </summary> /// <param name="id">Update対象のID</param> /// <param name="flpViewArea">ToDoが保持されているFlpViewArea</param> /// <param name="contents">ToDoの内容</param> /// <param name="deadline">期日</param> /// <param name="tobedetermined">未定フラグ</param> /// <returns>True:Update成功、False:Update失敗</returns> private bool Update(string id, FlowLayoutPanel flpViewArea, string contents, DateTime deadline, bool tobedetermined) { // データに不備があれば終了する if (contents == string.Empty) { MessageBox.Show("内容が空欄です"); return(false); } DataType d = new DataType(); d.Contents = contents; d.CreateTime = DateTime.Today; d.Deadline = deadline; d.ToBeDetermined = tobedetermined; d.Id = Convert.ToInt32(id); try { TodoDB db = new TodoDB(); db.UpdateTodo(d); } catch { throw; } // 表示内容を更新し、必要に応じて順番を入れ替える this.RelocateTodo(flpViewArea, d); // ID情報から内容の更新をする foreach (Control pnlArea in flpViewArea.Controls) { string tempID = ((Panel)pnlArea).Tag.ToString(); if (tempID != d.Id.ToString()) { continue; } // データを書き換える foreach (Control control in pnlArea.Controls) { Label lbl = control as Label; if (lbl == null || lbl.Tag == null) { continue; } if (lbl.Tag.ToString() == "DeadLine") { lbl.Text = d.ToBeDetermined ? string.Empty : d.Deadline.ToString("yyyy-MM-dd(ddd)"); } else if (lbl.Tag.ToString() == "Contents") { lbl.Text = d.Contents; } else if (lbl.Tag.ToString() == "CountDown") { if (d.ToBeDetermined) { lbl.ForeColor = Color.FromArgb(54, 54, 54); lbl.Text = "未定…"; } else { int countdown = (d.Deadline - DateTime.Today).Days; if (countdown == 0) { lbl.ForeColor = Color.Blue; lbl.Text = "本日期限"; } else if (countdown < 0) { lbl.ForeColor = Color.Red; lbl.Text = string.Format("{0}日遅延", Math.Abs(countdown).ToString()); } else { lbl.ForeColor = Color.FromArgb(54, 54, 54); lbl.Text = string.Format("{0}日後", countdown.ToString()); } } } } } return(true); }