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:
Georges Basile Stavracas Neto
2018-05-04 21:37:53 -03:00
parent d00a4bc7b7
commit cfa8794313
9 changed files with 103 additions and 66 deletions
+23
View File
@@ -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;
}
+3
View File
@@ -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_ */
-32
View File
@@ -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
-4
View File
@@ -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);
+17 -9
View File
@@ -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
+16 -5
View File
@@ -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);
}
+15 -5
View File
@@ -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
+15 -5
View File
@@ -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
+14 -6
View File
@@ -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