[tasque] Highlight overdue tasks red, and tasks due today blue (#563748)
- From: Sanford Armstrong <sharm src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [tasque] Highlight overdue tasks red, and tasks due today blue (#563748)
- Date: Sat, 19 Sep 2009 14:47:41 +0000 (UTC)
commit a521a82f49ebb7e2d49d464bb236313c64d406fd
Author: Sandy Armstrong <sanfordarmstrong gmail com>
Date: Sat Sep 19 07:46:33 2009 -0700
Highlight overdue tasks red, and tasks due today blue (#563748)
Colors are customizable, but currently do not interact with theme
preferences in any way. Completed tasks are always grey.
Thanks to Steve George for helping with this patch.
Signed-off-by: Sandy Armstrong <sanfordarmstrong gmail com>
src/Preferences.cs | 8 +++-
src/PreferencesDialog.cs | 129 ++++++++++++++++++++++++++++++++++++++++++++-
src/TaskTreeView.cs | 16 +++++-
3 files changed, 148 insertions(+), 5 deletions(-)
---
diff --git a/src/Preferences.cs b/src/Preferences.cs
index 26653d5..874d1b3 100644
--- a/src/Preferences.cs
+++ b/src/Preferences.cs
@@ -48,7 +48,9 @@ namespace Tasque
public const string InactivateTimeoutKey = "InactivateTimeout";
public const string SelectedCategoryKey = "SelectedCategory";
public const string ParseDateEnabledKey = "ParseDateEnabled";
-
+ public const string TodayTaskTextColor = "TodayTaskTextColor";
+ public const string OverdueTaskTextColor = "OverdueTaskTextColor";
+
/// <summary>
/// A list of category names to show in the TaskWindow when the "All"
/// category is selected.
@@ -105,6 +107,10 @@ namespace Tasque
switch (settingKey) {
case ParseDateEnabledKey:
return true.ToString ();
+ case TodayTaskTextColor:
+ return "#181AB7";
+ case OverdueTaskTextColor:
+ return "#EB3320";
default:
return null;
}
diff --git a/src/PreferencesDialog.cs b/src/PreferencesDialog.cs
index 969fc41..3fe06b8 100644
--- a/src/PreferencesDialog.cs
+++ b/src/PreferencesDialog.cs
@@ -53,6 +53,15 @@ namespace Tasque
Gtk.TreeModelFilter filteredCategories;
List<string> categoriesToHide;
Gtk.TreeView categoriesTree;
+
+ //
+ // Appearance Page Widgets
+ //
+ Gtk.Widget appearancePage;
+ Gtk.Entry txtTodaysTaskColor;
+ Gtk.ColorButton btnChangeTodaysTaskColor;
+ Gtk.Entry txtOverdueTaskColor;
+ Gtk.ColorButton btnChangeOverdueTaskColor;
//
// Backend Page Widgets
@@ -105,7 +114,15 @@ namespace Tasque
generalPageId =
notebook.AppendPage (generalPage,
new Label (Catalog.GetString ("General")));
-
+
+ //
+ // Appearance Page
+ //
+ appearancePage = MakeAppearancePage ();
+ appearancePage.Show ();
+ notebook.AppendPage (appearancePage,
+ new Label (Catalog.GetString ("Appearance")));
+
//
// Backend Page
//
@@ -131,7 +148,87 @@ namespace Tasque
DeleteEvent += WindowDeleted;
}
-
+
+ private Gtk.Widget MakeAppearancePage ()
+ {
+ VBox vbox = new VBox (false, 6);
+ vbox.BorderWidth = 10;
+
+ VBox sectionVBox = new VBox (false, 4);
+ Label l = new Label ();
+ l.Markup = string.Format ("<span size=\"large\" weight=\"bold\">{0}</span>",
+ Catalog.GetString ("Color Management"));
+ l.UseUnderline = false;
+ l.UseMarkup = true;
+ l.Wrap = false;
+ l.Xalign = 0;
+
+ l.Show ();
+ sectionVBox.PackStart (l, false, false, 0);
+
+ HBox hbox = new HBox (false, 6);
+ Label lblTodaysTaskColor = new Label ();
+ lblTodaysTaskColor.Text = Catalog.GetString ("Today:");
+ lblTodaysTaskColor.Xalign = 0;
+ lblTodaysTaskColor.WidthRequest = 75;
+ lblTodaysTaskColor.Show ();
+
+ Preferences prefs = Application.Preferences;
+ txtTodaysTaskColor = new Entry();
+ txtTodaysTaskColor.Text = prefs.Get (Preferences.TodayTaskTextColor);
+ txtTodaysTaskColor.Changed += OnTxtTodaysTaskColorChanged;
+ txtTodaysTaskColor.Show ();
+
+ btnChangeTodaysTaskColor = new ColorButton();
+ string todayTasksColor = prefs.Get (Preferences.TodayTaskTextColor);
+ Gdk.Color currentColor = new Gdk.Color();
+ Gdk.Color.Parse (todayTasksColor, ref currentColor);
+ btnChangeTodaysTaskColor.Color = currentColor;
+
+ btnChangeTodaysTaskColor.ColorSet += OnBtnChangeTodaysTaskColorColorSet;
+ btnChangeTodaysTaskColor.Show ();
+
+ hbox.PackStart (lblTodaysTaskColor, false, false, 0);
+ hbox.PackStart (txtTodaysTaskColor, false, false, 0);
+ hbox.PackStart (btnChangeTodaysTaskColor, false, false, 0);
+ hbox.Show ();
+
+ HBox hbox2 = new HBox (false, 6);
+
+ Label lblOverdueTaskColor = new Label ();
+ lblOverdueTaskColor.Text = Catalog.GetString ("Overdue:");
+ lblOverdueTaskColor.WidthRequest = 75;
+ lblOverdueTaskColor.Xalign = 0;
+ lblOverdueTaskColor.Show ();
+
+ txtOverdueTaskColor = new Entry();
+ txtOverdueTaskColor.Text = prefs.Get (Preferences.OverdueTaskTextColor);
+ txtOverdueTaskColor.Changed += OnTxtOverdueTaskColorChanged;
+ txtOverdueTaskColor.Show ();
+
+ btnChangeOverdueTaskColor = new ColorButton();
+ string overdueTasksColor = prefs.Get (Preferences.OverdueTaskTextColor);
+ Gdk.Color overdueColor = new Gdk.Color();
+ Gdk.Color.Parse (overdueTasksColor, ref overdueColor);
+ btnChangeOverdueTaskColor.Color = overdueColor;
+
+ btnChangeOverdueTaskColor.ColorSet += OnBtnChangeOverdueTaskColorColorSet;
+ btnChangeOverdueTaskColor.Show();
+
+ hbox2.PackStart (lblOverdueTaskColor, false, false, 0);
+ hbox2.PackStart (txtOverdueTaskColor, false, false, 0);
+ hbox2.PackStart (btnChangeOverdueTaskColor, false, false, 0);
+ hbox2.Show ();
+
+ sectionVBox.PackStart (hbox, false, false, 0);
+ sectionVBox.PackStart (hbox2, false, false, 0);
+ sectionVBox.Show();
+
+ vbox.PackStart (sectionVBox, false, false, 0);
+
+ return vbox;
+ }
+
private Gtk.Widget MakeGeneralPage ()
{
VBox vbox = new VBox (false, 6);
@@ -292,7 +389,33 @@ namespace Tasque
showCompletedTasksCheckButton.Active);
};
}
-
+
+ private void OnBtnChangeTodaysTaskColorColorSet (object sender, EventArgs args)
+ {
+ txtTodaysTaskColor.Text =
+ Utilities.ColorGetHex (btnChangeTodaysTaskColor.Color).ToUpper ();
+ }
+
+ private void OnTxtTodaysTaskColorChanged (object sender, EventArgs args)
+ {
+ // Save the user preference
+ Application.Preferences.Set (Preferences.TodayTaskTextColor,
+ ((Entry) sender).Text);
+ }
+
+ private void OnBtnChangeOverdueTaskColorColorSet(object sender, EventArgs args)
+ {
+ txtOverdueTaskColor.Text =
+ Utilities.ColorGetHex (btnChangeOverdueTaskColor.Color).ToUpper ();
+ }
+
+ private void OnTxtOverdueTaskColorChanged (object sender, EventArgs args)
+ {
+ // Save the user preference
+ Application.Preferences.Set (Preferences.OverdueTaskTextColor,
+ ((Entry) sender).Text);
+ }
+
private void OnBackendComboBoxChanged (object sender, EventArgs args)
{
if (selectedBackend >= 0) {
diff --git a/src/TaskTreeView.cs b/src/TaskTreeView.cs
index 86aa08c..202ca61 100644
--- a/src/TaskTreeView.cs
+++ b/src/TaskTreeView.cs
@@ -384,6 +384,19 @@ namespace Tasque
}
string formatString = "{0}";
+
+ Preferences prefs = Application.Preferences;
+ string todayTasksColor = prefs.Get (Preferences.TodayTaskTextColor);
+ string overdueTaskColor = prefs.Get (Preferences.OverdueTaskTextColor);
+
+ if (task.IsComplete)
+ ; // Completed tasks colored below
+ else if (task.DueDate.Date == DateTime.Today.Date)
+ crt.Foreground = todayTasksColor;
+ // Overdue and the task has a date assigned to it.
+ else if (task.DueDate < DateTime.Today && task.DueDate != DateTime.MinValue)
+ crt.Foreground = overdueTaskColor;
+
switch (task.State) {
case TaskState.Inactive:
// Strikeout the text
@@ -394,7 +407,8 @@ namespace Tasque
// Gray out the text and add strikeout
// TODO: Determine the grayed-out text color appropriate for the current theme
formatString =
- "<span foreground=\"#AAAAAA\" strikethrough=\"true\">{0}</span>";
+ "<span strikethrough=\"true\">{0}</span>";
+ crt.Foreground = "#AAAAAA";
break;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]