rpms/planner/devel planner-gnome604510.calcolors.patch, NONE, 1.1 planner.spec, 1.73, 1.74

Caolan McNamara caolanm at fedoraproject.org
Mon Dec 14 09:08:02 UTC 2009


Author: caolanm

Update of /cvs/pkgs/rpms/planner/devel
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv21455/devel

Modified Files:
	planner.spec 
Added Files:
	planner-gnome604510.calcolors.patch 
Log Message:
- Resolves: rhbz#546850 use different colors for different day types

planner-gnome604510.calcolors.patch:
 libplanner/mrp-calendar.c |    5 -
 src/planner-calendar.c    |  177 ++++++++++++++++------------------------------
 src/planner-calendar.h    |   26 ------
 3 files changed, 68 insertions(+), 140 deletions(-)

--- NEW FILE planner-gnome604510.calcolors.patch ---
diff -ru planner-0.14.4.orig/libplanner/mrp-calendar.c planner-0.14.4/libplanner/mrp-calendar.c
--- planner-0.14.4.orig/libplanner/mrp-calendar.c	2008-07-22 14:41:46.000000000 +0100
+++ planner-0.14.4/libplanner/mrp-calendar.c	2009-12-12 17:08:50.000000000 +0000
@@ -159,9 +161,10 @@
 
 	g_object_class_install_property (object_class,
 					 PROP_PROJECT,
-					 g_param_spec_pointer ("project",
+					 g_param_spec_object ("project",
 							       "Project",
 							       "The project this calendar belongs to",
+							       G_TYPE_OBJECT,
 							       G_PARAM_READWRITE));
 
 	imrp_day_setup_defaults ();
@@ -254,7 +257,7 @@
 		mrp_calendar_set_name (calendar, g_value_get_string (value));
 		break;
 	case PROP_PROJECT:
-		priv->project = MRP_PROJECT (g_value_get_pointer (value));
+		priv->project = g_value_get_object (value);
 		break;
 	default:
 		break;
diff -ru planner-0.14.4.orig/src/planner-calendar.c planner-0.14.4/src/planner-calendar.c
--- planner-0.14.4.orig/src/planner-calendar.c	2009-12-14 08:55:30.000000000 +0000
+++ planner-0.14.4/src/planner-calendar.c	2009-12-13 15:47:15.000000000 +0000
@@ -180,10 +180,8 @@
 #define HEADER_BG_COLOR(widget)		 (& (widget)->style->bg[GTK_WIDGET_STATE (widget)])
 #define SELECTED_BG_COLOR(widget)	 (& (widget)->style->base[GTK_WIDGET_HAS_FOCUS (widget) ? GTK_STATE_SELECTED : GTK_STATE_ACTIVE])
 #define SELECTED_FG_COLOR(widget)	 (& (widget)->style->text[GTK_WIDGET_HAS_FOCUS (widget) ? GTK_STATE_SELECTED : GTK_STATE_ACTIVE])
-#define NORMAL_DAY_COLOR(widget)	 (& (widget)->style->fg[GTK_WIDGET_STATE (widget)])
 #define PREV_MONTH_COLOR(widget)	 (& (widget)->style->mid[GTK_WIDGET_STATE (widget)])
 #define NEXT_MONTH_COLOR(widget)	 (& (widget)->style->mid[GTK_WIDGET_STATE (widget)])
-#define MARKED_COLOR(widget)		 (& (widget)->style->fg[GTK_WIDGET_STATE (widget)])
 #define BACKGROUND_COLOR(widget)	 (& (widget)->style->base[GTK_WIDGET_STATE (widget)])
 #define HIGHLIGHT_BACK_COLOR(widget)	 (& (widget)->style->mid[GTK_WIDGET_STATE (widget)])
 
@@ -430,6 +428,25 @@
 			      G_TYPE_NONE, 0);
 }
 
+/* Tango palette */
+static const GdkColor tango_palette[14] =
+{
+    { 0, 0xcccc, 0x0000, 0x0000 },
+    { 0, 0x4e4e, 0x9a9a, 0x0606 },
+    { 0, 0xc4c4, 0xa0a0, 0x0000 }, 
+    { 0, 0x3434, 0x6565, 0xa4a4 },
+    { 0, 0x7575, 0x5050, 0x7b7b },
+    { 0, 0x0606, 0x9820, 0x9a9a },
+    { 0, 0x5555, 0x5757, 0x5353 },
+    { 0, 0xefef, 0x2929, 0x2929 },
+    { 0, 0x8a8a, 0xe2e2, 0x3434 }, 
+    { 0, 0xfcfc, 0xe9e9, 0x4f4f },
+    { 0, 0x7272, 0x9f9f, 0xcfcf },
+    { 0, 0xadad, 0x7f7f, 0xa8a8 },             
+    { 0, 0x3434, 0xe2e2, 0xe2e2 },
+    { 0, 0xeeee, 0xeeee, 0xecec }
+};
+
 static void
 planner_calendar_init (PlannerCalendar *calendar)
 {
@@ -470,8 +487,11 @@
 	calendar->year  = 1900 + tm->tm_year;
   
 	for (i=0;i<31;i++)
-		calendar->marked_date[i] = PLANNER_CALENDAR_MARK_NONE;
-	calendar->num_marked_dates = 0;
+		calendar->marked_date[i] = NULL;
+
+	for (i=0;i<14;i++)
+		calendar->mark_colors[i] = tango_palette[i];
+
 	calendar->selected_day = tm->tm_mday;
   
 	calendar->display_flags = ( PLANNER_CALENDAR_SHOW_HEADING | 
@@ -1049,6 +1069,7 @@
 	PlannerCalendarPrivateData *private_data;
 	GdkWindowAttr attributes;
 	gint attributes_mask;
+	gint i;
 	GdkGCValues values;
 
 	calendar = PLANNER_CALENDAR (widget);
@@ -1110,6 +1131,9 @@
 						   &values,
 						   GDK_GC_FOREGROUND |
 						   GDK_GC_FUNCTION);
+
+	for (i=0;i<14;i++)
+		gdk_rgb_find_color(attributes.colormap, &(calendar->mark_colors[i]));
 }
 
 static void
@@ -1839,51 +1863,13 @@
 			gdk_draw_rectangle (private_data->main_win, gc, TRUE, x_left, y_top,
 					    private_data->day_width, day_height);
 		}
-		else
+		else if (calendar->marked_date[day-1])
 		{
-			switch (calendar->marked_date[day-1]) {
-			case PLANNER_CALENDAR_MARK_NONE:
-			case PLANNER_CALENDAR_MARK_UNDERLINE:
-			case PLANNER_CALENDAR_MARK_BOLD:
-				break;
-			case PLANNER_CALENDAR_MARK_SHADE:
-				gdk_gc_set_foreground (gc, SHADED_BG_COLOR (GTK_WIDGET (calendar)));
-				gdk_draw_rectangle (private_data->main_win, gc, TRUE, x_left, y_top,
-						    private_data->day_width, day_height);
-				break;
-			case PLANNER_CALENDAR_MARK_STRIPE:
-			{
-				static GdkBitmap *stripe_stipple = NULL;
-				gchar             stipple_pattern[] = { 2, 1, 8, 4 };
-
-				if (!stripe_stipple) {
-					stripe_stipple = gdk_bitmap_create_from_data (NULL,
-										      stipple_pattern,
-										      4, 4);
-				}
-		      
-				gdk_gc_set_foreground (gc, STRIPED_BG_COLOR (GTK_WIDGET (calendar)));
-				gdk_gc_set_fill (gc, GDK_STIPPLED);
-				gdk_gc_set_stipple (gc, stripe_stipple);
-				gdk_draw_rectangle (private_data->main_win, gc, TRUE, x_left, y_top,
-						    private_data->day_width, day_height);
-				gdk_gc_set_fill (gc, GDK_SOLID);
-			}
-			break;
-			}
+			gdk_gc_set_foreground (gc, calendar->marked_date[day-1]);
+			gdk_draw_rectangle (private_data->main_win, gc, TRUE, x_left, y_top,
+					    private_data->day_width, day_height);
 		}
       
-		switch (calendar->marked_date[day-1]) {
-		case PLANNER_CALENDAR_MARK_BOLD:
-			gdk_gc_set_foreground (gc, MARKED_COLOR (GTK_WIDGET (calendar)));
-			break;
-		case PLANNER_CALENDAR_MARK_SHADE:
-		case PLANNER_CALENDAR_MARK_UNDERLINE:
-		case PLANNER_CALENDAR_MARK_NONE:
-			gdk_gc_set_foreground (gc, NORMAL_DAY_COLOR (GTK_WIDGET (calendar)));
-			break;
-		}
-  
 		if (calendar->selected_day == day)
 			gdk_gc_set_foreground (gc, SELECTED_FG_COLOR (GTK_WIDGET (calendar)));
 		else
@@ -1901,17 +1887,6 @@
 	gdk_draw_layout (private_data->main_win, gc,
 			 x_loc, y_loc, layout);
 
-	switch (calendar->marked_date[day-1]) {
-	case PLANNER_CALENDAR_MARK_BOLD:
-		if (calendar->day_month[row][col] == MONTH_CURRENT) 
-			gdk_draw_layout (private_data->main_win, gc,
-					 x_loc-1, y_loc, layout);
-		break;
-	  
-	default:
-		break;
-	}
-
 	if (GTK_WIDGET_HAS_FOCUS (calendar) 
 	    && calendar->focus_row == row && calendar->focus_col == col)
 	{
@@ -2257,46 +2232,6 @@
 }
 
 void
-planner_calendar_clear_marks (PlannerCalendar *calendar)
-{
-	guint day;
-  
-	g_return_if_fail (PLANNER_IS_CALENDAR (calendar));
-  
-	for (day = 0; day < 31; day++)
-	{
-		calendar->marked_date[day] = PLANNER_CALENDAR_MARK_NONE;
-	}
- 
-	calendar->num_marked_dates = 0;
- 
-	if (GTK_WIDGET_DRAWABLE (calendar))
-	{
-		planner_calendar_paint_main (GTK_WIDGET (calendar));
-	}
-}
-
-gboolean
-planner_calendar_unmark_day (PlannerCalendar *calendar,
-			guint	      day)
-{
-	g_return_val_if_fail (PLANNER_IS_CALENDAR (calendar), FALSE);
-  
-	if (day >= 1 && day <= 31 && calendar->marked_date[day-1] == TRUE)
-	{
-		calendar->marked_date[day - 1] = FALSE;
-		calendar->num_marked_dates--;
-	}
-  
-	if (GTK_WIDGET_DRAWABLE (GTK_WIDGET (calendar)))
-	{
-		planner_calendar_paint_main (GTK_WIDGET (calendar));
-	}
-  
-	return TRUE;
-}
-
-void
 planner_calendar_get_date (PlannerCalendar *calendar,
 		      guint	   *year,
 		      guint	   *month,
@@ -2754,10 +2689,10 @@
 
 /* ------------------------------- */
 
-void
+static void
 planner_calendar_mark_day (PlannerCalendar         *calendar,
 		      guint               day,
-		      PlannerCalendarMarkType  type)
+		      const GdkColor *color)
 {
 	gint index;
 	
@@ -2766,16 +2701,11 @@
 
 	index = day - 1;
 	
-	if (calendar->marked_date[index] == type) {
+	if (calendar->marked_date[index] == color) {
 		return;
 	}
 
-	calendar->marked_date[index] = type;
-	if (type != PLANNER_CALENDAR_MARK_NONE) {
-		calendar->num_marked_dates++;
-	} else {
-		calendar->num_marked_dates--;
-	}
+	calendar->marked_date[index] = color;
 
 	if (GTK_WIDGET_DRAWABLE (GTK_WIDGET (calendar))) {
 		planner_calendar_paint_main (GTK_WIDGET (calendar));
@@ -2790,9 +2720,19 @@
 	MrpTime      *t;
 	mrptime      time;
 	MrpDay       *day;
+	MrpProject   *project=NULL;
+	const GdkColor     *color;
+	GList        *daytypes;
+	gint         dayindex;
 
 	planner_calendar_get_date (calendar, &y, &m, &d);
 
+	g_object_get (mrp_calendar, "project", &project, NULL);
+
+	daytypes = mrp_day_get_all (project);
+	daytypes = g_list_prepend (daytypes, mrp_day_get_nonwork ());
+	daytypes = g_list_prepend (daytypes, mrp_day_get_work ());
+
 	t = mrp_time2_new ();
 	mrp_time2_set_date (t, y, m+1, 1);
 	mrp_time2_set_time (t, 0, 0, 0);
@@ -2801,19 +2741,26 @@
 		time = mrp_time2_get_epoch (t);
 
 		day = mrp_calendar_get_day (mrp_calendar, time, TRUE);
+		dayindex = g_list_index (daytypes, day);
 
-		if (day == mrp_day_get_nonwork ()) {
-			planner_calendar_mark_day (calendar,
-						   d,
-						   PLANNER_CALENDAR_MARK_SHADE);
-		}
-		else if (day == mrp_day_get_work ()) {
-			planner_calendar_mark_day (calendar,
-						   d,
-						   PLANNER_CALENDAR_MARK_NONE);
+		switch (dayindex)
+		{
+			case 0:
+				color = NULL;
+				break;
+			case 1:
+				color = SHADED_BG_COLOR (GTK_WIDGET (calendar));
+				break;
+			default:
+				color = &(calendar->mark_colors[(dayindex-2)%14]);
+				break;
 		}
 
+		planner_calendar_mark_day (calendar, d, color);
+
 		mrp_time2_add_days (t, 1);
 	}
 	mrp_time2_free (t);
+	g_list_free (daytypes);
+	g_object_unref (project);
 }
diff -ru planner-0.14.4.orig/src/planner-calendar.h planner-0.14.4/src/planner-calendar.h
--- planner-0.14.4.orig/src/planner-calendar.h	2009-12-14 08:55:30.000000000 +0000
+++ planner-0.14.4/src/planner-calendar.h	2009-12-13 15:44:31.000000000 +0000
@@ -52,15 +52,6 @@
 	PLANNER_CALENDAR_SHOW_WEEK_NUMBERS	= 1 << 3,
 	PLANNER_CALENDAR_WEEK_START_MONDAY	= 1 << 4} PlannerCalendarDisplayOptions;
 
-typedef enum
-{
-	PLANNER_CALENDAR_MARK_NONE,
-	PLANNER_CALENDAR_MARK_BOLD,
-	PLANNER_CALENDAR_MARK_UNDERLINE,
-	PLANNER_CALENDAR_MARK_SHADE,
-	PLANNER_CALENDAR_MARK_STRIPE
-} PlannerCalendarMarkType;
-
 struct _PlannerCalendar
 {
 	GtkWidget widget;
@@ -75,10 +66,9 @@
 	gint day_month[6][7];
 	gint day[6][7];
 	
-	gint num_marked_dates;
-	gint marked_date[31];
+	const GdkColor *marked_date[31];
 	PlannerCalendarDisplayOptions  display_flags;
-	GdkColor marked_date_color[31];
+	GdkColor mark_colors[14];
 	
 	GdkGC *gc;
 	GdkGC *xor_gc;
@@ -123,10 +113,6 @@
 					 guint	      year);
 void	   planner_calendar_select_day	(PlannerCalendar *calendar,
 					 guint	      day);
-gboolean   planner_calendar_unmark_day	(PlannerCalendar *calendar,
-					 guint	      day);
-void	   planner_calendar_clear_marks	(PlannerCalendar *calendar);
-
 
 void	   planner_calendar_display_options (PlannerCalendar		  *calendar,
 					 PlannerCalendarDisplayOptions flags);
@@ -138,14 +124,8 @@
 void	   planner_calendar_freeze		(PlannerCalendar *calendar);
 void	   planner_calendar_thaw		(PlannerCalendar *calendar);
 
-
-
-void       planner_calendar_mark_day (PlannerCalendar         *calendar,
-				 guint               day,
-				 PlannerCalendarMarkType  type);
-
 void       planner_calendar_mark_days (PlannerCalendar         *calendar,
-				 MrpCalendar *mrp_calendar);
+				       MrpCalendar *mrp_calendar);
 
 
 #endif /* __PLANNER_CALENDAR_H__ */


Index: planner.spec
===================================================================
RCS file: /cvs/pkgs/rpms/planner/devel/planner.spec,v
retrieving revision 1.73
retrieving revision 1.74
diff -u -p -r1.73 -r1.74
--- planner.spec	11 Dec 2009 10:34:31 -0000	1.73
+++ planner.spec	14 Dec 2009 09:08:02 -0000	1.74
@@ -1,7 +1,7 @@
 Summary:   A graphical project management tool
 Name:      planner
 Version:   0.14.4
-Release:   8%{?dist}
+Release:   9%{?dist}
 License:   GPLv2+
 Group:     Applications/Productivity
 URL:       http://live.gnome.org/Planner
@@ -26,6 +26,7 @@ Patch4: planner-buildfix.patch
 Patch5: planner-gnome603693-planner-calendar-for-edittask.patch
 Patch6: planner-gnome604169-comboboxentry.patch
 Patch7: planner-gnome604355-scrolling.patch
+Patch8: planner-gnome604510.calcolors.patch
 
 %description
 Planner is a visual project management application which allows users to
@@ -63,6 +64,7 @@ This package provides a plugin to integr
 %patch5 -p1 -b .edittask
 %patch6 -p1 -b .combobox
 %patch7 -p1 -b .scrolling
+%patch8 -p1 -b .calcolors
 
 %build
 rm -rf libegg
@@ -161,6 +163,9 @@ rm -rf $RPM_BUILD_ROOT
 %{_libdir}/pkgconfig/*
 
 %changelog
+* Mon Dec 14 2009 Caolán McNamara <caolanm at redhat.com> - 0.14.4-9
+- Resolves: rhbz#546850 use different colors for different day types
+
 * Fri Dec 11 2009 Caolán McNamara <caolanm at redhat.com> - 0.14.4-8
 - Resolves: rhbz#546515 allow scrolling
 




More information about the fedora-extras-commits mailing list