Made simple-add event work.
Fixed GcalEventOverlay handling of dates. Added initial code and methods to handle adding events to GcalManager. Fixed in GcalMonthView handling of dates passed to event-creation. Fixed gcal-utils sources for gcc warning. Fixed calling order in GcalWindow.
This commit is contained in:
@@ -39,6 +39,7 @@ struct _GcalEventOverlayPrivate
|
|||||||
|
|
||||||
icaltimetype *start_span;
|
icaltimetype *start_span;
|
||||||
icaltimetype *end_span;
|
icaltimetype *end_span;
|
||||||
|
gboolean one_day;
|
||||||
};
|
};
|
||||||
|
|
||||||
enum
|
enum
|
||||||
@@ -342,7 +343,11 @@ gcal_event_overlay_gather_data (GcalEventOverlay *widget,
|
|||||||
-1);
|
-1);
|
||||||
data->calendar_uid = uid;
|
data->calendar_uid = uid;
|
||||||
data->start_date = priv->start_span;
|
data->start_date = priv->start_span;
|
||||||
data->end_date = priv->end_span;
|
|
||||||
|
if (! priv->one_day)
|
||||||
|
data->end_date = priv->end_span;
|
||||||
|
else
|
||||||
|
data->end_date = NULL;
|
||||||
|
|
||||||
*new_data = data;
|
*new_data = data;
|
||||||
return TRUE;
|
return TRUE;
|
||||||
@@ -507,6 +512,7 @@ gcal_event_overlay_set_span (GcalEventOverlay *widget,
|
|||||||
*(priv->start_span) = *start_date;
|
*(priv->start_span) = *start_date;
|
||||||
|
|
||||||
real_end_date = end_date == NULL ? start_date : end_date;
|
real_end_date = end_date == NULL ? start_date : end_date;
|
||||||
|
priv->one_day = end_date == NULL;
|
||||||
if (priv->end_span == NULL)
|
if (priv->end_span == NULL)
|
||||||
priv->end_span = gcal_dup_icaltime (real_end_date);
|
priv->end_span = gcal_dup_icaltime (real_end_date);
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -165,6 +165,10 @@ static void gcal_manager_send_fake_events_added (GcalManager *mana
|
|||||||
static void gcal_manager_send_fave_events_removed (GcalManager *manager,
|
static void gcal_manager_send_fave_events_removed (GcalManager *manager,
|
||||||
GcalManagerUnit *unit);
|
GcalManagerUnit *unit);
|
||||||
|
|
||||||
|
static void gcal_manager_on_event_created (GObject *source_object,
|
||||||
|
GAsyncResult *result,
|
||||||
|
gpointer user_data);
|
||||||
|
|
||||||
G_DEFINE_TYPE(GcalManager, gcal_manager, G_TYPE_OBJECT)
|
G_DEFINE_TYPE(GcalManager, gcal_manager, G_TYPE_OBJECT)
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@@ -891,6 +895,34 @@ gcal_manager_send_fave_events_removed (GcalManager *manager,
|
|||||||
g_slist_free_full (events_data, g_free);
|
g_slist_free_full (events_data, g_free);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
gcal_manager_on_event_created (GObject *source_object,
|
||||||
|
GAsyncResult *result,
|
||||||
|
gpointer user_data)
|
||||||
|
{
|
||||||
|
ECalClient *client;
|
||||||
|
gchar *new_uid;
|
||||||
|
GError *error;
|
||||||
|
|
||||||
|
/* If* the view catch a signal of the newly created object the almost sure I
|
||||||
|
* have nothing to do here. */
|
||||||
|
|
||||||
|
client = E_CAL_CLIENT (source_object);
|
||||||
|
error = NULL;
|
||||||
|
if (e_cal_client_create_object_finish (client, result, &new_uid, &error))
|
||||||
|
{
|
||||||
|
g_debug ("Telling event: %s was created", new_uid);
|
||||||
|
|
||||||
|
g_free (new_uid);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* Some error */
|
||||||
|
g_warning ("Error creating object: %s", error->message);
|
||||||
|
g_error_free (error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* Public API */
|
/* Public API */
|
||||||
/**
|
/**
|
||||||
* gcal_manager_new:
|
* gcal_manager_new:
|
||||||
@@ -1472,3 +1504,62 @@ gcal_manager_remove_event (GcalManager *manager,
|
|||||||
data);
|
data);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
gcal_manager_create_event (GcalManager *manager,
|
||||||
|
const gchar *source_uid,
|
||||||
|
const gchar *summary,
|
||||||
|
const icaltimetype *initial_date,
|
||||||
|
const icaltimetype *final_date)
|
||||||
|
{
|
||||||
|
GcalManagerPrivate *priv;
|
||||||
|
GcalManagerUnit *unit;
|
||||||
|
ECalComponent *event;
|
||||||
|
ECalComponentDateTime dt;
|
||||||
|
ECalComponentText summ;
|
||||||
|
icalcomponent *new_event_icalcomp;
|
||||||
|
icaltimetype *dt_start;
|
||||||
|
|
||||||
|
g_return_if_fail (GCAL_IS_MANAGER (manager));
|
||||||
|
priv = manager->priv;
|
||||||
|
|
||||||
|
unit = g_hash_table_lookup (priv->clients, source_uid);
|
||||||
|
|
||||||
|
event = e_cal_component_new ();
|
||||||
|
e_cal_component_set_new_vtype (event, E_CAL_COMPONENT_EVENT);
|
||||||
|
|
||||||
|
dt_start = gcal_dup_icaltime (initial_date);
|
||||||
|
dt.value = dt_start;
|
||||||
|
dt.tzid = NULL;
|
||||||
|
e_cal_component_set_dtstart (event, &dt);
|
||||||
|
g_debug ("dt_start :%s", icaltime_as_ical_string (*dt_start));
|
||||||
|
|
||||||
|
if (final_date != NULL)
|
||||||
|
{
|
||||||
|
g_debug ("setting final_date");
|
||||||
|
*dt.value = *final_date;
|
||||||
|
g_debug ("dt_end :%s", icaltime_as_ical_string (*final_date));
|
||||||
|
e_cal_component_set_dtend (event, &dt);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
icaltime_adjust (dt_start, 1, 0, 0, 0);
|
||||||
|
*dt.value = *dt_start;
|
||||||
|
e_cal_component_set_dtend (event, &dt);
|
||||||
|
}
|
||||||
|
|
||||||
|
summ.altrep = NULL;
|
||||||
|
summ.value = summary;
|
||||||
|
e_cal_component_set_summary (event, &summ);
|
||||||
|
|
||||||
|
e_cal_component_commit_sequence (event);
|
||||||
|
|
||||||
|
new_event_icalcomp = e_cal_component_get_icalcomponent (event);
|
||||||
|
e_cal_client_create_object (unit->client,
|
||||||
|
new_event_icalcomp,
|
||||||
|
priv->async_ops,
|
||||||
|
gcal_manager_on_event_created,
|
||||||
|
manager);
|
||||||
|
|
||||||
|
g_object_unref (event);
|
||||||
|
}
|
||||||
|
|||||||
@@ -119,6 +119,12 @@ void gcal_manager_remove_event (GcalManager *manager
|
|||||||
const gchar *source_uid,
|
const gchar *source_uid,
|
||||||
const gchar *event_uid);
|
const gchar *event_uid);
|
||||||
|
|
||||||
|
void gcal_manager_create_event (GcalManager *manager,
|
||||||
|
const gchar *source_uid,
|
||||||
|
const gchar *summary,
|
||||||
|
const icaltimetype *initial_date,
|
||||||
|
const icaltimetype *final_date);
|
||||||
|
|
||||||
G_END_DECLS
|
G_END_DECLS
|
||||||
|
|
||||||
#endif /* __GCAL_MANAGER_H__ */
|
#endif /* __GCAL_MANAGER_H__ */
|
||||||
|
|||||||
@@ -550,6 +550,7 @@ gcal_month_view_button_press (GtkWidget *widget,
|
|||||||
|
|
||||||
start_date = gcal_dup_icaltime (priv->date);
|
start_date = gcal_dup_icaltime (priv->date);
|
||||||
start_date->day = priv->start_mark_cell + priv->days_delay;
|
start_date->day = priv->start_mark_cell + priv->days_delay;
|
||||||
|
start_date->is_date = 1;
|
||||||
|
|
||||||
g_signal_emit_by_name (GCAL_VIEW (widget),
|
g_signal_emit_by_name (GCAL_VIEW (widget),
|
||||||
"create-event",
|
"create-event",
|
||||||
@@ -672,9 +673,11 @@ gcal_month_view_button_release (GtkWidget *widget,
|
|||||||
|
|
||||||
start_date = gcal_dup_icaltime (priv->date);
|
start_date = gcal_dup_icaltime (priv->date);
|
||||||
start_date->day = priv->start_mark_cell + priv->days_delay;
|
start_date->day = priv->start_mark_cell + priv->days_delay;
|
||||||
|
start_date->is_date = 1;
|
||||||
|
|
||||||
end_date = gcal_dup_icaltime (priv->date);
|
end_date = gcal_dup_icaltime (priv->date);
|
||||||
end_date->day = priv->end_mark_cell + priv->days_delay;
|
end_date->day = priv->end_mark_cell + priv->days_delay;
|
||||||
|
end_date->is_date = 1;
|
||||||
|
|
||||||
g_signal_emit_by_name (GCAL_VIEW (widget),
|
g_signal_emit_by_name (GCAL_VIEW (widget),
|
||||||
"create-event",
|
"create-event",
|
||||||
|
|||||||
+1
-1
@@ -90,7 +90,7 @@ gcal_get_group_name (const gchar *base_uri)
|
|||||||
}
|
}
|
||||||
|
|
||||||
icaltimetype*
|
icaltimetype*
|
||||||
gcal_dup_icaltime (icaltimetype *date)
|
gcal_dup_icaltime (const icaltimetype *date)
|
||||||
{
|
{
|
||||||
icaltimetype *new_date;
|
icaltimetype *new_date;
|
||||||
|
|
||||||
|
|||||||
+18
-18
@@ -47,35 +47,35 @@ typedef enum
|
|||||||
} GcalEditableMode;
|
} GcalEditableMode;
|
||||||
|
|
||||||
typedef
|
typedef
|
||||||
const gchar* (*GcalTranslateFunc) (GtkWidget *source_widget);
|
const gchar* (*GcalTranslateFunc) (GtkWidget *source_widget);
|
||||||
|
|
||||||
GType icaltime_get_type (void) G_GNUC_CONST;
|
GType icaltime_get_type (void) G_GNUC_CONST;
|
||||||
|
|
||||||
void gcal_gtk_tree_view_set_activate_on_single_click (GtkTreeView *tree_view,
|
void gcal_gtk_tree_view_set_activate_on_single_click (GtkTreeView *tree_view,
|
||||||
gboolean should_activate);
|
gboolean should_activate);
|
||||||
|
|
||||||
|
|
||||||
const gchar* gcal_get_group_name (const gchar *base_uri);
|
const gchar* gcal_get_group_name (const gchar *base_uri);
|
||||||
|
|
||||||
icaltimetype* gcal_dup_icaltime (icaltimetype *date);
|
icaltimetype* gcal_dup_icaltime (const icaltimetype *date);
|
||||||
|
|
||||||
gchar* gcal_get_source_name (GtkTreeModel *model,
|
gchar* gcal_get_source_name (GtkTreeModel *model,
|
||||||
const gchar *uid);
|
const gchar *uid);
|
||||||
|
|
||||||
gchar* gcal_get_source_uid (GtkTreeModel *model,
|
gchar* gcal_get_source_uid (GtkTreeModel *model,
|
||||||
const gchar *name);
|
const gchar *name);
|
||||||
|
|
||||||
const gchar* gcal_get_weekday (gint i);
|
const gchar* gcal_get_weekday (gint i);
|
||||||
|
|
||||||
/* code brought from evolution */
|
/* code brought from evolution */
|
||||||
gsize e_strftime_fix_am_pm (gchar *str,
|
gsize e_strftime_fix_am_pm (gchar *str,
|
||||||
gsize max,
|
gsize max,
|
||||||
const gchar *fmt,
|
const gchar *fmt,
|
||||||
const struct tm *tm);
|
const struct tm *tm);
|
||||||
gsize e_utf8_strftime_fix_am_pm (gchar *str,
|
gsize e_utf8_strftime_fix_am_pm (gchar *str,
|
||||||
|
|
||||||
gsize max,
|
gsize max,
|
||||||
const gchar *fmt,
|
const gchar *fmt,
|
||||||
const struct tm *tm);
|
const struct tm *tm);
|
||||||
|
|
||||||
#endif // __GCAL_UTILS_H__
|
#endif // __GCAL_UTILS_H__
|
||||||
|
|||||||
+12
-3
@@ -1117,17 +1117,26 @@ gcal_window_create_event (GcalEventOverlay *widget,
|
|||||||
gpointer user_data)
|
gpointer user_data)
|
||||||
{
|
{
|
||||||
GcalWindowPrivate *priv;
|
GcalWindowPrivate *priv;
|
||||||
|
GcalManager *manager;
|
||||||
|
|
||||||
g_return_if_fail (user_data);
|
g_return_if_fail (user_data);
|
||||||
priv = GCAL_WINDOW (user_data)->priv;
|
priv = GCAL_WINDOW (user_data)->priv;
|
||||||
|
|
||||||
/* reset and hide */
|
|
||||||
gcal_window_event_overlay_closed (widget, user_data);
|
|
||||||
|
|
||||||
/* create the event */
|
/* create the event */
|
||||||
|
manager = gcal_window_get_manager (GCAL_WINDOW (user_data));
|
||||||
|
gcal_manager_create_event (manager,
|
||||||
|
new_data->calendar_uid,
|
||||||
|
new_data->summary,
|
||||||
|
new_data->start_date,
|
||||||
|
new_data->end_date);
|
||||||
|
|
||||||
g_debug ("NOW CREATE THE EVENT");
|
g_debug ("NOW CREATE THE EVENT");
|
||||||
if (open_details)
|
if (open_details)
|
||||||
g_debug ("Opening details window NOW");
|
g_debug ("Opening details window NOW");
|
||||||
|
|
||||||
|
/* reset and hide */
|
||||||
|
gcal_window_event_overlay_closed (widget, user_data);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
|||||||
Reference in New Issue
Block a user