[gnome-software] Show app details from search in window



commit 18098198d154f31ce677dc2573d71bf7a5ad83fb
Author: Matthias Clasen <mclasen redhat com>
Date:   Wed Sep 4 00:26:41 2013 -0400

    Show app details from search in window
    
    No need for a popup here.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=707436

 src/gs-shell-search.c |   69 +++---------------------------------------------
 src/gs-shell-search.h |    2 +
 src/gs-shell.c        |    1 +
 3 files changed, 8 insertions(+), 64 deletions(-)
---
diff --git a/src/gs-shell-search.c b/src/gs-shell-search.c
index a79c80c..779290b 100644
--- a/src/gs-shell-search.c
+++ b/src/gs-shell-search.c
@@ -25,6 +25,7 @@
 #include <glib/gi18n.h>
 
 #include "gs-shell-search.h"
+#include "gs-shell.h"
 #include "gs-app.h"
 #include "gs-utils.h"
 #include "gs-app-widget.h"
@@ -42,6 +43,7 @@ struct GsShellSearchPrivate
        GtkSizeGroup            *sizegroup_image;
        GtkSizeGroup            *sizegroup_name;
        gboolean                 waiting;
+        GsShell                 *shell;
 };
 
 G_DEFINE_TYPE (GsShellSearch, gs_shell_search, G_TYPE_OBJECT)
@@ -51,75 +53,12 @@ gs_shell_search_app_widget_activated_cb (GtkListBox *list_box,
                                          GtkListBoxRow *row,
                                         GsShellSearch *shell_search)
 {
-       const gchar *tmp;
        GsApp *app;
-       GtkWidget *details, *button, *grid;
-       GtkWidget *image, *label;
-       PangoAttrList *attr_list;
         GsAppWidget *app_widget;
 
         app_widget = GS_APP_WIDGET (gtk_bin_get_child (GTK_BIN (row)));
        app = gs_app_widget_get_app (app_widget);
-
-       details = gtk_dialog_new_with_buttons (_("Details"),
-                                              GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (list_box))),
-                                              GTK_DIALOG_MODAL,
-                                              _("_Done"), GTK_RESPONSE_CLOSE,
-                                              NULL);
-       gtk_container_set_border_width (GTK_CONTAINER (details), 20);
-       button = gtk_dialog_get_widget_for_response (GTK_DIALOG (details), GTK_RESPONSE_CLOSE);
-       gtk_style_context_add_class (gtk_widget_get_style_context (button), "suggested-action");
-       g_signal_connect_swapped (button, "clicked", G_CALLBACK (gtk_widget_destroy), details);
-
-       grid = gtk_grid_new ();
-       gtk_widget_show (grid);
-       gtk_widget_set_halign (grid, GTK_ALIGN_FILL);
-       gtk_grid_set_column_spacing (GTK_GRID (grid), 20);
-       gtk_container_add (GTK_CONTAINER (gtk_dialog_get_content_area (GTK_DIALOG (details))), grid);
-
-       image = gtk_image_new ();
-       if (gs_app_get_pixbuf (app)) {
-               gtk_image_set_from_pixbuf (GTK_IMAGE (image), gs_app_get_pixbuf (app));  gtk_widget_show 
(image);
-       }
-       gtk_grid_attach (GTK_GRID (grid), image, 0, 0, 1, 3);
-
-       label = gtk_label_new (gs_app_get_name (app));
-       gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5);
-       gtk_widget_set_hexpand (label, TRUE);
-       gtk_widget_set_margin_bottom (label, 10);
-       attr_list = pango_attr_list_new ();
-       pango_attr_list_insert (attr_list, pango_attr_weight_new (PANGO_WEIGHT_BOLD));
-       pango_attr_list_insert (attr_list, pango_attr_scale_new (1));
-       gtk_label_set_attributes (GTK_LABEL (label), attr_list);
-       pango_attr_list_unref (attr_list);
-       gtk_widget_show (label);
-       gtk_grid_attach (GTK_GRID (grid), label, 1, 0, 1, 1);
-
-       label = gtk_label_new (NULL);
-       gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5);
-       gtk_widget_set_hexpand (label, TRUE);
-       gtk_widget_set_margin_bottom (label, 20);
-       if (gs_app_get_summary (app)) {
-               gtk_label_set_label (GTK_LABEL (label), gs_app_get_summary (app));
-               gtk_widget_show (label);
-       }
-       gtk_grid_attach (GTK_GRID (grid), label, 1, 1, 1, 1);
-       tmp = gs_app_get_description (app);
-       label = gtk_label_new (tmp);
-       gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5);
-       gtk_label_set_line_wrap (GTK_LABEL (label), TRUE);
-       gtk_widget_show (label);
-       gtk_grid_attach (GTK_GRID (grid), label, 0, 3, 2, 1);
-
-       if (gs_app_get_url (app)) {
-               button = gtk_link_button_new_with_label (gs_app_get_url (app), _("Visit website"));
-               gtk_widget_set_halign (button, GTK_ALIGN_START);
-               gtk_button_set_relief (GTK_BUTTON (button), GTK_RELIEF_NONE);
-               gtk_widget_show (button);
-               gtk_grid_attach (GTK_GRID (grid), button, 0, 4, 2, 1);
-       }
-
-       gtk_window_present (GTK_WINDOW (details));
+        gs_shell_show_app (shell_search->priv->shell, app);
 }
 
 /**
@@ -409,6 +348,7 @@ gs_shell_search_list_header_func (GtkListBoxRow *row,
  */
 void
 gs_shell_search_setup (GsShellSearch *shell_search,
+                       GsShell *shell,
                          GsPluginLoader *plugin_loader,
                          GtkBuilder *builder,
                          GCancellable *cancellable)
@@ -421,6 +361,7 @@ gs_shell_search_setup (GsShellSearch *shell_search,
        priv->plugin_loader = g_object_ref (plugin_loader);
        priv->builder = g_object_ref (builder);
        priv->cancellable = g_object_ref (cancellable);
+        priv->shell = shell;
 
        /* refilter on search box changing */
        widget = GTK_WIDGET (gtk_builder_get_object (priv->builder, "entry_search"));
diff --git a/src/gs-shell-search.h b/src/gs-shell-search.h
index fcd8b17..4baddad 100644
--- a/src/gs-shell-search.h
+++ b/src/gs-shell-search.h
@@ -25,6 +25,7 @@
 #include <glib-object.h>
 #include <gtk/gtk.h>
 
+#include "gs-shell.h"
 #include "gs-plugin-loader.h"
 
 G_BEGIN_DECLS
@@ -55,6 +56,7 @@ GsShellSearch *gs_shell_search_new            (void);
 void            gs_shell_search_refresh        (GsShellSearch          *shell_search,
                                                 const gchar            *text);
 void            gs_shell_search_setup          (GsShellSearch          *shell_search,
+                                                 GsShell                *shell,
                                                 GsPluginLoader         *plugin_loader,
                                                 GtkBuilder             *builder,
                                                 GCancellable           *cancellable);
diff --git a/src/gs-shell.c b/src/gs-shell.c
index 9dcc868..4a2d8b3 100644
--- a/src/gs-shell.c
+++ b/src/gs-shell.c
@@ -430,6 +430,7 @@ gs_shell_setup (GsShell *shell, GsPluginLoader *plugin_loader, GCancellable *can
                                  priv->builder,
                                  priv->cancellable);
        gs_shell_search_setup (priv->shell_search,
+                               shell,
                               priv->plugin_loader,
                               priv->builder,
                               priv->cancellable);


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