public CompletedTaskGroup(string groupName, DateTime rangeStart, DateTime rangeEnd, ICollection <ITask> tasks, GtkApplicationBase application) : base(groupName, rangeStart, rangeEnd, new CompletedTasksSortModel(tasks), application) { var preferences = application.Preferences; // Only hide this group, when ShowCompletedTasks is unset in prefs. // If it's set, don't hide this group when it's empty because then the range // slider won't appear and the user won't be able to customize the range. HideWhenEmpty = !preferences.GetBool(PreferencesKeys.ShowCompletedTasksKey); // track changes in prefs for ShowCompletedTasks setting preferences.SettingChanged += (prefs, key) => { switch (key) { case PreferencesKeys.ShowCompletedTasksKey: HideWhenEmpty = !prefs.GetBool(PreferencesKeys.ShowCompletedTasksKey); // refresh ui var cat = GetSelectedTaskList(); if (cat != null) { Refilter(cat); } break; case PreferencesKeys.SelectedTaskListKey: selectedTaskList = GetSelectedTaskList(); Refilter(selectedTaskList); break; } }; CreateRangeSlider(); UpdateDateRanges(); }
public TaskGroup(string groupName, DateTime rangeStart, DateTime rangeEnd, ICollection <ITask> tasks, GtkApplicationBase application) { if (application == null) { throw new ArgumentNullException("application"); } Application = application; hideWhenEmpty = true; // TODO: Add a date time event watcher so that when we rollover to // a new day, we can update the rangeStart and rangeEnd times. The // ranges will be used to determine whether tasks fit into certain // groups in the main TaskWindow. Reference Tomboy's NoteOfTheDay // add-in for code that reacts on day changes. treeModel = CreateModel(rangeStart, rangeEnd, tasks); // TODO: Add something to watch events so that the group will // automatically refilter and display/hide itself accordingly. // // Build the UI // // // Group Header // // Gtk.EventBox eb = new Gtk.EventBox(); // eb.Show(); // eb.BorderWidth = 0; // eb.ModifyBg(Gtk.StateType.Normal, new Gdk.Color(211,215,199)); // eb.ModifyBase(Gtk.StateType.Normal, new Gdk.Color(211,215,199)); Gtk.HBox headerHBox = new Gtk.HBox(false, 0); header = new Gtk.Label(); header.UseMarkup = true; header.UseUnderline = false; header.Markup = GetHeaderMarkup(groupName); header.Xalign = 0; header.Show(); // eb.Add(header); // PackStart (eb, false, false, 0); headerHBox.PackStart(header, false, false, 0); // spacer Gtk.Label spacerLabel = new Gtk.Label(string.Empty); spacerLabel.Show(); headerHBox.PackStart(spacerLabel, true, true, 0); extraWidgetHBox = new Gtk.HBox(false, 0); extraWidgetHBox.Show(); headerHBox.PackStart(extraWidgetHBox, false, false, 0); headerHBox.Show(); PackStart(headerHBox, false, false, 5); // // Group TreeView // taskView = new TaskView(treeModel, application.Preferences); taskView.TreeView.Show(); PackStart(taskView.TreeView, true, true, 0); taskView.NumberOfTasksChanged += OnNumberOfTasksChanged; taskView.TreeView.RowActivated += OnRowActivated; taskView.TreeView.ButtonPressEvent += OnButtonPressed; }