Use weather service from GcalContext
All those properties were a waste compared to storing it into the context.
This commit is contained in:
+10
-35
@@ -27,7 +27,6 @@
|
|||||||
#include "gcal-enums.h"
|
#include "gcal-enums.h"
|
||||||
#include "gcal-log.h"
|
#include "gcal-log.h"
|
||||||
#include "gcal-shell-search-provider.h"
|
#include "gcal-shell-search-provider.h"
|
||||||
#include "gcal-weather-service.h"
|
|
||||||
#include "gcal-window.h"
|
#include "gcal-window.h"
|
||||||
|
|
||||||
#include <glib.h>
|
#include <glib.h>
|
||||||
@@ -50,7 +49,6 @@ struct _GcalApplication
|
|||||||
GSettings *desktop_settings;
|
GSettings *desktop_settings;
|
||||||
GcalTimeFormat time_format;
|
GcalTimeFormat time_format;
|
||||||
|
|
||||||
GcalWeatherService *weather_service;
|
|
||||||
GcalShellSearchProvider *search_provider;
|
GcalShellSearchProvider *search_provider;
|
||||||
|
|
||||||
GcalContext *context;
|
GcalContext *context;
|
||||||
@@ -118,7 +116,6 @@ enum
|
|||||||
PROP_CONTEXT,
|
PROP_CONTEXT,
|
||||||
PROP_MANAGER,
|
PROP_MANAGER,
|
||||||
PROP_TIME_FORMAT,
|
PROP_TIME_FORMAT,
|
||||||
PROP_WEATHER_SERVICE,
|
|
||||||
N_PROPS
|
N_PROPS
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -229,7 +226,6 @@ gcal_application_finalize (GObject *object)
|
|||||||
g_clear_object (&self->desktop_settings);
|
g_clear_object (&self->desktop_settings);
|
||||||
g_clear_object (&self->provider);
|
g_clear_object (&self->provider);
|
||||||
g_clear_object (&self->search_provider);
|
g_clear_object (&self->search_provider);
|
||||||
g_clear_object (&self->weather_service);
|
|
||||||
|
|
||||||
G_OBJECT_CLASS (gcal_application_parent_class)->finalize (object);
|
G_OBJECT_CLASS (gcal_application_parent_class)->finalize (object);
|
||||||
|
|
||||||
@@ -258,10 +254,6 @@ gcal_application_get_property (GObject *object,
|
|||||||
g_value_set_enum (value, self->time_format);
|
g_value_set_enum (value, self->time_format);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case PROP_WEATHER_SERVICE:
|
|
||||||
g_value_set_object (value, self->weather_service);
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
default:
|
||||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
|
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
|
||||||
}
|
}
|
||||||
@@ -309,7 +301,6 @@ gcal_application_activate (GApplication *application)
|
|||||||
"application", self,
|
"application", self,
|
||||||
"context", self->context,
|
"context", self->context,
|
||||||
"active-date", self->initial_date,
|
"active-date", self->initial_date,
|
||||||
"weather-service", self->weather_service,
|
|
||||||
"time-format", self->time_format,
|
"time-format", self->time_format,
|
||||||
NULL);
|
NULL);
|
||||||
|
|
||||||
@@ -355,7 +346,6 @@ gcal_application_startup (GApplication *app)
|
|||||||
G_APPLICATION_CLASS (gcal_application_parent_class)->startup (app);
|
G_APPLICATION_CLASS (gcal_application_parent_class)->startup (app);
|
||||||
|
|
||||||
self->colors_provider = gtk_css_provider_new ();
|
self->colors_provider = gtk_css_provider_new ();
|
||||||
self->weather_service = gcal_weather_service_new ();
|
|
||||||
|
|
||||||
/* Time format */
|
/* Time format */
|
||||||
self->desktop_settings = g_settings_new ("org.gnome.desktop.interface");
|
self->desktop_settings = g_settings_new ("org.gnome.desktop.interface");
|
||||||
@@ -530,12 +520,6 @@ gcal_application_class_init (GcalApplicationClass *klass)
|
|||||||
GCAL_TIME_FORMAT_24H,
|
GCAL_TIME_FORMAT_24H,
|
||||||
G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
|
G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
|
||||||
|
|
||||||
properties[PROP_WEATHER_SERVICE] = g_param_spec_object ("weather-service",
|
|
||||||
"The weather service object",
|
|
||||||
"The weather service object",
|
|
||||||
GCAL_TYPE_WEATHER_SERVICE,
|
|
||||||
G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
|
|
||||||
|
|
||||||
g_object_class_install_properties (object_class, N_PROPS, properties);
|
g_object_class_install_properties (object_class, N_PROPS, properties);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -560,9 +544,14 @@ gcal_application_sync (GSimpleAction *sync,
|
|||||||
GVariant *parameter,
|
GVariant *parameter,
|
||||||
gpointer app)
|
gpointer app)
|
||||||
{
|
{
|
||||||
GcalApplication *self = GCAL_APPLICATION (app);
|
GcalWeatherService *weather_service;
|
||||||
|
GcalApplication *self;
|
||||||
|
|
||||||
|
self = GCAL_APPLICATION (app);
|
||||||
|
weather_service = gcal_context_get_weather_service (self->context);
|
||||||
|
|
||||||
gcal_manager_refresh (gcal_context_get_manager (self->context));
|
gcal_manager_refresh (gcal_context_get_manager (self->context));
|
||||||
gcal_weather_service_update (self->weather_service);
|
gcal_weather_service_update (weather_service);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@@ -590,6 +579,7 @@ static gchar*
|
|||||||
build_about_copyright (GcalApplication *self)
|
build_about_copyright (GcalApplication *self)
|
||||||
{
|
{
|
||||||
g_autoptr (GDateTime) dt = NULL;
|
g_autoptr (GDateTime) dt = NULL;
|
||||||
|
GcalWeatherService *weather_service;
|
||||||
const gchar *attribution;
|
const gchar *attribution;
|
||||||
GString *builder;
|
GString *builder;
|
||||||
|
|
||||||
@@ -601,7 +591,8 @@ build_about_copyright (GcalApplication *self)
|
|||||||
_("Copyright \xC2\xA9 2012\xE2\x80\x93%d " "The Calendar authors"),
|
_("Copyright \xC2\xA9 2012\xE2\x80\x93%d " "The Calendar authors"),
|
||||||
g_date_time_get_year (dt));
|
g_date_time_get_year (dt));
|
||||||
|
|
||||||
attribution = gcal_weather_service_get_attribution (self->weather_service);
|
weather_service = gcal_context_get_weather_service (self->context);
|
||||||
|
attribution = gcal_weather_service_get_attribution (weather_service);
|
||||||
if (attribution)
|
if (attribution)
|
||||||
{
|
{
|
||||||
g_string_append_c (builder, '\n');
|
g_string_append_c (builder, '\n');
|
||||||
@@ -716,22 +707,6 @@ gcal_application_get_manager (GcalApplication *self)
|
|||||||
return gcal_context_get_manager (self->context);
|
return gcal_context_get_manager (self->context);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* gcal_application_get_weather_service:
|
|
||||||
* @self: A #GcalApplication
|
|
||||||
*
|
|
||||||
* Provides the #GcalWeatherService used by this application.
|
|
||||||
*
|
|
||||||
* Returns: (transfer none): A #GcalWeatehrService
|
|
||||||
*/
|
|
||||||
GcalWeatherService*
|
|
||||||
gcal_application_get_weather_service (GcalApplication *self)
|
|
||||||
{
|
|
||||||
g_return_val_if_fail (GCAL_IS_APPLICATION (self), NULL);
|
|
||||||
|
|
||||||
return self->weather_service;
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
void
|
||||||
gcal_application_set_uuid (GcalApplication *self,
|
gcal_application_set_uuid (GcalApplication *self,
|
||||||
const gchar *app_uuid)
|
const gchar *app_uuid)
|
||||||
|
|||||||
@@ -22,7 +22,6 @@
|
|||||||
|
|
||||||
#include "gcal-clock.h"
|
#include "gcal-clock.h"
|
||||||
#include "gcal-context.h"
|
#include "gcal-context.h"
|
||||||
#include "gcal-weather-service.h"
|
|
||||||
#include "gcal-manager.h"
|
#include "gcal-manager.h"
|
||||||
|
|
||||||
#include <gtk/gtk.h>
|
#include <gtk/gtk.h>
|
||||||
@@ -39,8 +38,6 @@ GcalContext* gcal_application_get_context (GcalApplicatio
|
|||||||
|
|
||||||
GcalManager* gcal_application_get_manager (GcalApplication *self);
|
GcalManager* gcal_application_get_manager (GcalApplication *self);
|
||||||
|
|
||||||
GcalWeatherService* gcal_application_get_weather_service (GcalApplication *self);
|
|
||||||
|
|
||||||
void gcal_application_set_uuid (GcalApplication *self,
|
void gcal_application_set_uuid (GcalApplication *self,
|
||||||
const gchar *app_uuid);
|
const gchar *app_uuid);
|
||||||
|
|
||||||
|
|||||||
@@ -61,6 +61,8 @@ gcal_context_finalize (GObject *object)
|
|||||||
{
|
{
|
||||||
GcalContext *self = (GcalContext *)object;
|
GcalContext *self = (GcalContext *)object;
|
||||||
|
|
||||||
|
gcal_weather_service_stop (self->weather_service);
|
||||||
|
|
||||||
g_clear_object (&self->clock);
|
g_clear_object (&self->clock);
|
||||||
g_clear_object (&self->goa_client);
|
g_clear_object (&self->goa_client);
|
||||||
g_clear_object (&self->manager);
|
g_clear_object (&self->manager);
|
||||||
|
|||||||
+2
-29
@@ -33,10 +33,8 @@
|
|||||||
#include "gcal-week-view.h"
|
#include "gcal-week-view.h"
|
||||||
#include "gcal-window.h"
|
#include "gcal-window.h"
|
||||||
#include "gcal-year-view.h"
|
#include "gcal-year-view.h"
|
||||||
#include "gcal-weather-service.h"
|
|
||||||
|
|
||||||
#include <glib/gi18n.h>
|
#include <glib/gi18n.h>
|
||||||
#include <libgweather/gweather.h>
|
|
||||||
#include <libecal/libecal.h>
|
#include <libecal/libecal.h>
|
||||||
#include <libical/icaltime.h>
|
#include <libical/icaltime.h>
|
||||||
|
|
||||||
@@ -162,7 +160,6 @@ struct _GcalWindow
|
|||||||
GcalTimeFormat time_format;
|
GcalTimeFormat time_format;
|
||||||
|
|
||||||
/* weather management */
|
/* weather management */
|
||||||
GcalWeatherService *weather_service;
|
|
||||||
GcalWeatherSettings *weather_settings;
|
GcalWeatherSettings *weather_settings;
|
||||||
|
|
||||||
/* temp to keep event_creation */
|
/* temp to keep event_creation */
|
||||||
@@ -187,7 +184,6 @@ enum
|
|||||||
PROP_CONTEXT,
|
PROP_CONTEXT,
|
||||||
PROP_NEW_EVENT_MODE,
|
PROP_NEW_EVENT_MODE,
|
||||||
PROP_TIME_FORMAT,
|
PROP_TIME_FORMAT,
|
||||||
PROP_WEATHER_SERVICE,
|
|
||||||
N_PROPS
|
N_PROPS
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -1231,10 +1227,8 @@ gcal_window_finalize (GObject *object)
|
|||||||
g_clear_object (&window->views_switcher);
|
g_clear_object (&window->views_switcher);
|
||||||
|
|
||||||
g_clear_pointer (&window->active_date, g_free);
|
g_clear_pointer (&window->active_date, g_free);
|
||||||
G_OBJECT_CLASS (gcal_window_parent_class)->finalize (object);
|
|
||||||
|
|
||||||
gcal_weather_service_stop (window->weather_service);
|
G_OBJECT_CLASS (gcal_window_parent_class)->finalize (object);
|
||||||
g_clear_object (&window->weather_service);
|
|
||||||
|
|
||||||
GCAL_EXIT;
|
GCAL_EXIT;
|
||||||
}
|
}
|
||||||
@@ -1267,10 +1261,6 @@ gcal_window_constructed (GObject *object)
|
|||||||
g_object_bind_property (self, "time-format", self->edit_dialog, "time-format", G_BINDING_DEFAULT | G_BINDING_SYNC_CREATE);
|
g_object_bind_property (self, "time-format", self->edit_dialog, "time-format", G_BINDING_DEFAULT | G_BINDING_SYNC_CREATE);
|
||||||
g_object_bind_property (self, "time-format", self->search_popover, "time-format", G_BINDING_DEFAULT | G_BINDING_SYNC_CREATE);
|
g_object_bind_property (self, "time-format", self->search_popover, "time-format", G_BINDING_DEFAULT | G_BINDING_SYNC_CREATE);
|
||||||
g_object_bind_property (self, "time-format", self->week_view, "time-format", G_BINDING_DEFAULT | G_BINDING_SYNC_CREATE);
|
g_object_bind_property (self, "time-format", self->week_view, "time-format", G_BINDING_DEFAULT | G_BINDING_SYNC_CREATE);
|
||||||
g_object_bind_property (self, "weather-service", self->weather_settings, "weather-service", G_BINDING_DEFAULT | G_BINDING_SYNC_CREATE);
|
|
||||||
g_object_bind_property (self, "weather-service", self->month_view, "weather-service", G_BINDING_DEFAULT | G_BINDING_SYNC_CREATE);
|
|
||||||
g_object_bind_property (self, "weather-service", self->week_view, "weather-service", G_BINDING_DEFAULT | G_BINDING_SYNC_CREATE);
|
|
||||||
g_object_bind_property (self, "weather-service", self->year_view, "weather-service", G_BINDING_DEFAULT | G_BINDING_SYNC_CREATE);
|
|
||||||
|
|
||||||
GCAL_EXIT;
|
GCAL_EXIT;
|
||||||
}
|
}
|
||||||
@@ -1343,11 +1333,6 @@ gcal_window_set_property (GObject *object,
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case PROP_WEATHER_SERVICE:
|
|
||||||
if (g_set_object (&self->weather_service, g_value_get_object (value)))
|
|
||||||
g_object_notify_by_pspec (object, properties[PROP_WEATHER_SERVICE]);
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
default:
|
||||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
|
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
|
||||||
}
|
}
|
||||||
@@ -1385,10 +1370,6 @@ gcal_window_get_property (GObject *object,
|
|||||||
g_value_set_enum (value, self->time_format);
|
g_value_set_enum (value, self->time_format);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case PROP_WEATHER_SERVICE:
|
|
||||||
g_value_set_object (value, self->weather_service);
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
default:
|
||||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
|
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
|
||||||
}
|
}
|
||||||
@@ -1428,7 +1409,6 @@ gcal_window_class_init (GcalWindowClass *klass)
|
|||||||
g_type_ensure (GCAL_TYPE_QUICK_ADD_POPOVER);
|
g_type_ensure (GCAL_TYPE_QUICK_ADD_POPOVER);
|
||||||
g_type_ensure (GCAL_TYPE_SEARCH_POPOVER);
|
g_type_ensure (GCAL_TYPE_SEARCH_POPOVER);
|
||||||
g_type_ensure (GCAL_TYPE_SOURCE_DIALOG);
|
g_type_ensure (GCAL_TYPE_SOURCE_DIALOG);
|
||||||
g_type_ensure (GCAL_TYPE_WEATHER_SERVICE);
|
|
||||||
g_type_ensure (GCAL_TYPE_WEATHER_SETTINGS);
|
g_type_ensure (GCAL_TYPE_WEATHER_SETTINGS);
|
||||||
g_type_ensure (GCAL_TYPE_WEEK_VIEW);
|
g_type_ensure (GCAL_TYPE_WEEK_VIEW);
|
||||||
g_type_ensure (GCAL_TYPE_YEAR_VIEW);
|
g_type_ensure (GCAL_TYPE_YEAR_VIEW);
|
||||||
@@ -1475,12 +1455,6 @@ gcal_window_class_init (GcalWindowClass *klass)
|
|||||||
GCAL_TIME_FORMAT_24H,
|
GCAL_TIME_FORMAT_24H,
|
||||||
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
|
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
|
||||||
|
|
||||||
properties[PROP_WEATHER_SERVICE] = g_param_spec_object ("weather-service",
|
|
||||||
"The weather service object",
|
|
||||||
"The weather service object",
|
|
||||||
GCAL_TYPE_WEATHER_SERVICE,
|
|
||||||
G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
|
|
||||||
|
|
||||||
g_object_class_install_properties (object_class, N_PROPS, properties);
|
g_object_class_install_properties (object_class, N_PROPS, properties);
|
||||||
|
|
||||||
gtk_widget_class_set_template_from_resource (widget_class, "/org/gnome/calendar/window.ui");
|
gtk_widget_class_set_template_from_resource (widget_class, "/org/gnome/calendar/window.ui");
|
||||||
@@ -1556,8 +1530,6 @@ gcal_window_init (GcalWindow *self)
|
|||||||
G_N_ELEMENTS (actions),
|
G_N_ELEMENTS (actions),
|
||||||
self);
|
self);
|
||||||
|
|
||||||
app = g_application_get_default ();
|
|
||||||
self->weather_service = gcal_application_get_weather_service (GCAL_APPLICATION (app));
|
|
||||||
self->time_format = GCAL_TIME_FORMAT_24H;
|
self->time_format = GCAL_TIME_FORMAT_24H;
|
||||||
|
|
||||||
gtk_widget_init_template (GTK_WIDGET (self));
|
gtk_widget_init_template (GTK_WIDGET (self));
|
||||||
@@ -1576,6 +1548,7 @@ gcal_window_init (GcalWindow *self)
|
|||||||
self->rtl = gtk_widget_get_direction (GTK_WIDGET (self)) == GTK_TEXT_DIR_RTL;
|
self->rtl = gtk_widget_get_direction (GTK_WIDGET (self)) == GTK_TEXT_DIR_RTL;
|
||||||
|
|
||||||
/* setup accels */
|
/* setup accels */
|
||||||
|
app = g_application_get_default ();
|
||||||
gcal_window_add_accelerator (app, "win.change-view(-1)", "<Ctrl>Page_Down");
|
gcal_window_add_accelerator (app, "win.change-view(-1)", "<Ctrl>Page_Down");
|
||||||
gcal_window_add_accelerator (app, "win.change-view(-2)", "<Ctrl>Page_Up");
|
gcal_window_add_accelerator (app, "win.change-view(-2)", "<Ctrl>Page_Up");
|
||||||
gcal_window_add_accelerator (app, "win.change-view(1)", "<Ctrl>1")
|
gcal_window_add_accelerator (app, "win.change-view(1)", "<Ctrl>1")
|
||||||
|
|||||||
+10
-22
@@ -122,8 +122,6 @@ struct _GcalMonthView
|
|||||||
icaltimetype *date;
|
icaltimetype *date;
|
||||||
GcalContext *context;
|
GcalContext *context;
|
||||||
|
|
||||||
GcalWeatherService *weather_service;
|
|
||||||
|
|
||||||
gboolean pending_event_allocation;
|
gboolean pending_event_allocation;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -158,7 +156,6 @@ enum
|
|||||||
PROP_0,
|
PROP_0,
|
||||||
PROP_DATE,
|
PROP_DATE,
|
||||||
PROP_CONTEXT,
|
PROP_CONTEXT,
|
||||||
PROP_WEATHER_SERVICE,
|
|
||||||
N_PROPS
|
N_PROPS
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -872,16 +869,15 @@ static GcalWeatherInfo*
|
|||||||
get_weather_info_for_cell (GcalMonthView *self,
|
get_weather_info_for_cell (GcalMonthView *self,
|
||||||
guint cell)
|
guint cell)
|
||||||
{
|
{
|
||||||
|
GcalWeatherService *weather_service;
|
||||||
GcalMonthCell *first_cell;
|
GcalMonthCell *first_cell;
|
||||||
GPtrArray *weather_infos;
|
GPtrArray *weather_infos;
|
||||||
GDateTime *first_dt;
|
GDateTime *first_dt;
|
||||||
GDate first;
|
GDate first;
|
||||||
guint i;
|
guint i;
|
||||||
|
|
||||||
if (!self->weather_service)
|
weather_service = gcal_context_get_weather_service (self->context);
|
||||||
return NULL;
|
weather_infos = gcal_weather_service_get_weather_infos (weather_service);
|
||||||
|
|
||||||
weather_infos = gcal_weather_service_get_weather_infos (self->weather_service);
|
|
||||||
|
|
||||||
first_cell = GCAL_MONTH_CELL (self->month_cell[0][0]);
|
first_cell = GCAL_MONTH_CELL (self->month_cell[0][0]);
|
||||||
first_dt = gcal_month_cell_get_date (first_cell);
|
first_dt = gcal_month_cell_get_date (first_cell);
|
||||||
@@ -2100,15 +2096,14 @@ gcal_month_view_set_property (GObject *object,
|
|||||||
self,
|
self,
|
||||||
G_CONNECT_SWAPPED);
|
G_CONNECT_SWAPPED);
|
||||||
|
|
||||||
g_object_notify (object, "context");
|
g_signal_connect_object (gcal_context_get_weather_service (self->context),
|
||||||
break;
|
"weather-changed",
|
||||||
|
G_CALLBACK (on_weather_service_weather_changed_cb),
|
||||||
|
self,
|
||||||
|
0);
|
||||||
|
update_weather (self, TRUE);
|
||||||
|
|
||||||
case PROP_WEATHER_SERVICE:
|
g_object_notify (object, "context");
|
||||||
gcal_view_set_weather_service_impl_helper (&self->weather_service,
|
|
||||||
g_value_get_object (value),
|
|
||||||
(GcalWeatherUpdateFunc) update_weather,
|
|
||||||
G_CALLBACK (on_weather_service_weather_changed_cb),
|
|
||||||
GTK_WIDGET (self));
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
@@ -2135,10 +2130,6 @@ gcal_month_view_get_property (GObject *object,
|
|||||||
g_value_set_object (value, self->context);
|
g_value_set_object (value, self->context);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case PROP_WEATHER_SERVICE:
|
|
||||||
g_value_set_boxed (value, self->weather_service);
|
|
||||||
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;
|
||||||
@@ -2157,7 +2148,6 @@ gcal_month_view_finalize (GObject *object)
|
|||||||
g_clear_pointer (&self->multi_cell_children, g_list_free);
|
g_clear_pointer (&self->multi_cell_children, g_list_free);
|
||||||
|
|
||||||
g_clear_object (&self->context);
|
g_clear_object (&self->context);
|
||||||
g_clear_object (&self->weather_service);
|
|
||||||
|
|
||||||
if (self->update_grid_id > 0)
|
if (self->update_grid_id > 0)
|
||||||
{
|
{
|
||||||
@@ -2201,7 +2191,6 @@ 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_CONTEXT, "context");
|
g_object_class_override_property (object_class, PROP_CONTEXT, "context");
|
||||||
g_object_class_override_property (object_class, PROP_WEATHER_SERVICE, "weather-service");
|
|
||||||
|
|
||||||
gtk_widget_class_set_template_from_resource (widget_class, "/org/gnome/calendar/month-view.ui");
|
gtk_widget_class_set_template_from_resource (widget_class, "/org/gnome/calendar/month-view.ui");
|
||||||
|
|
||||||
@@ -2229,7 +2218,6 @@ gcal_month_view_init (GcalMonthView *self)
|
|||||||
|
|
||||||
gtk_widget_set_has_window (GTK_WIDGET (self), FALSE);
|
gtk_widget_set_has_window (GTK_WIDGET (self), FALSE);
|
||||||
|
|
||||||
self->weather_service = NULL;
|
|
||||||
self->children = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, (GDestroyNotify) g_list_free);
|
self->children = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, (GDestroyNotify) g_list_free);
|
||||||
self->single_cell_children = g_hash_table_new_full (g_direct_hash, g_direct_equal, NULL, (GDestroyNotify) g_list_free);
|
self->single_cell_children = g_hash_table_new_full (g_direct_hash, g_direct_equal, NULL, (GDestroyNotify) g_list_free);
|
||||||
self->overflow_cells = g_hash_table_new_full (g_direct_hash, g_direct_equal, NULL, (GDestroyNotify) g_list_free);
|
self->overflow_cells = g_hash_table_new_full (g_direct_hash, g_direct_equal, NULL, (GDestroyNotify) g_list_free);
|
||||||
|
|||||||
@@ -55,18 +55,6 @@ gcal_view_default_init (GcalViewInterface *iface)
|
|||||||
GCAL_TYPE_CONTEXT,
|
GCAL_TYPE_CONTEXT,
|
||||||
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:
|
||||||
*
|
*
|
||||||
@@ -149,82 +137,6 @@ gcal_view_get_context (GcalView *self)
|
|||||||
return context;
|
return context;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 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)
|
|
||||||
g_signal_handlers_disconnect_by_func (*old_service, weather_changed_cb, data);
|
|
||||||
|
|
||||||
g_set_object (old_service, new_service);
|
|
||||||
|
|
||||||
if (*old_service)
|
|
||||||
g_signal_connect_object (*old_service, "weather-changed", weather_changed_cb, data, 0);
|
|
||||||
|
|
||||||
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,7 +21,6 @@
|
|||||||
|
|
||||||
#include "gcal-context.h"
|
#include "gcal-context.h"
|
||||||
#include "gcal-event-widget.h"
|
#include "gcal-event-widget.h"
|
||||||
#include "gcal-weather-service.h"
|
|
||||||
|
|
||||||
G_BEGIN_DECLS
|
G_BEGIN_DECLS
|
||||||
|
|
||||||
@@ -29,8 +28,6 @@ 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;
|
||||||
@@ -66,17 +63,6 @@ icaltimetype* gcal_view_get_date (GcalView
|
|||||||
|
|
||||||
GcalContext* gcal_view_get_context (GcalView *self);
|
GcalContext* gcal_view_get_context (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,
|
||||||
|
|||||||
+84
-212
@@ -108,13 +108,6 @@ typedef enum
|
|||||||
DOWN
|
DOWN
|
||||||
} MoveDirection;
|
} MoveDirection;
|
||||||
|
|
||||||
enum
|
|
||||||
{
|
|
||||||
PROP_0,
|
|
||||||
PROP_WEATHER_SERVICE,
|
|
||||||
NUM_PROPS
|
|
||||||
};
|
|
||||||
|
|
||||||
enum
|
enum
|
||||||
{
|
{
|
||||||
EVENT_ACTIVATED,
|
EVENT_ACTIVATED,
|
||||||
@@ -145,6 +138,77 @@ wid_clear (WeatherInfoDay *wid)
|
|||||||
g_clear_object (&wid->icon_buf);
|
g_clear_object (&wid->icon_buf);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static gint
|
||||||
|
add_weather_infos (GcalWeekHeader *self,
|
||||||
|
GPtrArray *weather_infos)
|
||||||
|
{
|
||||||
|
g_autoptr (GDateTime) week_start_dt = NULL;
|
||||||
|
GDate week_start;
|
||||||
|
gint consumed = 0;
|
||||||
|
guint i;
|
||||||
|
|
||||||
|
if (!self->active_date)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
week_start_dt = get_start_of_week (self->active_date);
|
||||||
|
g_date_set_dmy (&week_start,
|
||||||
|
g_date_time_get_day_of_month (week_start_dt),
|
||||||
|
g_date_time_get_month (week_start_dt),
|
||||||
|
g_date_time_get_year (week_start_dt));
|
||||||
|
|
||||||
|
for (i = 0; weather_infos && i < weather_infos->len; i++)
|
||||||
|
{
|
||||||
|
GcalWeatherInfo *gwi; /* unowned */
|
||||||
|
GDate gwi_date;
|
||||||
|
gint day_diff;
|
||||||
|
|
||||||
|
gwi = g_ptr_array_index (weather_infos, i);
|
||||||
|
|
||||||
|
gcal_weather_info_get_date (gwi, &gwi_date);
|
||||||
|
|
||||||
|
day_diff = g_date_days_between (&week_start, &gwi_date);
|
||||||
|
if (day_diff >= 0 && day_diff < G_N_ELEMENTS (self->weather_infos))
|
||||||
|
{
|
||||||
|
wid_clear (&self->weather_infos[day_diff]);
|
||||||
|
self->weather_infos[day_diff].winfo = g_object_ref (gwi);
|
||||||
|
consumed++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (consumed > 0)
|
||||||
|
gtk_widget_queue_draw (GTK_WIDGET (self));
|
||||||
|
|
||||||
|
return consumed;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
clear_weather_infos (GcalWeekHeader *self)
|
||||||
|
{
|
||||||
|
g_return_if_fail (GCAL_IS_WEEK_HEADER (self));
|
||||||
|
|
||||||
|
for (gint i = 0; i < G_N_ELEMENTS (self->weather_infos); i++)
|
||||||
|
wid_clear (&self->weather_infos[i]);
|
||||||
|
|
||||||
|
gtk_widget_queue_draw (GTK_WIDGET (self));
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
update_weather_infos (GcalWeekHeader *self)
|
||||||
|
{
|
||||||
|
GPtrArray* weather_infos;
|
||||||
|
|
||||||
|
g_return_if_fail (GCAL_IS_WEEK_HEADER (self));
|
||||||
|
|
||||||
|
clear_weather_infos (self);
|
||||||
|
|
||||||
|
if (!self->weather_service)
|
||||||
|
return;
|
||||||
|
|
||||||
|
weather_infos = gcal_weather_service_get_weather_infos (self->weather_service);
|
||||||
|
add_weather_infos (self, weather_infos);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Event activation methods */
|
/* Event activation methods */
|
||||||
static void
|
static void
|
||||||
on_event_widget_activated (GcalEventWidget *widget,
|
on_event_widget_activated (GcalEventWidget *widget,
|
||||||
@@ -287,11 +351,11 @@ static void
|
|||||||
on_weather_update (GcalWeatherService *weather_service,
|
on_weather_update (GcalWeatherService *weather_service,
|
||||||
GcalWeekHeader *self)
|
GcalWeekHeader *self)
|
||||||
{
|
{
|
||||||
g_return_if_fail (GCAL_IS_WEATHER_SERVICE (weather_service));
|
g_assert (GCAL_IS_WEATHER_SERVICE (weather_service));
|
||||||
g_return_if_fail (GCAL_IS_WEEK_HEADER (self));
|
g_assert (GCAL_IS_WEEK_HEADER (self));
|
||||||
g_return_if_fail (self->weather_service == weather_service);
|
g_assert (self->weather_service == weather_service);
|
||||||
|
|
||||||
gcal_week_header_update_weather_infos (self);
|
update_weather_infos (self);
|
||||||
}
|
}
|
||||||
|
|
||||||
static GcalEvent*
|
static GcalEvent*
|
||||||
@@ -1104,46 +1168,6 @@ gcal_week_header_finalize (GObject *object)
|
|||||||
wid_clear (&self->weather_infos[i]);
|
wid_clear (&self->weather_infos[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
|
||||||
gcal_week_header_get_property (GObject *object,
|
|
||||||
guint property_id,
|
|
||||||
GValue *value,
|
|
||||||
GParamSpec *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
|
|
||||||
gcal_week_header_set_property (GObject *object,
|
|
||||||
guint property_id,
|
|
||||||
const GValue *value,
|
|
||||||
GParamSpec *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
|
||||||
gcal_week_header_size_allocate (GtkWidget *widget,
|
gcal_week_header_size_allocate (GtkWidget *widget,
|
||||||
GtkAllocation *alloc)
|
GtkAllocation *alloc)
|
||||||
@@ -1615,8 +1639,6 @@ gcal_week_header_class_init (GcalWeekHeaderClass *kclass)
|
|||||||
GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (kclass);
|
GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (kclass);
|
||||||
|
|
||||||
object_class->finalize = gcal_week_header_finalize;
|
object_class->finalize = gcal_week_header_finalize;
|
||||||
object_class->get_property = gcal_week_header_get_property;
|
|
||||||
object_class->set_property = gcal_week_header_set_property;
|
|
||||||
|
|
||||||
widget_class->draw = gcal_week_header_draw;
|
widget_class->draw = gcal_week_header_draw;
|
||||||
widget_class->size_allocate = gcal_week_header_size_allocate;
|
widget_class->size_allocate = gcal_week_header_size_allocate;
|
||||||
@@ -1624,19 +1646,6 @@ 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,
|
||||||
@@ -1690,127 +1699,6 @@ G_GNUC_END_IGNORE_DEPRECATIONS
|
|||||||
GDK_ACTION_MOVE);
|
GDK_ACTION_MOVE);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Private API */
|
|
||||||
|
|
||||||
/* gcal_week_header_add_weather_infos:
|
|
||||||
* @self: (not nullable): The #GcalWeekHeader instance.
|
|
||||||
* @winfo: List of #GcalWeatherInfos to add to @self.
|
|
||||||
*
|
|
||||||
* Adds weather information to this header. @self
|
|
||||||
* only adds weather information that can be
|
|
||||||
* displayed with current settings.
|
|
||||||
*
|
|
||||||
* Return: Number of consumed weather information
|
|
||||||
* objects.
|
|
||||||
*/
|
|
||||||
static gint
|
|
||||||
gcal_week_header_add_weather_infos (GcalWeekHeader *self,
|
|
||||||
GPtrArray *weather_infos)
|
|
||||||
{
|
|
||||||
g_autoptr (GDateTime) week_start_dt = NULL;
|
|
||||||
GDate week_start;
|
|
||||||
gint consumed = 0;
|
|
||||||
guint i;
|
|
||||||
|
|
||||||
if (!self->active_date)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
week_start_dt = get_start_of_week (self->active_date);
|
|
||||||
g_date_set_dmy (&week_start,
|
|
||||||
g_date_time_get_day_of_month (week_start_dt),
|
|
||||||
g_date_time_get_month (week_start_dt),
|
|
||||||
g_date_time_get_year (week_start_dt));
|
|
||||||
|
|
||||||
for (i = 0; weather_infos && i < weather_infos->len; i++)
|
|
||||||
{
|
|
||||||
GcalWeatherInfo *gwi; /* unowned */
|
|
||||||
GDate gwi_date;
|
|
||||||
gint day_diff;
|
|
||||||
|
|
||||||
gwi = g_ptr_array_index (weather_infos, i);
|
|
||||||
|
|
||||||
gcal_weather_info_get_date (gwi, &gwi_date);
|
|
||||||
|
|
||||||
day_diff = g_date_days_between (&week_start, &gwi_date);
|
|
||||||
if (day_diff >= 0 && day_diff < G_N_ELEMENTS (self->weather_infos))
|
|
||||||
{
|
|
||||||
wid_clear (&self->weather_infos[day_diff]);
|
|
||||||
self->weather_infos[day_diff].winfo = g_object_ref (gwi);
|
|
||||||
consumed++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (consumed > 0)
|
|
||||||
gtk_widget_queue_draw (GTK_WIDGET (self));
|
|
||||||
|
|
||||||
return consumed;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* gcal_week_header_clear_weather_infos:
|
|
||||||
* @self: The #GcalWeekHeader instance.
|
|
||||||
*
|
|
||||||
* Removes all registered weather information objects from
|
|
||||||
* this widget.
|
|
||||||
*/
|
|
||||||
static void
|
|
||||||
gcal_week_header_clear_weather_infos (GcalWeekHeader *self)
|
|
||||||
{
|
|
||||||
g_return_if_fail (GCAL_IS_WEEK_HEADER (self));
|
|
||||||
|
|
||||||
for (gint i = 0; i < G_N_ELEMENTS (self->weather_infos); i++)
|
|
||||||
wid_clear (&self->weather_infos[i]);
|
|
||||||
|
|
||||||
gtk_widget_queue_draw (GTK_WIDGET (self));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* Public API */
|
|
||||||
|
|
||||||
/**
|
|
||||||
* gcal_week_header_set_weather_service:
|
|
||||||
* @self: The #GcalWeekHeader instance.
|
|
||||||
* @service: (nullable): The weather service to query.
|
|
||||||
*
|
|
||||||
* Note that #GcalWeekHeader does not hold a strong reference
|
|
||||||
* to its weather service.
|
|
||||||
*/
|
|
||||||
void
|
|
||||||
gcal_week_header_set_weather_service (GcalWeekHeader *self,
|
|
||||||
GcalWeatherService *service)
|
|
||||||
{
|
|
||||||
g_return_if_fail (GCAL_IS_WEEK_HEADER (self));
|
|
||||||
g_return_if_fail (service == NULL || GCAL_IS_WEATHER_SERVICE (service));
|
|
||||||
|
|
||||||
gcal_view_set_weather_service_impl_helper (&self->weather_service,
|
|
||||||
service,
|
|
||||||
(GcalWeatherUpdateFunc) gcal_week_header_update_weather_infos,
|
|
||||||
(GCallback) on_weather_update,
|
|
||||||
GTK_WIDGET (self));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* gcal_week_header_update_weather_infos:
|
|
||||||
* @self: The #GcalWeekHeader instance.
|
|
||||||
*
|
|
||||||
* Retrieves latest weather information from registered
|
|
||||||
* weather service and displays it.
|
|
||||||
*/
|
|
||||||
void
|
|
||||||
gcal_week_header_update_weather_infos (GcalWeekHeader *self)
|
|
||||||
{
|
|
||||||
GPtrArray* weather_infos;
|
|
||||||
|
|
||||||
g_return_if_fail (GCAL_IS_WEEK_HEADER (self));
|
|
||||||
|
|
||||||
gcal_week_header_clear_weather_infos (self);
|
|
||||||
|
|
||||||
if (!self->weather_service)
|
|
||||||
return;
|
|
||||||
|
|
||||||
weather_infos = gcal_weather_service_get_weather_infos (self->weather_service);
|
|
||||||
gcal_week_header_add_weather_infos (self, weather_infos);
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
void
|
||||||
gcal_week_header_set_context (GcalWeekHeader *self,
|
gcal_week_header_set_context (GcalWeekHeader *self,
|
||||||
GcalContext *context)
|
GcalContext *context)
|
||||||
@@ -1824,6 +1712,14 @@ gcal_week_header_set_context (GcalWeekHeader *self,
|
|||||||
G_CALLBACK (gtk_widget_queue_draw),
|
G_CALLBACK (gtk_widget_queue_draw),
|
||||||
self,
|
self,
|
||||||
G_CONNECT_SWAPPED);
|
G_CONNECT_SWAPPED);
|
||||||
|
|
||||||
|
g_signal_connect_object (gcal_context_get_weather_service (self->context),
|
||||||
|
"weather-changed",
|
||||||
|
G_CALLBACK (on_weather_update),
|
||||||
|
self,
|
||||||
|
0);
|
||||||
|
|
||||||
|
update_weather_infos (self);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -2034,32 +1930,8 @@ gcal_week_header_set_date (GcalWeekHeader *self,
|
|||||||
if (old_date)
|
if (old_date)
|
||||||
update_unchanged_events (self, self->active_date);
|
update_unchanged_events (self, self->active_date);
|
||||||
|
|
||||||
gcal_week_header_update_weather_infos (self);
|
update_weather_infos (self);
|
||||||
|
|
||||||
g_clear_pointer (&old_date, g_free);
|
g_clear_pointer (&old_date, g_free);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* gcal_week_header_get_weather_infos:
|
|
||||||
* @self: The #GcalWeekHeader instance.
|
|
||||||
*
|
|
||||||
* Returns a list of shown weather informations.
|
|
||||||
*
|
|
||||||
* @Returns: (transfer container):
|
|
||||||
* A GSList. The callee is responsible for freeing it.
|
|
||||||
* Elements are owned by the widget. Do not modify.
|
|
||||||
*/
|
|
||||||
GSList*
|
|
||||||
gcal_week_header_get_shown_weather_infos (GcalWeekHeader *self)
|
|
||||||
{
|
|
||||||
g_return_val_if_fail (GCAL_IS_WEEK_HEADER (self), NULL);
|
|
||||||
GSList* lst = NULL; /* owned[unowned] */
|
|
||||||
|
|
||||||
for (int i = 0; i < G_N_ELEMENTS (self->weather_infos); i++)
|
|
||||||
{
|
|
||||||
if (self->weather_infos[i].winfo != NULL)
|
|
||||||
lst = g_slist_prepend (lst, self->weather_infos[i].winfo);
|
|
||||||
}
|
|
||||||
|
|
||||||
return lst;
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -52,13 +52,6 @@ void gcal_week_header_clear_marks (GcalWeekHeader
|
|||||||
void gcal_week_header_set_date (GcalWeekHeader *self,
|
void gcal_week_header_set_date (GcalWeekHeader *self,
|
||||||
icaltimetype *date);
|
icaltimetype *date);
|
||||||
|
|
||||||
void gcal_week_header_set_weather_service (GcalWeekHeader *self,
|
|
||||||
GcalWeatherService *service);
|
|
||||||
|
|
||||||
void gcal_week_header_update_weather_infos (GcalWeekHeader *self);
|
|
||||||
|
|
||||||
GSList* gcal_week_header_get_shown_weather_infos (GcalWeekHeader *self);
|
|
||||||
|
|
||||||
G_END_DECLS
|
G_END_DECLS
|
||||||
|
|
||||||
#endif /* GCAL_WEEK_HEADER_H */
|
#endif /* GCAL_WEEK_HEADER_H */
|
||||||
|
|||||||
@@ -26,7 +26,6 @@
|
|||||||
#include "gcal-week-header.h"
|
#include "gcal-week-header.h"
|
||||||
#include "gcal-week-grid.h"
|
#include "gcal-week-grid.h"
|
||||||
#include "gcal-week-view.h"
|
#include "gcal-week-view.h"
|
||||||
#include "gcal-weather-service.h"
|
|
||||||
|
|
||||||
#include <glib/gi18n.h>
|
#include <glib/gi18n.h>
|
||||||
|
|
||||||
@@ -54,7 +53,6 @@ struct _GcalWeekView
|
|||||||
/* property */
|
/* property */
|
||||||
icaltimetype *date;
|
icaltimetype *date;
|
||||||
GcalContext *context;
|
GcalContext *context;
|
||||||
GcalWeatherService *weather_service; /* owned */
|
|
||||||
|
|
||||||
guint scroll_grid_timeout_id;
|
guint scroll_grid_timeout_id;
|
||||||
|
|
||||||
@@ -73,7 +71,6 @@ enum
|
|||||||
PROP_DATE,
|
PROP_DATE,
|
||||||
PROP_CONTEXT,
|
PROP_CONTEXT,
|
||||||
PROP_TIME_FORMAT,
|
PROP_TIME_FORMAT,
|
||||||
PROP_WEATHER_SERVICE,
|
|
||||||
NUM_PROPS
|
NUM_PROPS
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -507,7 +504,6 @@ gcal_week_view_finalize (GObject *object)
|
|||||||
g_clear_pointer (&self->date, g_free);
|
g_clear_pointer (&self->date, g_free);
|
||||||
|
|
||||||
g_clear_object (&self->context);
|
g_clear_object (&self->context);
|
||||||
g_clear_object (&self->weather_service);
|
|
||||||
|
|
||||||
/* Chain up to parent's finalize() method. */
|
/* Chain up to parent's finalize() method. */
|
||||||
G_OBJECT_CLASS (gcal_week_view_parent_class)->finalize (object);
|
G_OBJECT_CLASS (gcal_week_view_parent_class)->finalize (object);
|
||||||
@@ -540,11 +536,6 @@ gcal_week_view_set_property (GObject *object,
|
|||||||
gtk_widget_queue_draw (self->hours_bar);
|
gtk_widget_queue_draw (self->hours_bar);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case PROP_WEATHER_SERVICE:
|
|
||||||
if (g_set_object (&self->weather_service, g_value_get_object (value)))
|
|
||||||
g_object_notify (object, "weather-service");
|
|
||||||
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;
|
||||||
@@ -576,10 +567,6 @@ gcal_week_view_get_property (GObject *object,
|
|||||||
g_value_set_enum (value, self->time_format);
|
g_value_set_enum (value, self->time_format);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case PROP_WEATHER_SERVICE:
|
|
||||||
g_value_set_object (value, self->weather_service);
|
|
||||||
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;
|
||||||
@@ -601,7 +588,6 @@ 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_CONTEXT, "context");
|
g_object_class_override_property (object_class, PROP_CONTEXT, "context");
|
||||||
g_object_class_override_property (object_class, PROP_WEATHER_SERVICE, "weather-service");
|
|
||||||
|
|
||||||
g_object_class_install_property (object_class,
|
g_object_class_install_property (object_class,
|
||||||
PROP_TIME_FORMAT,
|
PROP_TIME_FORMAT,
|
||||||
@@ -631,9 +617,5 @@ gcal_week_view_init (GcalWeekView *self)
|
|||||||
gtk_widget_init_template (GTK_WIDGET (self));
|
gtk_widget_init_template (GTK_WIDGET (self));
|
||||||
|
|
||||||
update_hours_sidebar_size (self);
|
update_hours_sidebar_size (self);
|
||||||
|
|
||||||
self->weather_service = NULL;
|
|
||||||
|
|
||||||
g_object_bind_property (self, "weather-service", self->header, "weather-service", G_BINDING_DEFAULT);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+12
-20
@@ -68,7 +68,6 @@ struct _GcalYearView
|
|||||||
|
|
||||||
/* manager singleton */
|
/* manager singleton */
|
||||||
GcalContext *context;
|
GcalContext *context;
|
||||||
GcalWeatherService *weather_service; /* owned, nullable */
|
|
||||||
|
|
||||||
/* range shown on the sidebar */
|
/* range shown on the sidebar */
|
||||||
icaltimetype *start_selected_date;
|
icaltimetype *start_selected_date;
|
||||||
@@ -122,7 +121,6 @@ enum {
|
|||||||
PROP_0,
|
PROP_0,
|
||||||
PROP_DATE,
|
PROP_DATE,
|
||||||
PROP_CONTEXT,
|
PROP_CONTEXT,
|
||||||
PROP_WEATHER_SERVICE,
|
|
||||||
PROP_SHOW_WEEK_NUMBERS,
|
PROP_SHOW_WEEK_NUMBERS,
|
||||||
LAST_PROP
|
LAST_PROP
|
||||||
};
|
};
|
||||||
@@ -1614,7 +1612,6 @@ gcal_year_view_finalize (GObject *object)
|
|||||||
g_clear_pointer (&year_view->date, g_free);
|
g_clear_pointer (&year_view->date, g_free);
|
||||||
|
|
||||||
g_clear_object (&year_view->calendar_settings);
|
g_clear_object (&year_view->calendar_settings);
|
||||||
g_clear_object (&year_view->weather_service);
|
|
||||||
|
|
||||||
for (i = 0; i < 12; i++)
|
for (i = 0; i < 12; i++)
|
||||||
g_clear_pointer (&year_view->events[i], g_ptr_array_unref);
|
g_clear_pointer (&year_view->events[i], g_ptr_array_unref);
|
||||||
@@ -1640,10 +1637,6 @@ gcal_year_view_get_property (GObject *object,
|
|||||||
g_value_set_object (value, self->context);
|
g_value_set_object (value, self->context);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case PROP_WEATHER_SERVICE:
|
|
||||||
g_value_set_object (value, self->weather_service);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case PROP_SHOW_WEEK_NUMBERS:
|
case PROP_SHOW_WEEK_NUMBERS:
|
||||||
g_value_set_boolean (value, self->show_week_numbers);
|
g_value_set_boolean (value, self->show_week_numbers);
|
||||||
break;
|
break;
|
||||||
@@ -1676,15 +1669,14 @@ gcal_year_view_set_property (GObject *object,
|
|||||||
self,
|
self,
|
||||||
G_CONNECT_SWAPPED);
|
G_CONNECT_SWAPPED);
|
||||||
|
|
||||||
g_object_notify (object, "context");
|
g_signal_connect_object (gcal_context_get_weather_service (self->context),
|
||||||
break;
|
"weather-changed",
|
||||||
|
G_CALLBACK (weather_changed),
|
||||||
|
self,
|
||||||
|
0);
|
||||||
|
update_weather (self);
|
||||||
|
|
||||||
case PROP_WEATHER_SERVICE:
|
g_object_notify (object, "context");
|
||||||
gcal_view_set_weather_service_impl_helper (&self->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:
|
||||||
@@ -1978,7 +1970,6 @@ 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_CONTEXT, "context");
|
g_object_class_override_property (object_class, PROP_CONTEXT, "context");
|
||||||
g_object_class_override_property (object_class, PROP_WEATHER_SERVICE, "weather-service");
|
|
||||||
|
|
||||||
g_object_class_install_property (object_class,
|
g_object_class_install_property (object_class,
|
||||||
PROP_SHOW_WEEK_NUMBERS,
|
PROP_SHOW_WEEK_NUMBERS,
|
||||||
@@ -2021,8 +2012,6 @@ gcal_year_view_init (GcalYearView *self)
|
|||||||
{
|
{
|
||||||
guint i;
|
guint i;
|
||||||
|
|
||||||
self->weather_service = NULL;
|
|
||||||
|
|
||||||
for (i = 0; i < 12; i++)
|
for (i = 0; i < 12; i++)
|
||||||
self->events[i] = g_ptr_array_new_with_free_func (g_object_unref);
|
self->events[i] = g_ptr_array_new_with_free_func (g_object_unref);
|
||||||
|
|
||||||
@@ -2076,11 +2065,14 @@ gcal_data_model_subscriber_interface_init (ECalDataModelSubscriberInterface *ifa
|
|||||||
static void
|
static void
|
||||||
update_weather (GcalYearView *self)
|
update_weather (GcalYearView *self)
|
||||||
{
|
{
|
||||||
|
GcalWeatherService *weather_service;
|
||||||
gboolean updated = FALSE;
|
gboolean updated = FALSE;
|
||||||
|
|
||||||
g_return_if_fail (GCAL_IS_YEAR_VIEW (self));
|
g_return_if_fail (GCAL_IS_YEAR_VIEW (self));
|
||||||
|
|
||||||
if (self->weather_service && self->date)
|
weather_service = gcal_context_get_weather_service (self->context);
|
||||||
|
|
||||||
|
if (self->date)
|
||||||
{
|
{
|
||||||
GPtrArray *weather_infos;
|
GPtrArray *weather_infos;
|
||||||
GDate date;
|
GDate date;
|
||||||
@@ -2088,7 +2080,7 @@ update_weather (GcalYearView *self)
|
|||||||
|
|
||||||
g_date_set_dmy (&date, self->date->day, self->date->month, self->date->year);
|
g_date_set_dmy (&date, self->date->day, self->date->month, self->date->year);
|
||||||
|
|
||||||
weather_infos = gcal_weather_service_get_weather_infos (self->weather_service);
|
weather_infos = gcal_weather_service_get_weather_infos (weather_service);
|
||||||
|
|
||||||
for (i = 0; weather_infos && i < weather_infos->len; i++)
|
for (i = 0; weather_infos && i < weather_infos->len; i++)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1191,3 +1191,28 @@ gcal_weather_service_stop (GcalWeatherService *self)
|
|||||||
|
|
||||||
GCAL_EXIT;
|
GCAL_EXIT;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* gcal_weather_service_connect_widget:
|
||||||
|
* @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 widgets.
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
gcal_weather_service_connect_widget (GcalWeatherService *self,
|
||||||
|
GcalWeatherUpdateFunc update_func,
|
||||||
|
GCallback weather_changed_cb,
|
||||||
|
GtkWidget *data)
|
||||||
|
{
|
||||||
|
g_return_if_fail (GCAL_IS_WEATHER_SERVICE (self));
|
||||||
|
g_return_if_fail (update_func != NULL);
|
||||||
|
g_return_if_fail (weather_changed_cb != NULL);
|
||||||
|
g_return_if_fail (GTK_IS_WIDGET (data));
|
||||||
|
|
||||||
|
g_signal_connect_object (self, "weather-changed", weather_changed_cb, data, 0);
|
||||||
|
update_func (data);
|
||||||
|
}
|
||||||
|
|||||||
@@ -28,9 +28,9 @@
|
|||||||
G_BEGIN_DECLS
|
G_BEGIN_DECLS
|
||||||
|
|
||||||
#define GCAL_TYPE_WEATHER_SERVICE (gcal_weather_service_get_type())
|
#define GCAL_TYPE_WEATHER_SERVICE (gcal_weather_service_get_type())
|
||||||
|
|
||||||
G_DECLARE_FINAL_TYPE (GcalWeatherService, gcal_weather_service, GCAL, WEATHER_SERVICE, GObject)
|
G_DECLARE_FINAL_TYPE (GcalWeatherService, gcal_weather_service, GCAL, WEATHER_SERVICE, GObject)
|
||||||
|
|
||||||
|
typedef void (*GcalWeatherUpdateFunc) (GtkWidget *widget);
|
||||||
|
|
||||||
GcalWeatherService* gcal_weather_service_new (void);
|
GcalWeatherService* gcal_weather_service_new (void);
|
||||||
|
|
||||||
@@ -50,6 +50,11 @@ void gcal_weather_service_run (GcalWeatherSer
|
|||||||
|
|
||||||
void gcal_weather_service_stop (GcalWeatherService *self);
|
void gcal_weather_service_stop (GcalWeatherService *self);
|
||||||
|
|
||||||
|
void gcal_weather_service_connect_widget (GcalWeatherService *self,
|
||||||
|
GcalWeatherUpdateFunc update_func,
|
||||||
|
GCallback weather_changed_cb,
|
||||||
|
GtkWidget *data);
|
||||||
|
|
||||||
G_END_DECLS
|
G_END_DECLS
|
||||||
|
|
||||||
#endif /* GCAL_WEATHER_SERVICE_H */
|
#endif /* GCAL_WEATHER_SERVICE_H */
|
||||||
|
|||||||
@@ -34,8 +34,6 @@ struct _GcalWeatherSettings
|
|||||||
GtkWidget *weather_location_entry;
|
GtkWidget *weather_location_entry;
|
||||||
|
|
||||||
GcalContext *context;
|
GcalContext *context;
|
||||||
|
|
||||||
GcalWeatherService *weather_service;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@@ -56,7 +54,6 @@ enum
|
|||||||
{
|
{
|
||||||
PROP_0,
|
PROP_0,
|
||||||
PROP_CONTEXT,
|
PROP_CONTEXT,
|
||||||
PROP_WEATHER_SERVICE,
|
|
||||||
N_PROPS
|
N_PROPS
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -191,8 +188,12 @@ get_checked_fixed_location (GcalWeatherSettings *self)
|
|||||||
static void
|
static void
|
||||||
manage_weather_service (GcalWeatherSettings *self)
|
manage_weather_service (GcalWeatherSettings *self)
|
||||||
{
|
{
|
||||||
|
GcalWeatherService *weather_service;
|
||||||
|
|
||||||
GCAL_ENTRY;
|
GCAL_ENTRY;
|
||||||
|
|
||||||
|
weather_service = gcal_context_get_weather_service (self->context);
|
||||||
|
|
||||||
if (gtk_switch_get_active (self->show_weather_switch))
|
if (gtk_switch_get_active (self->show_weather_switch))
|
||||||
{
|
{
|
||||||
g_autoptr (GWeatherLocation) location = NULL;
|
g_autoptr (GWeatherLocation) location = NULL;
|
||||||
@@ -205,11 +206,11 @@ manage_weather_service (GcalWeatherSettings *self)
|
|||||||
g_warning ("Unknown location '%s' selected", gtk_entry_get_text (GTK_ENTRY (self->weather_location_entry)));
|
g_warning ("Unknown location '%s' selected", gtk_entry_get_text (GTK_ENTRY (self->weather_location_entry)));
|
||||||
}
|
}
|
||||||
|
|
||||||
gcal_weather_service_run (self->weather_service, location);
|
gcal_weather_service_run (weather_service, location);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
gcal_weather_service_stop (self->weather_service);
|
gcal_weather_service_stop (weather_service);
|
||||||
}
|
}
|
||||||
|
|
||||||
GCAL_EXIT;
|
GCAL_EXIT;
|
||||||
@@ -268,7 +269,6 @@ on_weather_location_searchbox_changed_cb (GWeatherLocationEntry *entry,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* GObject overrides
|
* GObject overrides
|
||||||
*/
|
*/
|
||||||
@@ -278,7 +278,7 @@ gcal_weather_settings_finalize (GObject *object)
|
|||||||
{
|
{
|
||||||
GcalWeatherSettings *self = (GcalWeatherSettings *)object;
|
GcalWeatherSettings *self = (GcalWeatherSettings *)object;
|
||||||
|
|
||||||
g_clear_object (&self->weather_service);
|
g_clear_object (&self->context);
|
||||||
|
|
||||||
G_OBJECT_CLASS (gcal_weather_settings_parent_class)->finalize (object);
|
G_OBJECT_CLASS (gcal_weather_settings_parent_class)->finalize (object);
|
||||||
}
|
}
|
||||||
@@ -297,10 +297,6 @@ gcal_weather_settings_get_property (GObject *object,
|
|||||||
g_value_set_object (value, self->context);
|
g_value_set_object (value, self->context);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case PROP_WEATHER_SERVICE:
|
|
||||||
g_value_set_object (value, self->weather_service);
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
default:
|
||||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
||||||
}
|
}
|
||||||
@@ -327,10 +323,6 @@ gcal_weather_settings_set_property (GObject *object,
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case PROP_WEATHER_SERVICE:
|
|
||||||
gcal_weather_settings_set_weather_service (self, g_value_get_object (value));
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
default:
|
||||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
||||||
}
|
}
|
||||||
@@ -352,12 +344,6 @@ gcal_weather_settings_class_init (GcalWeatherSettingsClass *klass)
|
|||||||
GCAL_TYPE_CONTEXT,
|
GCAL_TYPE_CONTEXT,
|
||||||
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
|
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
|
||||||
|
|
||||||
properties[PROP_WEATHER_SERVICE] = g_param_spec_object ("weather-service",
|
|
||||||
"The weather service object",
|
|
||||||
"The weather service object",
|
|
||||||
GCAL_TYPE_WEATHER_SERVICE,
|
|
||||||
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
|
|
||||||
|
|
||||||
g_object_class_install_properties (object_class, N_PROPS, properties);
|
g_object_class_install_properties (object_class, N_PROPS, properties);
|
||||||
|
|
||||||
gtk_widget_class_set_template_from_resource (widget_class, "/org/gnome/calendar/weather-settings.ui");
|
gtk_widget_class_set_template_from_resource (widget_class, "/org/gnome/calendar/weather-settings.ui");
|
||||||
@@ -376,32 +362,3 @@ gcal_weather_settings_init (GcalWeatherSettings *self)
|
|||||||
{
|
{
|
||||||
gtk_widget_init_template (GTK_WIDGET (self));
|
gtk_widget_init_template (GTK_WIDGET (self));
|
||||||
}
|
}
|
||||||
|
|
||||||
GcalWeatherService*
|
|
||||||
gcal_weather_settings_get_weather_service (GcalWeatherSettings *self)
|
|
||||||
{
|
|
||||||
g_return_val_if_fail (GCAL_IS_WEATHER_SETTINGS (self), NULL);
|
|
||||||
|
|
||||||
return self->weather_service;
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
gcal_weather_settings_set_weather_service (GcalWeatherSettings *self,
|
|
||||||
GcalWeatherService *service)
|
|
||||||
{
|
|
||||||
g_return_if_fail (GCAL_IS_WEATHER_SETTINGS (self));
|
|
||||||
|
|
||||||
GCAL_ENTRY;
|
|
||||||
|
|
||||||
if (!g_set_object (&self->weather_service, service))
|
|
||||||
GCAL_RETURN ();
|
|
||||||
|
|
||||||
/* Recover weather settings */
|
|
||||||
load_weather_settings (self);
|
|
||||||
update_menu_weather_sensitivity (self);
|
|
||||||
manage_weather_service (self);
|
|
||||||
|
|
||||||
g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_WEATHER_SERVICE]);
|
|
||||||
|
|
||||||
GCAL_EXIT;
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -25,12 +25,7 @@
|
|||||||
G_BEGIN_DECLS
|
G_BEGIN_DECLS
|
||||||
|
|
||||||
#define GCAL_TYPE_WEATHER_SETTINGS (gcal_weather_settings_get_type())
|
#define GCAL_TYPE_WEATHER_SETTINGS (gcal_weather_settings_get_type())
|
||||||
|
|
||||||
G_DECLARE_FINAL_TYPE (GcalWeatherSettings, gcal_weather_settings, GCAL, WEATHER_SETTINGS, GtkBox)
|
G_DECLARE_FINAL_TYPE (GcalWeatherSettings, gcal_weather_settings, GCAL, WEATHER_SETTINGS, GtkBox)
|
||||||
|
|
||||||
GcalWeatherService* gcal_weather_settings_get_weather_service (GcalWeatherSettings *self);
|
|
||||||
|
|
||||||
void gcal_weather_settings_set_weather_service (GcalWeatherSettings *self,
|
|
||||||
GcalWeatherService *service);
|
|
||||||
|
|
||||||
G_END_DECLS
|
G_END_DECLS
|
||||||
|
|||||||
Reference in New Issue
Block a user