changeset 31620:6dfaaf8ecf3b

use gui_settings to store icon fallbacks * gui-preferences-global.h (global_icon_fallbacks): New gui_pref. * resource-manager.cc, resource-manager.h (resource_manager::m_icon_fallbacks): Delete member variable. (resource_manager::config_icon_theme, resource_manager::icon): Use gui_settings to store icon fallback themes.
author John W. Eaton <jwe@octave.org>
date Fri, 02 Dec 2022 18:31:30 -0500
parents ad014fc78bd6
children 0645ea65ca6b
files libgui/src/gui-preferences-global.h libgui/src/resource-manager.cc libgui/src/resource-manager.h
diffstat 3 files changed, 20 insertions(+), 13 deletions(-) [+]
line wrap: on
line diff
--- a/libgui/src/gui-preferences-global.h	Fri Dec 02 14:23:53 2022 -0500
+++ b/libgui/src/gui-preferences-global.h	Fri Dec 02 18:31:30 2022 -0500
@@ -118,6 +118,9 @@
 };
 
 const gui_pref
+global_icon_fallbacks ("icon_fallbacks", QVariant (QStringList ()));
+
+const gui_pref
 global_status_bar ("show_status_bar", QVariant (true));
 
 
--- a/libgui/src/resource-manager.cc	Fri Dec 02 14:23:53 2022 -0500
+++ b/libgui/src/resource-manager.cc	Fri Dec 02 18:31:30 2022 -0500
@@ -64,8 +64,7 @@
 namespace octave
 {
   resource_manager::resource_manager (void)
-    : m_settings_directory (), m_settings_file (),
-      m_temporary_files (), m_icon_fallbacks ()
+    : m_settings_directory (), m_settings_file (), m_temporary_files ()
   {
     // Location, name, and format of settings file determined by
     // settings in qt_application class construtor.
@@ -142,8 +141,6 @@
 
   void resource_manager::config_icon_theme (void)
   {
-    m_icon_fallbacks.clear ();
-
     int theme = global_icon_theme_index.def.toInt ();
 
     gui_settings settings;
@@ -162,22 +159,26 @@
 
    QIcon::setThemeName (global_all_icon_themes.at (theme));
 
+   QStringList icon_fallbacks;
+
    // set the required fallback search paths
    switch (theme)
     {
       case ICON_THEME_SYSTEM:
-        m_icon_fallbacks << global_icon_paths.at (ICON_THEME_OCTAVE);
-        m_icon_fallbacks << global_icon_paths.at (ICON_THEME_TANGO);
+        icon_fallbacks << global_icon_paths.at (ICON_THEME_OCTAVE);
+        icon_fallbacks << global_icon_paths.at (ICON_THEME_TANGO);
         break;
       case ICON_THEME_TANGO:
-        m_icon_fallbacks << global_icon_paths.at (ICON_THEME_OCTAVE);
+        icon_fallbacks << global_icon_paths.at (ICON_THEME_OCTAVE);
         break;
       case ICON_THEME_OCTAVE:
-        m_icon_fallbacks << global_icon_paths.at (ICON_THEME_TANGO);
+        icon_fallbacks << global_icon_paths.at (ICON_THEME_TANGO);
         break;
     }
 
-    m_icon_fallbacks << global_icon_paths.at (ICON_THEME_CURSORS);
+    icon_fallbacks << global_icon_paths.at (ICON_THEME_CURSORS);
+
+    settings.setValue (global_icon_fallbacks.key, icon_fallbacks);
   }
 
   QString resource_manager::get_settings_directory (void)
@@ -578,9 +579,14 @@
     else if ((! icon_alt_name.isEmpty ()) && QIcon::hasThemeIcon (icon_alt_name))
       return QIcon (QIcon::fromTheme (icon_alt_name));
 
-    for (int i = 0; i < m_icon_fallbacks.length (); i++ )
+    gui_settings settings;
+
+    QStringList icon_fallbacks
+      = settings.value (global_icon_fallbacks.key).toStringList ();
+
+    for (int i = 0; i < icon_fallbacks.length (); i++ )
       {
-        QString icon_file (m_icon_fallbacks.at (i) + icon_name + ".png");
+        QString icon_file (icon_fallbacks.at (i) + icon_name + ".png");
         if (QFile (icon_file).exists ())
           return QIcon (icon_file);
       }
--- a/libgui/src/resource-manager.h	Fri Dec 02 14:23:53 2022 -0500
+++ b/libgui/src/resource-manager.h	Fri Dec 02 18:31:30 2022 -0500
@@ -113,8 +113,6 @@
     QString m_settings_file;
 
     QList<QTemporaryFile *> m_temporary_files;
-
-    QStringList m_icon_fallbacks;
   };
 }