/// <summary>
        /// 初期化処理
        /// </summary>
        /// <param name="groupInfo">親グループ情報</param>
        /// <param name="taskItem">タスク情報</param>
        /// <returns>結果</returns>
        public bool Initialize(TaskGroupInfo groupInfo, TaskItem taskItem)
        {
            var list = ResourceManager.Instance.GetGroupListExcludeRoot().ToArray();

            foreach (var item in list)
            {
                this.CmbGroup.Items.Add(item);
            }

            if (taskItem.Group == null)
            {
                if (groupInfo != null)
                {
                    // 新規の場合は、表示中グループにする
                    taskItem.Group = groupInfo.Key;
                }
                else
                {
                    // 親の指定が無い場合は、未分類グループ
                    taskItem.Group = TaskGroupInfo.GetDefaultGroup().Key;
                }
            }

            this.CmbGroup.SelectedItem = ResourceManager.Instance.GetGroupInfo(taskItem.Group);
            this.TxtTitle.Text         = taskItem.Title;
            this.DtpLimit.Value        = taskItem.DateTimeLimit;
            this.TxtMemo.Text          = taskItem.Memo;

            this.CmbAttachFiles.DisplayMember = "DisplayName";
            foreach (var info in taskItem.AttachFile)
            {
                this.CmbAttachFiles.Items.Add(info);
            }


            this.btnOpenDirAttachedFiles.Enabled = false;
            if (taskItem.AttachFile.Any())
            {
                this.btnOpenDirAttachedFiles.Enabled = true;
            }

            this.target = taskItem;

            return(true);
        }
        /// <summary>
        /// 更新ボタン押下時処理
        /// </summary>
        /// <param name="sender">イベント送信オブジェクト</param>
        /// <param name="e">イベント引数</param>
        private void BtnUpdate_Click(object sender, EventArgs e)
        {
            var canUpdate = true;

            this.TxtTitle.BackColor       = Color.White;
            this.DtpLimit.BackColor       = Color.White;
            this.CmbAttachFiles.BackColor = Color.White;

            var msgBuilder = new MessageBuilder();

            if (string.IsNullOrEmpty(this.TxtTitle.Text))
            {
                msgBuilder.Add(MessageKind.Error, "タイトルを入力してください");

                this.TxtTitle.BackColor = Color.Red;
                canUpdate = false;
            }

            if (string.IsNullOrEmpty(this.DtpLimit.Text))
            {
                msgBuilder.Add(MessageKind.Error, "期限を入力してください");

                this.DtpLimit.BackColor = Color.Red;
                canUpdate = false;
            }

            if (!canUpdate)
            {
                var errMsg = msgBuilder.CreateMessage();
                MessageBox.Show(errMsg);
                return;
            }

            if (!this.target.Group.Equals(this.CmbGroup.SelectedItem))
            {
                // グループ管理の差し替え
                var prevParent = ResourceManager.Instance.GetGroupInfo(this.target.Group);
                if (prevParent != null)
                {
                    if (prevParent.ChildTaskItems.Contains(this.target))
                    {
                        prevParent.ChildTaskItems.Remove(this.target);
                    }
                }

                if (string.IsNullOrEmpty(this.CmbGroup.Text) || this.CmbGroup.SelectedItem == null)
                {
                    this.target.Group = TaskGroupInfo.GetDefaultGroup().Key;
                }
                else
                {
                    this.target.Group = ((TaskGroupInfo)this.CmbGroup.SelectedItem).Key;
                }

                var parent = ResourceManager.Instance.GetGroupInfo(this.target.Group);
                parent.ChildTaskItems.Add(this.target);
            }

            this.target.Title         = this.TxtTitle.Text;
            this.target.DateTimeLimit = this.DtpLimit.Value;
            this.target.Memo          = this.TxtMemo.Text;

            // 添付ファイルの取得
            {
                // 削除ファイルの処理
                var destattachList = new List <AttachedFileInfo>();
                destattachList.AddRange(this.target.AttachFile);

                foreach (var info in this.attachFileDeleteList)
                {
                    var path = info.FilePath;
                    if (File.Exists(path))
                    {
                        File.Delete(path);
                    }

                    if (destattachList.Contains(info))
                    {
                        destattachList.Remove(info);
                    }
                }

                // 追加ファイルの処理
                foreach (var info in this.attachFileAddList)
                {
                    destattachList.Add(info);

                    File.Copy(info.OrgFilePath, info.FilePath, true);
                }

                this.target.AttachFile.Clear();
                this.target.AttachFile.AddRange(destattachList);
            }

            this.CloseWindow(SubWindowResult.Submit);
        }
Exemple #3
0
        /// <summary>
        /// グループリネームボタン押下時イベント
        /// </summary>
        /// <param name="sender">イベント送信オブジェクト</param>
        /// <param name="e">イベント引数</param>
        private async void BtnReNameGroup_Click(object sender, EventArgs e)
        {
            if (this.LsvGroup.SelectedItems.Count > 0)
            {
                var selected = this.LsvGroup.SelectedItems[0].Tag as KeyInfo;
                if (selected != null)
                {
                    var item = ResourceManager.Instance.GetGroupInfo(selected);
                    if (!selected.Equals(TaskGroupInfo.GetRootGroup().Key) && !selected.Equals(TaskGroupInfo.GetDefaultGroup().Key))
                    {
                        var win = new TaskGroupEditForm();
                        win.Initialize(item, false, ResourceManager.Instance.GetGroupInfo(item.ParentGroup));
                        var ret = await win.ShowWindow(this);

                        this.RefleshTaskGroupIchiran();
                    }
                }
            }
        }
        /// <summary>
        /// 初期化処理
        /// </summary>
        /// <returns>実行結果</returns>
        public bool Initialize()
        {
            this.taskInfoRoot = new TaskInfoRoot();

            KeyInfo.Initialize();

            var path = Utils.GetFullPath(TaskListSavePath);

            if (File.Exists(path))
            {
                var text    = File.ReadAllText(path);
                var jsonObj = JsonConvert.DeserializeObject <TaskInfoRoot>(text);

                instance.taskInfoRoot = jsonObj;

                var rootGroupKey = TaskGroupInfo.GetRootGroup().Key;
                if (instance.taskInfoRoot.TaskGroupListJsonObj.Any(x => x.Key.Equals(rootGroupKey)))
                {
                    var item = instance.taskInfoRoot.TaskGroupListJsonObj.First(x => x.Key.Equals(rootGroupKey));
                    TaskGroupInfo.OverriteRootGroup(item);
                }

                var defaultGroupKey = TaskGroupInfo.GetDefaultGroup().Key;
                if (instance.taskInfoRoot.TaskGroupListJsonObj.Any(x => x.Key.Equals(defaultGroupKey)))
                {
                    var item = instance.taskInfoRoot.TaskGroupListJsonObj.First(x => x.Key.Equals(defaultGroupKey));
                    TaskGroupInfo.OverriteDefaultGroup(item);
                }

                // 全グループに対してキーの再生成
                foreach (var taskGroupInfo in instance.taskInfoRoot.TaskGroupListJsonObj)
                {
                    if (!KeyInfo.IsCreatedKeyGroup(taskGroupInfo.Key))
                    {
                        var keyGroup = KeyInfo.CreateKeyInfoGroup();

                        taskGroupInfo.ChildGroups.Clear();
                        var filetered =
                            instance.taskInfoRoot.TaskGroupListJsonObj.Where(x =>
                                                                             x.ParentGroup != null && x.ParentGroup.Equals(taskGroupInfo.Key)).ToList();
                        if (filetered.Any())
                        {
                            foreach (var groupInfo in filetered)
                            {
                                if (!KeyInfo.IsCreatedKeyGroup(groupInfo.Key))
                                {
                                    var keyGroupChildGroup = KeyInfo.CreateKeyInfoGroup();
                                    groupInfo.Key = keyGroupChildGroup;
                                }

                                groupInfo.ParentGroup = keyGroup;
                                taskGroupInfo.ChildGroups.Add(groupInfo.Key);
                            }
                        }

                        taskGroupInfo.Key = keyGroup;
                    }

                    foreach (var childTaskItem in taskGroupInfo.ChildTaskItems)
                    {
                        if (!KeyInfo.IsCreatedKeyTask(taskGroupInfo.Key, childTaskItem.Key))
                        {
                            var keyGroup = KeyInfo.CreateKeyInfoTask(taskGroupInfo.Key);
                            childTaskItem.Key = keyGroup;
                        }

                        childTaskItem.Group = taskGroupInfo.Key;
                    }

                    if (!instance.taskInfoRoot.TaskGroupList.ContainsKey(taskGroupInfo.Key))
                    {
                        instance.taskInfoRoot.TaskGroupList.Add(taskGroupInfo.Key, taskGroupInfo);
                    }
                }
            }
            else
            {
                instance.taskInfoRoot.AddTaskGroup(TaskGroupInfo.GetRootGroup(), null);
                instance.taskInfoRoot.AddTaskGroup(TaskGroupInfo.GetDefaultGroup(), TaskGroupInfo.GetRootGroup());
            }

            return(true);
        }
Exemple #5
0
 /// <summary>
 /// グループ削除ボタン押下時イベント
 /// </summary>
 /// <param name="sender">イベント送信オブジェクト</param>
 /// <param name="e">イベント引数</param>
 private void BtnRemoveGroup_Click(object sender, EventArgs e)
 {
     if (this.LsvGroup.SelectedItems.Count > 0)
     {
         var selected = this.LsvGroup.SelectedItems[0].Tag as KeyInfo;
         if (selected != null)
         {
             var item = ResourceManager.Instance.GetGroupInfo(selected);
             if (!selected.Equals(TaskGroupInfo.GetRootGroup().Key) && !selected.Equals(TaskGroupInfo.GetDefaultGroup().Key))
             {
                 ResourceManager.Instance.RemoveTaskGroup(item);
                 this.RefleshTaskGroupIchiran();
             }
         }
     }
 }