[Ayatana-commits] [Merge] lp:~karl-qdh/indicator-datetime/calendarmenuitemsignals into lp:indicator-datetime

2011-03-15 Thread Karl Lattimer
Karl Lattimer has proposed merging 
lp:~karl-qdh/indicator-datetime/calendarmenuitemsignals into 
lp:indicator-datetime.

Requested reviews:
  Ted Gould (ted)
Related bugs:
  Bug #726531 in Indicator Date and Time: Browsing calendar widget should 
update appointments
  https://bugs.launchpad.net/indicator-datetime/+bug/726531

For more details, see:
https://code.launchpad.net/~karl-qdh/indicator-datetime/calendarmenuitemsignals/+merge/53467

Updated code in this branch to fulfil ted's comments

Partially fixes bug #726531
-- 
https://code.launchpad.net/~karl-qdh/indicator-datetime/calendarmenuitemsignals/+merge/53467
Your team ayatana-commits is subscribed to branch lp:indicator-datetime.
=== modified file 'src/datetime-service.c'
--- src/datetime-service.c	2011-03-15 02:43:27 +
+++ src/datetime-service.c	2011-03-15 15:51:12 +
@@ -280,9 +280,6 @@
 static gboolean
 month_changed_cb (DbusmenuMenuitem * menuitem, gchar *name, GVariant *variant, guint timestamp)
 {
-	// BLOCKED: get type, then get type as string from the variant causes segfault in glib
-	// TODO: * Set some globals so when we-re-run update appointment menu items it gets the right start date
-	//		 * update appointment menu items
 	start_time_appointments = (time_t)g_variant_get_uint32(variant);
 	
 	g_debug(Received month changed with timestamp: %d - %s,(int)start_time_appointments, ctime(start_time_appointments));	
@@ -290,6 +287,37 @@
 	return TRUE;
 }
 
+static gboolean
+day_selected_cb (DbusmenuMenuitem * menuitem, gchar *name, GVariant *variant, guint timestamp)
+{
+	start_time_appointments = (time_t)g_variant_get_uint32(variant);
+	
+	g_debug(Received day-selected with timestamp: %d - %s,(int)start_time_appointments, ctime(start_time_appointments));	
+	update_appointment_menu_items(NULL);
+	return TRUE;
+}
+
+static gboolean
+day_selected_double_click_cb (DbusmenuMenuitem * menuitem, gchar *name, GVariant *variant, guint timestamp)
+{
+	time_t evotime = (time_t)g_variant_get_uint32(variant);
+	
+	g_debug(Received day-selected-double-click with timestamp: %d - %s,(int)evotime, ctime(evotime));	
+	
+	gchar *ad = isodate_from_time_t(evotime);
+	gchar *cmd = g_strconcat(evolution calendar:///?startdate=, ad, NULL);
+	
+	GError * error = NULL;
+
+	g_debug(Issuing command '%s', cmd);
+	if (!g_spawn_command_line_async(cmd, error)) {
+		g_warning(Unable to start %s: %s, (char *)cmd, error-message);
+		g_error_free(error);
+	}
+	
+	return TRUE;
+}
+
 static guint ecaltimer = 0;
 
 static void
@@ -365,8 +393,10 @@
 			stop_ecal_timer();
 		}
 		
-		// Connect to event::month-changed 
+		// Connect to calendar events
 		g_signal_connect(calendar, event::month-changed, G_CALLBACK(month_changed_cb), NULL);
+		g_signal_connect(calendar, event::day-selected, G_CALLBACK(day_selected_cb), NULL);
+		g_signal_connect(calendar, event::day-selected-double-click, G_CALLBACK(day_selected_double_click_cb), NULL);
 		g_free(evo);
 	} else {
 		g_debug(Unable to find calendar app.);
@@ -543,27 +573,51 @@
 	if (updating_appointments) return TRUE;
 	updating_appointments = TRUE;
 	
-	time_t t1, t2;
+	time_t curtime = 0, t1 = 0, t2 = 0;
 	gchar *ad;
 	GList *l;
 	GSList *g;
 	GError *gerror = NULL;
 	gint i;
-	gint width, height;
+	gint width = 0, height = 0;
 	ESourceList * sources = NULL;
-	
-	if (start_time_appointments  0)
-		t1 = start_time_appointments;
-	else
-		time(t1);
-
-	/* TODO: 7 days ahead of now, we actually need number_of_days_in_this_month 
-	 *   so we call mark-day for all remaining days in this month
-	 * N.B. Ideally we want any/all dates which are later than today to be marked.
-	 */
-	t2 = t1 + (time_t) (7 * 24 * 60 * 60); 
-	
-	// TODO Remove all highlights from the calendar widget
+
+	// Get today  work out query times
+	time(curtime);
+  	struct tm *today = localtime(curtime);
+	const int mday = today-tm_mday;
+	const int mon = today-tm_mon;
+	const int year = today-tm_year;
+	
+  	struct tm *start_tm = NULL;
+	int this_year = today-tm_year + 1900;
+	int days[12]={31,28,31,30,31,30,31,31,30,31,30,31};
+	if ((this_year % 400 == 0) || (this_year % 100  0  this_year % 4 == 0)) days[1] = 29;
+	
+	int highlightdays = days[mon] - mday + 1;
+	t1 = curtime; // By default the current time is the appointment start time. 
+	
+	if (start_time_appointments  0) {
+  		start_tm = localtime(start_time_appointments);
+		int start_month = start_tm-tm_mon;
+		int start_year = start_tm-tm_year + 1900;
+		if ((start_month != mon) || (start_year != this_year)) {
+			// Set t1 to the start of that month.
+			struct tm month_start = {0};
+			month_start.tm_year = start_tm-tm_year;
+			month_start.tm_mon = start_tm-tm_mon;
+			month_start.tm_mday = 1;
+			t1 = mktime(month_start);
+			highlightdays = days[mon];
+		}
+	}
+	
+	g_debug(Will highlight %d days from %s, highlightdays, ctime(t1));
+
+	t2 = t1 + (time_t) (highlightdays * 24 * 60 * 60); 
+	
+	// Remove all highlights from the calendar widget
+	dbusmenu_menuitem_property_set (calendar, 

[Ayatana-commits] [Merge] lp:~gunnarhj/indicator-session/bug-636693 into lp:indicator-session

2011-03-15 Thread Gunnar Hjalmarsson
Gunnar Hjalmarsson has proposed merging 
lp:~gunnarhj/indicator-session/bug-636693 into lp:indicator-session.

Requested reviews:
  Ted Gould (ted)

For more details, see:
https://code.launchpad.net/~gunnarhj/indicator-session/bug-636693/+merge/53485
-- 
https://code.launchpad.net/~gunnarhj/indicator-session/bug-636693/+merge/53485
Your team ayatana-commits is subscribed to branch lp:indicator-session.
=== modified file 'src/session-service.c'
--- src/session-service.c	2011-03-10 21:49:10 +
+++ src/session-service.c	2011-03-15 17:42:25 +
@@ -415,18 +415,25 @@
 {
 	GError * error = NULL;
 
-	lock_if_possible();
-
 	if (dbusmenu_menuitem_property_get_bool(mi, USER_ITEM_PROP_LOGGED_IN)) {
+		lock_if_possible();
 		if (users_service_dbus_activate_guest_session(USERS_SERVICE_DBUS(user_data))) {
 			return;
 		}
 		g_warning(Unable to activate guest session, falling back to command line activation.);
 	}
 
-	if (!g_spawn_command_line_async(GUEST_SESSION_LAUNCHER  --no-lock, error)) {
-		g_warning(Unable to start guest session: %s, error-message);
-		g_error_free(error);
+	ensure_gconf_client ();
+	if (!gconf_client_get_bool (gconf_client, LOCKDOWN_KEY_SCREENSAVER, NULL)) {
+		if (!g_spawn_command_line_async(GUEST_SESSION_LAUNCHER, error)) {
+			g_warning(Unable to start guest session: %s, error-message);
+			g_error_free(error);
+		}
+	} else {
+		if (!g_spawn_command_line_async(GUEST_SESSION_LAUNCHER  --no-lock, error)) {
+			g_warning(Unable to start guest session: %s, error-message);
+			g_error_free(error);
+		}
 	}
 
 	return;

___
Mailing list: https://launchpad.net/~ayatana-commits
Post to : ayatana-commits@lists.launchpad.net
Unsubscribe : https://launchpad.net/~ayatana-commits
More help   : https://help.launchpad.net/ListHelp


Re: [Ayatana-commits] [Merge] lp:~karl-qdh/indicator-datetime/calendarmenuitemsignals into lp:indicator-datetime

2011-03-15 Thread Ted Gould
Review: Approve
  review approve
  merge approve

-- 
https://code.launchpad.net/~karl-qdh/indicator-datetime/calendarmenuitemsignals/+merge/53467
Your team ayatana-commits is subscribed to branch lp:indicator-datetime.

___
Mailing list: https://launchpad.net/~ayatana-commits
Post to : ayatana-commits@lists.launchpad.net
Unsubscribe : https://launchpad.net/~ayatana-commits
More help   : https://help.launchpad.net/ListHelp