Complete migration to icaltimetype.
This commit is contained in:
+3
-3
@@ -29,7 +29,7 @@ Rough description of some internals of Gnome Calendar Application
|
||||
|
||||
Has a list of ESourceGroup
|
||||
|
||||
Has GDate *initial_date, *final_date
|
||||
Has icaltimetype *initial_date, *final_date
|
||||
For defining a range to get events from
|
||||
Could have an active query representing the range (s-exp)
|
||||
|
||||
@@ -52,7 +52,7 @@ Rough description of some internals of Gnome Calendar Application
|
||||
+ GcalView
|
||||
|
||||
Has NavigationPane
|
||||
Has GDate: selected_date attribute
|
||||
Has icaltimetype: selected_date attribute
|
||||
|
||||
Has child classes
|
||||
1. GcalDayView
|
||||
@@ -100,7 +100,7 @@ Rough description of some internals of Gnome Calendar Application
|
||||
3. GcalMonthView
|
||||
...
|
||||
|
||||
Has GDate attribute
|
||||
Has icaltimetype attribute
|
||||
For keeping actual date
|
||||
|
||||
Has set_view/update_view method
|
||||
|
||||
+42
-40
@@ -74,8 +74,8 @@ struct _GcalManagerPrivate
|
||||
GtkListStore *sources_model;
|
||||
|
||||
/* The range of dates defining the query */
|
||||
GDate *initial_date;
|
||||
GDate *final_date;
|
||||
icaltimetype *initial_date;
|
||||
icaltimetype *final_date;
|
||||
|
||||
/* The active query */
|
||||
gchar *query;
|
||||
@@ -134,6 +134,12 @@ gcal_manager_init (GcalManager *self)
|
||||
G_TYPE_BOOLEAN,
|
||||
GDK_TYPE_COLOR);
|
||||
g_object_ref_sink (priv->sources_model);
|
||||
|
||||
priv->initial_date = g_new(icaltimetype, 1);
|
||||
*(priv->initial_date) = icaltime_from_timet (time (NULL), 0);
|
||||
|
||||
priv->final_date = g_new(icaltimetype, 1);
|
||||
*(priv->final_date) = icaltime_from_timet (time (NULL), 0);
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -166,6 +172,8 @@ gcal_manager_constructed (GObject *object)
|
||||
COLUMN_ACTIVE, TRUE,
|
||||
COLUMN_COLOR, &color,
|
||||
-1);
|
||||
priv->initial_date->month = priv->initial_date->month - 1;
|
||||
priv->final_date->month = priv->final_date->month + 1;
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -507,56 +515,50 @@ gcal_manager_add_source (GcalManager *manager,
|
||||
* Since: 0.0.1
|
||||
*/
|
||||
void
|
||||
gcal_manager_set_new_range (GcalManager *manager,
|
||||
const GDate *initial_date,
|
||||
const GDate *final_date)
|
||||
gcal_manager_set_new_range (GcalManager *manager,
|
||||
const icaltimetype *initial_date,
|
||||
const icaltimetype *final_date)
|
||||
{
|
||||
gboolean refresh_events = TRUE;
|
||||
GcalManagerPrivate *priv;
|
||||
gboolean refresh_events;
|
||||
|
||||
// /* updating query range */
|
||||
// if (g_date_compare (manager->priv->initial_date, initial_date) > 0)
|
||||
// {
|
||||
// /* switch dates */
|
||||
// refresh_events = TRUE;
|
||||
// }
|
||||
// if (g_date_compare (manager->priv->final_date, final_date) < 0)
|
||||
// {
|
||||
// /* switch dates */
|
||||
// refresh_events = TRUE;
|
||||
// }
|
||||
priv = manager->priv;
|
||||
refresh_events = FALSE;
|
||||
|
||||
/* updating query range */
|
||||
if ((icaltime_compare (*(priv->initial_date), *initial_date)) == 1)
|
||||
{
|
||||
/* switch dates */
|
||||
*(priv->initial_date) = *initial_date;
|
||||
refresh_events = TRUE;
|
||||
}
|
||||
if (icaltime_compare (*(priv->final_date), *final_date) == -1)
|
||||
{
|
||||
/* switch dates */
|
||||
*(priv->final_date) = *final_date;
|
||||
refresh_events = TRUE;
|
||||
}
|
||||
|
||||
if (refresh_events)
|
||||
{
|
||||
/* rebuild query */
|
||||
GDateTime * first_datetime = g_date_time_new_local(g_date_get_year (initial_date),
|
||||
g_date_get_month (initial_date),
|
||||
g_date_get_day (initial_date),
|
||||
0,
|
||||
0,
|
||||
0);
|
||||
time_t since = g_date_time_to_unix (first_datetime);
|
||||
gchar* since_iso8601 = isodate_from_time_t (since);
|
||||
gchar* since_iso8601 =
|
||||
isodate_from_time_t (icaltime_as_timet (*(priv->initial_date)));
|
||||
|
||||
GDateTime * last_datetime = g_date_time_new_local(g_date_get_year (final_date),
|
||||
g_date_get_month (final_date),
|
||||
g_date_get_day (final_date),
|
||||
23,
|
||||
59,
|
||||
59);
|
||||
gchar* until_iso8601 = isodate_from_time_t (
|
||||
g_date_time_to_unix (last_datetime));
|
||||
gchar* until_iso8601 =
|
||||
isodate_from_time_t (icaltime_as_timet (*(priv->final_date)));
|
||||
|
||||
manager->priv->query = g_strdup_printf (
|
||||
if (priv->query != NULL)
|
||||
g_free (priv->query);
|
||||
priv->query = g_strdup_printf (
|
||||
"occur-in-time-range? (make-time \"%s\") "
|
||||
"(make-time \"%s\")",
|
||||
since_iso8601,
|
||||
until_iso8601);
|
||||
|
||||
g_date_time_unref (first_datetime);
|
||||
g_date_time_unref (last_datetime);
|
||||
|
||||
g_print ("Loading events since %s until %s\n",
|
||||
since_iso8601,
|
||||
until_iso8601);
|
||||
g_print ("Loading events since %s until %s\nwith query %s\n",
|
||||
since_iso8601,
|
||||
until_iso8601,
|
||||
priv->query);
|
||||
}
|
||||
}
|
||||
|
||||
+10
-8
@@ -23,6 +23,8 @@
|
||||
#include <gtk/gtk.h>
|
||||
#include <glib-object.h>
|
||||
|
||||
#include <libical/icaltime.h>
|
||||
|
||||
G_BEGIN_DECLS
|
||||
|
||||
#define GCAL_TYPE_MANAGER (gcal_manager_get_type ())
|
||||
@@ -53,15 +55,15 @@ GType gcal_manager_get_type (void);
|
||||
|
||||
GcalManager* gcal_manager_new (void);
|
||||
|
||||
GtkListStore* gcal_manager_get_sources_model (GcalManager *manager);
|
||||
GtkListStore* gcal_manager_get_sources_model (GcalManager *manager);
|
||||
|
||||
gchar* gcal_manager_add_source (GcalManager *manager,
|
||||
const gchar *name,
|
||||
const gchar *base_uri,
|
||||
const gchar *relative_uri);
|
||||
void gcal_manager_set_new_range (GcalManager *manager,
|
||||
const GDate *initial_date,
|
||||
const GDate *final_date);
|
||||
gchar* gcal_manager_add_source (GcalManager *manager,
|
||||
const gchar *name,
|
||||
const gchar *base_uri,
|
||||
const gchar *relative_uri);
|
||||
void gcal_manager_set_new_range (GcalManager *manager,
|
||||
const icaltimetype *initial_date,
|
||||
const icaltimetype *final_date);
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
|
||||
+31
-15
@@ -42,22 +42,24 @@ struct _GcalWindowPrivate
|
||||
GtkWidget *views [5];
|
||||
};
|
||||
|
||||
static void gcal_window_constructed (GObject *object);
|
||||
static void gcal_window_constructed (GObject *object);
|
||||
|
||||
static void _gcal_window_set_sources_view (GcalWindow *window);
|
||||
GcalManager* _gcal_window_get_manager (GcalWindow *window);
|
||||
|
||||
static void _gcal_window_view_changed (GcalMainToolbar *main_toolbar,
|
||||
GcalViewType view_type,
|
||||
gpointer user_data);
|
||||
static void _gcal_window_set_sources_view (GcalWindow *window);
|
||||
|
||||
static void _gcal_window_sources_shown (GcalMainToolbar *main_toolbar,
|
||||
gboolean visible,
|
||||
gpointer user_data);
|
||||
static void _gcal_window_view_changed (GcalMainToolbar *main_toolbar,
|
||||
GcalViewType view_type,
|
||||
gpointer user_data);
|
||||
|
||||
static void _gcal_window_sources_row_activated (GtkTreeView *tree_view,
|
||||
GtkTreePath *path,
|
||||
GtkTreeViewColumn *column,
|
||||
gpointer user_data);
|
||||
static void _gcal_window_sources_shown (GcalMainToolbar *main_toolbar,
|
||||
gboolean visible,
|
||||
gpointer user_data);
|
||||
|
||||
static void _gcal_window_sources_row_activated (GtkTreeView *tree_view,
|
||||
GtkTreePath *path,
|
||||
GtkTreeViewColumn *column,
|
||||
gpointer user_data);
|
||||
|
||||
G_DEFINE_TYPE(GcalWindow, gcal_window, GTK_TYPE_APPLICATION_WINDOW)
|
||||
|
||||
@@ -206,20 +208,27 @@ gcal_window_constructed (GObject *object)
|
||||
gtk_widget_show (embed);
|
||||
}
|
||||
|
||||
GcalManager*
|
||||
_gcal_window_get_manager (GcalWindow *window)
|
||||
{
|
||||
GcalApplication *app;
|
||||
app = GCAL_APPLICATION (gtk_window_get_application (GTK_WINDOW (window)));
|
||||
|
||||
return gcal_application_get_manager (app);
|
||||
}
|
||||
|
||||
static void
|
||||
_gcal_window_set_sources_view (GcalWindow *window)
|
||||
{
|
||||
GcalWindowPrivate *priv;
|
||||
GcalApplication *app;
|
||||
GcalManager *manager;
|
||||
|
||||
GtkCellRenderer *renderer;
|
||||
GtkTreeViewColumn *column;
|
||||
|
||||
priv = window->priv;
|
||||
app = GCAL_APPLICATION (gtk_window_get_application (GTK_WINDOW (window)));
|
||||
|
||||
manager = gcal_application_get_manager (app);
|
||||
manager = _gcal_window_get_manager (window);
|
||||
priv->sources_view = gtk_tree_view_new_with_model (
|
||||
GTK_TREE_MODEL (gcal_manager_get_sources_model (manager)));
|
||||
gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (priv->sources_view),
|
||||
@@ -278,7 +287,14 @@ _gcal_window_view_changed (GcalMainToolbar *main_toolbar,
|
||||
GcalViewType view_type,
|
||||
gpointer user_data)
|
||||
{
|
||||
GcalWindow *window;
|
||||
GcalManager *manager;
|
||||
|
||||
window = GCAL_WINDOW (user_data);
|
||||
manager = _gcal_window_get_manager (window);
|
||||
gcal_manager_set_new_range (manager, NULL, NULL);
|
||||
g_print ("GcalViewType in GcalWindow %d\n", view_type);
|
||||
|
||||
}
|
||||
|
||||
static void
|
||||
|
||||
Reference in New Issue
Block a user