public override void AddChildEntry() // Add a Beschreibung { // Is there a active parent? TreeIter parentIter = editFrameAdapter.ActiveParentTreeIter; if (parentIter.Equals(TreeIter.Zero)) { var error = new SafeCallDialog("Kein Element ausgewählt", "Ok", 0, null, 1); error.Run(); error.Destroy(); return; } ComboBox cbTyp = new ComboBox(API_Contract.ProgrammDescrTypVal); cbTyp.Active = 2; // Default is 'All' Entry textEntry = new Entry(); var args = new GetUserArgs[] { new GetUserArgs(new Label("Text"), textEntry), new GetUserArgs(new Label("Typ"), cbTyp), }; var diag = new GetUserDataDialog(args, null, "Ok", 0, "Abbruch", 1); if (diag.Run() == 0) { var treeContent = CurrTreeStore; string text = textEntry.Text; string typString = GtkHelper.ComboBoxActiveString(cbTyp); int typ = cbTyp.Active; // Save on UI TreeIter insertIter, firstIter; insertIter = treeContent.AppendValues(parentIter, "└──", "\t" + text, typString); treeContent.IterNthChild(out firstIter, parentIter, 0); GtkHelper.SortInByColumn(treeContent, (int)ProgrammColumnID.Text, insertIter); // XXX: Save on Database string time = (string)treeContent.GetValue(parentIter, (int)ProgrammColumnID.Uhrzeit); var insert = new Table_Beschreibung(CurrTabIndex, time, text, typ); dbAdapter.InsertEntry(insert); } // Free Memory diag.Destroy(); foreach (var arg in args) { arg.Dispose(); } }
protected override bool HookOnSave() { // Assert data integrity if (!timeBox.ValidateTime()) { return(false); } // Mutable values string validTime; string textString = CurrText; string origTime = timeBox.OrigTime; string typString = GtkHelper.ComboBoxActiveString(cbTyp); int typ = cbTyp.Active; // Save on Database DatabaseTable orig, newElem; if (IsCurrParent) { validTime = timeBox.Time; orig = new Table_Termin(day, origTime, OrigText, origTyp); newElem = new Table_Termin(day, validTime, textString, typ); } else { validTime = origTime; // Parent time, we got on EditTreeRow() textString = API_Contract.ConvertEditViewToDatabase(textString); orig = new Table_Beschreibung(day, origTime, OrigText, origTyp); newElem = new Table_Beschreibung(day, validTime, textString, typ); } orig.Update(newElem); // Save on UI if (IsCurrParent) // Only Parent time can change { currTreeStore.SetValue(currTreeIter, (int)ProgrammColumnID.Uhrzeit, validTime); } currTreeStore.SetValue(currTreeIter, (int)ProgrammColumnID.Typ, typString); // Set UI text value and sort in if (IsCurrParent) { // Sort by time, and clear conflicts currTreeStore.SetValue(currTreeIter, (int)ProgrammColumnID.Text, textString); var iter = GtkHelper.SortInByColumn(currTreeStore, (int)ProgrammColumnID.Uhrzeit, currTreeIter); validTime = API_Contract.ClearTimeConflicts(currTreeStore, iter); } else { // Sort by text currTreeStore.SetValue(currTreeIter, (int)ProgrammColumnID.Text, API_Contract.ConvertDatabaseToTreeChild(textString)); GtkHelper.SortInByColumn(currTreeStore, (int)ProgrammColumnID.Text, currTreeIter); } // Save on this timeBox.Time = validTime; origTyp = cbTyp.Active; return(true); }