[Xfce4-commits] [panel-plugins/xfce4-hardware-monitor-plugin] 08/18: Standardise how enums are loaded/treated

noreply at xfce.org noreply at xfce.org
Tue Jun 28 21:33:30 CEST 2016


This is an automated email from the git hooks/post-receive script.

omegaphil pushed a commit to branch omegaphil/graph-disk-io
in repository panel-plugins/xfce4-hardware-monitor-plugin.

commit b35a71bc1a58abba85e1594fd942ca3f8d78553b
Author: OmegaPhil <OmegaPhil at startmail.com>
Date:   Mon Jun 20 19:30:01 2016 +0100

    Standardise how enums are loaded/treated
---
 src/applet.cpp                | 11 ++++---
 src/choose-monitor-window.cpp | 77 ++++++++++++++++++++++++++++++++++---------
 src/monitor-impls.cpp         | 52 +++++++++++++++++++----------
 3 files changed, 103 insertions(+), 37 deletions(-)

diff --git a/src/applet.cpp b/src/applet.cpp
index 6032c60..78be4ae 100644
--- a/src/applet.cpp
+++ b/src/applet.cpp
@@ -207,11 +207,12 @@ Applet::Applet(XfcePanelPlugin *plugin)
     viewer_text_overlay_color = xfce_rc_read_int_entry(settings_ro,
       "viewer_text_overlay_color", viewer_text_overlay_color);
 
-    // Extra care needed for this since enums don't enforce a range...
-    int text_overlay_position = xfce_rc_read_int_entry(settings_ro,
-      "viewer_text_overlay_position", int(CurveView::top_left));
-    set_viewer_text_overlay_position(
-          static_cast<CurveView::TextOverlayPosition>(text_overlay_position));
+    // Enum is validated in set_viewer_text_overlay_position
+    CurveView::TextOverlayPosition text_overlay_position =
+        static_cast<CurveView::TextOverlayPosition>(
+          xfce_rc_read_int_entry(settings_ro, "viewer_text_overlay_position",
+                                 CurveView::top_left));
+    set_viewer_text_overlay_position(text_overlay_position);
   }
   
   // Loading icon
diff --git a/src/choose-monitor-window.cpp b/src/choose-monitor-window.cpp
index 064c357..0ba794e 100644
--- a/src/choose-monitor-window.cpp
+++ b/src/choose-monitor-window.cpp
@@ -464,10 +464,20 @@ Monitor *ChooseMonitorWindow::run(const Glib::ustring &mon_dir)
         if (!device_found)
           disk_stats_device_combobox->get_entry()->set_text(device_name);
 
-        // Selecting the correct statistic
-        int stat = xfce_rc_read_int_entry(settings_ro, "disk_stats_stat", 0);
+        // Validating statistic
+        DiskStatsMonitor::Stat stat = static_cast<DiskStatsMonitor::Stat>(
+              xfce_rc_read_int_entry(settings_ro, "disk_stats_stat",
+                                     DiskStatsMonitor::num_reads_completed));
         if (stat < 0 || stat >= DiskStatsMonitor::NUM_STATS)
-          stat = 0;
+        {
+          std::cerr << Glib::ustring::compose(
+                         _("Disk Stats monitor is being loaded with an invalid "
+                           "statistic (%1) - resetting to number of reads "
+                           "completed!\n"), stat);
+          stat = DiskStatsMonitor::num_reads_completed;
+        }
+
+        // Selecting the correct statistic
         disk_stats_stat_combobox->set_active(stat);
       }
 
@@ -483,9 +493,22 @@ Monitor *ChooseMonitorWindow::run(const Glib::ustring &mon_dir)
       {
         /* By the time this code is reached, deprecated configuration will be
          * updated so no need to convert stuff etc */
-        NetworkLoadMonitor::InterfaceType interface_type = static_cast<NetworkLoadMonitor::InterfaceType>(xfce_rc_read_int_entry(
-                    settings_ro, "interface_type",
+        NetworkLoadMonitor::InterfaceType interface_type =
+            static_cast<NetworkLoadMonitor::InterfaceType>(
+              xfce_rc_read_int_entry(settings_ro, "interface_type",
                     NetworkLoadMonitor::ethernet_first));
+
+        // Validating interface type
+        if (interface_type < NetworkLoadMonitor::ethernet_first ||
+            interface_type >= NetworkLoadMonitor::NUM_INTERFACE_TYPES)
+        {
+          std::cerr << Glib::ustring::compose(
+                         _("Network monitor is being loaded with an invalid "
+                           "interface type (%1) - resetting to the first ethernet"
+                           " connection!\n"), interface_type);
+          interface_type = NetworkLoadMonitor::ethernet_first;
+        }
+
         switch (interface_type)
         {
           case NetworkLoadMonitor::ethernet_first:
@@ -525,15 +548,38 @@ Monitor *ChooseMonitorWindow::run(const Glib::ustring &mon_dir)
             break;
         }
 
-        int direction = xfce_rc_read_int_entry(settings_ro,
-          "interface_direction", NetworkLoadMonitor::all_data);
-
-        if (direction == NetworkLoadMonitor::incoming_data)
-          network_direction_combobox->set_active(1);
-        else if (direction == NetworkLoadMonitor::outgoing_data)
-          network_direction_combobox->set_active(2);
-        else if (direction == NetworkLoadMonitor::all_data)
-          network_direction_combobox->set_active(0);
+        NetworkLoadMonitor::Direction direction =
+            static_cast<NetworkLoadMonitor::Direction>(
+              xfce_rc_read_int_entry(settings_ro, "interface_direction",
+                                     NetworkLoadMonitor::all_data));
+
+        // Validating direction
+        if (direction < NetworkLoadMonitor::all_data ||
+            direction >= NetworkLoadMonitor::NUM_DIRECTIONS)
+        {
+          std::cerr << Glib::ustring::compose(
+                         _("Network monitor for interface '%1' is being loaded "
+                           "with an invalid direction (%2) - resetting to all "
+                           "data!\n"),
+            NetworkLoadMonitor::interface_type_to_string(interface_type, false),
+                         direction);
+          direction = NetworkLoadMonitor::all_data;
+        }
+
+        switch (direction)
+        {
+          case NetworkLoadMonitor::all_data:
+            network_direction_combobox->set_active(0);
+            break;
+
+          case NetworkLoadMonitor::incoming_data:
+            network_direction_combobox->set_active(1);
+            break;
+
+          case NetworkLoadMonitor::outgoing_data:
+            network_direction_combobox->set_active(2);
+            break;
+        }
       }
 
       // Fill in temperature info
@@ -737,7 +783,8 @@ Monitor *ChooseMonitorWindow::run(const Glib::ustring &mon_dir)
       else if (network_load_radiobutton->get_active())
       {
         int selected_type = network_type_combobox->get_active_row_number();
-        NetworkLoadMonitor::InterfaceType interface_type = static_cast<NetworkLoadMonitor::InterfaceType>(selected_type);
+        NetworkLoadMonitor::InterfaceType interface_type =
+            static_cast<NetworkLoadMonitor::InterfaceType>(selected_type);
 
         /* Making sure that an interface was selected (traffic direction doesn't
          * need validation since it defaults to all) */
diff --git a/src/monitor-impls.cpp b/src/monitor-impls.cpp
index 1059bd2..3ddf7d8 100644
--- a/src/monitor-impls.cpp
+++ b/src/monitor-impls.cpp
@@ -126,7 +126,7 @@ load_monitors(XfceRc *settings_ro, XfcePanelPlugin *panel_plugin)
       }
       else if (type == "network_load")
       {
-        NetworkLoadMonitor::InterfaceType inter_type(NetworkLoadMonitor::ethernet_first);
+        NetworkLoadMonitor::InterfaceType inter_type;
 
         /* Deprecated config check (<=v1.4.6) - is the interface defined by a
          * count? */
@@ -180,27 +180,33 @@ load_monitors(XfceRc *settings_ro, XfcePanelPlugin *panel_plugin)
         else
         {
             // Up to date configuration - interface_type will be available
-            inter_type = static_cast<NetworkLoadMonitor::InterfaceType>(xfce_rc_read_int_entry(settings_ro,                                                                                                                                       "interface_type",
-                                               NetworkLoadMonitor::ethernet_first));
+            inter_type =
+                static_cast<NetworkLoadMonitor::InterfaceType>(
+                  xfce_rc_read_int_entry(settings_ro, "interface_type",
+                                         NetworkLoadMonitor::ethernet_first));
         }
 
         // Fetching interface 'direction' setting
-        int inter_direction = xfce_rc_read_int_entry(settings_ro,
-          "interface_direction", NetworkLoadMonitor::all_data);
-
-        // Converting direction setting into dedicated type
-        // TODO: I think I need to standardise my enum loading/dealing with code
-        NetworkLoadMonitor::Direction dir;
-
-        if (inter_direction == NetworkLoadMonitor::incoming_data)
-          dir = NetworkLoadMonitor::incoming_data;
-        else if (inter_direction == NetworkLoadMonitor::outgoing_data)
-          dir = NetworkLoadMonitor::outgoing_data;
-        else
-          dir = NetworkLoadMonitor::all_data;
+        NetworkLoadMonitor::Direction inter_direction =
+            static_cast<NetworkLoadMonitor::Direction>(
+              xfce_rc_read_int_entry(settings_ro, "interface_direction",
+                                     NetworkLoadMonitor::all_data));
+
+        // Validating direction
+        if (inter_direction < NetworkLoadMonitor::all_data ||
+            inter_direction >= NetworkLoadMonitor::NUM_DIRECTIONS)
+        {
+          std::cerr << Glib::ustring::compose(
+                         _("Network monitor for interface '%1' is being loaded "
+                           "with an invalid direction (%2) - resetting to all "
+                           "data!\n"),
+            NetworkLoadMonitor::interface_type_to_string(inter_type, false),
+                         inter_direction);
+          inter_direction = NetworkLoadMonitor::all_data;
+        }
 
         // Creating network load monitor
-        monitors.push_back(new NetworkLoadMonitor(inter_type, dir,
+        monitors.push_back(new NetworkLoadMonitor(inter_type, inter_direction,
                                                   tag, panel_plugin));
       }
       else if (type == "temperature")
@@ -243,6 +249,18 @@ load_monitors(XfceRc *settings_ro, XfcePanelPlugin *panel_plugin)
               xfce_rc_read_int_entry(settings_ro, "value_change_direction",
                                      GenericMonitor::positive));
 
+        // Validating direction
+        if (dir < GenericMonitor::positive ||
+            dir >= GenericMonitor::NUM_DIRECTIONS)
+        {
+          std::cerr << Glib::ustring::compose(
+                         _("Generic Monitor %1 associated with file '%2' is "
+                           "being loaded with an invalid value change direction "
+                           "(%3) - resetting to positive!\n"),
+                         data_source_name_long, file_path, dir);
+          dir = GenericMonitor::positive;
+        }
+
         // Creating generic monitor
         monitors.push_back(new GenericMonitor(file_path, value_from_contents,
                                               regex_string, follow_change, dir,

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the Xfce4-commits mailing list