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
+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