[gnome-software] Show app details from search in window
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-software] Show app details from search in window
- Date: Wed, 4 Sep 2013 04:27:22 +0000 (UTC)
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]