Esempio n. 1
0
        private void AddTask()
        {
            string taskname = textBox1.Text;

            if (taskname.Count() == 0)
            {
                MessageBox.Show("タスク名が入力されていません", "注意", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }
            if (!Utility.Xml.IsValidXmlName(taskname))
            {
                MessageBox.Show("無効な文字が含まれています:\n", "注意");
                return;
            }
            textBox1.Text = "";

            // 登録とビューの更新
            TaskInfoManager.Entry(taskname, taskname);
            TreeViewUpdate();

            // ビューの選択を変える
            TreeNode[] nodes = taskTreeView_.Nodes.Find(taskname + taskTreeView_.PathSeparator, false);

            if (nodes.Count() > 0)
            {
                taskTreeView_.SelectedNode = nodes[0];
            }
        }
Esempio n. 2
0
        private void finishBotton__Click(object sender, EventArgs e)
        {
            var taskinfo = FindSelectTaskInfo();

            if (taskinfo == null)
            {
                return;
            }

            // 状態を遷移させる
            taskinfo.State = TaskStatus.completion;
            FullUpdate();

            // 一つ下の要素があれば進行中にする
            // todo 別関数化
            var fullpath  = taskTreeView_.SelectedNode.FullPath;
            var nodegroup = taskTreeView_.Nodes.Find(fullpath + taskTreeView_.PathSeparator, true);

            if (nodegroup.Count() > 0 && nodegroup[0].NextNode != null && nodegroup[0].Parent != null)
            {
                var nextNode = nodegroup[0].NextNode;
                var nextInfo = TaskInfoManager.Find(nextNode.FullPath);

                if (nextInfo.State == TaskStatus.still)
                {
                    nextInfo.State = TaskStatus.active;
                }

                TreeViewDecorationUpdate(nextNode.Parent.Nodes);
                taskTreeView_.SelectedNode = nextNode;
            }
        }
Esempio n. 3
0
        // 名前の変更を終了する
        private void taskTreeView__AfterLabelEdit(object sender, NodeLabelEditEventArgs e)
        {
            // hack: 助長な部分が多い、もう少し短くできるはず..
            if (e.Label == null)
            {
                taskTreeView_.LabelEdit = false;
                return;
            }
            if (e.Label.Length == 0)
            {
                e.CancelEdit            = true;
                taskTreeView_.LabelEdit = false;
                return;
            }
            if (!Utility.Xml.IsValidXmlName(e.Label))
            {
                e.CancelEdit = true;
                MessageBox.Show("無効な文字が含まれています:\n ", "注意");
                e.Node.BeginEdit();
                return;
            }

            // 名前の変更を反映
            var info = TaskInfoManager.Find(e.Node.FullPath);

            if (info != null)
            {
                info.Name = e.Label;
            }

            // 正しく終了
            e.Node.EndEdit(false);
            taskTreeView_.LabelEdit = false;
        }
Esempio n. 4
0
 private TaskInfo FindSelectTaskInfo()
 {
     if (taskTreeView_.SelectedNode == null)
     {
         return(null);
     }
     return(TaskInfoManager.Find(taskTreeView_.SelectedNode.FullPath));
 }
Esempio n. 5
0
        private void taskTreeView__AfterExpand(object sender, TreeViewEventArgs e)
        {
            var info = TaskInfoManager.Find(e.Node?.FullPath);

            if (info != null)
            {
                info.IsExpanded = true;
            }
        }
Esempio n. 6
0
        // ロード
        private void LoadTaskHistory()
        {
            TaskInfoManager.Load(Properties.Settings.Default.serializedTasks);

            if (Properties.Settings.Default.lastDay.Day != DateTime.Today.Day)
            {
                TaskInfoManager.OutputHistory(DateTime.Today.AddSeconds(-1));
                Properties.Settings.Default.lastDay = DateTime.Today;
                Properties.Settings.Default.Save();
            }

            FullUpdate();
        }
Esempio n. 7
0
        // ツリービューの更新
        private void TreeViewUpdate()
        {
            var selectedPath          = taskTreeView_.SelectedNode?.FullPath;
            TreeNodeCollection backup = taskTreeView_.Nodes;

            taskTreeView_.Nodes.Clear();

            TaskInfoManager.ForEach(
                (path, info) =>
            {
                // ノードの追加
                var node = Utility.Forms.PopulateTreeView(taskTreeView_, path);
                if (node == null)
                {
                    return;
                }

                // テキストなどの状態変更
                node.ForeColor = info.StatusColor;
            });

            // 状態の維持 (ツリーが完成してからもう一度ループ)
            TaskInfoManager.ForEach(
                (path, info) =>
            {
                var nodes = taskTreeView_.Nodes.Find(path + taskTreeView_.PathSeparator, true);
                if (nodes.Count() == 0)
                {
                    return;
                }

                // 要素の展開を制御
                if (info.IsExpanded)
                {
                    nodes[0].Expand();
                }
                else
                {
                    nodes[0].Collapse();
                }
            });

            // ビュー更新前の選択を維持する
            if (selectedPath != null)
            {
                TreeNode[] nodes = taskTreeView_.Nodes.Find(selectedPath + taskTreeView_.PathSeparator, true);
                taskTreeView_.SelectedNode = (nodes.Count() > 0) ? nodes[0] : null;
            }
        }
Esempio n. 8
0
        // ツリービューの装飾のみ更新
        private void TreeViewDecorationUpdate(TreeNodeCollection parentnodes)
        {
            if (parentnodes == null)
            {
                return;
            }

            foreach (TreeNode node in parentnodes)
            {
                TreeViewDecorationUpdate(node.Nodes);

                // 一致する要素を取得
                var info = TaskInfoManager.Find(node.FullPath);
                if (info != null)
                {
                    node.ForeColor = info.StatusColor;
                }
            }
        }
Esempio n. 9
0
        private void taskTreeView__DragDrop(object sender, DragEventArgs e)
        {
            //ドロップされたデータがTreeNodeか調べる
            if (e.Data.GetDataPresent(typeof(TreeNode)))
            {
                TreeView tv = (TreeView)sender;
                //ドロップされたデータ(TreeNode)を取得
                TreeNode source =
                    (TreeNode)e.Data.GetData(typeof(TreeNode));
                //ドロップ先のTreeNodeを取得する
                TreeNode target =
                    tv.GetNodeAt(tv.PointToClient(new Point(e.X, e.Y)));
                //マウス下のNodeがドロップ先として適切か調べる
                if (target != null && target != source &&
                    !Utility.Forms.IsChildNode(source, target))
                {
                    //ドロップされたNodeのコピーを作成
                    TreeNode cln = (TreeNode)source.Clone();
                    //Nodeを追加
                    target.Nodes.Add(cln);
                    //ドロップ先のNodeを展開
                    target.Expand();
                    //追加されたNodeを選択
                    tv.SelectedNode = cln;

                    // 要素の移動
                    TaskInfoManager.Move(source.FullPath, cln.FullPath);
                }
                else
                {
                    e.Effect = DragDropEffects.None;
                }
            }
            else
            {
                e.Effect = DragDropEffects.None;
            }
        }
Esempio n. 10
0
        // 子を追加
        private void addChild_ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            UniDialog <WorkDescriber> .ShowDialog(this,
                                                  (result) =>
            {
                if (result != DialogResult.OK)
                {
                    return;
                }

                // アクティブになっている要素を取得
                var node = taskTreeView_.SelectedNode;
                if (node == null)
                {
                    return;
                }

                // アクティブ中のタスクの配下に追加
                TaskInfoManager.EntryRange(node.FullPath, WorkDescriber.ResultStrings);

                // ツリービュー更新
                TreeViewUpdate();
            });
        }
Esempio n. 11
0
 private void EraseTask_ToolStripMenuItem_Click(object sender, EventArgs e)
 {
     TaskInfoManager.Remove(taskTreeView_.SelectedNode?.FullPath);
     FullUpdate();
 }
Esempio n. 12
0
 // セーブ
 private void SaveTaskHistory()
 {
     Properties.Settings.Default.serializedTasks = TaskInfoManager.Serialize();
     Properties.Settings.Default.windowSize      = Size;
     Properties.Settings.Default.Save();
 }