aboutsummaryrefslogtreecommitdiffstats
path: root/calendar
diff options
context:
space:
mode:
authorMilan Crha <mcrha@redhat.com>2010-06-24 02:42:03 +0800
committerMilan Crha <mcrha@redhat.com>2010-06-24 02:42:03 +0800
commitbcdea3f01e0b614a0e366ee19c0ff6810e43b32d (patch)
tree174e4608c4ecd112a50b851ee64b1faaedb8e1e1 /calendar
parentb0a06fc691d47dc1c3c0e73678c945a1e1bb4ff5 (diff)
downloadgsoc2013-evolution-bcdea3f01e0b614a0e366ee19c0ff6810e43b32d.tar.gz
gsoc2013-evolution-bcdea3f01e0b614a0e366ee19c0ff6810e43b32d.tar.zst
gsoc2013-evolution-bcdea3f01e0b614a0e366ee19c0ff6810e43b32d.zip
Bug #611165 - Use memo start date from a calendar view, if active
Diffstat (limited to 'calendar')
-rw-r--r--calendar/gui/comp-util.c53
-rw-r--r--calendar/gui/comp-util.h4
2 files changed, 57 insertions, 0 deletions
diff --git a/calendar/gui/comp-util.c b/calendar/gui/comp-util.c
index e8cbc72436..2254d49cf6 100644
--- a/calendar/gui/comp-util.c
+++ b/calendar/gui/comp-util.c
@@ -35,6 +35,10 @@
#include "e-util/e-categories-config.h"
#include "common/authentication.h"
+#include "gnome-cal.h"
+#include "shell/e-shell-window.h"
+#include "shell/e-shell-view.h"
+
/**
@@ -425,6 +429,55 @@ cal_comp_memo_new_with_defaults (ECal *client)
return comp;
}
+void
+cal_comp_update_time_by_active_window (ECalComponent *comp, EShell *shell)
+{
+ GtkWindow *window;
+
+ g_return_if_fail (comp != NULL);
+ g_return_if_fail (shell != NULL);
+
+ window = e_shell_get_active_window (shell);
+ if (window && E_IS_SHELL_WINDOW (window)) {
+ EShellWindow *shell_window = E_SHELL_WINDOW (window);
+
+ if (e_shell_window_get_active_view (shell_window)
+ && g_str_equal (e_shell_window_get_active_view (shell_window), "calendar")) {
+ EShellView *view;
+ GnomeCalendar *gnome_cal;
+ time_t start = 0, end = 0;
+ icaltimezone *zone;
+ struct icaltimetype itt;
+ icalcomponent *icalcomp;
+ icalproperty *prop;
+
+ view = e_shell_window_peek_shell_view (shell_window, "calendar");
+ g_return_if_fail (view != NULL);
+
+ gnome_cal = NULL;
+ g_object_get (G_OBJECT (e_shell_view_get_shell_content (view)), "calendar", &gnome_cal, NULL);
+ g_return_if_fail (gnome_cal != NULL);
+
+ gnome_calendar_get_current_time_range (gnome_cal, &start, &end);
+ g_return_if_fail (start != 0);
+
+ zone = e_cal_model_get_timezone (gnome_calendar_get_model (gnome_cal));
+ itt = icaltime_from_timet_with_zone (start, FALSE, zone);
+
+ icalcomp = e_cal_component_get_icalcomponent (comp);
+ prop = icalcomponent_get_first_property (icalcomp, ICAL_DTSTART_PROPERTY);
+ if (prop) {
+ icalproperty_set_dtstart (prop, itt);
+ } else {
+ prop = icalproperty_new_dtstart (itt);
+ icalcomponent_add_property (icalcomp, prop);
+ }
+
+ e_cal_component_rescan (comp);
+ }
+ }
+}
+
/**
* cal_comp_util_get_n_icons:
* @comp: A calendar component object.
diff --git a/calendar/gui/comp-util.h b/calendar/gui/comp-util.h
index d328627145..7b1bf28626 100644
--- a/calendar/gui/comp-util.h
+++ b/calendar/gui/comp-util.h
@@ -29,6 +29,8 @@
#include <libecal/e-cal-component.h>
#include <libecal/e-cal.h>
+struct _EShell;
+
void cal_comp_util_add_exdate (ECalComponent *comp, time_t t, icaltimezone *zone);
/* Returns TRUE if the component uses the given timezone for both DTSTART
@@ -50,6 +52,8 @@ ECalComponent *cal_comp_event_new_with_current_time (ECal *client, gboolean all_
ECalComponent *cal_comp_task_new_with_defaults (ECal *client);
ECalComponent *cal_comp_memo_new_with_defaults (ECal *client);
+void cal_comp_update_time_by_active_window (ECalComponent *comp, struct _EShell *shell);
+
void cal_comp_selection_set_string_list (GtkSelectionData *data, GSList *str_list);
GSList *cal_comp_selection_get_string_list (GtkSelectionData *data);