[gnome-control-center] network: Make the rows adaptive



commit e4de2f5a09075910aacbc861453dbb91f55d240f
Author: Adrien Plazas <kekun plazas laposte net>
Date:   Sun Jan 27 18:06:05 2019 +0100

    network: Make the rows adaptive
    
    This factorizes the row creation a bit and normalizes the margins and
    spacing, reducing the required width. This also makes labels like row
    titles and descriptions ellipsizable so the rows can reach narrower
    widths.

 panels/network/cc-network-panel.ui   | 14 ++------
 panels/network/net-device-ethernet.c | 10 +++---
 panels/network/network-ethernet.ui   | 64 +++++++++++++-----------------------
 panels/network/network-proxy.ui      | 11 ++++---
 panels/network/network-simple.ui     |  8 ++---
 panels/network/network-vpn.ui        |  8 ++---
 panels/network/panel-common.c        | 16 +++++++++
 panels/network/panel-common.h        |  4 +++
 8 files changed, 64 insertions(+), 71 deletions(-)
---
diff --git a/panels/network/cc-network-panel.ui b/panels/network/cc-network-panel.ui
index ff78b492c..e5a048775 100644
--- a/panels/network/cc-network-panel.ui
+++ b/panels/network/cc-network-panel.ui
@@ -170,21 +170,11 @@
                                         <property name="can_focus">True</property>
                                         <property name="selection_mode">none</property>
                                         <child>
-                                          <object class="GtkListBoxRow">
+                                          <object class="HdyActionRow">
                                             <property name="visible">True</property>
                                             <property name="can_focus">True</property>
                                             <property name="activatable">False</property>
-                                            <child>
-                                              <object class="GtkLabel">
-                                                <property name="visible">True</property>
-                                                <property name="can_focus">False</property>
-                                                <property name="hexpand">True</property>
-                                                <property name="margin">16</property>
-                                                <property name="xalign">0</property>
-                                                <property name="ellipsize">end</property>
-                                                <property name="label" translatable="yes">Not set 
up</property>
-                                              </object>
-                                            </child>
+                                            <property name="title" translatable="yes">Not set up</property>
                                           </object>
                                         </child>
                                       </object>
diff --git a/panels/network/net-device-ethernet.c b/panels/network/net-device-ethernet.c
index f4722a693..602f6957f 100644
--- a/panels/network/net-device-ethernet.c
+++ b/panels/network/net-device-ethernet.c
@@ -237,7 +237,7 @@ device_ethernet_refresh_ui (NetDeviceEthernet *device)
 
         if (state != NM_DEVICE_STATE_UNAVAILABLE)
                 speed = net_device_simple_get_speed (NET_DEVICE_SIMPLE (device));
-        panel_set_device_status (device->builder, "label_status", nm_device, speed);
+        panel_set_device_row_status (device->builder, "details_row", nm_device, speed);
 
         populate_ui (device);
 }
@@ -320,8 +320,8 @@ add_row (NetDeviceEthernet *device, NMConnection *connection)
         widget = gtk_label_new (nm_connection_get_id (connection));
         gtk_widget_set_margin_start (widget, 12);
         gtk_widget_set_margin_end (widget, 12);
-        gtk_widget_set_margin_top (widget, 12);
-        gtk_widget_set_margin_bottom (widget, 12);
+        gtk_widget_set_margin_top (widget, 8);
+        gtk_widget_set_margin_bottom (widget, 8);
         gtk_box_pack_start (GTK_BOX (box), widget, FALSE, TRUE, 0);
 
         if (active) {
@@ -350,8 +350,8 @@ add_row (NetDeviceEthernet *device, NMConnection *connection)
         gtk_style_context_add_class (gtk_widget_get_style_context (widget), "image-button");
         gtk_widget_set_margin_start (widget, 12);
         gtk_widget_set_margin_end (widget, 12);
-        gtk_widget_set_margin_top (widget, 12);
-        gtk_widget_set_margin_bottom (widget, 12);
+        gtk_widget_set_margin_top (widget, 8);
+        gtk_widget_set_margin_bottom (widget, 8);
         gtk_widget_show (widget);
         gtk_container_add (GTK_CONTAINER (widget), image);
         gtk_widget_set_halign (widget, GTK_ALIGN_CENTER);
diff --git a/panels/network/network-ethernet.ui b/panels/network/network-ethernet.ui
index f1b21c28f..400252617 100644
--- a/panels/network/network-ethernet.ui
+++ b/panels/network/network-ethernet.ui
@@ -70,58 +70,38 @@
                 <property name="can_focus">False</property>
                 <property name="selection_mode">none</property>
                 <child>
-                  <object class="GtkListBoxRow" id="details_row">
+                  <object class="HdyActionRow" id="details_row">
                     <property name="visible">True</property>
                     <property name="can_focus">False</property>
                     <property name="selectable">False</property>
-                    <child>
-                      <object class="GtkBox">
+                    <property name="title">Cable unplugged</property>
+                    <child type="action">
+                      <object class="GtkButton" id="details_button">
                         <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="orientation">horizontal</property>
-                        <property name="spacing">12</property>
-                        <property name="margin_top">9</property>
-                        <property name="margin_bottom">9</property>
-                        <property name="margin_start">20</property>
-                        <property name="margin_end">20</property>
+                        <property name="can_focus">True</property>
+                        <property name="receives_default">True</property>
+                        <property name="halign">end</property>
+                        <property name="valign">center</property>
                         <child>
-                          <object class="GtkLabel" id="label_status">
+                          <object class="GtkImage">
                             <property name="visible">True</property>
                             <property name="can_focus">False</property>
-                            <property name="hexpand">True</property>
-                            <property name="xalign">0</property>
-                            <property name="label">Cable unplugged</property>
+                            <property name="icon-name">emblem-system-symbolic</property>
                           </object>
                         </child>
-                        <child>
-                          <object class="GtkSwitch" id="device_off_switch">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="halign">end</property>
-                            <property name="valign">center</property>
+                        <child internal-child="accessible">
+                          <object class="AtkObject" id="details_button-accessible">
+                            <property name="accessible-name" translatable="yes">Options…</property>
                           </object>
-                        </child>
-                        <child>
-                          <object class="GtkButton" id="details_button">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="receives_default">True</property>
-                            <property name="halign">end</property>
-                            <child>
-                              <object class="GtkImage">
-                                <property name="visible">True</property>
-                                <property name="can_focus">False</property>
-                                <property name="icon-name">emblem-system-symbolic</property>
-                              </object>
-                            </child>
-
-                            <child internal-child="accessible">
-                              <object class="AtkObject" id="details_button-accessible">
-                                <property name="accessible-name" translatable="yes">Options…</property>
-                              </object>
-                           </child>
-                         </object>
-                        </child>
+                       </child>
+                     </object>
+                    </child>
+                    <child type="action">
+                      <object class="GtkSwitch" id="device_off_switch">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="halign">end</property>
+                        <property name="valign">center</property>
                       </object>
                     </child>
                   </object>
diff --git a/panels/network/network-proxy.ui b/panels/network/network-proxy.ui
index e92ee8c62..329dc77f9 100644
--- a/panels/network/network-proxy.ui
+++ b/panels/network/network-proxy.ui
@@ -35,16 +35,17 @@
                 <property name="visible">True</property>
                 <property name="can_focus">False</property>
                 <property name="spacing">12</property>
-                <property name="margin_top">9</property>
-                <property name="margin_bottom">9</property>
-                <property name="margin_start">20</property>
-                <property name="margin_end">20</property>
+                <property name="margin_top">8</property>
+                <property name="margin_bottom">8</property>
+                <property name="margin_start">12</property>
+                <property name="margin_end">12</property>
                 <child>
                   <object class="GtkLabel">
                     <property name="visible">True</property>
                     <property name="can_focus">False</property>
                     <property name="hexpand">True</property>
                     <property name="label" translatable="yes">Network Proxy</property>
+                    <property name="ellipsize">end</property>
                     <property name="xalign">0.0</property>
                     <attributes>
                       <attribute name="weight" value="bold" />
@@ -55,6 +56,8 @@
                   <object class="GtkLabel" id="status_label">
                     <property name="visible">True</property>
                     <property name="can_focus">True</property>
+                    <property name="margin_top">8</property>
+                    <property name="margin_bottom">8</property>
                     <style>
                       <class name="dim-label" />
                     </style>
diff --git a/panels/network/network-simple.ui b/panels/network/network-simple.ui
index fc46a96af..4d2437e34 100644
--- a/panels/network/network-simple.ui
+++ b/panels/network/network-simple.ui
@@ -25,10 +25,10 @@
               <object class="GtkBox">
                 <property name="visible">True</property>
                 <property name="can_focus">False</property>
-                <property name="margin_top">9</property>
-                <property name="margin_bottom">9</property>
-                <property name="margin_start">20</property>
-                <property name="margin_end">20</property>
+                <property name="margin_top">8</property>
+                <property name="margin_bottom">8</property>
+                <property name="margin_start">12</property>
+                <property name="margin_end">12</property>
                 <property name="spacing">12</property>
                 <child>
                   <object class="GtkLabel" id="label_device">
diff --git a/panels/network/network-vpn.ui b/panels/network/network-vpn.ui
index 71b72224a..1e721e5f2 100644
--- a/panels/network/network-vpn.ui
+++ b/panels/network/network-vpn.ui
@@ -31,10 +31,10 @@
                 <property name="visible">True</property>
                 <property name="can_focus">False</property>
                 <property name="valign">start</property>
-                <property name="margin_top">9</property>
-                <property name="margin_bottom">9</property>
-                <property name="margin_start">20</property>
-                <property name="margin_end">20</property>
+                <property name="margin_top">8</property>
+                <property name="margin_bottom">8</property>
+                <property name="margin_start">12</property>
+                <property name="margin_end">12</property>
                 <property name="spacing">12</property>
                 <child>
                   <object class="GtkLabel" id="label_device">
diff --git a/panels/network/panel-common.c b/panels/network/panel-common.c
index 058a20b30..049188c7b 100644
--- a/panels/network/panel-common.c
+++ b/panels/network/panel-common.c
@@ -25,6 +25,8 @@
 #include <glib.h>
 #include <glib/gi18n.h>
 #include <gtk/gtk.h>
+#define HANDY_USE_UNSTABLE_API
+#include <handy.h>
 #include <NetworkManager.h>
 
 #include "panel-common.h"
@@ -476,6 +478,20 @@ panel_set_device_status (GtkBuilder *builder,
         g_free (status);
 }
 
+void
+panel_set_device_row_status (GtkBuilder  *builder,
+                             const gchar *row_name,
+                             NMDevice    *nm_device,
+                             const gchar *speed)
+{
+        HdyActionRow *row;
+        g_autofree gchar *status = NULL;
+
+        row = HDY_ACTION_ROW (gtk_builder_get_object (builder, row_name));
+        status = device_status_to_localized_string (nm_device, speed);
+        hdy_action_row_set_title (row, status);
+}
+
 gboolean
 panel_set_device_widget_details (GtkBuilder *builder,
                                  const gchar *widget_suffix,
diff --git a/panels/network/panel-common.h b/panels/network/panel-common.h
index 9d9370424..633813ca8 100644
--- a/panels/network/panel-common.h
+++ b/panels/network/panel-common.h
@@ -36,6 +36,10 @@ void             panel_set_device_status                       (GtkBuilder *buil
                                                                 const gchar *label_name,
                                                                 NMDevice *nm_device,
                                                                 const gchar *speed);
+void             panel_set_device_row_status                   (GtkBuilder *builder,
+                                                                const gchar *row_name,
+                                                                NMDevice *nm_device,
+                                                                const gchar *speed);
 gboolean         panel_set_device_widget_details               (GtkBuilder *builder,
                                                                 const gchar *widget_suffix,
                                                                 const gchar *value);


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