private void PasteNode() { if (trvDisplay.SelectedNode is CallTreeQuestionNode) { CallTreeQuestionNode currentNode = (CallTreeQuestionNode)trvDisplay.SelectedNode; if (currentNode.Question.type == question.QuestionTypes.Category) { trvDisplay.SelectedNode.Nodes.Insert(0, _cutNode); _cutNode.Question.parent = currentNode.Question.id; currentNode.Expand(); ForceReorderNodes(_cutNode); } else { trvDisplay.SelectedNode.Parent.Nodes.Insert(0, _cutNode); _cutNode.Question.parent = ((CallTreeQuestionNode)trvDisplay.SelectedNode.Parent).Question.id; ForceReorderNodes(_cutNode); } } else { trvDisplay.Nodes[0].Nodes.Insert(0, _cutNode); _cutNode.Question.parent = 0; ForceReorderNodes(_cutNode); } EnableCut(true); _cutNode = null; }
private void InitializeCallTree(CallTreeQuestionNode selectNode) { claim c = new claim(); List <question> Questions = c.Questions; trvDisplay.Nodes.Clear(); trvDisplay.Nodes.Add("Base"); trvDisplay.Nodes[0].ImageIndex = 0; trvDisplay.Nodes[0].SelectedImageIndex = 0; // Initialize CallTreeView foreach (question q in Questions) { if (String.IsNullOrEmpty(q.required_answer)) { AddQuestionToTree(q, trvDisplay.Nodes[0]); } } trvDisplay.Nodes[0].Expand(); if (selectNode != null) { // Find the old node somehow FindNode(selectNode, trvDisplay.Nodes[0]); } }
private void cmdCut_Click(object sender, EventArgs e) { if (trvDisplay.SelectedNode is CallTreeQuestionNode) { _cutNode = (CallTreeQuestionNode)trvDisplay.SelectedNode; trvDisplay.SelectedNode.Remove(); EnableCut(false); } }
public CallManager() { _IsCallInProgress = false; _IsCallOnHold = false; OnHoldIsDrawn = false; currentChoiceIsDirty = false; currentCallNode = null; currentQuestionNode = null; onHoldStarted = DateTime.MinValue; _questions = new List <question>(); _pastCalls = new List <call>(); InitializeComponent(); this.tvwCall.LineColor = SystemColors.GrayText; this.SetStyle(ControlStyles.OptimizedDoubleBuffer, true); }
private void trvDisplay_DragDrop(object sender, DragEventArgs e) { if (e.Data.GetDataPresent("C_DentalClaimTracker.CallTreeQuestionNode", false)) { Point pt = ((TreeView)sender).PointToClient(new Point(e.X, e.Y)); TreeNode DestinationNode = ((TreeView)sender).GetNodeAt(pt); _cutNode = (CallTreeQuestionNode)e.Data.GetData("C_DentalClaimTracker.CallTreeQuestionNode", true); trvDisplay.Nodes.Remove(_cutNode); trvDisplay.SelectedNode = DestinationNode; EnableCut(false); PasteNode(); } }
private void trvDisplay_AfterSelect(object sender, TreeViewEventArgs e) { if (trvDisplay.SelectedNode is CallTreeQuestionNode) { CallTreeQuestionNode cn = (CallTreeQuestionNode)trvDisplay.SelectedNode; _currentQuestion = cn.Question; LoadCurrentQuestion(); pnlDetailsPanel.Enabled = true; EnableOptionsPanel(true); } else { pnlDetailsPanel.Enabled = false; EnableOptionsPanel(false); } QuestionChanged(false); }
private void MarkParentAnswered(CallTreeQuestionNode node, bool isAnswered) { CallTreeQuestionNode parentNode = node.Parent as CallTreeQuestionNode; if (parentNode != null) { int categoryIndex; int standardIndex; if (isAnswered) { categoryIndex = 2; standardIndex = 4; } else { categoryIndex = 1; standardIndex = 3; } if (parentNode.Question.type == question.QuestionTypes.Category) { parentNode.ImageIndex = categoryIndex; parentNode.SelectedImageIndex = categoryIndex; } else { parentNode.ImageIndex = standardIndex; parentNode.SelectedImageIndex = standardIndex; } if (parentNode.Parent != null) { if (isAnswered) { MarkParentAnswered(parentNode, true); } else { UpdateParentImage(parentNode); } } } }
private void FindNode(CallTreeQuestionNode selectNode, TreeNode currentSearchNode) { if (trvDisplay.SelectedNode == null) { foreach (CallTreeQuestionNode tn in currentSearchNode.Nodes) { if (tn.Question.id == selectNode.Question.id) { trvDisplay.SelectedNode = tn; break; } if (tn.Nodes.Count > 0) { FindNode(selectNode, tn); } } } }
private CallTreeQuestionNode SetQuestionImage(question questionToAdd, CallTreeQuestionNode newNode) { if (System.Convert.ToBoolean(questionToAdd.is_fork)) { newNode.ImageIndex = 5; newNode.SelectedImageIndex = 5; } else if (questionToAdd.type == question.QuestionTypes.Category) { newNode.ImageIndex = 1; newNode.SelectedImageIndex = 1; } else { newNode.ImageIndex = 3; newNode.SelectedImageIndex = 3; } return(newNode); }
private void UpdateParentImage(CallTreeQuestionNode node) { CallTreeQuestionNode parentNode = node.Parent as CallTreeQuestionNode; if (parentNode != null) { bool hasAnsweredQuestions = false; foreach (CallTreeQuestionNode aNode in parentNode.Nodes) { if (aNode.Choice != null) { hasAnsweredQuestions = true; break; } else if (aNode.Question.type == question.QuestionTypes.Category) { if (aNode.ImageIndex == 2) { hasAnsweredQuestions = true; break; } } } if (parentNode.Question.type != question.QuestionTypes.Category) { if (parentNode.Choice != null) { hasAnsweredQuestions = true; } } MarkParentAnswered(node, hasAnsweredQuestions); } }
private CallTreeQuestionNode AddQuestionToTree(question questionToAdd, TreeNode parentNode) { CallTreeQuestionNode newNode = new CallTreeQuestionNode(questionToAdd); newNode = SetQuestionImage(questionToAdd, newNode); newNode.Text = questionToAdd.text; newNode.Name = questionToAdd.id.ToString(); if (parentNode == null) { trvDisplay.Nodes.Add(newNode); } else { parentNode.Nodes.Add(newNode); } foreach (question cq in questionToAdd.SubQuestions) { AddQuestionToTree(cq, newNode); } return(newNode); }
private void tvwCall_AfterSelect(object sender, TreeViewEventArgs e) { CallTreeQuestionNode qNode = tvwCall.SelectedNode as CallTreeQuestionNode; currentQuestionNode = null; if (qNode != null) { if (!pnlDataEntry.Visible) { pnlDataEntry.Visible = true; } if (currentChoicePanel != null) { currentChoicePanel.Visible = false; } lblDataDescription.Text = qNode.Question.popup_question_text; switch (qNode.Question.type) { case question.QuestionTypes.Category: currentChoicePanel = null; pnlDataEntry.Visible = false; break; case question.QuestionTypes.Date: currentChoicePanel = pnlChoiceDate; pnlDataEntry.Height = 66; if (qNode.Choice != null) { DateTime choiceDate; if (DateTime.TryParse(qNode.Choice.answer, out choiceDate)) { ctlDate.CurrentDate = choiceDate; } else if (qNode.Choice.answer == "") { ctlDate.CurrentDate = null; } else { ctlDate.CurrentDate = DateTime.Now; } } else { ctlDate.SetDefaultDate(DateTime.Now); } break; case question.QuestionTypes.LargeText: currentChoicePanel = pnlChoiceLargeText; pnlDataEntry.Height = 125; if (qNode.Choice != null) { txtLarge.Text = qNode.Choice.answer; } else { txtLarge.Text = ""; } break; case question.QuestionTypes.MultipleChoice: currentChoicePanel = pnlChoiceMultiple; pnlDataEntry.Height = 100; cmbMultipleChoice.Items.Clear(); // Use ComboBox foreach (multiple_choice_answer mca in qNode.Question.MultipleChoiceAnswers) { cmbMultipleChoice.Items.Add(mca); } if (qNode.Choice != null) { for (int i = 0; i < cmbMultipleChoice.Items.Count; i++) { if (cmbMultipleChoice.Items[i].ToString() == qNode.Choice.answer) { cmbMultipleChoice.SelectedIndex = i; break; } } } else { cmbMultipleChoice.SelectedIndex = -1; } break; case question.QuestionTypes.NormalText: currentChoicePanel = pnlChoiceNormalText; pnlDataEntry.Height = 66; if (qNode.Choice != null) { txtNormal.Text = qNode.Choice.answer; } else { txtNormal.Text = ""; } break; case question.QuestionTypes.Numeric: currentChoicePanel = pnlChoiceNumeric; pnlDataEntry.Height = 66; if (qNode.Choice != null) { if (CommonFunctions.IsNumeric(qNode.Choice.answer)) { numNumber.Value = Convert.ToDecimal(qNode.Choice.answer); } else { numNumber.Value = 0; } } else { numNumber.Value = 0; } break; case question.QuestionTypes.SmallText: currentChoicePanel = pnlChoiceSmallText; pnlDataEntry.Height = 100; if (qNode.Choice != null) { txtSmall.Text = qNode.Choice.answer; } else { txtSmall.Text = ""; } break; case question.QuestionTypes.YesNo: currentChoicePanel = pnlChoiceYesNo; pnlDataEntry.Height = 84; if (qNode.Choice != null) { bool YesNo = CommonFunctions.FromYesNo(qNode.Choice.answer); if (YesNo) { radYes.Checked = true; } else { radNo.Checked = true; } } else { radYes.Checked = false; radNo.Checked = false; } break; default: if (pnlDataEntry.Visible) { pnlDataEntry.Visible = false; } currentChoicePanel = null; break; } if (qNode.Choice == null) { cmdClearAnswer.Visible = false; } else { cmdClearAnswer.Visible = false; } if (currentChoicePanel != null) { currentChoicePanel.Visible = true; currentQuestionNode = qNode; } } else { pnlDataEntry.Visible = false; currentQuestionNode = null; } tvwCall.SelectedNode.EnsureVisible(); }
private void AddQuestionToTree(CallQuestion callQuestion, TreeNode parentNode) { CallTreeQuestionNode newNode = new CallTreeQuestionNode(callQuestion.Question); if (callQuestion.IsAnswered) { if (callQuestion.Question.type == question.QuestionTypes.Category) { newNode.ImageIndex = 2; newNode.SelectedImageIndex = 2; } else { newNode.ImageIndex = 4; newNode.SelectedImageIndex = 4; } if (callQuestion.Choice != null) { newNode.Choice = callQuestion.Choice; } else if (callQuestion.Question.type != question.QuestionTypes.Category) { } } else { if (callQuestion.Question.type == question.QuestionTypes.Category) { newNode.ImageIndex = 1; newNode.SelectedImageIndex = 1; } else { newNode.ImageIndex = 3; newNode.SelectedImageIndex = 3; } } newNode.Text = callQuestion.Question.text; if (newNode.Choice != null) { if (newNode.Question.type == question.QuestionTypes.YesNo) { if (newNode.Choice.answer == true.ToString()) { newNode.Text += ": Yes"; } else if (newNode.Choice.answer == false.ToString()) { newNode.Text += ": No"; } } else { newNode.Text += ": " + newNode.Choice.answer; } } newNode.Name = callQuestion.Question.id.ToString(); if (parentNode == null) { tvwCall.Nodes.Add(newNode); } else { parentNode.Nodes.Add(newNode); } foreach (CallQuestion cq in callQuestion.SubQuestions) { if (!String.IsNullOrEmpty(cq.Question.required_answer)) { if (!IsCallInProgress) { if (cq.IsAnswered) { AddQuestionToTree(cq, newNode); } } else { if ((callQuestion.Choice != null) && (callQuestion.Choice.answer == cq.Question.required_answer)) { AddQuestionToTree(cq, newNode); } } } else { if (!IsCallInProgress) { if (cq.IsAnswered == true) { // If the parent question is answered then subquestions must be also // This means a new call will load all questions, but existing calls // will only load questions that have been answered AddQuestionToTree(cq, newNode); } } else { AddQuestionToTree(cq, newNode); } } } }