/// <summary> /// Inserting new task /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void mainWindow_KeyDown(object sender, KeyEventArgs e) { #region Insert new task if ((e.KeyCode == Keys.Insert) && (tabControl1.SelectedIndex == 0)) { // creating new task decimal idTask = 0; string idFolder = "0"; // idFolder 0 means root node dbrespons = DBOperation.insertNewTask("New task", null, null, false, ref idTask); if (dbrespons.result != DBStatus.InsertSuccessful) { MessageBox.Show("Error durning inserting new task", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } // new task into edit mode TreeNode newNode = new TreeNode(); newNode.Name = "T"; newNode.Tag = idTask.ToString(); newNode.Text = "New task"; newNode.ImageIndex = 1; newNode.SelectedImageIndex = 1; // if node is selected insert new task into folder TreeNode selNode = treeView_taskList.SelectedNode; if ((selNode != null) && (selNode.Name.Equals("F"))) { idFolder = selNode.Tag.ToString(); selNode.Nodes.Add(newNode); } else if ((selNode != null) && (selNode.Name.Equals("T")) && (selNode.Parent != null)) { idFolder = selNode.Parent.Tag.ToString(); selNode.Parent.Nodes.Add(newNode); } else { treeView_taskList.Nodes.Add(newNode); } // inserting task into container dbrespons = DBOperation.insertContainerDB(idTask, null, null, idFolder); if (dbrespons.result != DBStatus.InsertSuccessful) { MessageBox.Show("Error durning inserting new task", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } // new node is in edit mode treeView_taskList.BeginUpdate(); // selected node treeView_taskList.SelectedNode = newNode; treeView_taskList.LabelEdit = true; newNode.BeginEdit(); treeView_taskList.EndUpdate(); } #endregion }
/// <summary> /// Making structure of directories /// </summary> /// <param name="parent">ID parent</param> /// <param name="node">node</param> public void createFolderTree(string parent, TreeNodeCollection node) { dbrespons = DBOperation.getFolderByParent(parent, ref folder); if (dbrespons.result != DBStatus.SelectSuccessful) { MessageBox.Show("Error durning creating folders structure", "Information", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } foreach (DataRow item in folder.Rows) { TreeNode newNode = new TreeNode(); newNode.ImageIndex = 0; // image newNode.SelectedImageIndex = 0; newNode.Tag = item["idFolder"].ToString(); newNode.Name = "F"; newNode.Text = item["folderName"].ToString(); node.Add(newNode); // adding new node createNewNode(item["idFolder"].ToString(), newNode.Nodes); } }
private void searchForTasks(string idFolder, TreeNodeCollection node) { DataTable task = new DataTable(); dbrespons = DBOperation.getTasksFromFolder(idFolder, ref task); if (dbrespons.result != DBStatus.SelectSuccessful) { MessageBox.Show("Error durning creating folders structure", "Information", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } foreach (DataRow item in task.Rows) { TreeNode nnode = new TreeNode(); nnode.Name = "T"; nnode.ImageIndex = 1; nnode.SelectedImageIndex = 1; nnode.Tag = item["idTasks"].ToString(); nnode.Text = item["taskDesc"].ToString(); node.Add(nnode); } }
/// <summary> /// Removing folders contains task or other folders /// </summary> /// <param name="node">Node to remove</param> private void removeFolderTaskNode(TreeNode node) { if (node == null) return; // finish // removing node if (node.Nodes.Count == 0) { dbrespons = DBOperation.removingFolder(node.Tag.ToString()); if (dbrespons.result != DBStatus.DeleteSuccessful) { MessageBox.Show("Problem removing folder!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } return; // finish } // removing node nodes foreach (TreeNode item in node.Nodes) { // folder can have subfolders if (item.Name.ToString().Equals("F")) { if (node.Nodes.Count != 0) // removing deeper levels removeFolderTaskNode(node.Nodes[0]); dbrespons = DBOperation.removingFolder(node.Tag.ToString()); if (dbrespons.result != DBStatus.DeleteSuccessful) { MessageBox.Show("Problem removing folder!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } } // tasks can't have subtasks else if (item.Name.ToString().Equals("T")) { removeTask(node); } } }
/// <summary> /// Removing task based on node /// </summary> /// <param name="node"></param> public void removeTask(TreeNode node) { string idTask = node.Tag.ToString(); dbrespons = DBOperation.removingTask(idTask); if (dbrespons.result != DBStatus.DeleteSuccessful) { MessageBox.Show("Error: deleteing task!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } }
/// <summary> /// Removing folder from treeView /// </summary> /// <param name="node">Node that contains folder</param> public void removeFolderTask(TreeNode node) { if (node != null) { if (node.Nodes.Count != 0) { DialogResult result = MessageBox.Show("Removing folder will remove whole contins of folder", "Question", MessageBoxButtons.OKCancel, MessageBoxIcon.Information); if (result == DialogResult.OK) { removeFolderTaskNode(node); } } else if (node.Nodes.Count == 0) { dbrespons = DBOperation.removingFolder(node.Tag.ToString()); if (dbrespons.result != DBStatus.DeleteSuccessful) { MessageBox.Show("Problem removing folder!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } } } }
/// <summary> /// Moving node or folder one position up /// </summary> /// <param name="node">Node to move</param> public void nodeUp(TreeNode node) { TreeNode parent = null; if ((node != null) && (node.Parent != null) && (node.Parent.Parent != null)) { parent = node.Parent.Parent; } // Folder1 // |---> Folder2 // |---> Folder3 // ------ after operation -------------- // Folder3 // Folder1 // |---> Folder2 if (parent != null) // folder on level up { TreeNode copy = (TreeNode)node.Clone(); parent.Nodes.Add(copy); treeView.SelectedNode = copy; node.Remove(); // information about parent string idParent = parent.Tag.ToString(); // parent id string idFolder = copy.Tag.ToString(); // idFolder or idTask if (node.Name.Equals("F")) // operation on folders { dbrespons = DBOperation.updateFolderPosition(idParent, copy.Text, idFolder); if (dbrespons.result != DBStatus.UpdateSuccessful) { MessageBox.Show("Error durning updating folder position!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } } else if (node.Name.Equals("T")) { dbrespons = DBOperation.updateTaskPosition(idFolder, idParent); if(dbrespons.result != DBStatus.UpdateSuccessful) { MessageBox.Show("Error durning updating task position!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } } } else if (parent == null) // folder is in root node { TreeNode copy = (TreeNode)node.Clone(); treeView.Nodes.Add(copy); treeView.SelectedNode = copy; node.Remove(); // information about parent string idParent = "0"; string idFolder = copy.Tag.ToString(); if (copy.Name.Equals("F")) // moving folder { dbrespons = DBOperation.updateFolderPosition(idParent, copy.Text, idFolder); if (dbrespons.result != DBStatus.UpdateSuccessful) { MessageBox.Show("Error durning updating folder position!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } } if (copy.Name.Equals("T")) // moving task { dbrespons = DBOperation.updateTaskPosition(idFolder, idParent); if(dbrespons.result != DBStatus.UpdateSuccessful) { MessageBox.Show("Error durning updating task position!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } } } }
// Moving node up and down throught treeView structure // Folder1 // |--> Task1 // |--> Task2 // after making node down // Folder1 // |--> Task1 // Task2 public void nodeDown(TreeNode node) { TreeNode prev = node.PrevNode; if ((prev != null) && (node.Name.Equals("F"))) // folder { TreeNode clone = (TreeNode)node.Clone(); prev.Nodes.Add(clone); treeView.SelectedNode = clone; node.Remove(); // information about parent string idParent = clone.Parent.Tag.ToString(); string idFolder = clone.Tag.ToString(); dbrespons = DBOperation.updateFolderPosition(idParent, clone.Text, idFolder); if (dbrespons.result != DBStatus.UpdateSuccessful) { MessageBox.Show("Error durning updating folder position!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } } if ((prev != null) && (node.Name.Equals("T"))) // operations for task { TreeNode clone = (TreeNode)node.Clone(); prev.Nodes.Add(clone); treeView.SelectedNode = clone; node.Remove(); // information about parent string idParent = clone.Parent.Tag.ToString(); string idFolder = clone.Tag.ToString(); // saving data into DB dbrespons = DBOperation.updateTaskPosition(idFolder, idParent); if(dbrespons.result != DBStatus.UpdateSuccessful) { MessageBox.Show("Error durning updating task position!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } } }
/// <summary> /// Method for update task list raised when added,deleted or modify task /// </summary> private void updateTaskList() { // Searching of tasks dbrespons = DBOperation.getTaskList(ref task); if (dbrespons.resultOperation() != DBStatus.SelectSuccessful) { MessageBox.Show("Error durning searching for tasks " + dbrespons.errorMessage(), "Information", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } todoGridView.DataSource = task; // FIXME dosn't work don't know why // task finished foreach (DataGridViewRow row in todoGridView.Rows) { if ((bool)row.Cells["finished"].Value) { DataGridViewCell cell = row.Cells["taskDesc"]; cell.Style = strikedOut; } } }
// checking up if node is changed private void treeView_taskList_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e) { if (oldNode == null) { oldNode = treeView_taskList.SelectedNode; } // update informations about task if (oldNode != treeView_taskList.SelectedNode) { if (splitContainer.Panel2Collapsed == false) // when panel is visible { TreeNode node = e.Node; if (node.Name != "F") { string idTask = node.Tag.ToString(); DataTable data = new DataTable(); // contains task information dbrespons = DBOperation.getTaskDate(idTask, ref data); if (dbrespons.result != DBStatus.SelectSuccessful) { MessageBox.Show("Unable read task informaion", "Information", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } // setingup date if (!string.IsNullOrEmpty(data.Rows[1][0].ToString())) { dateTimePickerEnd.Enabled = true; DateTime end = new DateTime(); end = DateTime.ParseExact(data.Rows[1][0].ToString(), "yyyy-MM-dd HH:mm:ss", null); dateTimePickerEnd.Value = end; } else { dateTimePickerEnd.Enabled = false; } // start date if (!string.IsNullOrEmpty(data.Rows[1][1].ToString())) { dateTimePickerStart.Enabled = true; DateTime start = new DateTime(); start = DateTime.ParseExact(data.Rows[1][1].ToString(), "yyyy-MM-dd HH:mm:ss", null); dateTimePickerEnd.Value = start; } else { dateTimePickerStart.Enabled = false; } } } } }
/// <summary> /// Updating Folder name /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void treeView_taskList_AfterLabelEdit(object sender, NodeLabelEditEventArgs e) { // updating folder name if (e.Node.Name.ToString().Equals("F")) { string idFolder = e.Node.Tag.ToString(); string folderName = e.Label; if (e.Label == null) return; // return if nothing was been changed dbrespons = DBOperation.updateFolderName(idFolder, folderName); if (dbrespons.result != DBStatus.UpdateSuccessful) { MessageBox.Show("Error when changing folder name", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } } // updating task message if (e.Node.Name.ToString().Equals("T")) { string idTask = e.Node.Tag.ToString(); if (e.Label == null) return; // preventing ESC when editing node string taskDesc = e.Label.ToString(); dbrespons = DBOperation.updateTaskDescriptionDB(idTask, taskDesc); if (dbrespons.result != DBStatus.UpdateSuccessful) { MessageBox.Show("Error durning updating task desc", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } updateTaskList(); updateTaskBoard(); } }
/// <summary> /// Creating new node in main node /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void toolSBCreateFolder_Click(object sender, EventArgs e) { TreeNode selected_node = treeView_taskList.SelectedNode; string idParent = "0"; if ((selected_node != null) && (selected_node.Parent != null)) { idParent = selected_node.Tag.ToString(); } dbrespons = DBOperation.createNewFolder("New folder", idParent); if (dbrespons.result != DBStatus.InsertSuccessful) { MessageBox.Show("Error when creating new folder!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } int row = 0; dbrespons = DBOperation.getLastInsertedRowID(ref row); if (dbrespons.result != DBStatus.SelectSuccessful) { MessageBox.Show("Error when getting last row id", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } createTreeView.createNewFolder("New folder", row.ToString()); }
/// <summary> /// Checking if cell is clicked and strikeout finished task /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void todoGridView_CellContentClick(object sender, DataGridViewCellEventArgs e) { // if user click on first column if ((e.ColumnIndex == 4) && (e.RowIndex != -1)) { int i = e.RowIndex; DataGridViewCell cell = todoGridView["taskDesc", i]; bool finish = (bool)todoGridView["finished", i].Value; // checked if is checked if (!finish) { cell.Style = strikedOut; todoGridView["finished", i].Value = "True"; // saving data to DB dbrespons = DBOperation.taskFinished(todoGridView["idTasks", i].Value.ToString(), true); if (dbrespons.result != DBStatus.UpdateSuccessful) { MessageBox.Show("Error durning update task status", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } } if(finish) { cell.Style = regular; todoGridView["finished", i].Value = "False"; // saving data to DB dbrespons = DBOperation.taskFinished(todoGridView["idTasks", i].Value.ToString(), true); if (dbrespons.result != DBStatus.UpdateSuccessful) { MessageBox.Show("Error durning update task status", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } } } }
/// <summary> /// Working with SQL /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void mainWindow_Load(object sender, EventArgs e) { // on start hide panel2 splitContainer.Panel2Collapsed = true; splitContainer.BorderStyle = BorderStyle.FixedSingle; // menu for treeView showInformation = new MenuItem(); showInformation.Text = "Show task information"; showInformation.Click += new EventHandler(showInformation_Click); cont_menu.MenuItems.Add(showInformation); // Initialization DB dbrespons = DBOperation.initDateBase(); if (dbrespons.resultOperation() != DBStatus.InitDBSuccessful) { MessageBox.Show("Error durning initialization DB" + dbrespons.errorMessage(), "Information", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } //seting up position of task board int x = System.Windows.Forms.Screen.PrimaryScreen.Bounds.Width; int y = 10; x -= (10 + taskBoard.Width); taskBoard.StartPosition = FormStartPosition.Manual; taskBoard.Location = new Point(x, y); taskBoard.Visible = true; // creating new tree folder list updateTaskList(); createTreeView.initTreeView(); updateTaskBoard(); }