Beispiel #1
0
        /// <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);
            }
        }
Beispiel #2
0
        /// <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);
        }
Beispiel #3
0
        /// <summary>
        /// 1週間以内に完了したタスクを表示する
        /// </summary>
        private void ShowComplete1WeekTask()
        {
            // 1週間以内に削除したタスクを表示する
            TodoDB db = new TodoDB();
            List <TodoManager.CompleteDataType> dataList = db.Complete1WeekTask();

            this.ShowCompleteTask(dataList);
        }
Beispiel #4
0
        /// <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);
        }
Beispiel #5
0
        /// <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);
        }
Beispiel #6
0
        /// <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;
            }
        }
Beispiel #7
0
        /// <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);
        }