diff options
-rw-r--r-- | data/gl-window.ui | 32 | ||||
-rw-r--r-- | meson.build | 2 | ||||
-rw-r--r-- | src/gl-window.c | 56 |
3 files changed, 18 insertions, 72 deletions
diff --git a/data/gl-window.ui b/data/gl-window.ui index 83f1a68..b998673 100644 --- a/data/gl-window.ui +++ b/data/gl-window.ui @@ -11,35 +11,9 @@ </object> </child> <child> - <object class="GtkInfoBar" id="info_bar"> - <property name="message-type">GTK_MESSAGE_ERROR</property> - <property name="visible">False</property> - <child> - <object class="GtkBox" id="action_area"> - <property name="orientation">horizontal</property> - <property name="spacing">6</property> - <child> - <object class="GtkLabel" id="message_label"> - <property name="hexpand">True</property> - <property name="halign">start</property> - </object> - </child> - <child> - <object class="GtkButton" id="help_button"> - <property name="halign">center</property> - <property name="label" translatable="yes">Help</property> - <signal name="clicked" handler="on_help_button_clicked" object="GlWindow"/> - </object> - </child> - <child> - <object class="GtkButton" id="ignore_button"> - <property name="halign">center</property> - <property name="label" translatable="yes">Ignore</property> - <signal name="clicked" handler="on_ignore_button_clicked" object="GlWindow"/> - </object> - </child> - </object> - </child> + <object class="AdwBanner" id="banner"> + <property name="button-label" translatable="yes">Help</property> + <signal name="button-clicked" handler="on_help_button_clicked" swapped="yes"/> </object> </child> <child> diff --git a/meson.build b/meson.build index 26c6754..9d81db4 100644 --- a/meson.build +++ b/meson.build @@ -62,7 +62,7 @@ endif gl_deps = [ dependency('gio-unix-2.0', version : '>=2.43.90'), dependency('gtk4', version : '>=4.6.0'), - dependency('libadwaita-1', version : '>=1.2.alpha'), + dependency('libadwaita-1', version : '>=1.3.alpha'), dependency('libsystemd') ] diff --git a/src/gl-window.c b/src/gl-window.c index 6dd4363..e45fa2c 100644 --- a/src/gl-window.c +++ b/src/gl-window.c @@ -36,8 +36,7 @@ typedef struct { GtkWidget *event_toolbar; GtkWidget *event_list; - GtkWidget *info_bar; - GtkLabel *message_label; + AdwBanner *banner; } GlWindowPrivate; G_DEFINE_TYPE_WITH_PRIVATE (GlWindow, gl_window, ADW_TYPE_APPLICATION_WINDOW) @@ -271,38 +270,13 @@ on_category_list_changed (GlCategoryList *list, } static void -on_help_button_clicked (GlWindow *window, - gint response_id, - gpointer user_data) +on_help_button_clicked (GlWindow *window, + AdwBanner *banner) { - GlWindowPrivate *priv; - GtkWindow *parent; - - parent = GTK_WINDOW (window); - priv = gl_window_get_instance_private (GL_WINDOW (window)); - - gtk_show_uri (parent, "help:gnome-logs/permissions", + gtk_show_uri (window, "help:gnome-logs/permissions", GDK_CURRENT_TIME); - gtk_widget_hide (priv->info_bar); -} - -static void -on_ignore_button_clicked (GlWindow *window, - gint response_id, - gpointer user_data) -{ - GlWindowPrivate *priv; - GSettings *settings; - - priv = gl_window_get_instance_private (GL_WINDOW (window)); - - settings = g_settings_new (SETTINGS_SCHEMA); - g_settings_set_boolean (settings, IGNORE_WARNING, TRUE); - - gtk_widget_hide (priv->info_bar); - - g_object_unref (settings); + adw_banner_set_revealed (banner, FALSE); } void @@ -339,12 +313,10 @@ gl_window_class_init (GlWindowClass *klass) gtk_widget_class_bind_template_child_private (widget_class, GlWindow, event_list); gtk_widget_class_bind_template_child_private (widget_class, GlWindow, - info_bar); + banner); gtk_widget_class_bind_template_callback (widget_class, on_help_button_clicked); - gtk_widget_class_bind_template_callback (widget_class, - on_ignore_button_clicked); } void @@ -470,16 +442,16 @@ gl_window_init (GlWindow *window) { if (!gl_util_can_read_system_journal (GL_JOURNAL_STORAGE_PERSISTENT)) { - gtk_label_set_label (priv->message_label, _("Unable to read system logs")); + adw_banner_set_title (priv->banner, _("Unable to read system logs")); - gtk_widget_show (priv->info_bar); + adw_banner_set_revealed (ADW_BANNER (priv->banner), TRUE); } if (!gl_util_can_read_user_journal ()) { - gtk_label_set_label (priv->message_label, _("Unable to read user logs")); + adw_banner_set_title (priv->banner, _("Unable to read user logs")); - gtk_widget_show (priv->info_bar); + adw_banner_set_revealed (ADW_BANNER (priv->banner), TRUE); } break; } @@ -487,17 +459,17 @@ gl_window_init (GlWindow *window) { if (!gl_util_can_read_system_journal (GL_JOURNAL_STORAGE_VOLATILE)) { - gtk_label_set_label (priv->message_label, _("Unable to read system logs")); + adw_banner_set_title (priv->banner, _("Unable to read system logs")); - gtk_widget_show (priv->info_bar); + adw_banner_set_revealed (ADW_BANNER (priv->banner), TRUE); } break; } case GL_JOURNAL_STORAGE_NONE: { - gtk_label_set_label (priv->message_label, _("No logs available")); + adw_banner_set_title (priv->banner, _("No logs available")); - gtk_widget_show (priv->info_bar); + adw_banner_set_revealed (ADW_BANNER (priv->banner), TRUE); break; } default: |