[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