summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristopher Davis <christopherdavis@gnome.org>2022-12-22 11:43:18 -0600
committerChristopher Davis <christopherdavis@gnome.org>2022-12-22 12:10:37 -0600
commit93ab537beb9deb8617de64bbd9675653b298fcdf (patch)
tree723b4e61a8c1a798d78e337e965d0bcdbe11fa11
parent935672d496100283200c4610c0a035e44bf361b8 (diff)
downloadgnome-logs-wip/cdavis/adw-banner.tar.gz
window: Use AdwBanner instead of GtkInfoBarwip/cdavis/adw-banner
AdwBanner is a new widget that should be used in place of GtkInfoBar. It implements an API that follows the new suggested uses for info bars, and adapts cleanly to small window sizes.
-rw-r--r--data/gl-window.ui32
-rw-r--r--meson.build2
-rw-r--r--src/gl-window.c56
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: