[gnome-software] Show a notification in the updates page when the OS is end of life



commit 34a112c38d8f79fe2c8d699a340c84259f5e89f7
Author: Richard Hughes <richard hughsie com>
Date:   Fri May 12 14:17:13 2017 +0100

    Show a notification in the updates page when the OS is end of life

 src/gs-updates-page.c  |   64 ++++++
 src/gs-updates-page.ui |  572 +++++++++++++++++++++++++++---------------------
 src/gtk-style-hc.css   |    6 +
 src/gtk-style.css      |    6 +
 4 files changed, 398 insertions(+), 250 deletions(-)
---
diff --git a/src/gs-updates-page.c b/src/gs-updates-page.c
index f352a1b..f8275b3 100644
--- a/src/gs-updates-page.c
+++ b/src/gs-updates-page.c
@@ -97,6 +97,8 @@ struct _GsUpdatesPage
        GtkWidget               *spinner_updates;
        GtkWidget               *stack_updates;
        GtkWidget               *upgrade_banner;
+       GtkWidget               *box_end_of_life;
+       GtkWidget               *label_end_of_life;
 };
 
 enum {
@@ -559,9 +561,60 @@ gs_updates_page_get_upgrades_cb (GObject *source_object,
 }
 
 static void
+gs_updates_page_get_system_finished_cb (GObject *source_object,
+                                       GAsyncResult *res,
+                                       gpointer user_data)
+{
+       GsPluginLoader *plugin_loader = GS_PLUGIN_LOADER (source_object);
+       GsUpdatesPage *self = GS_UPDATES_PAGE (user_data);
+       g_autoptr(GError) error = NULL;
+       g_autoptr(GsApp) app = NULL;
+       g_autoptr(GString) str = g_string_new (NULL);
+
+       /* get result */
+       if (!gs_plugin_loader_app_refine_finish (plugin_loader, res, &error)) {
+               if (!g_error_matches (error, GS_PLUGIN_ERROR, GS_PLUGIN_ERROR_CANCELLED))
+                       g_warning ("failed to get system: %s", error->message);
+               return;
+       }
+
+       /* show or hide the end of life notification */
+       app = gs_plugin_loader_get_system_app (plugin_loader);
+       if (gs_app_get_state (app) != AS_APP_STATE_UNAVAILABLE) {
+               gtk_widget_set_visible (self->box_end_of_life, FALSE);
+               return;
+       }
+
+       /* construct a sufficiently scary message */
+       if (gs_app_get_name (app) != NULL && gs_app_get_version (app) != NULL) {
+               /* TRANSLATORS:  the first %s is the distro name, e.g. 'Fedora'
+                * and the second %s is the distro version, e.g. '25' */
+               g_string_append_printf (str, _("%s %s is no longer supported."),
+                                       gs_app_get_name (app),
+                                       gs_app_get_version (app));
+       } else {
+               /* TRANSLATORS: OS refers to operating system, e.g. Fedora */
+               g_string_append (str, _("Your OS is no longer supported."));
+       }
+       g_string_append (str, " ");
+
+       /* TRANSLATORS: EOL distros do not get important updates */
+       g_string_append (str, _("This means that it does not receive security updates."));
+       g_string_append (str, " ");
+
+       /* TRANSLATORS: upgrade refers to a major update, e.g. Fedora 25 to 26 */
+       g_string_append (str, _("It is recommended that you upgrade to a more recent version."));
+
+       gtk_label_set_label (GTK_LABEL (self->label_end_of_life), str->str);
+       gtk_widget_set_visible (self->box_end_of_life, TRUE);
+
+}
+
+static void
 gs_updates_page_load (GsUpdatesPage *self)
 {
        guint64 refine_flags;
+       g_autoptr(GsApp) app = NULL;
 
        if (self->action_cnt > 0)
                return;
@@ -579,6 +632,15 @@ gs_updates_page_load (GsUpdatesPage *self)
                                            (GAsyncReadyCallback) gs_updates_page_get_updates_cb,
                                            self);
 
+       /* get the system state */
+       app = gs_plugin_loader_get_system_app (self->plugin_loader);
+       gs_plugin_loader_app_refine_async (self->plugin_loader, app,
+                                          GS_PLUGIN_REFINE_FLAGS_DEFAULT,
+                                          GS_PLUGIN_FAILURE_FLAGS_NONE,
+                                          self->cancellable,
+                                          gs_updates_page_get_system_finished_cb,
+                                          self);
+
        /* don't refresh every each time */
        if ((self->result_flags & GS_UPDATES_PAGE_FLAG_HAS_UPGRADES) == 0) {
                refine_flags |= GS_PLUGIN_REFINE_FLAGS_REQUIRE_UPGRADE_REMOVED;
@@ -1456,6 +1518,8 @@ gs_updates_page_class_init (GsUpdatesPageClass *klass)
        gtk_widget_class_bind_template_child (widget_class, GsUpdatesPage, spinner_updates);
        gtk_widget_class_bind_template_child (widget_class, GsUpdatesPage, stack_updates);
        gtk_widget_class_bind_template_child (widget_class, GsUpdatesPage, upgrade_banner);
+       gtk_widget_class_bind_template_child (widget_class, GsUpdatesPage, box_end_of_life);
+       gtk_widget_class_bind_template_child (widget_class, GsUpdatesPage, label_end_of_life);
 }
 
 static void
diff --git a/src/gs-updates-page.ui b/src/gs-updates-page.ui
index 46b944b..dc4a065 100644
--- a/src/gs-updates-page.ui
+++ b/src/gs-updates-page.ui
@@ -8,87 +8,159 @@
       </object>
     </child>
     <child>
-      <object class="GtkStack" id="stack_updates">
+      <object class="GtkBox">
         <property name="visible">True</property>
+        <property name="orientation">vertical</property>
         <child>
-          <object class="GtkBox" id="updates_spinner_box">
-            <property name="visible">True</property>
-            <property name="orientation">vertical</property>
-            <property name="spacing">12</property>
-            <property name="halign">center</property>
-            <property name="valign">center</property>
-            <property name="hexpand">True</property>
-            <property name="vexpand">True</property>
+          <object class="GtkBox" id="box_end_of_life">
+            <property name="can_focus">False</property>
+            <property name="border_width">0</property>
+            <property name="orientation">horizontal</property>
+            <property name="spacing">18</property>
+            <property name="margin_bottom">18</property>
             <style>
-              <class name="dim-label"/>
+              <class name="eol-box"/>
             </style>
             <child>
-              <object class="GtkSpinner" id="spinner_updates">
+              <object class="GtkImage">
                 <property name="visible">True</property>
-                <property name="width_request">32</property>
-                <property name="height_request">32</property>
-                <property name="halign">center</property>
-                <property name="valign">center</property>
-                <property name="hexpand">True</property>
-                <property name="vexpand">True</property>
+                <property name="can_focus">False</property>
+                <property name="pixel_size">16</property>
+                <property name="icon_name">dialog-warning-symbolic</property>
+                <property name="margin_top">18</property>
+                <property name="margin_left">18</property>
+                <property name="valign">start</property>
               </object>
             </child>
             <child>
-              <object class="GtkLabel" id="label_updates_spinner">
-                <property name="visible">True</property>
+              <object class="GtkBox">
                 <property name="can_focus">False</property>
-                <property name="label"/>
-                <property name="justify">center</property>
-                <attributes>
-                  <attribute name="scale" value="1.4"/>
-                </attributes>
+                <property name="orientation">vertical</property>
+                <property name="spacing">6</property>
+                <property name="visible">True</property>
+                <child>
+                  <object class="GtkLabel">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="margin_right">18</property>
+                    <property name="margin_top">18</property>
+                    <property name="label" translatable="yes">Operating System Updates Unavailable</property>
+                    <property name="xalign">0</property>
+                    <attributes>
+                      <attribute name="weight" value="bold"/>
+                    </attributes>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">True</property>
+                    <property name="position">0</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkLabel" id="label_end_of_life">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="margin_right">18</property>
+                    <property name="margin_bottom">18</property>
+                    <property name="label">Your OS is no longer supported. This means that it does not 
receive security updates. It is recommended that you upgrade to a more recent version.</property>
+                    <property name="wrap">True</property>
+                    <property name="width_chars">80</property>
+                    <property name="xalign">0</property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">True</property>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
               </object>
             </child>
           </object>
-          <packing>
-            <property name="name">spinner</property>
-          </packing>
         </child>
         <child>
-          <object class="GtkScrolledWindow" id="scrolledwindow_updates">
+          <object class="GtkStack" id="stack_updates">
             <property name="visible">True</property>
-            <property name="can_focus">True</property>
-            <property name="hscrollbar_policy">never</property>
-            <property name="vscrollbar_policy">automatic</property>
-            <property name="shadow_type">none</property>
             <child>
-              <object class="GsFixedSizeBin" id="gs_fixed_bin">
+              <object class="GtkBox" id="updates_spinner_box">
                 <property name="visible">True</property>
-                <property name="preferred-width">860</property>
+                <property name="orientation">vertical</property>
+                <property name="spacing">12</property>
+                <property name="halign">center</property>
+                <property name="valign">center</property>
+                <property name="hexpand">True</property>
+                <property name="vexpand">True</property>
+                <style>
+                  <class name="dim-label"/>
+                </style>
                 <child>
-                  <object class="GtkBox" id="list_box_updates_box">
+                  <object class="GtkSpinner" id="spinner_updates">
                     <property name="visible">True</property>
-                    <property name="orientation">vertical</property>
-                    <style>
-                      <class name="app-list"/>
-                    </style>
-                    <child>
-                      <object class="GsUpgradeBanner" id="upgrade_banner">
-                        <property name="visible">False</property>
-                        <property name="hexpand">True</property>
-                        <property name="vexpand">False</property>
-                      </object>
-                    </child>
+                    <property name="width_request">32</property>
+                    <property name="height_request">32</property>
+                    <property name="halign">center</property>
+                    <property name="valign">center</property>
+                    <property name="hexpand">True</property>
+                    <property name="vexpand">True</property>
+                  </object>
+                </child>
+                <child>
+                  <object class="GtkLabel" id="label_updates_spinner">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="label"/>
+                    <property name="justify">center</property>
+                    <attributes>
+                      <attribute name="scale" value="1.4"/>
+                    </attributes>
+                  </object>
+                </child>
+              </object>
+              <packing>
+                <property name="name">spinner</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkScrolledWindow" id="scrolledwindow_updates">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="hscrollbar_policy">never</property>
+                <property name="vscrollbar_policy">automatic</property>
+                <property name="shadow_type">none</property>
+                <child>
+                  <object class="GsFixedSizeBin" id="gs_fixed_bin">
+                    <property name="visible">True</property>
+                    <property name="preferred-width">860</property>
                     <child>
-                      <object class="GtkBox" id="updates_box">
+                      <object class="GtkBox" id="list_box_updates_box">
                         <property name="visible">True</property>
                         <property name="orientation">vertical</property>
+                        <style>
+                          <class name="app-list"/>
+                        </style>
                         <child>
-                          <object class="GsUpdateList" id="list_box_updates">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="selection_mode">none</property>
+                          <object class="GsUpgradeBanner" id="upgrade_banner">
+                            <property name="visible">False</property>
+                            <property name="hexpand">True</property>
+                            <property name="vexpand">False</property>
                           </object>
                         </child>
                         <child>
-                          <object class="GtkSeparator" id="list_box_updates_separator">
+                          <object class="GtkBox" id="updates_box">
                             <property name="visible">True</property>
-                            <property name="orientation">horizontal</property>
+                            <property name="orientation">vertical</property>
+                            <child>
+                              <object class="GsUpdateList" id="list_box_updates">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="selection_mode">none</property>
+                              </object>
+                            </child>
+                            <child>
+                              <object class="GtkSeparator" id="list_box_updates_separator">
+                                <property name="visible">True</property>
+                                <property name="orientation">horizontal</property>
+                              </object>
+                            </child>
                           </object>
                         </child>
                       </object>
@@ -96,255 +168,255 @@
                   </object>
                 </child>
               </object>
+              <packing>
+                <property name="name">view</property>
+              </packing>
             </child>
-          </object>
-          <packing>
-            <property name="name">view</property>
-          </packing>
-        </child>
-        <child>
-          <object class="GtkBox">
-            <property name="visible">True</property>
-            <property name="orientation">vertical</property>
-            <property name="spacing">48</property>
-            <property name="hexpand">True</property>
-            <property name="vexpand">True</property>
             <child>
-              <object class="GsUpgradeBanner" id="upgrade_banner_uptodate">
-                <property name="visible">False</property>
+              <object class="GtkBox">
+                <property name="visible">True</property>
+                <property name="orientation">vertical</property>
+                <property name="spacing">48</property>
                 <property name="hexpand">True</property>
                 <property name="vexpand">True</property>
+                <child>
+                  <object class="GsUpgradeBanner" id="upgrade_banner_uptodate">
+                    <property name="visible">False</property>
+                    <property name="hexpand">True</property>
+                    <property name="vexpand">True</property>
+                  </object>
+                </child>
+                <child type="center">
+                  <object class="GtkBox" id="updates_uptodate_centerbox">
+                    <property name="visible">True</property>
+                    <property name="orientation">vertical</property>
+                    <property name="spacing">12</property>
+                    <style>
+                      <class name="dim-label"/>
+                    </style>
+                    <child>
+                      <object class="GtkImage" id="image_updates">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="pixel_size">128</property>
+                        <property name="icon_name">object-select-symbolic</property>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="GtkLabel" id="label10">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="label" translatable="yes">Software is up to date</property>
+                        <attributes>
+                          <attribute name="scale" value="1.4"/>
+                        </attributes>
+                      </object>
+                    </child>
+                  </object>
+                </child>
+                <child>
+                  <object class="GtkLabel" id="label_updates_last_checked">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="margin_bottom">32</property>
+                    <property name="label">Last checked: HH:MM</property>
+                    <style>
+                      <class name="dim-label"/>
+                    </style>
+                  </object>
+                  <packing>
+                    <property name="pack_type">end</property>
+                  </packing>
+                </child>
               </object>
+              <packing>
+                <property name="name">uptodate</property>
+              </packing>
             </child>
-            <child type="center">
-              <object class="GtkBox" id="updates_uptodate_centerbox">
+            <child>
+              <object class="GtkBox" id="updates_mobile_box">
                 <property name="visible">True</property>
                 <property name="orientation">vertical</property>
                 <property name="spacing">12</property>
+                <property name="halign">center</property>
+                <property name="valign">center</property>
+                <property name="hexpand">True</property>
+                <property name="vexpand">True</property>
                 <style>
                   <class name="dim-label"/>
                 </style>
                 <child>
-                  <object class="GtkImage" id="image_updates">
+                  <object class="GtkImage" id="image_updates_mobile">
                     <property name="visible">True</property>
                     <property name="can_focus">False</property>
                     <property name="pixel_size">128</property>
-                    <property name="icon_name">object-select-symbolic</property>
+                    <property name="icon_name">dialog-warning-symbolic</property>
                   </object>
                 </child>
                 <child>
-                  <object class="GtkLabel" id="label10">
+                  <object class="GtkLabel" id="label_updates_mobile">
                     <property name="visible">True</property>
                     <property name="can_focus">False</property>
-                    <property name="label" translatable="yes">Software is up to date</property>
+                    <property name="label" translatable="yes">Checking for updates when using mobile 
broadband could cause you to incur charges</property>
+                    <property name="wrap">True</property>
+                    <property name="halign">center</property>
+                    <property name="max-width-chars">40</property>
+                    <property name="justify">center</property>
                     <attributes>
                       <attribute name="scale" value="1.4"/>
                     </attributes>
                   </object>
                 </child>
+                <child>
+                  <object class="GtkButton" id="button_updates_mobile">
+                    <property name="label" translatable="yes">_Check Anyway</property>
+                    <property name="width_request">150</property>
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="receives_default">False</property>
+                    <property name="use_underline">True</property>
+                    <property name="hexpand">False</property>
+                    <property name="halign">center</property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">False</property>
+                  </packing>
+                </child>
               </object>
+              <packing>
+                <property name="name">mobile</property>
+              </packing>
             </child>
             <child>
-              <object class="GtkLabel" id="label_updates_last_checked">
+              <object class="GtkBox" id="updates_offline_box">
                 <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="margin_bottom">32</property>
-                <property name="label">Last checked: HH:MM</property>
+                <property name="orientation">vertical</property>
+                <property name="spacing">12</property>
+                <property name="halign">center</property>
+                <property name="valign">center</property>
+                <property name="hexpand">True</property>
+                <property name="vexpand">True</property>
                 <style>
                   <class name="dim-label"/>
                 </style>
+                <child>
+                  <object class="GtkImage" id="image_updates_offline">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="pixel_size">128</property>
+                    <property name="icon_name">network-offline-symbolic</property>
+                  </object>
+                </child>
+                <child>
+                  <object class="GtkLabel" id="label_updates_offline">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="label" translatable="yes">Go online to check for updates</property>
+                    <property name="wrap">True</property>
+                    <property name="halign">center</property>
+                    <property name="justify">center</property>
+                    <attributes>
+                      <attribute name="scale" value="1.4"/>
+                    </attributes>
+                  </object>
+                </child>
+                <child>
+                  <object class="GtkButton" id="button_updates_offline">
+                    <property name="label" translatable="yes">_Network Settings</property>
+                    <property name="width_request">150</property>
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="receives_default">False</property>
+                    <property name="use_underline">True</property>
+                    <property name="hexpand">False</property>
+                    <property name="halign">center</property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">False</property>
+                  </packing>
+                </child>
               </object>
               <packing>
-                <property name="pack_type">end</property>
+                <property name="name">offline</property>
               </packing>
             </child>
-          </object>
-          <packing>
-            <property name="name">uptodate</property>
-          </packing>
-        </child>
-        <child>
-          <object class="GtkBox" id="updates_mobile_box">
-            <property name="visible">True</property>
-            <property name="orientation">vertical</property>
-            <property name="spacing">12</property>
-            <property name="halign">center</property>
-            <property name="valign">center</property>
-            <property name="hexpand">True</property>
-            <property name="vexpand">True</property>
-            <style>
-              <class name="dim-label"/>
-            </style>
             <child>
-              <object class="GtkImage" id="image_updates_mobile">
+              <object class="GtkBox" id="updates_failed_box">
                 <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="pixel_size">128</property>
-                <property name="icon_name">dialog-warning-symbolic</property>
-              </object>
-            </child>
-            <child>
-              <object class="GtkLabel" id="label_updates_mobile">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="label" translatable="yes">Checking for updates when using mobile broadband 
could cause you to incur charges</property>
-                <property name="wrap">True</property>
-                <property name="halign">center</property>
-                <property name="max-width-chars">40</property>
-                <property name="justify">center</property>
-                <attributes>
-                  <attribute name="scale" value="1.4"/>
-                </attributes>
-              </object>
-            </child>
-            <child>
-              <object class="GtkButton" id="button_updates_mobile">
-                <property name="label" translatable="yes">_Check Anyway</property>
-                <property name="width_request">150</property>
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">False</property>
-                <property name="use_underline">True</property>
-                <property name="hexpand">False</property>
+                <property name="orientation">vertical</property>
+                <property name="spacing">12</property>
                 <property name="halign">center</property>
+                <property name="valign">center</property>
+                <property name="hexpand">True</property>
+                <property name="vexpand">True</property>
+                <style>
+                  <class name="dim-label"/>
+                </style>
+                <child>
+                  <object class="GtkImage" id="image_updates_failed">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="pixel_size">128</property>
+                    <property name="icon_name">action-unavailable-symbolic</property>
+                  </object>
+                </child>
+                <child>
+                  <object class="GtkLabel" id="label_updates_failed">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="wrap">True</property>
+                    <property name="max-width-chars">60</property>
+                    <property name="label" translatable="No">Failed to get updates</property>
+                    <attributes>
+                      <attribute name="scale" value="1.4"/>
+                    </attributes>
+                  </object>
+                </child>
               </object>
               <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
+                <property name="name">failed</property>
               </packing>
             </child>
-          </object>
-          <packing>
-            <property name="name">mobile</property>
-          </packing>
-        </child>
-        <child>
-          <object class="GtkBox" id="updates_offline_box">
-            <property name="visible">True</property>
-            <property name="orientation">vertical</property>
-            <property name="spacing">12</property>
-            <property name="halign">center</property>
-            <property name="valign">center</property>
-            <property name="hexpand">True</property>
-            <property name="vexpand">True</property>
-            <style>
-              <class name="dim-label"/>
-            </style>
             <child>
-              <object class="GtkImage" id="image_updates_offline">
+              <object class="GtkBox">
                 <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="pixel_size">128</property>
-                <property name="icon_name">network-offline-symbolic</property>
-              </object>
-            </child>
-            <child>
-              <object class="GtkLabel" id="label_updates_offline">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="label" translatable="yes">Go online to check for updates</property>
-                <property name="wrap">True</property>
-                <property name="halign">center</property>
-                <property name="justify">center</property>
-                <attributes>
-                  <attribute name="scale" value="1.4"/>
-                </attributes>
-              </object>
-            </child>
-            <child>
-              <object class="GtkButton" id="button_updates_offline">
-                <property name="label" translatable="yes">_Network Settings</property>
-                <property name="width_request">150</property>
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">False</property>
-                <property name="use_underline">True</property>
-                <property name="hexpand">False</property>
+                <property name="orientation">vertical</property>
+                <property name="spacing">12</property>
                 <property name="halign">center</property>
+                <property name="valign">center</property>
+                <property name="hexpand">True</property>
+                <property name="vexpand">True</property>
+                <style>
+                  <class name="dim-label"/>
+                </style>
+                <child>
+                  <object class="GtkImage">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="pixel_size">128</property>
+                    <property name="icon_name">action-unavailable-symbolic</property>
+                  </object>
+                </child>
+                <child>
+                  <object class="GtkLabel">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="wrap">True</property>
+                    <property name="max-width-chars">60</property>
+                    <property name="label" translatable="yes">Updates are automatically managed</property>
+                    <attributes>
+                      <attribute name="scale" value="1.4"/>
+                    </attributes>
+                  </object>
+                </child>
               </object>
               <packing>
-                <property name="expand">False</property>
-                <property name="fill">False</property>
+                <property name="name">managed</property>
               </packing>
             </child>
           </object>
-          <packing>
-            <property name="name">offline</property>
-          </packing>
-        </child>
-        <child>
-          <object class="GtkBox" id="updates_failed_box">
-            <property name="visible">True</property>
-            <property name="orientation">vertical</property>
-            <property name="spacing">12</property>
-            <property name="halign">center</property>
-            <property name="valign">center</property>
-            <property name="hexpand">True</property>
-            <property name="vexpand">True</property>
-            <style>
-              <class name="dim-label"/>
-            </style>
-            <child>
-              <object class="GtkImage" id="image_updates_failed">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="pixel_size">128</property>
-                <property name="icon_name">action-unavailable-symbolic</property>
-              </object>
-            </child>
-            <child>
-              <object class="GtkLabel" id="label_updates_failed">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="wrap">True</property>
-                <property name="max-width-chars">60</property>
-                <property name="label" translatable="No">Failed to get updates</property>
-                <attributes>
-                  <attribute name="scale" value="1.4"/>
-                </attributes>
-              </object>
-            </child>
-          </object>
-          <packing>
-            <property name="name">failed</property>
-          </packing>
-        </child>
-        <child>
-          <object class="GtkBox">
-            <property name="visible">True</property>
-            <property name="orientation">vertical</property>
-            <property name="spacing">12</property>
-            <property name="halign">center</property>
-            <property name="valign">center</property>
-            <property name="hexpand">True</property>
-            <property name="vexpand">True</property>
-            <style>
-              <class name="dim-label"/>
-            </style>
-            <child>
-              <object class="GtkImage">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="pixel_size">128</property>
-                <property name="icon_name">action-unavailable-symbolic</property>
-              </object>
-            </child>
-            <child>
-              <object class="GtkLabel">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="wrap">True</property>
-                <property name="max-width-chars">60</property>
-                <property name="label" translatable="yes">Updates are automatically managed</property>
-                <attributes>
-                  <attribute name="scale" value="1.4"/>
-                </attributes>
-              </object>
-            </child>
-          </object>
-          <packing>
-            <property name="name">managed</property>
-          </packing>
         </child>
       </object>
     </child>
diff --git a/src/gtk-style-hc.css b/src/gtk-style-hc.css
index 3e1af75..31b4517 100644
--- a/src/gtk-style-hc.css
+++ b/src/gtk-style-hc.css
@@ -223,3 +223,9 @@ button.star, .button.star {
        font-size: 90%;
        padding: 16px;
 }
+
+.eol-box {
+       background-color: @theme_selected_bg_color;
+       border: 1px solid shade(@theme_selected_bg_color, 0.8);
+       color: @theme_selected_fg_color;
+}
diff --git a/src/gtk-style.css b/src/gtk-style.css
index ee92d78..50386f4 100644
--- a/src/gtk-style.css
+++ b/src/gtk-style.css
@@ -408,3 +408,9 @@ flowboxchild {
 .upgrade-progressbar {
        box-shadow: none
 }
+
+.eol-box {
+       background-color: @theme_selected_bg_color;
+       border: 1px solid shade(@theme_selected_bg_color, 0.8);
+       color: @theme_selected_fg_color;
+}



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