view: Move weather API to interface GcalView
This allows us to get rid of similar code.
This commit is contained in:
committed by
Georges Basile Stavracas Neto
parent
d13473d3bc
commit
d51d1ea2cd
@@ -1773,8 +1773,13 @@ gcal_month_view_set_property (GObject *object,
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case PROP_WEATHER_SERVICE:
|
case PROP_WEATHER_SERVICE:
|
||||||
gcal_month_view_set_weather_service (self, g_value_get_object (value));
|
gcal_view_set_weather_service_impl_helper (&self->weather_service,
|
||||||
break;
|
GCAL_WEATHER_SERVICE (g_value_get_object (value)),
|
||||||
|
(GcalWeatherUpdateFunc) update_weather,
|
||||||
|
(GCallback) weather_changed_cb,
|
||||||
|
GTK_WIDGET (self));
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
|
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
|
||||||
break;
|
break;
|
||||||
@@ -1800,7 +1805,7 @@ gcal_month_view_get_property (GObject *object,
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case PROP_WEATHER_SERVICE:
|
case PROP_WEATHER_SERVICE:
|
||||||
g_value_set_boxed (value, gcal_month_view_get_weather_service (self));
|
g_value_set_boxed (value, self->weather_service);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
@@ -2206,18 +2211,7 @@ gcal_month_view_class_init (GcalMonthViewClass *klass)
|
|||||||
|
|
||||||
g_object_class_override_property (object_class, PROP_DATE, "active-date");
|
g_object_class_override_property (object_class, PROP_DATE, "active-date");
|
||||||
g_object_class_override_property (object_class, PROP_MANAGER, "manager");
|
g_object_class_override_property (object_class, PROP_MANAGER, "manager");
|
||||||
|
g_object_class_override_property (object_class, PROP_WEATHER_SERVICE, "weather-service");
|
||||||
/**
|
|
||||||
* GcalWeekView:weather-service:
|
|
||||||
*
|
|
||||||
* Sets the weather service to use.
|
|
||||||
*/
|
|
||||||
g_object_class_install_property
|
|
||||||
(object_class,
|
|
||||||
PROP_WEATHER_SERVICE,
|
|
||||||
g_param_spec_object ("weather-service", "weather-service", "weather-service",
|
|
||||||
GCAL_TYPE_WEATHER_SERVICE,
|
|
||||||
G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE));
|
|
||||||
|
|
||||||
signals[EVENT_ACTIVATED] = g_signal_new ("event-activated",
|
signals[EVENT_ACTIVATED] = g_signal_new ("event-activated",
|
||||||
GCAL_TYPE_MONTH_VIEW,
|
GCAL_TYPE_MONTH_VIEW,
|
||||||
@@ -2327,52 +2321,3 @@ gcal_month_view_set_use_24h_format (GcalMonthView *self,
|
|||||||
{
|
{
|
||||||
self->use_24h_format = use_24h;
|
self->use_24h_format = use_24h;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* gcal_month_view_set_weather_service:
|
|
||||||
* @self: The #GcalWeatherView instance.
|
|
||||||
* @service: (nullable): The weather service to query.
|
|
||||||
*
|
|
||||||
* Sets the service to query for weather reports.
|
|
||||||
*/
|
|
||||||
void
|
|
||||||
gcal_month_view_set_weather_service (GcalMonthView *self,
|
|
||||||
GcalWeatherService *service)
|
|
||||||
{
|
|
||||||
g_return_if_fail (GCAL_IS_MONTH_VIEW (self));
|
|
||||||
g_return_if_fail (!service || GCAL_IS_WEATHER_SERVICE (service));
|
|
||||||
|
|
||||||
if (self->weather_service == service)
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (self->weather_service)
|
|
||||||
g_signal_handlers_disconnect_by_func (self->weather_service, weather_changed_cb, self);
|
|
||||||
|
|
||||||
g_set_object (&self->weather_service, service);
|
|
||||||
|
|
||||||
if (service)
|
|
||||||
{
|
|
||||||
g_signal_connect (service,
|
|
||||||
"weather-changed",
|
|
||||||
G_CALLBACK (weather_changed_cb),
|
|
||||||
self);
|
|
||||||
}
|
|
||||||
|
|
||||||
update_weather (self, TRUE);
|
|
||||||
|
|
||||||
g_object_notify (G_OBJECT (self), "weather-service");
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* gcal_month_view_get_weather_service:
|
|
||||||
* @self: The #GcalWeatherView instance.
|
|
||||||
*
|
|
||||||
* Returns: (transfer none): The internal weather service object.
|
|
||||||
*/
|
|
||||||
GcalWeatherService*
|
|
||||||
gcal_month_view_get_weather_service (GcalMonthView *self)
|
|
||||||
{
|
|
||||||
g_return_val_if_fail (GCAL_IS_MONTH_VIEW (self), NULL);
|
|
||||||
|
|
||||||
return self->weather_service;
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -35,11 +35,6 @@ void gcal_month_view_set_first_weekday (GcalMonthView
|
|||||||
void gcal_month_view_set_use_24h_format (GcalMonthView *self,
|
void gcal_month_view_set_use_24h_format (GcalMonthView *self,
|
||||||
gboolean use_24h);
|
gboolean use_24h);
|
||||||
|
|
||||||
void gcal_month_view_set_weather_service (GcalMonthView *self,
|
|
||||||
GcalWeatherService *service);
|
|
||||||
|
|
||||||
GcalWeatherService* gcal_month_view_get_weather_service (GcalMonthView *self);
|
|
||||||
|
|
||||||
G_END_DECLS
|
G_END_DECLS
|
||||||
|
|
||||||
#endif /* __GCAL_MONTH_VIEW_H__ */
|
#endif /* __GCAL_MONTH_VIEW_H__ */
|
||||||
|
|||||||
@@ -56,6 +56,18 @@ gcal_view_default_init (GcalViewInterface *iface)
|
|||||||
GCAL_TYPE_MANAGER,
|
GCAL_TYPE_MANAGER,
|
||||||
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
|
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
|
||||||
|
|
||||||
|
/**
|
||||||
|
* GcalView::weather-service:
|
||||||
|
*
|
||||||
|
* The #GcalWeatherService of the view.
|
||||||
|
*/
|
||||||
|
g_object_interface_install_property (iface,
|
||||||
|
g_param_spec_object ("weather-service",
|
||||||
|
"The weather service",
|
||||||
|
"The weather service of the view",
|
||||||
|
GCAL_TYPE_WEATHER_SERVICE,
|
||||||
|
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* GcalView::create-event:
|
* GcalView::create-event:
|
||||||
*
|
*
|
||||||
@@ -125,6 +137,87 @@ gcal_view_get_manager (GcalView *self)
|
|||||||
return manager;
|
return manager;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* gcal_view_get_weather_service:
|
||||||
|
* @self: The #GcalView instance.
|
||||||
|
* @service: (nullable): The weather service to query.
|
||||||
|
*
|
||||||
|
* Sets the service to query for weather reports.
|
||||||
|
*/
|
||||||
|
GcalWeatherService*
|
||||||
|
gcal_view_get_weather_service (GcalView *self)
|
||||||
|
{
|
||||||
|
GcalWeatherService *service; /* unowned */
|
||||||
|
|
||||||
|
g_return_val_if_fail (GCAL_IS_VIEW (self), NULL);
|
||||||
|
|
||||||
|
g_object_get (self, "weather-service", &service, NULL);
|
||||||
|
g_object_unref (service);
|
||||||
|
|
||||||
|
return service;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* gcal_view_set_weather_service:
|
||||||
|
* @self: The #GcalView instance.
|
||||||
|
*
|
||||||
|
* Returns: (transfer none): The internal weather service object.
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
gcal_view_set_weather_service (GcalView *self,
|
||||||
|
GcalWeatherService *service)
|
||||||
|
{
|
||||||
|
g_return_if_fail (GCAL_IS_VIEW (self));
|
||||||
|
g_return_if_fail (service == NULL || GCAL_IS_WEATHER_SERVICE (service));
|
||||||
|
|
||||||
|
g_object_set (self, "weather-service", &service, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* gcal_view_set_weather_service_impl_helper:
|
||||||
|
* @old_service: The views weather service field.
|
||||||
|
* @new_service: (nullable): The new weather service to use.
|
||||||
|
* @update_func: The function to call after updating weather.
|
||||||
|
* @weather_changed_cb: The views "weather-changed" handler
|
||||||
|
* @data: The data to pass to @update_func and @weather_changed_cb
|
||||||
|
*
|
||||||
|
* Internal implementation helper for
|
||||||
|
* gcal_view_set_weather_service().
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
gcal_view_set_weather_service_impl_helper (GcalWeatherService **old_service,
|
||||||
|
GcalWeatherService *new_service,
|
||||||
|
GcalWeatherUpdateFunc update_func,
|
||||||
|
GCallback weather_changed_cb,
|
||||||
|
GtkWidget *data)
|
||||||
|
{
|
||||||
|
g_return_if_fail (old_service != NULL);
|
||||||
|
g_return_if_fail (*old_service == NULL || GCAL_IS_WEATHER_SERVICE (*old_service));
|
||||||
|
g_return_if_fail (new_service == NULL || GCAL_IS_WEATHER_SERVICE (new_service));
|
||||||
|
g_return_if_fail (update_func != NULL);
|
||||||
|
g_return_if_fail (weather_changed_cb != NULL);
|
||||||
|
g_return_if_fail (GTK_IS_WIDGET (data));
|
||||||
|
|
||||||
|
if (*old_service != new_service)
|
||||||
|
{
|
||||||
|
if (*old_service != NULL)
|
||||||
|
g_signal_handlers_disconnect_by_func (*old_service,
|
||||||
|
(GCallback) weather_changed_cb,
|
||||||
|
data);
|
||||||
|
|
||||||
|
g_set_object (old_service, new_service);
|
||||||
|
|
||||||
|
if (*old_service != NULL)
|
||||||
|
g_signal_connect (*old_service,
|
||||||
|
"weather-changed",
|
||||||
|
(GCallback) weather_changed_cb,
|
||||||
|
data);
|
||||||
|
|
||||||
|
update_func (data);
|
||||||
|
g_object_notify (G_OBJECT (data), "weather-service");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* gcal_view_get_date:
|
* gcal_view_get_date:
|
||||||
* @view: a #GcalView
|
* @view: a #GcalView
|
||||||
|
|||||||
@@ -21,6 +21,7 @@
|
|||||||
#define __GCAL_VIEW_H__
|
#define __GCAL_VIEW_H__
|
||||||
|
|
||||||
#include "gcal-event-widget.h"
|
#include "gcal-event-widget.h"
|
||||||
|
#include "gcal-weather-service.h"
|
||||||
|
|
||||||
G_BEGIN_DECLS
|
G_BEGIN_DECLS
|
||||||
|
|
||||||
@@ -28,6 +29,8 @@ G_BEGIN_DECLS
|
|||||||
|
|
||||||
G_DECLARE_INTERFACE (GcalView, gcal_view, GCAL, VIEW, GtkWidget)
|
G_DECLARE_INTERFACE (GcalView, gcal_view, GCAL, VIEW, GtkWidget)
|
||||||
|
|
||||||
|
typedef void (*GcalWeatherUpdateFunc) (GtkWidget *widget);
|
||||||
|
|
||||||
struct _GcalViewInterface
|
struct _GcalViewInterface
|
||||||
{
|
{
|
||||||
GTypeInterface parent;
|
GTypeInterface parent;
|
||||||
@@ -63,12 +66,24 @@ icaltimetype* gcal_view_get_date (GcalView
|
|||||||
|
|
||||||
GcalManager* gcal_view_get_manager (GcalView *self);
|
GcalManager* gcal_view_get_manager (GcalView *self);
|
||||||
|
|
||||||
|
GcalWeatherService* gcal_view_get_weather_service (GcalView *view);
|
||||||
|
|
||||||
|
void gcal_view_set_weather_service (GcalView *view,
|
||||||
|
GcalWeatherService *service);
|
||||||
|
|
||||||
|
void gcal_view_set_weather_service_impl_helper (GcalWeatherService **old_service,
|
||||||
|
GcalWeatherService *new_service,
|
||||||
|
GcalWeatherUpdateFunc update_func,
|
||||||
|
GCallback weather_changed_cb,
|
||||||
|
GtkWidget *data);
|
||||||
|
|
||||||
void gcal_view_clear_marks (GcalView *view);
|
void gcal_view_clear_marks (GcalView *view);
|
||||||
|
|
||||||
GList* gcal_view_get_children_by_uuid (GcalView *view,
|
GList* gcal_view_get_children_by_uuid (GcalView *view,
|
||||||
GcalRecurrenceModType mod,
|
GcalRecurrenceModType mod,
|
||||||
const gchar *uuid);
|
const gchar *uuid);
|
||||||
|
|
||||||
|
|
||||||
G_END_DECLS
|
G_END_DECLS
|
||||||
|
|
||||||
#endif /* __GCAL_MONTH_VIEW_H__ */
|
#endif /* __GCAL_MONTH_VIEW_H__ */
|
||||||
|
|||||||
@@ -95,7 +95,6 @@ struct _GcalWeekHeader
|
|||||||
gint dnd_cell;
|
gint dnd_cell;
|
||||||
|
|
||||||
GcalWeatherService *weather_service; /* unowned, nullable */
|
GcalWeatherService *weather_service; /* unowned, nullable */
|
||||||
gulong on_weather_changed_hid;
|
|
||||||
/* Array of nullable weather infos for each day, starting with Sunday. */
|
/* Array of nullable weather infos for each day, starting with Sunday. */
|
||||||
WeatherInfoDay weather_infos[7];
|
WeatherInfoDay weather_infos[7];
|
||||||
|
|
||||||
@@ -108,12 +107,16 @@ typedef enum
|
|||||||
DOWN
|
DOWN
|
||||||
} MoveDirection;
|
} MoveDirection;
|
||||||
|
|
||||||
|
enum
|
||||||
|
{
|
||||||
|
PROP_0,
|
||||||
|
PROP_WEATHER_SERVICE,
|
||||||
|
NUM_PROPS
|
||||||
|
};
|
||||||
|
|
||||||
enum
|
enum
|
||||||
{
|
{
|
||||||
EVENT_ACTIVATED,
|
EVENT_ACTIVATED,
|
||||||
/*
|
|
||||||
EVENT_WEATHER_MOUSEOVER,
|
|
||||||
*/
|
|
||||||
LAST_SIGNAL
|
LAST_SIGNAL
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -1091,26 +1094,56 @@ gcal_week_header_finalize (GObject *object)
|
|||||||
for (i = 0; i < 7; i++)
|
for (i = 0; i < 7; i++)
|
||||||
g_list_free (self->events[i]);
|
g_list_free (self->events[i]);
|
||||||
|
|
||||||
|
if (self->weather_service != NULL)
|
||||||
|
{
|
||||||
|
g_signal_handlers_disconnect_by_func (self->weather_service,
|
||||||
|
(GCallback) on_weather_update,
|
||||||
|
self);
|
||||||
|
g_clear_object (&self->weather_service);
|
||||||
|
}
|
||||||
|
|
||||||
for (i = 0; i < G_N_ELEMENTS (self->weather_infos); i++)
|
for (i = 0; i < G_N_ELEMENTS (self->weather_infos); i++)
|
||||||
wid_clear (&self->weather_infos[i]);
|
wid_clear (&self->weather_infos[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
gcal_week_header_get_property (GObject *object,
|
gcal_week_header_get_property (GObject *object,
|
||||||
guint prop_id,
|
guint property_id,
|
||||||
GValue *value,
|
GValue *value,
|
||||||
GParamSpec *pspec)
|
GParamSpec *pspec)
|
||||||
{
|
{
|
||||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
GcalWeekHeader *self = GCAL_WEEK_HEADER (object);
|
||||||
|
|
||||||
|
switch (property_id)
|
||||||
|
{
|
||||||
|
case PROP_WEATHER_SERVICE:
|
||||||
|
g_value_set_boxed (value, self->weather_service);
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
gcal_week_header_set_property (GObject *object,
|
gcal_week_header_set_property (GObject *object,
|
||||||
guint prop_id,
|
guint property_id,
|
||||||
const GValue *value,
|
const GValue *value,
|
||||||
GParamSpec *pspec)
|
GParamSpec *pspec)
|
||||||
{
|
{
|
||||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
GcalWeekHeader *self = GCAL_WEEK_HEADER (object);
|
||||||
|
|
||||||
|
switch (property_id)
|
||||||
|
{
|
||||||
|
case PROP_WEATHER_SERVICE:
|
||||||
|
gcal_week_header_set_weather_service (self, GCAL_WEATHER_SERVICE (g_value_get_object (value)));
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@@ -1591,6 +1624,19 @@ gcal_week_header_class_init (GcalWeekHeaderClass *kclass)
|
|||||||
widget_class->drag_leave = gcal_week_header_drag_leave;
|
widget_class->drag_leave = gcal_week_header_drag_leave;
|
||||||
widget_class->drag_drop = gcal_week_header_drag_drop;
|
widget_class->drag_drop = gcal_week_header_drag_drop;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* GcalWeekHeader::weather-service:
|
||||||
|
*
|
||||||
|
* The #GcalWeatherService of the view.
|
||||||
|
*/
|
||||||
|
g_object_class_install_property (G_OBJECT_CLASS (kclass),
|
||||||
|
PROP_WEATHER_SERVICE,
|
||||||
|
g_param_spec_object ("weather-service",
|
||||||
|
"The weather service",
|
||||||
|
"The weather service of the view",
|
||||||
|
GCAL_TYPE_WEATHER_SERVICE,
|
||||||
|
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
|
||||||
|
|
||||||
signals[EVENT_ACTIVATED] = g_signal_new ("event-activated",
|
signals[EVENT_ACTIVATED] = g_signal_new ("event-activated",
|
||||||
GCAL_TYPE_WEEK_HEADER,
|
GCAL_TYPE_WEEK_HEADER,
|
||||||
G_SIGNAL_RUN_FIRST,
|
G_SIGNAL_RUN_FIRST,
|
||||||
@@ -1599,22 +1645,6 @@ gcal_week_header_class_init (GcalWeekHeaderClass *kclass)
|
|||||||
1,
|
1,
|
||||||
GCAL_TYPE_EVENT_WIDGET);
|
GCAL_TYPE_EVENT_WIDGET);
|
||||||
|
|
||||||
/* *
|
|
||||||
* GCalWeekHeader::mouseover-weather:
|
|
||||||
* @info: Hovered GcalWeatherInfo
|
|
||||||
*
|
|
||||||
* Triggered when cursor points to a weather indicator.
|
|
||||||
*/
|
|
||||||
/*
|
|
||||||
signals[EVENT_WEATHER_MOUSEOVER] = g_signal_new ("weather-mouseover",
|
|
||||||
GCAL_TYPE_WEEK_HEADER,
|
|
||||||
G_SIGNAL_RUN_FIRST,
|
|
||||||
0, NULL, NULL, NULL,
|
|
||||||
G_TYPE_NONE,
|
|
||||||
1,
|
|
||||||
GCAL_TYPE_WEATHER_INFO);
|
|
||||||
*/
|
|
||||||
|
|
||||||
gtk_widget_class_set_template_from_resource (widget_class, "/org/gnome/calendar/week-header.ui");
|
gtk_widget_class_set_template_from_resource (widget_class, "/org/gnome/calendar/week-header.ui");
|
||||||
|
|
||||||
gtk_widget_class_bind_template_child (widget_class, GcalWeekHeader, expand_button);
|
gtk_widget_class_bind_template_child (widget_class, GcalWeekHeader, expand_button);
|
||||||
@@ -1644,7 +1674,6 @@ gcal_week_header_init (GcalWeekHeader *self)
|
|||||||
self->selection_end = -1;
|
self->selection_end = -1;
|
||||||
self->dnd_cell = -1;
|
self->dnd_cell = -1;
|
||||||
self->weather_service = NULL;
|
self->weather_service = NULL;
|
||||||
self->on_weather_changed_hid = 0;
|
|
||||||
memset (self->weather_infos, 0, sizeof(self->weather_infos));
|
memset (self->weather_infos, 0, sizeof(self->weather_infos));
|
||||||
gtk_widget_init_template (GTK_WIDGET (self));
|
gtk_widget_init_template (GTK_WIDGET (self));
|
||||||
|
|
||||||
@@ -1750,26 +1779,11 @@ gcal_week_header_set_weather_service (GcalWeekHeader *self,
|
|||||||
g_return_if_fail (GCAL_IS_WEEK_HEADER (self));
|
g_return_if_fail (GCAL_IS_WEEK_HEADER (self));
|
||||||
g_return_if_fail (service == NULL || GCAL_IS_WEATHER_SERVICE (service));
|
g_return_if_fail (service == NULL || GCAL_IS_WEATHER_SERVICE (service));
|
||||||
|
|
||||||
if (self->weather_service == service)
|
gcal_view_set_weather_service_impl_helper (&self->weather_service,
|
||||||
return;
|
service,
|
||||||
|
(GcalWeatherUpdateFunc) gcal_week_header_update_weather_infos,
|
||||||
if (self->on_weather_changed_hid > 0)
|
(GCallback) on_weather_update,
|
||||||
{
|
GTK_WIDGET (self));
|
||||||
g_signal_handler_disconnect (self->weather_service, self->on_weather_changed_hid);
|
|
||||||
self->on_weather_changed_hid = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
self->weather_service = service;
|
|
||||||
|
|
||||||
if (self->weather_service != NULL)
|
|
||||||
self->on_weather_changed_hid = g_signal_connect_object (
|
|
||||||
self->weather_service,
|
|
||||||
"weather-changed",
|
|
||||||
G_CALLBACK (on_weather_update),
|
|
||||||
self,
|
|
||||||
0);
|
|
||||||
|
|
||||||
gcal_week_header_update_weather_infos (self);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -625,18 +625,7 @@ gcal_week_view_class_init (GcalWeekViewClass *klass)
|
|||||||
|
|
||||||
g_object_class_override_property (object_class, PROP_DATE, "active-date");
|
g_object_class_override_property (object_class, PROP_DATE, "active-date");
|
||||||
g_object_class_override_property (object_class, PROP_MANAGER, "manager");
|
g_object_class_override_property (object_class, PROP_MANAGER, "manager");
|
||||||
|
g_object_class_override_property (object_class, PROP_WEATHER_SERVICE, "weather-service");
|
||||||
/**
|
|
||||||
* GcalWeekView:weather-service:
|
|
||||||
*
|
|
||||||
* Sets the weather service to use.
|
|
||||||
*/
|
|
||||||
g_object_class_install_property
|
|
||||||
(object_class,
|
|
||||||
PROP_WEATHER_SERVICE,
|
|
||||||
g_param_spec_object ("weather-service", "weather-service", "weather-service",
|
|
||||||
GCAL_TYPE_WEATHER_SERVICE,
|
|
||||||
G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE));
|
|
||||||
|
|
||||||
signals[EVENT_ACTIVATED] = g_signal_new ("event-activated",
|
signals[EVENT_ACTIVATED] = g_signal_new ("event-activated",
|
||||||
GCAL_TYPE_WEEK_VIEW,
|
GCAL_TYPE_WEEK_VIEW,
|
||||||
|
|||||||
@@ -66,7 +66,7 @@ struct _GcalYearView
|
|||||||
|
|
||||||
/* manager singleton */
|
/* manager singleton */
|
||||||
GcalManager *manager;
|
GcalManager *manager;
|
||||||
GcalWeatherService *weather_service;
|
GcalWeatherService *weather_service; /* owned, nullable */
|
||||||
|
|
||||||
/* range shown on the sidebar */
|
/* range shown on the sidebar */
|
||||||
icaltimetype *start_selected_date;
|
icaltimetype *start_selected_date;
|
||||||
@@ -1678,7 +1678,7 @@ gcal_year_view_get_property (GObject *object,
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case PROP_WEATHER_SERVICE:
|
case PROP_WEATHER_SERVICE:
|
||||||
g_value_set_object (value, gcal_year_view_get_weather_service (self));
|
g_value_set_object (value, self->weather_service);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case PROP_SHOW_WEEK_NUMBERS:
|
case PROP_SHOW_WEEK_NUMBERS:
|
||||||
@@ -1716,7 +1716,11 @@ gcal_year_view_set_property (GObject *object,
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case PROP_WEATHER_SERVICE:
|
case PROP_WEATHER_SERVICE:
|
||||||
gcal_year_view_set_weather_service (self, g_value_get_object (value));
|
gcal_view_set_weather_service_impl_helper (&self->weather_service,
|
||||||
|
GCAL_WEATHER_SERVICE (g_value_get_object (value)),
|
||||||
|
(GcalWeatherUpdateFunc) update_weather,
|
||||||
|
(GCallback) weather_changed,
|
||||||
|
GTK_WIDGET (self));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case PROP_SHOW_WEEK_NUMBERS:
|
case PROP_SHOW_WEEK_NUMBERS:
|
||||||
@@ -1994,18 +1998,7 @@ gcal_year_view_class_init (GcalYearViewClass *klass)
|
|||||||
|
|
||||||
g_object_class_override_property (object_class, PROP_DATE, "active-date");
|
g_object_class_override_property (object_class, PROP_DATE, "active-date");
|
||||||
g_object_class_override_property (object_class, PROP_MANAGER, "manager");
|
g_object_class_override_property (object_class, PROP_MANAGER, "manager");
|
||||||
|
g_object_class_override_property (object_class, PROP_WEATHER_SERVICE, "weather-service");
|
||||||
/**
|
|
||||||
* GcalWeekView:weather-service:
|
|
||||||
*
|
|
||||||
* Sets the weather service to use.
|
|
||||||
*/
|
|
||||||
g_object_class_install_property
|
|
||||||
(object_class,
|
|
||||||
PROP_WEATHER_SERVICE,
|
|
||||||
g_param_spec_object ("weather-service", "weather-service", "weather-service",
|
|
||||||
GCAL_TYPE_WEATHER_SERVICE,
|
|
||||||
G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE));
|
|
||||||
|
|
||||||
g_object_class_install_property (object_class,
|
g_object_class_install_property (object_class,
|
||||||
PROP_SHOW_WEEK_NUMBERS,
|
PROP_SHOW_WEEK_NUMBERS,
|
||||||
@@ -2171,51 +2164,3 @@ gcal_year_view_set_use_24h_format (GcalYearView *year_view,
|
|||||||
{
|
{
|
||||||
year_view->use_24h_format = use_24h_format;
|
year_view->use_24h_format = use_24h_format;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* gcal_year_view_set_weather_service:
|
|
||||||
* @self: The #GcalYearView instance.
|
|
||||||
* @service: (nullable): The weather service to query.
|
|
||||||
*
|
|
||||||
* Sets the service to query for weather reports.
|
|
||||||
*/
|
|
||||||
void
|
|
||||||
gcal_year_view_set_weather_service (GcalYearView *self,
|
|
||||||
GcalWeatherService *service)
|
|
||||||
{
|
|
||||||
g_return_if_fail (GCAL_IS_YEAR_VIEW (self));
|
|
||||||
g_return_if_fail (service == NULL || GCAL_IS_WEATHER_SERVICE (service));
|
|
||||||
|
|
||||||
if (self->weather_service != service)
|
|
||||||
{
|
|
||||||
if (self->weather_service != NULL)
|
|
||||||
g_signal_handlers_disconnect_by_func (self->weather_service,
|
|
||||||
(GCallback) weather_changed,
|
|
||||||
self);
|
|
||||||
|
|
||||||
g_set_object (&self->weather_service, service);
|
|
||||||
|
|
||||||
if (self->weather_service != NULL)
|
|
||||||
g_signal_connect (self->weather_service,
|
|
||||||
"weather-changed",
|
|
||||||
(GCallback) weather_changed,
|
|
||||||
self);
|
|
||||||
|
|
||||||
update_weather (self);
|
|
||||||
g_object_notify (G_OBJECT (self), "weather-service");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* gcal_year_view_get_weather_service:
|
|
||||||
* @self: The #GcalYearView instance.
|
|
||||||
*
|
|
||||||
* Returns: (transfer none): The internal weather service object.
|
|
||||||
*/
|
|
||||||
GcalWeatherService*
|
|
||||||
gcal_year_view_get_weather_service (GcalYearView *self)
|
|
||||||
{
|
|
||||||
g_return_val_if_fail (GCAL_IS_YEAR_VIEW (self), NULL);
|
|
||||||
|
|
||||||
return self->weather_service;
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -38,12 +38,6 @@ void gcal_year_view_set_use_24h_format (GcalYearView *year_view,
|
|||||||
void gcal_year_view_set_current_date (GcalYearView *year_view,
|
void gcal_year_view_set_current_date (GcalYearView *year_view,
|
||||||
icaltimetype *current_date);
|
icaltimetype *current_date);
|
||||||
|
|
||||||
void gcal_year_view_set_weather_service (GcalYearView *self,
|
|
||||||
GcalWeatherService *service);
|
|
||||||
|
|
||||||
GcalWeatherService* gcal_year_view_get_weather_service (GcalYearView *self);
|
|
||||||
|
|
||||||
|
|
||||||
G_END_DECLS
|
G_END_DECLS
|
||||||
|
|
||||||
#endif /* GCAL_YEAR_VIEW_H */
|
#endif /* GCAL_YEAR_VIEW_H */
|
||||||
|
|||||||
Reference in New Issue
Block a user