Added GSettings to read/set the active view.
Placed code to generate G_TYPE_ENUM from my defined enums Semi-integrated GcalWeekView Updated TODO.
This commit is contained in:
@@ -71,3 +71,6 @@ gnome_calendar.anjuta
|
||||
/mkinstalldirs
|
||||
Debug*
|
||||
.gdb_history
|
||||
data/org.gnome.calendar.enums.xml
|
||||
src/gcal-enum-types.c
|
||||
src/gcal-enum-types.h
|
||||
|
||||
@@ -9,6 +9,7 @@ TODO
|
||||
- Create GcalView interface or superclass of all views.
|
||||
- Connect all dconf options to the program
|
||||
- Remove body_actor if there's no need of it in the end.
|
||||
- Clear/reorder #include in every header file.
|
||||
|
||||
Design stuff
|
||||
|
||||
|
||||
@@ -44,6 +44,12 @@ AC_CACHE_SAVE
|
||||
|
||||
GLIB_GSETTINGS
|
||||
|
||||
dnl ================================================================
|
||||
dnl Misc
|
||||
dnl ================================================================
|
||||
AC_PATH_PROG(GLIB_GENMARSHAL, glib-genmarshal)
|
||||
AC_PATH_PROG(GLIB_MKENUMS, glib-mkenums)
|
||||
|
||||
GNOME_COMPILE_WARNINGS(maximum)
|
||||
GNOME_MAINTAINER_MODE_DEFINES
|
||||
|
||||
|
||||
@@ -4,6 +4,10 @@ desktop_DATA = $(desktop_in_files:.desktop.in=.desktop)
|
||||
|
||||
@INTLTOOL_DESKTOP_RULE@
|
||||
|
||||
gsettings_ENUM_NAMESPACE = org.gnome.calendar
|
||||
gsettings_ENUM_FILES = \
|
||||
$(top_srcdir)/src/gcal-utils.h
|
||||
|
||||
gsettingsschema_in_files = org.gnome.calendar.gschema.xml.in
|
||||
gsettings_SCHEMAS = $(gsettingsschema_in_files:.xml.in=.xml)
|
||||
.PRECIOUS: $(gsettings_SCHEMAS)
|
||||
|
||||
+1
-1
@@ -48,7 +48,7 @@
|
||||
padding-bottom: 2px;
|
||||
padding-left: 8px;
|
||||
padding-right: 8px;
|
||||
font: 10;
|
||||
font: 9;
|
||||
}
|
||||
|
||||
.event-details .frame {
|
||||
|
||||
@@ -5,5 +5,10 @@
|
||||
<_summary>Window maximized</_summary>
|
||||
<_description>Window maximized state</_description>
|
||||
</key>
|
||||
<key name="active-view" enum="org.gnome.calendar.GcalWindowViewType">
|
||||
<default>'month'</default>
|
||||
<_summary>Type of the active view</_summary>
|
||||
<_description>Type of the active window view, default value is: monthly view</_description>
|
||||
</key>
|
||||
</schema>
|
||||
</schemalist>
|
||||
|
||||
+74
-53
@@ -1,64 +1,85 @@
|
||||
AM_CPPFLAGS = \
|
||||
-DCLUTTER_VERSION_MIN_REQUIRED=CLUTTER_VERSION_1_10 \
|
||||
-DPACKAGE_LOCALE_DIR=\""$(localedir)"\" \
|
||||
-DPACKAGE_SRC_DIR=\""$(srcdir)"\" \
|
||||
-DPACKAGE_DATA_DIR=\""$(pkgdatadir)"\" \
|
||||
-DUI_DATA_DIR=\""$(pkgdatadir)/style"\" \
|
||||
$(MAINTAINER_COMPILER_FLAGS) \
|
||||
-Wall \
|
||||
-g -O0 \
|
||||
$(CALENDAR_CFLAGS)
|
||||
AM_CPPFLAGS = \
|
||||
-DCLUTTER_VERSION_MIN_REQUIRED=CLUTTER_VERSION_1_10 \
|
||||
-DPACKAGE_LOCALE_DIR=\""$(localedir)"\" \
|
||||
-DPACKAGE_SRC_DIR=\""$(srcdir)"\" \
|
||||
-DPACKAGE_DATA_DIR=\""$(pkgdatadir)"\" \
|
||||
-DUI_DATA_DIR=\""$(pkgdatadir)/style"\" \
|
||||
$(MAINTAINER_COMPILER_FLAGS) \
|
||||
-Wall \
|
||||
-g -O0 \
|
||||
$(CALENDAR_CFLAGS)
|
||||
|
||||
AM_CFLAGS = \
|
||||
-Wall \
|
||||
-g -O0
|
||||
AM_CFLAGS = \
|
||||
-Wall \
|
||||
-g -O0
|
||||
|
||||
bin_PROGRAMS = gnome-calendar
|
||||
|
||||
gnome_calendar_SOURCES = \
|
||||
main.c \
|
||||
gcal-application.h \
|
||||
gcal-application.c \
|
||||
gcal-floating-container.c \
|
||||
gcal-floating-container.h \
|
||||
gcal-toolbar.h \
|
||||
gcal-toolbar.c \
|
||||
gcal-window.h \
|
||||
gcal-window.c \
|
||||
gcal-view.c \
|
||||
gcal-view.h \
|
||||
gcal-month-view.c \
|
||||
gcal-month-view.h \
|
||||
gcal-week-view.c \
|
||||
gcal-week-view.h \
|
||||
gcal-event-widget.c \
|
||||
gcal-event-widget.h \
|
||||
gcal-event-view.c \
|
||||
gcal-event-view.h \
|
||||
gcal-editable.c \
|
||||
gcal-editable.h \
|
||||
gcal-editable-entry.c \
|
||||
gcal-editable-entry.h \
|
||||
gcal-editable-text.c \
|
||||
gcal-editable-text.h \
|
||||
gcal-editable-date.c \
|
||||
gcal-editable-date.h \
|
||||
gcal-editable-combo.c \
|
||||
gcal-editable-combo.h \
|
||||
gcal-editable-reminder.c \
|
||||
gcal-editable-reminder.h \
|
||||
gcal-manager.c \
|
||||
gcal-manager.h \
|
||||
gcal-utils.c \
|
||||
gcal-utils.h \
|
||||
gtk-notification.c \
|
||||
gtk-notification.h
|
||||
BUILT_SOURCES = \
|
||||
gcal-enum-types.c \
|
||||
gcal-enum-types.h
|
||||
|
||||
gnome_calendar_SOURCES = \
|
||||
$(BUILT_SOURCES) \
|
||||
main.c \
|
||||
gcal-application.h \
|
||||
gcal-application.c \
|
||||
gcal-floating-container.c \
|
||||
gcal-floating-container.h \
|
||||
gcal-toolbar.h \
|
||||
gcal-toolbar.c \
|
||||
gcal-window.h \
|
||||
gcal-window.c \
|
||||
gcal-view.c \
|
||||
gcal-view.h \
|
||||
gcal-month-view.c \
|
||||
gcal-month-view.h \
|
||||
gcal-week-view.c \
|
||||
gcal-week-view.h \
|
||||
gcal-event-widget.c \
|
||||
gcal-event-widget.h \
|
||||
gcal-event-view.c \
|
||||
gcal-event-view.h \
|
||||
gcal-editable.c \
|
||||
gcal-editable.h \
|
||||
gcal-editable-entry.c \
|
||||
gcal-editable-entry.h \
|
||||
gcal-editable-text.c \
|
||||
gcal-editable-text.h \
|
||||
gcal-editable-date.c \
|
||||
gcal-editable-date.h \
|
||||
gcal-editable-combo.c \
|
||||
gcal-editable-combo.h \
|
||||
gcal-editable-reminder.c \
|
||||
gcal-editable-reminder.h \
|
||||
gcal-manager.c \
|
||||
gcal-manager.h \
|
||||
gcal-utils.c \
|
||||
gcal-utils.h \
|
||||
gtk-notification.c \
|
||||
gtk-notification.h
|
||||
|
||||
|
||||
gnome_calendar_LDFLAGS = \
|
||||
gnome_calendar_LDFLAGS = \
|
||||
-Wl,--export-dynamic
|
||||
|
||||
gnome_calendar_LDADD = \
|
||||
gnome_calendar_LDADD = \
|
||||
$(CALENDAR_LIBS)
|
||||
|
||||
ENUM_TYPES = \
|
||||
gcal-utils.h
|
||||
|
||||
gcal-enum-types.h: gcal-enum-types.h.template $(ENUM_TYPES) $(GLIB_MKENUMS)
|
||||
$(AM_V_GEN) (cd $(srcdir) && $(GLIB_MKENUMS) --template gcal-enum-types.h.template $(ENUM_TYPES)) > $@
|
||||
|
||||
gcal-enum-types.c: gcal-enum-types.c.template $(ENUM_TYPES) $(GLIB_MKENUMS)
|
||||
$(AM_V_GEN) (cd $(srcdir) && $(GLIB_MKENUMS) --template gcal-enum-types.c.template $(ENUM_TYPES)) > $@
|
||||
|
||||
EXTRA_DIST = \
|
||||
gcal-enum-types.h.template \
|
||||
gcal-enum-types.c.template
|
||||
|
||||
CLEANFILES = $(BUILT_SOURCES)
|
||||
|
||||
dist-hook:
|
||||
cd $(distdir); rm -f $(BUILT_SOURCES)
|
||||
|
||||
+20
-3
@@ -31,6 +31,7 @@ struct _GcalApplicationPrivate
|
||||
{
|
||||
GtkWidget *window;
|
||||
|
||||
GSettings *settings;
|
||||
GcalManager *manager;
|
||||
|
||||
GtkCssProvider *provider;
|
||||
@@ -59,6 +60,12 @@ gcal_application_activate (GApplication *application)
|
||||
else
|
||||
{
|
||||
priv->window = gcal_window_new (GCAL_APPLICATION (application));
|
||||
g_settings_bind (priv->settings,
|
||||
"active-view",
|
||||
priv->window,
|
||||
"active-view",
|
||||
G_SETTINGS_BIND_SET | G_SETTINGS_BIND_GET
|
||||
| G_SETTINGS_BIND_GET_NO_CHANGES);
|
||||
gtk_window_set_title (GTK_WINDOW (priv->window), _("Calendar"));
|
||||
gtk_window_set_hide_titlebar_when_maximized (GTK_WINDOW (priv->window),
|
||||
TRUE);
|
||||
@@ -177,13 +184,16 @@ gcal_application_quit (GSimpleAction *simple,
|
||||
GcalApplication*
|
||||
gcal_application_new (void)
|
||||
{
|
||||
GcalApplication *app;
|
||||
g_type_init ();
|
||||
|
||||
g_set_application_name ("Calendar");
|
||||
|
||||
return g_object_new (gcal_application_get_type (),
|
||||
"application-id", "org.gnome.Calendar",
|
||||
NULL);
|
||||
app = g_object_new (gcal_application_get_type (),
|
||||
"application-id", "org.gnome.Calendar",
|
||||
NULL);
|
||||
app->priv->settings = g_settings_new ("org.gnome.calendar");
|
||||
return app;
|
||||
}
|
||||
|
||||
GcalManager*
|
||||
@@ -192,3 +202,10 @@ gcal_application_get_manager (GcalApplication *app)
|
||||
g_return_val_if_fail (GCAL_IS_APPLICATION (app), NULL);
|
||||
return app->priv->manager;
|
||||
}
|
||||
|
||||
GSettings*
|
||||
gcal_application_get_settings (GcalApplication *app)
|
||||
{
|
||||
g_return_val_if_fail (GCAL_IS_APPLICATION (app), NULL);
|
||||
return app->priv->settings;
|
||||
}
|
||||
|
||||
@@ -49,11 +49,13 @@ struct _GcalApplication
|
||||
GcalApplicationPrivate *priv;
|
||||
};
|
||||
|
||||
GType gcal_application_get_type (void) G_GNUC_CONST;
|
||||
GType gcal_application_get_type (void) G_GNUC_CONST;
|
||||
|
||||
GcalApplication* gcal_application_new (void);
|
||||
GcalApplication* gcal_application_new (void);
|
||||
|
||||
GcalManager* gcal_application_get_manager (GcalApplication *app);
|
||||
GcalManager* gcal_application_get_manager (GcalApplication *app);
|
||||
|
||||
GSettings* gcal_application_get_settings (GcalApplication *app);
|
||||
|
||||
/* Callbacks */
|
||||
|
||||
|
||||
@@ -0,0 +1,39 @@
|
||||
/*** BEGIN file-header ***/
|
||||
#include "gcal-enum-types.h"
|
||||
|
||||
/*** END file-header ***/
|
||||
|
||||
/*** BEGIN file-production ***/
|
||||
/* enumerations from "@filename@" */
|
||||
#include "@filename@"
|
||||
|
||||
/*** END file-production ***/
|
||||
|
||||
/*** BEGIN value-header ***/
|
||||
GType
|
||||
@enum_name@_get_type (void)
|
||||
{
|
||||
static GType the_type = 0;
|
||||
|
||||
if (the_type == 0)
|
||||
{
|
||||
static const G@Type@Value values[] = {
|
||||
/*** END value-header ***/
|
||||
|
||||
/*** BEGIN value-production ***/
|
||||
{ @VALUENAME@,
|
||||
"@VALUENAME@",
|
||||
"@valuenick@" },
|
||||
/*** END value-production ***/
|
||||
|
||||
/*** BEGIN value-tail ***/
|
||||
{ 0, NULL, NULL }
|
||||
};
|
||||
the_type = g_@type@_register_static (
|
||||
g_intern_static_string ("@EnumName@"),
|
||||
values);
|
||||
}
|
||||
return the_type;
|
||||
}
|
||||
|
||||
/*** END value-tail ***/
|
||||
@@ -0,0 +1,26 @@
|
||||
/*** BEGIN file-header ***/
|
||||
#ifndef __GCAL_ENUM_TYPES_H__
|
||||
#define __GCAL_ENUM_TYPES_H__
|
||||
|
||||
#include <glib-object.h>
|
||||
|
||||
G_BEGIN_DECLS
|
||||
|
||||
/*** END file-header ***/
|
||||
|
||||
/*** BEGIN file-production ***/
|
||||
/* Enumerations from "@filename@" */
|
||||
|
||||
/*** END file-production ***/
|
||||
|
||||
/*** BEGIN enumeration-production ***/
|
||||
#define GCAL_@ENUMSHORT@ (@enum_name@_get_type())
|
||||
GType @enum_name@_get_type (void) G_GNUC_CONST;
|
||||
|
||||
/*** END enumeration-production ***/
|
||||
|
||||
/*** BEGIN file-tail ***/
|
||||
G_END_DECLS
|
||||
|
||||
#endif /* __GCAL_ENUM_TYPES_H__ */
|
||||
/*** END file-tail ***/
|
||||
+5
-5
@@ -309,7 +309,7 @@ gcal_toolbar_set_overview_mode (GcalToolbar *toolbar)
|
||||
|
||||
g_object_set_data (G_OBJECT (button),
|
||||
"view-type",
|
||||
GUINT_TO_POINTER (GCAL_VIEW_TYPE_DAILY));
|
||||
GUINT_TO_POINTER (GCAL_WINDOW_VIEW_DAY));
|
||||
g_signal_connect (button,
|
||||
"clicked",
|
||||
G_CALLBACK (gcal_toolbar_view_changed),
|
||||
@@ -326,7 +326,7 @@ gcal_toolbar_set_overview_mode (GcalToolbar *toolbar)
|
||||
|
||||
g_object_set_data (G_OBJECT (button),
|
||||
"view-type",
|
||||
GUINT_TO_POINTER (GCAL_VIEW_TYPE_WEEKLY));
|
||||
GUINT_TO_POINTER (GCAL_WINDOW_VIEW_WEEK));
|
||||
g_signal_connect (button,
|
||||
"clicked",
|
||||
G_CALLBACK (gcal_toolbar_view_changed),
|
||||
@@ -343,7 +343,7 @@ gcal_toolbar_set_overview_mode (GcalToolbar *toolbar)
|
||||
|
||||
g_object_set_data (G_OBJECT (button),
|
||||
"view-type",
|
||||
GUINT_TO_POINTER (GCAL_VIEW_TYPE_MONTHLY));
|
||||
GUINT_TO_POINTER (GCAL_WINDOW_VIEW_MONTH));
|
||||
g_signal_connect (button,
|
||||
"clicked",
|
||||
G_CALLBACK (gcal_toolbar_view_changed),
|
||||
@@ -360,7 +360,7 @@ gcal_toolbar_set_overview_mode (GcalToolbar *toolbar)
|
||||
|
||||
g_object_set_data (G_OBJECT (button),
|
||||
"view-type",
|
||||
GUINT_TO_POINTER (GCAL_VIEW_TYPE_YEARLY));
|
||||
GUINT_TO_POINTER (GCAL_WINDOW_VIEW_YEAR));
|
||||
g_signal_connect (button,
|
||||
"clicked",
|
||||
G_CALLBACK (gcal_toolbar_view_changed),
|
||||
@@ -377,7 +377,7 @@ gcal_toolbar_set_overview_mode (GcalToolbar *toolbar)
|
||||
|
||||
g_object_set_data (G_OBJECT (button),
|
||||
"view-type",
|
||||
GUINT_TO_POINTER (GCAL_VIEW_TYPE_LIST));
|
||||
GUINT_TO_POINTER (GCAL_WINDOW_VIEW_LIST));
|
||||
g_signal_connect (button,
|
||||
"clicked",
|
||||
G_CALLBACK (gcal_toolbar_view_changed),
|
||||
|
||||
+6
-6
@@ -27,12 +27,12 @@
|
||||
|
||||
typedef enum
|
||||
{
|
||||
GCAL_VIEW_TYPE_DAILY = 0,
|
||||
GCAL_VIEW_TYPE_WEEKLY,
|
||||
GCAL_VIEW_TYPE_MONTHLY,
|
||||
GCAL_VIEW_TYPE_YEARLY,
|
||||
GCAL_VIEW_TYPE_LIST,
|
||||
} GcalViewTypeEnum;
|
||||
GCAL_WINDOW_VIEW_DAY,
|
||||
GCAL_WINDOW_VIEW_WEEK,
|
||||
GCAL_WINDOW_VIEW_MONTH,
|
||||
GCAL_WINDOW_VIEW_YEAR,
|
||||
GCAL_WINDOW_VIEW_LIST,
|
||||
} GcalWindowViewType;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
|
||||
@@ -621,8 +621,8 @@ gcal_week_view_draw_header (GcalWeekView *view,
|
||||
context = gtk_widget_get_style_context (GTK_WIDGET (view));
|
||||
state = gtk_widget_get_state_flags (GTK_WIDGET (view));
|
||||
|
||||
gtk_style_context_add_region (context, "header", 0);
|
||||
gtk_style_context_save (context);
|
||||
gtk_style_context_add_region (context, "header", 0);
|
||||
|
||||
gtk_style_context_get_color (context, state, &color);
|
||||
cairo_set_source_rgba (cr, color.red, color.green, color.blue, color.alpha);
|
||||
@@ -753,7 +753,7 @@ gcal_week_view_draw_grid (GcalWeekView *view,
|
||||
pango_cairo_update_layout (cr, layout);
|
||||
pango_layout_get_pixel_size (layout, &font_width, &font_height);
|
||||
cairo_move_to (cr,
|
||||
alloc->x + padding->left + (( priv->grid_sidebar_size - font_width) / 2),
|
||||
alloc->x + padding->left + priv->grid_sidebar_size - font_width - 4,
|
||||
alloc->y + padding->top + priv->header_size + priv->grid_header_size + priv->vertical_step * (i + 1) + ((priv->vertical_step - font_height) / 2));
|
||||
pango_cairo_show_layout (cr, layout);
|
||||
|
||||
|
||||
+197
-77
@@ -22,10 +22,11 @@
|
||||
#include "gcal-floating-container.h"
|
||||
#include "gcal-toolbar.h"
|
||||
#include "gcal-month-view.h"
|
||||
#include "gcal-week-view.h"
|
||||
#include "gcal-view.h"
|
||||
#include "gcal-event-widget.h"
|
||||
#include "gcal-event-view.h"
|
||||
#include "gcal-utils.h"
|
||||
#include "gcal-enum-types.h"
|
||||
#include "gtk-notification.h"
|
||||
|
||||
#include <clutter/clutter.h>
|
||||
@@ -49,72 +50,107 @@ struct _GcalWindowPrivate
|
||||
GtkWidget *views [5];
|
||||
GtkWidget *add_view;
|
||||
|
||||
GcalViewTypeEnum active_view;
|
||||
GcalWindowViewType active_view;
|
||||
|
||||
/* temp to keep the will_delete event uuid */
|
||||
gchar *event_to_delete;
|
||||
};
|
||||
|
||||
static void gcal_window_constructed (GObject *object);
|
||||
enum
|
||||
{
|
||||
PROP_0,
|
||||
PROP_ACTIVE_VIEW
|
||||
};
|
||||
|
||||
GcalManager* gcal_window_get_manager (GcalWindow *window);
|
||||
static void gcal_window_constructed (GObject *object);
|
||||
|
||||
static void gcal_window_set_sources_view (GcalWindow *window);
|
||||
static void gcal_window_set_property (GObject *object,
|
||||
guint property_id,
|
||||
const GValue *value,
|
||||
GParamSpec *pspec);
|
||||
|
||||
static void gcal_window_init_event_view (GcalWindow *window);
|
||||
static void gcal_window_get_property (GObject *object,
|
||||
guint property_id,
|
||||
GValue *value,
|
||||
GParamSpec *pspec);
|
||||
|
||||
static void gcal_window_view_changed (GcalToolbar *main_toolbar,
|
||||
GcalViewTypeEnum view_type,
|
||||
gpointer user_data);
|
||||
static GcalManager* gcal_window_get_manager (GcalWindow *window);
|
||||
|
||||
static void gcal_window_sources_shown (GcalToolbar *main_toolbar,
|
||||
gboolean visible,
|
||||
gpointer user_data);
|
||||
static GSettings* gcal_window_get_settings (GcalWindow *window);
|
||||
|
||||
static void gcal_window_add_event (GcalToolbar *main_toolbar,
|
||||
gpointer user_data);
|
||||
static void gcal_window_set_active_view (GcalWindow *window,
|
||||
GcalWindowViewType view_type);
|
||||
|
||||
static void gcal_window_back_last_view (GtkWidget *widget,
|
||||
gpointer user_data);
|
||||
static void gcal_window_set_sources_view (GcalWindow *window);
|
||||
|
||||
static void gcal_window_edit_event (GcalToolbar *main_toolbar,
|
||||
gpointer user_data);
|
||||
static void gcal_window_init_event_view (GcalWindow *window);
|
||||
|
||||
static void gcal_window_done_edit_event (GcalToolbar *main_toolbar,
|
||||
gpointer user_data);
|
||||
static void gcal_window_view_changed (GcalToolbar *main_toolbar,
|
||||
GcalWindowViewType 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 (GcalToolbar *main_toolbar,
|
||||
gboolean visible,
|
||||
gpointer user_data);
|
||||
|
||||
static void gcal_window_events_added (GcalManager *manager,
|
||||
gpointer events_list,
|
||||
gpointer user_data);
|
||||
static void gcal_window_add_event (GcalToolbar *main_toolbar,
|
||||
gpointer user_data);
|
||||
|
||||
static void gcal_window_events_removed (GcalManager *manager,
|
||||
gpointer events_list,
|
||||
gpointer user_data);
|
||||
static void gcal_window_back_last_view (GtkWidget *widget,
|
||||
gpointer user_data);
|
||||
|
||||
static void gcal_window_event_activated (GcalEventWidget *event_widget,
|
||||
gpointer user_data);
|
||||
static void gcal_window_edit_event (GcalToolbar *main_toolbar,
|
||||
gpointer user_data);
|
||||
|
||||
static void gcal_window_will_remove_event (GcalEventView *view,
|
||||
gchar *event_uuid,
|
||||
gpointer user_data);
|
||||
static void gcal_window_done_edit_event (GcalToolbar *main_toolbar,
|
||||
gpointer user_data);
|
||||
|
||||
static void gcal_window_remove_event (GtkNotification *notification,
|
||||
gpointer user_data);
|
||||
static void gcal_window_sources_row_activated (GtkTreeView *tree_view,
|
||||
GtkTreePath *path,
|
||||
GtkTreeViewColumn *column,
|
||||
gpointer user_data);
|
||||
|
||||
static void gcal_window_undo_remove_event (GtkButton *button,
|
||||
gpointer user_data);
|
||||
static void gcal_window_events_added (GcalManager *manager,
|
||||
gpointer events_list,
|
||||
gpointer user_data);
|
||||
|
||||
static void gcal_window_events_removed (GcalManager *manager,
|
||||
gpointer events_list,
|
||||
gpointer user_data);
|
||||
|
||||
static void gcal_window_event_activated (GcalEventWidget *event_widget,
|
||||
gpointer user_data);
|
||||
|
||||
static void gcal_window_will_remove_event (GcalEventView *view,
|
||||
gchar *event_uuid,
|
||||
gpointer user_data);
|
||||
|
||||
static void gcal_window_remove_event (GtkNotification *notification,
|
||||
gpointer user_data);
|
||||
|
||||
static void gcal_window_undo_remove_event (GtkButton *button,
|
||||
gpointer user_data);
|
||||
|
||||
G_DEFINE_TYPE(GcalWindow, gcal_window, GTK_TYPE_APPLICATION_WINDOW)
|
||||
|
||||
static void
|
||||
gcal_window_class_init(GcalWindowClass *klass)
|
||||
{
|
||||
G_OBJECT_CLASS (klass)->constructed = gcal_window_constructed;
|
||||
GObjectClass *object_class;
|
||||
|
||||
object_class = G_OBJECT_CLASS (klass);
|
||||
object_class->constructed = gcal_window_constructed;
|
||||
object_class->set_property = gcal_window_set_property;
|
||||
object_class->get_property = gcal_window_get_property;
|
||||
|
||||
g_object_class_install_property (object_class,
|
||||
PROP_ACTIVE_VIEW,
|
||||
g_param_spec_enum ("active-view",
|
||||
"Active View",
|
||||
"The active view, eg: month, week, etc.",
|
||||
GCAL_WINDOW_VIEW_TYPE,
|
||||
GCAL_WINDOW_VIEW_MONTH,
|
||||
G_PARAM_READWRITE));
|
||||
|
||||
g_type_class_add_private((gpointer)klass, sizeof(GcalWindowPrivate));
|
||||
}
|
||||
@@ -130,6 +166,7 @@ static void
|
||||
gcal_window_constructed (GObject *object)
|
||||
{
|
||||
GcalWindowPrivate *priv;
|
||||
|
||||
GtkWidget *embed;
|
||||
ClutterActor *stage;
|
||||
ClutterActor *base;
|
||||
@@ -219,17 +256,6 @@ gcal_window_constructed (GObject *object)
|
||||
CLUTTER_BIN_ALIGNMENT_FILL,
|
||||
CLUTTER_BIN_ALIGNMENT_FILL);
|
||||
|
||||
icaltimetype *date = g_new (icaltimetype, 1);
|
||||
*date = icaltime_from_timet (time (NULL), 0);
|
||||
priv->active_view = GCAL_VIEW_TYPE_MONTHLY;
|
||||
priv->views[GCAL_VIEW_TYPE_MONTHLY] = gcal_month_view_new (date);
|
||||
g_free (date);
|
||||
|
||||
gtk_widget_show (priv->views[GCAL_VIEW_TYPE_MONTHLY]);
|
||||
gtk_notebook_append_page (GTK_NOTEBOOK (priv->notebook),
|
||||
priv->views[GCAL_VIEW_TYPE_MONTHLY],
|
||||
NULL);
|
||||
|
||||
/* sources view */
|
||||
holder = gcal_floating_container_new ();
|
||||
|
||||
@@ -297,9 +323,49 @@ gcal_window_constructed (GObject *object)
|
||||
object);
|
||||
|
||||
gtk_widget_show (embed);
|
||||
|
||||
/* settings the view */
|
||||
|
||||
}
|
||||
|
||||
GcalManager*
|
||||
static void
|
||||
gcal_window_set_property (GObject *object,
|
||||
guint property_id,
|
||||
const GValue *value,
|
||||
GParamSpec *pspec)
|
||||
{
|
||||
switch (property_id)
|
||||
{
|
||||
case PROP_ACTIVE_VIEW:
|
||||
gcal_window_set_active_view (GCAL_WINDOW (object),
|
||||
g_value_get_enum (value));
|
||||
return;
|
||||
}
|
||||
|
||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
|
||||
}
|
||||
|
||||
static void
|
||||
gcal_window_get_property (GObject *object,
|
||||
guint property_id,
|
||||
GValue *value,
|
||||
GParamSpec *pspec)
|
||||
{
|
||||
GcalWindowPrivate *priv;
|
||||
|
||||
priv = GCAL_WINDOW (object)->priv;
|
||||
|
||||
switch (property_id)
|
||||
{
|
||||
case PROP_ACTIVE_VIEW:
|
||||
g_value_set_enum (value, priv->active_view);
|
||||
return;
|
||||
}
|
||||
|
||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
|
||||
}
|
||||
|
||||
static GcalManager*
|
||||
gcal_window_get_manager (GcalWindow *window)
|
||||
{
|
||||
GcalApplication *app;
|
||||
@@ -308,6 +374,80 @@ gcal_window_get_manager (GcalWindow *window)
|
||||
return gcal_application_get_manager (app);
|
||||
}
|
||||
|
||||
static GSettings*
|
||||
gcal_window_get_settings (GcalWindow *window)
|
||||
{
|
||||
GcalApplication *app;
|
||||
app = GCAL_APPLICATION (gtk_window_get_application (GTK_WINDOW (window)));
|
||||
|
||||
return gcal_application_get_settings (app);
|
||||
}
|
||||
|
||||
static void
|
||||
gcal_window_set_active_view (GcalWindow *window,
|
||||
GcalWindowViewType view_type)
|
||||
{
|
||||
GcalWindowPrivate *priv;
|
||||
gint activated_page;
|
||||
|
||||
g_return_if_fail (GCAL_IS_WINDOW (window));
|
||||
priv = window->priv;
|
||||
|
||||
if ((activated_page = gtk_notebook_page_num (GTK_NOTEBOOK (priv->notebook),
|
||||
priv->views[view_type]))
|
||||
!= -1)
|
||||
{
|
||||
gtk_notebook_set_current_page (GTK_NOTEBOOK (priv->notebook),
|
||||
activated_page);
|
||||
priv->active_view = view_type;
|
||||
}
|
||||
else
|
||||
{
|
||||
//TODO create view
|
||||
g_debug ("GcalWindowViewType in GcalWindow %d", priv->active_view);
|
||||
icaltimetype *date = g_new (icaltimetype, 1);
|
||||
*date = icaltime_from_timet (time (NULL), 0);
|
||||
|
||||
switch (view_type)
|
||||
{
|
||||
case GCAL_WINDOW_VIEW_WEEK:
|
||||
priv->views[GCAL_WINDOW_VIEW_WEEK] = gcal_week_view_new (date);
|
||||
break;
|
||||
case GCAL_WINDOW_VIEW_MONTH:
|
||||
priv->views[GCAL_WINDOW_VIEW_MONTH] = gcal_month_view_new (date);
|
||||
break;
|
||||
default:
|
||||
g_debug ("Unimplemented view yet");
|
||||
return;
|
||||
}
|
||||
|
||||
priv->active_view = view_type;
|
||||
g_free (date);
|
||||
|
||||
gtk_widget_show (priv->views[priv->active_view]);
|
||||
gtk_notebook_set_current_page (
|
||||
GTK_NOTEBOOK (priv->notebook),
|
||||
gtk_notebook_append_page (GTK_NOTEBOOK (priv->notebook),
|
||||
priv->views[priv->active_view],
|
||||
NULL));
|
||||
}
|
||||
|
||||
//FIXME: thi isn't yet the final destination of this code.
|
||||
icaltimetype *first_day;
|
||||
icaltimetype *last_day;
|
||||
first_day = gcal_month_view_get_initial_date (
|
||||
GCAL_MONTH_VIEW (priv->views[GCAL_WINDOW_VIEW_MONTH]));
|
||||
last_day = gcal_month_view_get_final_date (
|
||||
GCAL_MONTH_VIEW (priv->views[GCAL_WINDOW_VIEW_MONTH]));
|
||||
|
||||
gcal_manager_set_new_range (
|
||||
gcal_window_get_manager (window),
|
||||
first_day,
|
||||
last_day);
|
||||
g_free (first_day);
|
||||
g_free (last_day);
|
||||
}
|
||||
|
||||
static void
|
||||
gcal_window_set_sources_view (GcalWindow *window)
|
||||
{
|
||||
@@ -404,9 +544,9 @@ gcal_window_init_event_view (GcalWindow *window)
|
||||
}
|
||||
|
||||
static void
|
||||
gcal_window_view_changed (GcalToolbar *main_toolbar,
|
||||
GcalViewTypeEnum view_type,
|
||||
gpointer user_data)
|
||||
gcal_window_view_changed (GcalToolbar *main_toolbar,
|
||||
GcalWindowViewType view_type,
|
||||
gpointer user_data)
|
||||
{
|
||||
GcalWindowPrivate *priv;
|
||||
gint activated_page;
|
||||
@@ -423,11 +563,7 @@ gcal_window_view_changed (GcalToolbar *main_toolbar,
|
||||
}
|
||||
else
|
||||
{
|
||||
//TODO create view
|
||||
g_debug ("GcalViewTypeEnum in GcalWindow %d", priv->active_view);
|
||||
if (priv->active_view == GCAL_VIEW_TYPE_LIST)
|
||||
{
|
||||
}
|
||||
gcal_window_set_active_view (GCAL_WINDOW (user_data), view_type);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -593,10 +729,8 @@ gcal_window_events_added (GcalManager *manager,
|
||||
starting_date = gcal_manager_get_event_start_date (manager,
|
||||
source_uid,
|
||||
event_uid);
|
||||
/* FIXME: here priv->views[priv->active_view] instead of hardcoding
|
||||
* GCAL_VIEW_TYPE_MONTHLY */
|
||||
if (gcal_view_is_in_range (
|
||||
GCAL_VIEW (priv->views[GCAL_VIEW_TYPE_MONTHLY]),
|
||||
GCAL_VIEW (priv->views[priv->active_view]),
|
||||
starting_date))
|
||||
{
|
||||
summary = gcal_manager_get_event_summary (manager,
|
||||
@@ -819,20 +953,6 @@ gcal_window_new (GcalApplication *app)
|
||||
G_CALLBACK (gcal_window_events_removed),
|
||||
win);
|
||||
|
||||
/* FIXME: demo code */
|
||||
GcalWindowPrivate *priv;
|
||||
icaltimetype *first_day;
|
||||
icaltimetype *last_day;
|
||||
priv = win->priv;
|
||||
first_day = gcal_month_view_get_initial_date (
|
||||
GCAL_MONTH_VIEW (priv->views[GCAL_VIEW_TYPE_MONTHLY]));
|
||||
last_day = gcal_month_view_get_final_date (
|
||||
GCAL_MONTH_VIEW (priv->views[GCAL_VIEW_TYPE_MONTHLY]));
|
||||
|
||||
gcal_manager_set_new_range (manager, first_day, last_day);
|
||||
g_free (first_day);
|
||||
g_free (last_day);
|
||||
|
||||
return GTK_WIDGET (win);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user