/// <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); }
/// <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); }
/// <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(); } } } }