diff --git a/src/favorites.c b/src/favorites.c index 0ae1bc47323bf4950398c27d82a0b5395c81a318..7275145c049ce193c2f294fc083c04420c09c524 100644 --- a/src/favorites.c +++ b/src/favorites.c @@ -26,9 +26,9 @@ static guint signals[N_SIGNALS] = { 0 }; typedef struct { - GtkWidget *scroll; + GtkWidget *sw_favorites; GtkWidget *evbox; - GtkWidget *flowbox; + GtkWidget *fb_favorites; GSettings *settings; } PhoshFavoritesPrivate; @@ -128,7 +128,7 @@ add_weston_terminal (PhoshFavorites *self) "circular"); g_signal_connect_swapped (btn, "clicked", G_CALLBACK (term_btn_clicked), self); - gtk_flow_box_insert (GTK_FLOW_BOX (priv->flowbox), btn, -1); + gtk_flow_box_insert (GTK_FLOW_BOX (priv->fb_favorites), btn, -1); } @@ -142,14 +142,14 @@ favorites_changed (GSettings *settings, GtkWidget *btn; /* Remove all favorites first */ - gtk_container_foreach (GTK_CONTAINER (priv->flowbox), + gtk_container_foreach (GTK_CONTAINER (priv->fb_favorites), (GtkCallback) gtk_widget_destroy, NULL); for (gint i = 0; i < g_strv_length (favorites); i++) { gchar *fav = favorites[i]; btn = add_favorite (self, fav); if (btn) - gtk_flow_box_insert (GTK_FLOW_BOX (priv->flowbox), btn, -1); + gtk_flow_box_insert (GTK_FLOW_BOX (priv->fb_favorites), btn, -1); } g_strfreev (favorites); add_weston_terminal (self); @@ -201,32 +201,23 @@ phosh_favorites_constructed (GObject *object) "phosh-favorites"); /* Flowbox */ - priv->flowbox = gtk_widget_new (GTK_TYPE_FLOW_BOX, - "halign", GTK_ALIGN_START, - "valign", GTK_ALIGN_CENTER, - "selection-mode", GTK_SELECTION_NONE, - "orientation", GTK_ORIENTATION_VERTICAL, - NULL); - gtk_flow_box_set_max_children_per_line (GTK_FLOW_BOX(priv->flowbox), G_MAXINT); - gtk_flow_box_set_homogeneous (GTK_FLOW_BOX(priv->flowbox), TRUE); - - /* Scrolled window */ - priv->scroll = gtk_scrolled_window_new (NULL, NULL); - gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (priv->scroll), - GTK_POLICY_AUTOMATIC, - GTK_POLICY_NEVER); - gtk_container_add (GTK_CONTAINER (priv->scroll), priv->flowbox); - - /* Eventbox */ - priv->evbox = gtk_event_box_new (); - gtk_container_add (GTK_CONTAINER (priv->evbox), priv->scroll); + priv->fb_favorites = gtk_widget_new (GTK_TYPE_FLOW_BOX, + "halign", GTK_ALIGN_CENTER, + "valign", GTK_ALIGN_START, + "selection-mode", GTK_SELECTION_NONE, + "orientation", GTK_ORIENTATION_HORIZONTAL, + NULL); + gtk_flow_box_set_max_children_per_line (GTK_FLOW_BOX(priv->fb_favorites), G_MAXINT); + gtk_flow_box_set_homogeneous (GTK_FLOW_BOX(priv->fb_favorites), TRUE); + gtk_container_add (GTK_CONTAINER (priv->sw_favorites), priv->fb_favorites); + gtk_widget_show_all (GTK_WIDGET(priv->evbox)); + + /* Close on click */ g_signal_connect_swapped (priv->evbox, "button_press_event", G_CALLBACK (evbox_button_press_event_cb), self); gtk_widget_set_events (priv->evbox, GDK_BUTTON_PRESS_MASK); - gtk_container_add (GTK_CONTAINER (self), priv->evbox); - priv->settings = g_settings_new ("sm.puri.phosh"); g_signal_connect (priv->settings, "changed::favorites", G_CALLBACK (favorites_changed), self); @@ -250,10 +241,17 @@ static void phosh_favorites_class_init (PhoshFavoritesClass *klass) { GObjectClass *object_class = (GObjectClass *)klass; + GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); object_class->dispose = phosh_favorites_dispose; object_class->constructed = phosh_favorites_constructed; + gtk_widget_class_set_template_from_resource (widget_class, + "/sm/puri/phosh/ui/favorites.ui"); + + gtk_widget_class_bind_template_child_private (widget_class, PhoshFavorites, evbox); + gtk_widget_class_bind_template_child_private (widget_class, PhoshFavorites, sw_favorites); + signals[APP_LAUNCHED] = g_signal_new ("app-launched", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST, 0, NULL, NULL, NULL, G_TYPE_NONE, 0); @@ -266,6 +264,7 @@ phosh_favorites_class_init (PhoshFavoritesClass *klass) static void phosh_favorites_init (PhoshFavorites *self) { + gtk_widget_init_template (GTK_WIDGET (self)); } diff --git a/src/phosh.gresources.xml b/src/phosh.gresources.xml index 4cc7ea7d40f7f8992355dfa2ee2d23dff38f1fc8..1e98cfb819d034941477a8f01cb70e60fe34d577 100644 --- a/src/phosh.gresources.xml +++ b/src/phosh.gresources.xml @@ -1,6 +1,7 @@ <?xml version="1.0" encoding="UTF-8"?> <gresources> <gresource prefix="/sm/puri/phosh"> + <file preprocess="xml-stripblanks">ui/favorites.ui</file> <file preprocess="xml-stripblanks">ui/home.ui</file> <file preprocess="xml-stripblanks">ui/lockscreen.ui</file> <file preprocess="xml-stripblanks">ui/settings-menu.ui</file> diff --git a/src/ui/favorites.ui b/src/ui/favorites.ui new file mode 100644 index 0000000000000000000000000000000000000000..65e81aef62ad4e4a022ea7660d7d2b3690cab010 --- /dev/null +++ b/src/ui/favorites.ui @@ -0,0 +1,108 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- Generated with glade 3.22.1 --> +<interface> + <requires lib="gtk+" version="3.20"/> + <template class="PhoshFavorites" parent="GtkWindow"> + <property name="can_focus">False</property> + <child> + <placeholder/> + </child> + <child> + <object class="GtkEventBox" id="evbox"> + <property name="name">evbox</property> + <property name="visible">True</property> + <property name="can_focus">False</property> + <child> + <object class="GtkBox"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="vexpand">True</property> + <property name="orientation">vertical</property> + <child> + <object class="GtkBox"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="orientation">vertical</property> + <child> + <object class="GtkLabel"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="label" translatable="yes">Running Applications</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkListBox" id="lb_running_apps"> + <property name="name">lb_runnng_apps</property> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="margin_left">12</property> + <property name="margin_right">12</property> + <property name="margin_top">5</property> + <property name="margin_bottom">5</property> + <property name="selection_mode">none</property> + </object> + <packing> + <property name="expand">True</property> + <property name="fill">True</property> + <property name="position">1</property> + </packing> + </child> + </object> + <packing> + <property name="expand">True</property> + <property name="fill">True</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkBox"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="vexpand">True</property> + <property name="orientation">vertical</property> + <child> + <object class="GtkLabel"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="label" translatable="yes">Favorites</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkScrolledWindow" id="sw_favorites"> + <property name="name">sw_favorites</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="hscrollbar_policy">never</property> + <child> + <placeholder/> + </child> + </object> + <packing> + <property name="expand">True</property> + <property name="fill">True</property> + <property name="position">1</property> + </packing> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">1</property> + </packing> + </child> + </object> + </child> + </object> + </child> + </template> +</interface>