weather-settings: Port to GTK4

This commit is contained in:
Georges Basile Stavracas Neto
2022-02-12 13:08:50 -03:00
parent b8cbb1653d
commit c91f03feb1
2 changed files with 13 additions and 41 deletions
+9 -14
View File
@@ -31,7 +31,7 @@ struct _GcalWeatherSettings
GtkSwitch *show_weather_switch;
GtkSwitch *weather_auto_location_switch;
GtkWidget *weather_location_entry;
GtkEditable *weather_location_entry;
GWeatherLocation *location;
@@ -99,11 +99,8 @@ load_weather_settings (GcalWeatherSettings *self)
if (!location && !auto_location)
{
GtkStyleContext *context;
context = gtk_widget_get_style_context (GTK_WIDGET (self->weather_location_entry));
gtk_entry_set_text (GTK_ENTRY (self->weather_location_entry), location_name);
gtk_style_context_add_class (context, "error");
gtk_editable_set_text (self->weather_location_entry, location_name);
gtk_widget_add_css_class (GTK_WIDGET (self->weather_location_entry), "error");
}
else
{
@@ -114,8 +111,8 @@ load_weather_settings (GcalWeatherSettings *self)
weather_location = location ? gweather_location_deserialize (world, location) : NULL;
self->location = weather_location ? g_object_ref (weather_location) : NULL;
gtk_entry_set_text (GTK_ENTRY (self->weather_location_entry),
self->location ? gweather_location_get_name (self->location) : "");
gtk_editable_set_text (self->weather_location_entry,
self->location ? gweather_location_get_name (self->location) : "");
}
g_signal_handlers_unblock_by_func (self->show_weather_switch, on_show_weather_changed_cb, self);
@@ -144,7 +141,7 @@ save_weather_settings (GcalWeatherSettings *self)
value = g_variant_new ("(bbsmv)",
gtk_switch_get_active (self->show_weather_switch),
gtk_switch_get_active (self->weather_auto_location_switch),
gtk_entry_get_text (GTK_ENTRY (self->weather_location_entry)),
gtk_editable_get_text (self->weather_location_entry),
vlocation);
res = g_settings_set_value (settings, "weather-settings", value);
@@ -201,7 +198,7 @@ manage_weather_service (GcalWeatherSettings *self)
location = get_checked_fixed_location (self);
if (!location)
g_warning ("Unknown location '%s' selected", gtk_entry_get_text (GTK_ENTRY (self->weather_location_entry)));
g_warning ("Unknown location '%s' selected", gtk_editable_get_text (self->weather_location_entry));
}
gcal_weather_service_run (weather_service, location);
@@ -244,23 +241,21 @@ static void
on_weather_location_searchbox_changed_cb (GtkEntry *entry,
GcalWeatherSettings *self)
{
GtkStyleContext *context;
GWeatherLocation *location;
gboolean auto_location;
save_weather_settings (self);
context = gtk_widget_get_style_context (self->weather_location_entry);
auto_location = gtk_switch_get_active (self->weather_auto_location_switch);
location = get_checked_fixed_location (self);
if (!location && !auto_location)
{
gtk_style_context_add_class (context, "error");
gtk_widget_add_css_class (GTK_WIDGET (self->weather_location_entry), "error");
}
else
{
gtk_style_context_remove_class (context, "error");
gtk_widget_remove_css_class (GTK_WIDGET (self->weather_location_entry), "error");
manage_weather_service (self);
g_object_unref (location);
}
+4 -27
View File
@@ -1,30 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<requires lib="gtk+" version="3.14"/>
<template class="GcalWeatherSettings" parent="GtkBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="orientation">vertical</property>
<property name="margin">12</property>
<property name="margin-top">12</property>
<property name="margin-bottom">12</property>
<property name="margin-start">12</property>
<property name="margin-end">12</property>
<property name="spacing">6</property>
<child>
<object class="GtkModelButton">
<property name="text" translatable="yes">_Weather</property>
<property name="menu-name">main</property>
<property name="inverted">True</property>
<property name="centered">True</property>
<property name="visible">True</property>
</object>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="spacing">18</property>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="hexpand">True</property>
<property name="xalign">0.0</property>
<property name="label" translatable="yes">Show Weather</property>
@@ -32,8 +19,6 @@
</child>
<child>
<object class="GtkSwitch" id="show_weather_switch">
<property name="visible">True</property>
<property name="can_focus">True</property>
<signal name="notify::active" handler="on_show_weather_changed_cb" object="GcalWeatherSettings" swapped="no" />
</object>
</child>
@@ -41,13 +26,9 @@
</child>
<child>
<object class="GtkBox" id="weather_auto_location_box">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="spacing">18</property>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="hexpand">True</property>
<property name="xalign">0.0</property>
<property name="label" translatable="yes">Automatic Location</property>
@@ -55,8 +36,6 @@
</child>
<child>
<object class="GtkSwitch" id="weather_auto_location_switch">
<property name="visible">True</property>
<property name="can_focus">True</property>
<signal name="notify::active" handler="on_weather_auto_location_changed_cb" object="GcalWeatherSettings" swapped="no" />
</object>
</child>
@@ -64,8 +43,6 @@
</child>
<child>
<object class="GtkEntry" id="weather_location_entry">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="primary_icon_name">edit-find-symbolic</property>
<property name="primary_icon_activatable">False</property>
<property name="primary_icon_sensitive">False</property>