/// <summary> /// ToDoデータ(ラベル部分)をクリックした時の処理 /// </summary> /// <param name="sender">EventのObject</param> /// <param name="e">EventObjectの引数</param> private void LblTodoDeleteClick(object sender, EventArgs e) { // タスクを削除する際に削除済みタスクなら何もしない Panel panel = (Panel)((Control)sender).Parent; if (panel.BackColor == Todo.DeletedBGColor) { return; } else { // 完了タスク状態に切り替える(打ち消し or 打ち消し+削除) TodoManager todo = TodoManager.GetInstanse(); this.ChangeCompleteTaskStyle(panel, todo.CompleteTaskStyle); //// マウスオーバー時に表示される修正ボタンは非表示にする foreach (Control control in panel.Controls) { if (control.GetType().ToString() == "System.Windows.Forms.Button") { control.Visible = false; } } } this.DeleteTodo((Panel)((Control)sender).Parent); }
/// <summary> /// 完了済みタスクの履歴リンクをクリックした際の処理 /// </summary> /// <param name="sender">Event時Object</param> /// <param name="e">Event時Argument</param> private void LLblCompleteTaskHistory_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) { PersonalToDoHistory form = new PersonalToDoHistory(); form.StartPosition = FormStartPosition.CenterParent; form.ShowDialog(); // データの復活が行われたのであれば、DataGridViewの再描画が必要 if (form.FlagDataRestore) { TodoManager todo = TodoManager.GetInstanse(); todo.Show(this.FlpViewArea, this.Modify); } }
/// <summary> /// [個人ToDo]完了タスクを打ち消し表示にするラジオボタン変更時の処理 /// </summary> /// <param name="sender">Event時Object</param> /// <param name="e">Event時Argument</param> private void RbtnCompleteTaskStrikeout_CheckedChanged(object sender, EventArgs e) { // フォーカスがはずれたときのイベントは無視する if (!this.RbtnComapleteTaskStrikeout.Focused) { return; } // 完了済みタスクの表示を切り替える(表示+打消し線) TodoManager todo = TodoManager.GetInstanse(); todo.CompleteTaskStyle = TodoManager.CompleteTaskShowStyle.Strikeout; todo.ChangeCompleteTaskDisplay(this.FlpViewArea); }
/// <summary> /// タスクのパネルサイズが変わった際のイベント /// </summary> /// <param name="sender">Event時Object</param> /// <param name="e">Event時Argument</param> private void FlpViewArea_SizeChanged(object sender, EventArgs e) { // 前回のイベント時と横方向のサイズが変わっていなければこれ以降の処理は不要 if (this.PreFlpViewAreaWidth == this.FlpViewArea.Width) { return; } // 横方向のサイズが変われば、TodoListの幅を追従させる TodoManager todo = TodoManager.GetInstanse(); foreach (Control pnlControl in this.FlpViewArea.Controls) { todo.TodoRelayout((Panel)pnlControl, this.FlpViewArea.Width); } this.PreFlpViewAreaWidth = this.FlpViewArea.Width; }
/// <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 MainForm_Load(object sender, EventArgs e) { // 個人ToDoで使う処理 this.Modify = (id, deadline, contents) => { if (deadline == string.Empty) { this.CbxToBeDetermined.Checked = true; } else { this.CbxToBeDetermined.Checked = false; this.DtpDeadline.Value = Convert.ToDateTime(deadline); } this.TbxContents.Text = contents; this.TbxContents.Tag = id; this.BtnCancel.Visible = true; }; // 前回終了時の完了タスクの表示設定を再現 if (Properties.Settings.Default.TodoCompleteTaskDisplay == "hidden") { this.RbtnCompleteTaskHidden.Checked = true; } else { this.RbtnComapleteTaskStrikeout.Checked = true; } // 個人のアプリを表示 TodoManager todo = TodoManager.GetInstanse(); // 完了タスクの表示について(非表示 or 表示+打ち消し) todo.CompleteTaskStyle = this.RbtnCompleteTaskHidden.Checked ? TodoManager.CompleteTaskShowStyle.Hidden : TodoManager.CompleteTaskShowStyle.Strikeout; todo.Show(this.FlpViewArea, this.Modify); }
/// <summary> /// ToDoデータの登録、変更を行う /// </summary> private void TodoListExecute() { try { bool ret = false; string id = (this.TbxContents.Tag == null) ? string.Empty : this.TbxContents.Tag.ToString(); TodoManager todo = TodoManager.GetInstanse(); if (id == string.Empty) { // ID無 = 修正中ではない if (this.CbxToBeDetermined.Checked) { // 期日未定の時 ret = todo.Create(this.FlpViewArea, this.Modify, this.TbxContents.Text); } else { // 期日有りの時 ret = todo.Create(this.FlpViewArea, this.Modify, this.TbxContents.Text, this.DtpDeadline.Value); } } else { // ID有 = 修正中 if (this.CbxToBeDetermined.Checked) { // 期日未定の時 ret = todo.Update(id, this.FlpViewArea, this.TbxContents.Text); } else { // 期日有りの時 ret = todo.Update(id, this.FlpViewArea, this.TbxContents.Text, this.DtpDeadline.Value); } // 修正キャンセルボタンの非表示 this.BtnCancel.Visible = false; } // 処理が完了したら初期化しておく if (ret) { // Formの初期化 this.TbxContents.Text = string.Empty; this.CbxToBeDetermined.Checked = false; this.DtpDeadline.Value = DateTime.Today; Todo td = new Todo(); foreach (Control pnlAreaControl in this.FlpViewArea.Controls) { foreach (Control control in pnlAreaControl.Controls) { Button btn = control as Button; if (btn == null || btn.Tag == null) { continue; } td.ResetModifyBackGroundColor((Panel)pnlAreaControl); } } } this.TbxContents.Tag = null; } catch (Exception ex) { MessageBox.Show(ex.Message); } this.TbxContents.Focus(); }
/// <summary> /// ClickされたTodoを削除する /// </summary> /// <param name="pnlArea">Todoの一つのGUIデータ</param> private void DeleteTodo(Panel pnlArea) { TodoManager todo = TodoManager.GetInstanse(); todo.Delete(pnlArea); }