Esempio n. 1
0
        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);
        }