search-view: show date & time data from events
Needs lotf of work
This commit is contained in:
committed by
Erick Pérez Castellanos
parent
35db162529
commit
4195e294ab
+104
-7
@@ -49,6 +49,11 @@ enum
|
|||||||
PROP_MANAGER /* manager inherited property */
|
PROP_MANAGER /* manager inherited property */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static GtkWidget* get_event_from_grid (GtkWidget *grid);
|
||||||
|
|
||||||
|
static GtkWidget* make_grid_for_event (GcalSearchView *view,
|
||||||
|
GcalEventWidget *event);
|
||||||
|
|
||||||
static gint sort_by_event (GtkListBoxRow *row1,
|
static gint sort_by_event (GtkListBoxRow *row1,
|
||||||
GtkListBoxRow *row2,
|
GtkListBoxRow *row2,
|
||||||
gpointer user_data);
|
gpointer user_data);
|
||||||
@@ -100,6 +105,99 @@ G_DEFINE_TYPE_WITH_CODE (GcalSearchView,
|
|||||||
G_IMPLEMENT_INTERFACE (GCAL_TYPE_VIEW, gcal_view_interface_init));
|
G_IMPLEMENT_INTERFACE (GCAL_TYPE_VIEW, gcal_view_interface_init));
|
||||||
|
|
||||||
|
|
||||||
|
static GtkWidget*
|
||||||
|
get_event_from_grid (GtkWidget *grid)
|
||||||
|
{
|
||||||
|
return gtk_grid_get_child_at (GTK_GRID (grid), 2, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
static GtkWidget*
|
||||||
|
make_grid_for_event (GcalSearchView *view,
|
||||||
|
GcalEventWidget *event)
|
||||||
|
{
|
||||||
|
GcalSearchViewPrivate *priv;
|
||||||
|
GDateTime *datetime;
|
||||||
|
GtkWidget *grid;
|
||||||
|
|
||||||
|
gchar *text;
|
||||||
|
GtkWidget *start_date;
|
||||||
|
GtkWidget *end_date;
|
||||||
|
GtkWidget *start_time;
|
||||||
|
GtkWidget *end_time;
|
||||||
|
|
||||||
|
icaltimetype *start, *end;
|
||||||
|
|
||||||
|
priv = gcal_search_view_get_instance_private (view);
|
||||||
|
start = gcal_event_widget_get_date (event);
|
||||||
|
end = gcal_event_widget_get_end_date (event);
|
||||||
|
|
||||||
|
/* event widget properties */
|
||||||
|
gtk_widget_set_margin_start (GTK_WIDGET (event), 96);
|
||||||
|
gtk_widget_set_margin_end (GTK_WIDGET (event), 96);
|
||||||
|
gtk_widget_set_valign (GTK_WIDGET (event), GTK_ALIGN_CENTER);
|
||||||
|
gtk_widget_set_hexpand (GTK_WIDGET (event), TRUE);
|
||||||
|
|
||||||
|
/* grid */
|
||||||
|
grid = gtk_grid_new ();
|
||||||
|
gtk_grid_set_column_spacing (GTK_GRID (grid), 6);
|
||||||
|
gtk_grid_set_row_spacing (GTK_GRID (grid), 6);
|
||||||
|
gtk_container_set_border_width (GTK_CONTAINER (grid), 6);
|
||||||
|
gtk_widget_set_hexpand (grid, TRUE);
|
||||||
|
|
||||||
|
/* start date & time */
|
||||||
|
datetime = g_date_time_new_local (start->year, start->month, start->day, start->hour, start->minute, start->second);
|
||||||
|
text = g_date_time_format (datetime, priv->date_mask);
|
||||||
|
start_date = gtk_label_new (text);
|
||||||
|
g_free (text);
|
||||||
|
|
||||||
|
text = g_date_time_format (datetime, priv->time_mask);
|
||||||
|
start_time = gtk_label_new (text);
|
||||||
|
g_free (text);
|
||||||
|
|
||||||
|
g_date_time_unref (datetime);
|
||||||
|
g_free (start);
|
||||||
|
|
||||||
|
/* end date & time */
|
||||||
|
if (end != NULL)
|
||||||
|
{
|
||||||
|
datetime = g_date_time_new_local (end->year, end->month, end->day, end->hour, end->minute, end->second);
|
||||||
|
text = g_date_time_format (datetime, priv->date_mask);
|
||||||
|
end_date = gtk_label_new (text);
|
||||||
|
g_free (text);
|
||||||
|
|
||||||
|
text = g_date_time_format (datetime, priv->time_mask);
|
||||||
|
end_time = gtk_label_new (text);
|
||||||
|
g_free (text);
|
||||||
|
|
||||||
|
g_date_time_unref (datetime);
|
||||||
|
g_free (end);
|
||||||
|
}
|
||||||
|
|
||||||
|
gtk_grid_attach (GTK_GRID (grid), GTK_WIDGET (event), 2, 0, 1, 2);
|
||||||
|
|
||||||
|
if (end != NULL)
|
||||||
|
{
|
||||||
|
gtk_grid_attach (GTK_GRID (grid), start_date, 0, 0, 1, 1);
|
||||||
|
gtk_grid_attach (GTK_GRID (grid), start_time, 1, 0, 1, 1);
|
||||||
|
gtk_grid_attach (GTK_GRID (grid), end_date, 0, 1, 1, 1);
|
||||||
|
gtk_grid_attach (GTK_GRID (grid), end_time, 1, 1, 1, 1);
|
||||||
|
|
||||||
|
gtk_widget_show (end_date);
|
||||||
|
gtk_widget_show (end_time);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
gtk_grid_attach (GTK_GRID (grid), start_date, 0, 0, 1, 2);
|
||||||
|
gtk_grid_attach (GTK_GRID (grid), start_time, 1, 0, 1, 2);
|
||||||
|
}
|
||||||
|
|
||||||
|
gtk_widget_show (start_date);
|
||||||
|
gtk_widget_show (start_time);
|
||||||
|
gtk_widget_show (grid);
|
||||||
|
gtk_widget_show (GTK_WIDGET (event));
|
||||||
|
|
||||||
|
return grid;
|
||||||
|
}
|
||||||
|
|
||||||
static gint
|
static gint
|
||||||
sort_by_event (GtkListBoxRow *row1,
|
sort_by_event (GtkListBoxRow *row1,
|
||||||
@@ -110,8 +208,8 @@ sort_by_event (GtkListBoxRow *row1,
|
|||||||
icaltimetype *date1, *date2;
|
icaltimetype *date1, *date2;
|
||||||
gint result;
|
gint result;
|
||||||
|
|
||||||
ev1 = GCAL_EVENT_WIDGET (gtk_bin_get_child (GTK_BIN (row1)));
|
ev1 = GCAL_EVENT_WIDGET (get_event_from_grid (gtk_bin_get_child (GTK_BIN (row1))));
|
||||||
ev2 = GCAL_EVENT_WIDGET (gtk_bin_get_child (GTK_BIN (row2)));
|
ev2 = GCAL_EVENT_WIDGET (get_event_from_grid (gtk_bin_get_child (GTK_BIN (row2))));
|
||||||
date1 = gcal_event_widget_get_date (ev1);
|
date1 = gcal_event_widget_get_date (ev1);
|
||||||
date2 = gcal_event_widget_get_date (ev2);
|
date2 = gcal_event_widget_get_date (ev2);
|
||||||
|
|
||||||
@@ -297,6 +395,7 @@ gcal_search_view_component_added (ECalDataModelSubscriber *subscriber,
|
|||||||
GcalSearchViewPrivate *priv;
|
GcalSearchViewPrivate *priv;
|
||||||
|
|
||||||
GtkWidget *event;
|
GtkWidget *event;
|
||||||
|
GtkWidget *grid;
|
||||||
GcalEventData *data;
|
GcalEventData *data;
|
||||||
|
|
||||||
priv =
|
priv =
|
||||||
@@ -311,10 +410,8 @@ gcal_search_view_component_added (ECalDataModelSubscriber *subscriber,
|
|||||||
g_signal_connect (event, "activate", G_CALLBACK (open_event), subscriber);
|
g_signal_connect (event, "activate", G_CALLBACK (open_event), subscriber);
|
||||||
g_free (data);
|
g_free (data);
|
||||||
|
|
||||||
gtk_widget_set_margin_start (event, 96);
|
grid = make_grid_for_event (GCAL_SEARCH_VIEW (subscriber), GCAL_EVENT_WIDGET (event));
|
||||||
gtk_widget_set_margin_end (event, 96);
|
gtk_container_add (GTK_CONTAINER (priv->listbox), grid);
|
||||||
gtk_widget_show (event);
|
|
||||||
gtk_container_add (GTK_CONTAINER (priv->listbox), event);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@@ -347,7 +444,7 @@ gcal_search_view_component_removed (ECalDataModelSubscriber *subscriber,
|
|||||||
gchar *uuid;
|
gchar *uuid;
|
||||||
|
|
||||||
row = aux->data;
|
row = aux->data;
|
||||||
event_widget = GCAL_EVENT_WIDGET (gtk_bin_get_child (GTK_BIN (row)));
|
event_widget = GCAL_EVENT_WIDGET (get_event_from_grid (gtk_bin_get_child (GTK_BIN (row))));
|
||||||
|
|
||||||
/* if the widget has recurrency, it's UUID is different */
|
/* if the widget has recurrency, it's UUID is different */
|
||||||
if (rid != NULL)
|
if (rid != NULL)
|
||||||
|
|||||||
Reference in New Issue
Block a user