[gnome-photos/wip/cdavis/statuspage: 5/5] photos-empty-results-box: Use HdyStatusPage




commit ed572985d7376a66a547e4daa670dca5e2f845c4
Author: Christopher Davis <brainblasted disroot org>
Date:   Wed Feb 10 18:08:18 2021 -0800

    photos-empty-results-box: Use HdyStatusPage
    
    HdyStatusPage is a prebuilt libhandy widget for empty status pages and
    the like. For consistency across GNOME we should use it.
    
    Also adjusts writing style to match other status pages.
    
    Bump minimum libhandy version to 1.1.90.
    
    https://gitlab.gnome.org/GNOME/gnome-photos/-/merge_requests/160

 meson.build                    |  2 +-
 src/photos-empty-results-box.c | 48 ++++++++++++++++++------------------------
 src/photos-empty-results-box.h |  2 +-
 3 files changed, 23 insertions(+), 29 deletions(-)
---
diff --git a/meson.build b/meson.build
index 74561547..a949382c 100644
--- a/meson.build
+++ b/meson.build
@@ -172,7 +172,7 @@ gtk_unix_print_dep = dependency('gtk+-unix-print-3.0')
 libdazzle_dep = dependency('libdazzle-1.0', version: '>= 3.26.0')
 libgdata_dep = dependency('libgdata', version: '>= 0.17.13')
 libgfgraph_dep = dependency('libgfbgraph-0.2', version: '>= 0.2.1')
-libhandy_dep = dependency ('libhandy-1', version: '>= 1.0.0')
+libhandy_dep = dependency ('libhandy-1', version: '>= 1.1.90')
 libjpeg_dep = dependency('libjpeg')
 libpng_dep = dependency('libpng16')
 tracker_control_dep = dependency('tracker-control-2.0')
diff --git a/src/photos-empty-results-box.c b/src/photos-empty-results-box.c
index 2092a251..bec0f73f 100644
--- a/src/photos-empty-results-box.c
+++ b/src/photos-empty-results-box.c
@@ -25,6 +25,7 @@
 
 #include <gio/gio.h>
 #include <glib/gi18n.h>
+#include <handy.h>
 
 #include "photos-empty-results-box.h"
 #include "photos-enums.h"
@@ -33,7 +34,8 @@
 
 struct _PhotosEmptyResultsBox
 {
-  GtkGrid parent_instance;
+  GtkBin parent_instance;
+  GtkWidget *status_page;
   PhotosWindowMode mode;
 };
 
@@ -44,7 +46,7 @@ enum
 };
 
 
-G_DEFINE_TYPE (PhotosEmptyResultsBox, photos_empty_results_box, GTK_TYPE_GRID);
+G_DEFINE_TYPE (PhotosEmptyResultsBox, photos_empty_results_box, GTK_TYPE_BIN);
 
 
 static gboolean
@@ -66,7 +68,6 @@ photos_empty_results_box_activate_link (PhotosEmptyResultsBox *self, const gchar
 static void
 photos_empty_results_box_add_image (PhotosEmptyResultsBox *self)
 {
-  GtkWidget *image;
   const gchar *icon_name = NULL;
 
   switch (self->mode)
@@ -100,28 +101,23 @@ photos_empty_results_box_add_image (PhotosEmptyResultsBox *self)
       break;
     }
 
-  image = gtk_image_new_from_icon_name (icon_name, GTK_ICON_SIZE_INVALID);
-  gtk_widget_set_margin_bottom (GTK_WIDGET (image), 9);
-  gtk_image_set_pixel_size (GTK_IMAGE (image), 128);
-  gtk_container_add (GTK_CONTAINER (self), image);
+  hdy_status_page_set_icon_name (HDY_STATUS_PAGE (self->status_page), icon_name);
 }
 
 
 static void
 photos_empty_results_box_add_primary_label (PhotosEmptyResultsBox *self)
 {
-  GtkWidget *primary_label;
   const gchar *text = NULL;
-  g_autofree gchar *label = NULL;
 
   switch (self->mode)
     {
     case PHOTOS_WINDOW_MODE_COLLECTIONS:
-      text = _("No albums found");
+      text = _("No Albums Found");
       break;
 
     case PHOTOS_WINDOW_MODE_FAVORITES:
-      text = _("Starred photos will appear here");
+      text = _("Starred Photos Will Appear Here");
       break;
 
     /* TODO: Don't show a collection if there are no screenshots in
@@ -131,7 +127,7 @@ photos_empty_results_box_add_primary_label (PhotosEmptyResultsBox *self)
     case PHOTOS_WINDOW_MODE_IMPORT:
     case PHOTOS_WINDOW_MODE_OVERVIEW:
     case PHOTOS_WINDOW_MODE_SEARCH:
-      text = _("No photos found");
+      text = _("No Photos Found");
       break;
 
     case PHOTOS_WINDOW_MODE_NONE:
@@ -142,11 +138,7 @@ photos_empty_results_box_add_primary_label (PhotosEmptyResultsBox *self)
       break;
     }
 
-  label = g_strconcat ("<b><span size=\"large\">", text, "</span></b>", NULL);
-  primary_label = gtk_label_new (label);
-  gtk_widget_set_margin_top (GTK_WIDGET (primary_label), 9);
-  gtk_label_set_use_markup (GTK_LABEL (primary_label), TRUE);
-  gtk_container_add (GTK_CONTAINER (self), primary_label);
+  hdy_status_page_set_title (HDY_STATUS_PAGE (self->status_page), text);
 }
 
 
@@ -205,7 +197,7 @@ photos_empty_results_box_add_secondary_label (PhotosEmptyResultsBox *self)
       }
 
     case PHOTOS_WINDOW_MODE_SEARCH:
-      label = g_strdup (_("Try a different search"));
+      label = g_strdup (_("Try a different search."));
       break;
 
     case PHOTOS_WINDOW_MODE_NONE:
@@ -219,10 +211,17 @@ photos_empty_results_box_add_secondary_label (PhotosEmptyResultsBox *self)
   if (label != NULL)
     {
       GtkWidget *secondary_label;
+      GtkStyleContext *context;
 
       secondary_label = gtk_label_new (label);
       gtk_label_set_use_markup (GTK_LABEL (secondary_label), use_markup);
-      gtk_container_add (GTK_CONTAINER (self), secondary_label);
+      gtk_label_set_justify (GTK_LABEL (secondary_label), GTK_JUSTIFY_CENTER);
+      gtk_label_set_line_wrap (GTK_LABEL (secondary_label), TRUE);
+      gtk_label_set_line_wrap_mode (GTK_LABEL (secondary_label), PANGO_WRAP_WORD_CHAR);
+      context = gtk_widget_get_style_context (secondary_label);
+      gtk_style_context_add_class (context, "body");
+      gtk_style_context_add_class (context, "description");
+      gtk_container_add (GTK_CONTAINER (self->status_page), secondary_label);
       if (handle_activate_link)
         {
           g_signal_connect_swapped (secondary_label,
@@ -238,19 +237,14 @@ static void
 photos_empty_results_box_constructed (GObject *object)
 {
   PhotosEmptyResultsBox *self = PHOTOS_EMPTY_RESULTS_BOX (object);
-  GtkStyleContext *context;
-  g_autofree gchar *label = NULL;
 
   G_OBJECT_CLASS (photos_empty_results_box_parent_class)->constructed (object);
 
-  gtk_widget_set_halign (GTK_WIDGET (self), GTK_ALIGN_CENTER);
   gtk_widget_set_hexpand (GTK_WIDGET (self), TRUE);
-  gtk_widget_set_valign (GTK_WIDGET (self), GTK_ALIGN_CENTER);
   gtk_widget_set_vexpand (GTK_WIDGET (self), TRUE);
-  gtk_orientable_set_orientation (GTK_ORIENTABLE (self), GTK_ORIENTATION_VERTICAL);
-  gtk_grid_set_row_spacing (GTK_GRID (self), 12);
-  context = gtk_widget_get_style_context (GTK_WIDGET (self));
-  gtk_style_context_add_class (context, "dim-label");
+
+  self->status_page = hdy_status_page_new ();
+  gtk_container_add (GTK_CONTAINER (self), self->status_page);
 
   photos_empty_results_box_add_image (self);
   photos_empty_results_box_add_primary_label (self);
diff --git a/src/photos-empty-results-box.h b/src/photos-empty-results-box.h
index 3e81d7a7..7ec9946e 100644
--- a/src/photos-empty-results-box.h
+++ b/src/photos-empty-results-box.h
@@ -30,7 +30,7 @@
 G_BEGIN_DECLS
 
 #define PHOTOS_TYPE_EMPTY_RESULTS_BOX (photos_empty_results_box_get_type ())
-G_DECLARE_FINAL_TYPE (PhotosEmptyResultsBox, photos_empty_results_box, PHOTOS, EMPTY_RESULTS_BOX, GtkGrid);
+G_DECLARE_FINAL_TYPE (PhotosEmptyResultsBox, photos_empty_results_box, PHOTOS, EMPTY_RESULTS_BOX, GtkBin);
 
 GtkWidget          *photos_empty_results_box_new                (PhotosWindowMode mode);
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]