manager: Move GcalClock to GcalApplication
GcalManager is basically an object that is shared among classes that need to modify calendars, while GcalClock is just a wall clock implementation. Move it to GcalApplication, so that objects without access to GcalManager can still access the clock.
This commit is contained in:
@@ -55,6 +55,8 @@ struct _GcalApplication
|
||||
GcalWeatherService *weather_service;
|
||||
|
||||
GcalShellSearchProvider *search_provider;
|
||||
|
||||
GcalClock *clock;
|
||||
};
|
||||
|
||||
static void gcal_application_create_new_event (GSimpleAction *new_event,
|
||||
@@ -121,6 +123,7 @@ static const GActionEntry gcal_app_entries[] = {
|
||||
enum
|
||||
{
|
||||
PROP_0,
|
||||
PROP_CLOCK,
|
||||
PROP_MANAGER,
|
||||
PROP_TIME_FORMAT,
|
||||
PROP_WEATHER_SERVICE,
|
||||
@@ -229,6 +232,7 @@ gcal_application_finalize (GObject *object)
|
||||
g_clear_pointer (&self->initial_date, g_free);
|
||||
g_clear_pointer (&self->uuid, g_free);
|
||||
g_clear_object (&self->colors_provider);
|
||||
g_clear_object (&self->clock);
|
||||
g_clear_object (&self->desktop_settings);
|
||||
g_clear_object (&self->manager);
|
||||
g_clear_object (&self->provider);
|
||||
@@ -250,6 +254,10 @@ gcal_application_get_property (GObject *object,
|
||||
|
||||
switch (property_id)
|
||||
{
|
||||
case PROP_CLOCK:
|
||||
g_value_set_object (value, self->clock);
|
||||
break;
|
||||
|
||||
case PROP_MANAGER:
|
||||
g_value_set_object (value, self->manager);
|
||||
break;
|
||||
@@ -506,6 +514,12 @@ gcal_application_class_init (GcalApplicationClass *klass)
|
||||
application_class->dbus_register = gcal_application_dbus_register;
|
||||
application_class->dbus_unregister = gcal_application_dbus_unregister;
|
||||
|
||||
properties[PROP_CLOCK] = g_param_spec_object ("clock",
|
||||
"Clock",
|
||||
"The internal clock of Calendar",
|
||||
GCAL_TYPE_CLOCK,
|
||||
G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
|
||||
|
||||
properties[PROP_MANAGER] = g_param_spec_object ("manager",
|
||||
"The manager object",
|
||||
"The manager object",
|
||||
@@ -533,6 +547,7 @@ gcal_application_init (GcalApplication *self)
|
||||
{
|
||||
g_application_add_main_option_entries (G_APPLICATION (self), gcal_application_goptions);
|
||||
|
||||
self->clock = gcal_clock_new ();
|
||||
self->manager = gcal_manager_new ();
|
||||
g_signal_connect_swapped (self->manager, "source-added", G_CALLBACK (process_sources), self);
|
||||
g_signal_connect_swapped (self->manager, "source-changed", G_CALLBACK (process_sources), self);
|
||||
@@ -729,3 +744,11 @@ gcal_application_set_initial_date (GcalApplication *self,
|
||||
g_clear_pointer (&self->initial_date, g_date_time_unref);
|
||||
self->initial_date = datetime_to_icaltime (initial_date);
|
||||
}
|
||||
|
||||
GcalClock*
|
||||
gcal_application_get_clock (GcalApplication *self)
|
||||
{
|
||||
g_return_val_if_fail (GCAL_IS_APPLICATION (self), NULL);
|
||||
|
||||
return self->clock;
|
||||
}
|
||||
|
||||
@@ -20,6 +20,7 @@
|
||||
#ifndef _GCAL_APPLICATION_H_
|
||||
#define _GCAL_APPLICATION_H_
|
||||
|
||||
#include "gcal-clock.h"
|
||||
#include "gcal-weather-service.h"
|
||||
#include "gcal-manager.h"
|
||||
|
||||
@@ -43,6 +44,8 @@ void gcal_application_set_uuid (GcalApplicatio
|
||||
void gcal_application_set_initial_date (GcalApplication *self,
|
||||
GDateTime *initial_date);
|
||||
|
||||
GcalClock* gcal_application_get_clock (GcalApplication *self);
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
#endif /* _GCAL_APPLICATION_H_ */
|
||||
|
||||
@@ -90,8 +90,6 @@ struct _GcalManager
|
||||
|
||||
GoaClient *goa_client;
|
||||
|
||||
GcalClock *clock;
|
||||
|
||||
/* state flags */
|
||||
gboolean goa_client_ready;
|
||||
gint sources_at_launch;
|
||||
@@ -108,7 +106,6 @@ G_DEFINE_TYPE (GcalManager, gcal_manager, G_TYPE_OBJECT)
|
||||
enum
|
||||
{
|
||||
PROP_0,
|
||||
PROP_CLOCK,
|
||||
PROP_DEFAULT_CALENDAR,
|
||||
PROP_LOADING,
|
||||
PROP_SETTINGS,
|
||||
@@ -776,7 +773,6 @@ gcal_manager_finalize (GObject *object)
|
||||
|
||||
GCAL_ENTRY;
|
||||
|
||||
g_clear_object (&self->clock);
|
||||
g_clear_object (&self->settings);
|
||||
g_clear_object (&self->goa_client);
|
||||
g_clear_object (&self->e_data_model);
|
||||
@@ -871,17 +867,6 @@ gcal_manager_class_init (GcalManagerClass *klass)
|
||||
object_class->set_property = gcal_manager_set_property;
|
||||
object_class->get_property = gcal_manager_get_property;
|
||||
|
||||
/**
|
||||
* GcalManager:clock:
|
||||
*
|
||||
* The internal clock of Calendar.
|
||||
*/
|
||||
properties[PROP_CLOCK] = g_param_spec_object ("clock",
|
||||
"Clock",
|
||||
"The internal clock of Calendar",
|
||||
GCAL_TYPE_CLOCK,
|
||||
G_PARAM_READWRITE);
|
||||
|
||||
/**
|
||||
* GcalManager:default-calendar:
|
||||
*
|
||||
@@ -964,7 +949,6 @@ gcal_manager_class_init (GcalManagerClass *klass)
|
||||
static void
|
||||
gcal_manager_init (GcalManager *self)
|
||||
{
|
||||
self->clock = gcal_clock_new ();
|
||||
self->settings = g_settings_new ("org.gnome.calendar");
|
||||
self->system_timezone = e_cal_util_get_system_timezone ();
|
||||
}
|
||||
@@ -1856,22 +1840,6 @@ gcal_manager_get_loading (GcalManager *self)
|
||||
return !self->goa_client_ready || self->sources_at_launch > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* gcal_manager_get_clock:
|
||||
* @self: a #GcalManager
|
||||
*
|
||||
* Retrieves the internal #GcalClock of @self.
|
||||
*
|
||||
* Returns: (transfer none): a #GcalClock.
|
||||
*/
|
||||
GcalClock*
|
||||
gcal_manager_get_clock (GcalManager *self)
|
||||
{
|
||||
g_return_val_if_fail (GCAL_IS_MANAGER (self), NULL);
|
||||
|
||||
return self->clock;
|
||||
}
|
||||
|
||||
/**
|
||||
* gcal_manager_get_event_from_shell_search:
|
||||
* @self: a #GcalManager
|
||||
|
||||
@@ -20,7 +20,6 @@
|
||||
#define __GCAL_MANAGER_H__
|
||||
|
||||
#include "e-cal-data-model.h"
|
||||
#include "gcal-clock.h"
|
||||
#include "gcal-event.h"
|
||||
|
||||
#include <libical/icaltime.h>
|
||||
@@ -107,9 +106,6 @@ GList* gcal_manager_get_events (GcalManager
|
||||
|
||||
gboolean gcal_manager_get_loading (GcalManager *self);
|
||||
|
||||
/* Clock */
|
||||
GcalClock* gcal_manager_get_clock (GcalManager *self);
|
||||
|
||||
/* Online Accounts */
|
||||
GoaClient* gcal_manager_get_goa_client (GcalManager *self);
|
||||
|
||||
|
||||
@@ -20,6 +20,8 @@
|
||||
#define G_LOG_DOMAIN "GcalMonthCell"
|
||||
|
||||
#include "config.h"
|
||||
#include "gcal-application.h"
|
||||
#include "gcal-clock.h"
|
||||
#include "gcal-event-widget.h"
|
||||
#include "gcal-utils.h"
|
||||
#include "gcal-month-cell.h"
|
||||
@@ -445,8 +447,9 @@ gcal_month_cell_class_init (GcalMonthCellClass *klass)
|
||||
static void
|
||||
gcal_month_cell_init (GcalMonthCell *self)
|
||||
{
|
||||
gtk_widget_init_template (GTK_WIDGET (self));
|
||||
GcalApplication *application;
|
||||
|
||||
gtk_widget_init_template (GTK_WIDGET (self));
|
||||
|
||||
/* Setup the month cell as a drag n' drop destination */
|
||||
gtk_drag_dest_set (GTK_WIDGET (self),
|
||||
@@ -454,6 +457,18 @@ gcal_month_cell_init (GcalMonthCell *self)
|
||||
NULL,
|
||||
0,
|
||||
GDK_ACTION_MOVE);
|
||||
|
||||
/* Connect to the wall clock */
|
||||
application = GCAL_APPLICATION (g_application_get_default ());
|
||||
|
||||
g_assert (application != NULL);
|
||||
|
||||
g_signal_connect_object (gcal_application_get_clock (application),
|
||||
"day-changed",
|
||||
G_CALLBACK (day_changed_cb),
|
||||
self,
|
||||
0);
|
||||
|
||||
}
|
||||
|
||||
GtkWidget*
|
||||
@@ -576,14 +591,7 @@ gcal_month_cell_set_manager (GcalMonthCell *self,
|
||||
g_return_if_fail (GCAL_IS_MONTH_CELL (self));
|
||||
|
||||
if (g_set_object (&self->manager, manager))
|
||||
{
|
||||
g_signal_connect_swapped (gcal_manager_get_clock (manager),
|
||||
"day-changed",
|
||||
G_CALLBACK (day_changed_cb),
|
||||
self);
|
||||
|
||||
g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_MANAGER]);
|
||||
}
|
||||
g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_MANAGER]);
|
||||
}
|
||||
|
||||
guint
|
||||
|
||||
@@ -21,6 +21,8 @@
|
||||
|
||||
#include "config.h"
|
||||
#include "e-cal-data-model-subscriber.h"
|
||||
#include "gcal-application.h"
|
||||
#include "gcal-clock.h"
|
||||
#include "gcal-debug.h"
|
||||
#include "gcal-month-cell.h"
|
||||
#include "gcal-month-popover.h"
|
||||
@@ -2087,11 +2089,6 @@ gcal_month_view_set_property (GObject *object,
|
||||
case PROP_MANAGER:
|
||||
self->manager = g_value_dup_object (value);
|
||||
|
||||
g_signal_connect_swapped (gcal_manager_get_clock (self->manager),
|
||||
"day-changed",
|
||||
G_CALLBACK (update_month_cells),
|
||||
self);
|
||||
|
||||
for (i = 0; i < 42; i++)
|
||||
gcal_month_cell_set_manager (GCAL_MONTH_CELL (self->month_cell[i / 7][i % 7]), self->manager);
|
||||
|
||||
@@ -2220,6 +2217,8 @@ gcal_month_view_class_init (GcalMonthViewClass *klass)
|
||||
static void
|
||||
gcal_month_view_init (GcalMonthView *self)
|
||||
{
|
||||
GcalApplication *application;
|
||||
|
||||
gtk_widget_init_template (GTK_WIDGET (self));
|
||||
|
||||
gtk_widget_set_has_window (GTK_WIDGET (self), FALSE);
|
||||
@@ -2254,5 +2253,17 @@ gcal_month_view_init (GcalMonthView *self)
|
||||
G_BINDING_DEFAULT);
|
||||
|
||||
g_signal_connect (self->overflow_popover, "event-activated", G_CALLBACK (on_month_popover_event_activated_cb), self);
|
||||
|
||||
|
||||
/* Connect to the wall clock */
|
||||
application = GCAL_APPLICATION (g_application_get_default ());
|
||||
|
||||
g_assert (application != NULL);
|
||||
|
||||
g_signal_connect_object (gcal_application_get_clock (application),
|
||||
"day-changed",
|
||||
G_CALLBACK (update_month_cells),
|
||||
self,
|
||||
G_CONNECT_SWAPPED);
|
||||
}
|
||||
|
||||
|
||||
@@ -19,6 +19,8 @@
|
||||
|
||||
#define G_LOG_DOMAIN "GcalWeekGrid"
|
||||
|
||||
#include "gcal-application.h"
|
||||
#include "gcal-clock.h"
|
||||
#include "gcal-debug.h"
|
||||
#include "gcal-week-grid.h"
|
||||
#include "gcal-week-view.h"
|
||||
@@ -1109,6 +1111,8 @@ gcal_week_grid_class_init (GcalWeekGridClass *klass)
|
||||
static void
|
||||
gcal_week_grid_init (GcalWeekGrid *self)
|
||||
{
|
||||
GcalApplication *application;
|
||||
|
||||
gtk_widget_set_has_window (GTK_WIDGET (self), FALSE);
|
||||
|
||||
self->selection_start = -1;
|
||||
@@ -1123,6 +1127,17 @@ gcal_week_grid_init (GcalWeekGrid *self)
|
||||
NULL,
|
||||
0,
|
||||
GDK_ACTION_MOVE);
|
||||
|
||||
/* Connect to the wall clock */
|
||||
application = GCAL_APPLICATION (g_application_get_default ());
|
||||
|
||||
g_assert (application != NULL);
|
||||
|
||||
g_signal_connect_object (gcal_application_get_clock (application),
|
||||
"minute-changed",
|
||||
G_CALLBACK (gtk_widget_queue_draw),
|
||||
self,
|
||||
G_CONNECT_SWAPPED);
|
||||
}
|
||||
|
||||
/* Public API */
|
||||
@@ -1133,11 +1148,6 @@ gcal_week_grid_set_manager (GcalWeekGrid *self,
|
||||
g_return_if_fail (GCAL_IS_WEEK_GRID (self));
|
||||
|
||||
self->manager = manager;
|
||||
|
||||
g_signal_connect_swapped (gcal_manager_get_clock (manager),
|
||||
"minute-changed",
|
||||
G_CALLBACK (gtk_widget_queue_draw),
|
||||
self);
|
||||
}
|
||||
|
||||
void
|
||||
|
||||
@@ -21,6 +21,8 @@
|
||||
|
||||
#define G_LOG_DOMAIN "GcalWeekHeader"
|
||||
|
||||
#include "gcal-application.h"
|
||||
#include "gcal-clock.h"
|
||||
#include "gcal-debug.h"
|
||||
#include "gcal-event-widget.h"
|
||||
#include "gcal-utils.h"
|
||||
@@ -1664,6 +1666,8 @@ gcal_week_header_class_init (GcalWeekHeaderClass *kclass)
|
||||
static void
|
||||
gcal_week_header_init (GcalWeekHeader *self)
|
||||
{
|
||||
GcalApplication *application;
|
||||
|
||||
self->expanded = FALSE;
|
||||
self->selection_start = -1;
|
||||
self->selection_end = -1;
|
||||
@@ -1683,6 +1687,17 @@ G_GNUC_END_IGNORE_DEPRECATIONS
|
||||
NULL,
|
||||
0,
|
||||
GDK_ACTION_MOVE);
|
||||
|
||||
/* Connect to the wall clock */
|
||||
application = GCAL_APPLICATION (g_application_get_default ());
|
||||
|
||||
g_assert (application != NULL);
|
||||
|
||||
g_signal_connect_object (gcal_application_get_clock (application),
|
||||
"day-changed",
|
||||
G_CALLBACK (gtk_widget_queue_draw),
|
||||
self,
|
||||
G_CONNECT_SWAPPED);
|
||||
}
|
||||
|
||||
/* Private API */
|
||||
@@ -1813,11 +1828,6 @@ gcal_week_header_set_manager (GcalWeekHeader *self,
|
||||
g_return_if_fail (GCAL_IS_WEEK_HEADER (self));
|
||||
|
||||
self->manager = manager;
|
||||
|
||||
g_signal_connect_swapped (gcal_manager_get_clock (manager),
|
||||
"day-changed",
|
||||
G_CALLBACK (gtk_widget_queue_draw),
|
||||
self);
|
||||
}
|
||||
|
||||
void
|
||||
|
||||
@@ -18,6 +18,8 @@
|
||||
|
||||
#define G_LOG_DOMAIN "GcalYearView"
|
||||
|
||||
#include "gcal-application.h"
|
||||
#include "gcal-clock.h"
|
||||
#include "gcal-debug.h"
|
||||
#include "gcal-year-view.h"
|
||||
#include "gcal-view.h"
|
||||
@@ -1662,12 +1664,6 @@ gcal_year_view_set_property (GObject *object,
|
||||
|
||||
case PROP_MANAGER:
|
||||
self->manager = g_value_dup_object (value);
|
||||
|
||||
g_signal_connect_swapped (gcal_manager_get_clock (self->manager),
|
||||
"day-changed",
|
||||
G_CALLBACK (gtk_widget_queue_draw),
|
||||
self->navigator);
|
||||
|
||||
g_object_notify (object, "manager");
|
||||
break;
|
||||
|
||||
@@ -2011,6 +2007,7 @@ gcal_year_view_class_init (GcalYearViewClass *klass)
|
||||
static void
|
||||
gcal_year_view_init (GcalYearView *self)
|
||||
{
|
||||
GcalApplication *application;
|
||||
guint i;
|
||||
|
||||
self->weather_service = NULL;
|
||||
@@ -2053,6 +2050,17 @@ gcal_year_view_init (GcalYearView *self)
|
||||
NULL,
|
||||
0,
|
||||
GDK_ACTION_MOVE);
|
||||
|
||||
/* Connect to the wall clock */
|
||||
application = GCAL_APPLICATION (g_application_get_default ());
|
||||
|
||||
g_assert (application != NULL);
|
||||
|
||||
g_signal_connect_object (gcal_application_get_clock (application),
|
||||
"day-changed",
|
||||
G_CALLBACK (gtk_widget_queue_draw),
|
||||
self,
|
||||
G_CONNECT_SWAPPED);
|
||||
}
|
||||
|
||||
static void
|
||||
|
||||
Reference in New Issue
Block a user