← Back to team overview

ayatana-commits team mailing list archive

[Merge] lp:~ted/indicator-datetime/full-day-events into lp:indicator-datetime

 

Ted Gould has proposed merging lp:~ted/indicator-datetime/full-day-events into lp:indicator-datetime.

Requested reviews:
  Karl Lattimer (karl-qdh)

For more details, see:
https://code.launchpad.net/~ted/indicator-datetime/full-day-events/+merge/56464

I think this handles the full day events.  I'm not sure about the timezones, it works in the UTC-5, not sure about the UTC+* timezones.
-- 
https://code.launchpad.net/~ted/indicator-datetime/full-day-events/+merge/56464
Your team ayatana-commits is subscribed to branch lp:indicator-datetime.
=== modified file 'src/datetime-service.c'
--- src/datetime-service.c	2011-04-04 15:58:57 +0000
+++ src/datetime-service.c	2011-04-05 21:05:53 +0000
@@ -802,9 +802,10 @@
 		DbusmenuMenuitem * item;
 		
 		ECalComponentVType vtype = e_cal_component_get_vtype (ecalcomp);
+		struct tm due_data = {0};
 		struct tm *due = NULL;
-		if (vtype == E_CAL_COMPONENT_EVENT) due = localtime(&ci->start);
-		else if (vtype == E_CAL_COMPONENT_TODO) due = localtime(&ci->end);
+		if (vtype == E_CAL_COMPONENT_EVENT) due = localtime_r(&ci->start, &due_data);
+		else if (vtype == E_CAL_COMPONENT_TODO) due = localtime_r(&ci->end, &due_data);
 		else continue;
 		
 		const int dmday = due->tm_mday;
@@ -859,17 +860,36 @@
 		g_debug("Summary: %s", summary);
 		g_free (summary);
 
+		gboolean full_day = FALSE;
+		if (vtype == E_CAL_COMPONENT_EVENT) {
+			time_t start = ci->start;
+			if (time_add_day(start, 1) == ci->end) {
+				full_day = TRUE;
+			}
+		}
+
 		// Due text
-		if (apt_output == SETTINGS_TIME_12_HOUR) {
-			if ((mday == dmday) && (mon == dmon) && (year == dyear))
-				strftime(right, 20, _(DEFAULT_TIME_12_FORMAT), due);
-			else
-				strftime(right, 20, _(DEFAULT_TIME_12_FORMAT_WITH_DAY), due);
-		} else if (apt_output == SETTINGS_TIME_24_HOUR) {
-			if ((mday == dmday) && (mon == dmon) && (year == dyear))
-				strftime(right, 20, _(DEFAULT_TIME_24_FORMAT), due);
-			else
-				strftime(right, 20, _(DEFAULT_TIME_24_FORMAT_WITH_DAY), due);
+		if (full_day) {
+			struct tm fulldaytime = {0};
+			gmtime_r(&ci->start, &fulldaytime);
+
+			/* TRANSLATORS: This is a strftime string for the day for full day events
+			   in the menu.  It should most likely be either '%A' for a full text day
+			   (Wednesday) or '%a' for a shortened one (Wed).  You should only need to
+			   change for '%a' in the case of langauges with very long day names. */
+			strftime(right, 20, _("%A"), &fulldaytime);
+		} else {
+			if (apt_output == SETTINGS_TIME_12_HOUR) {
+				if ((mday == dmday) && (mon == dmon) && (year == dyear))
+					strftime(right, 20, _(DEFAULT_TIME_12_FORMAT), due);
+				else
+					strftime(right, 20, _(DEFAULT_TIME_12_FORMAT_WITH_DAY), due);
+			} else if (apt_output == SETTINGS_TIME_24_HOUR) {
+				if ((mday == dmday) && (mon == dmon) && (year == dyear))
+					strftime(right, 20, _(DEFAULT_TIME_24_FORMAT), due);
+				else
+					strftime(right, 20, _(DEFAULT_TIME_24_FORMAT_WITH_DAY), due);
+			}
 		}
 		g_debug("Appointment time: %s, for date %s", right, asctime(due));
 		dbusmenu_menuitem_property_set (item, APPOINTMENT_MENUITEM_PROP_RIGHT, right);


Follow ups