diff libgui/src/settings-dialog.cc @ 27620:45bb5bbaf291

don't use singleton pattern for resource manager in GUI Move ownership of the resource_manager object to the base_qobject class. Store reference to resource_manager object as a member variable in most objects that need to access it. Eliminate static member functions in resource_managar class. Provide a get_resource_manager method in the base_qboject class and a global __get_resource_manager__ function for those instances where we can't easily provide local access to the resource_manager object. There are many changes to many files, but most are straightforward.
author John W. Eaton <jwe@octave.org>
date Fri, 01 Nov 2019 18:16:49 -0400
parents deb8877f2c34
children 8b6e928e0705
line wrap: on
line diff
--- a/libgui/src/settings-dialog.cc	Sat Nov 02 15:24:14 2019 -0400
+++ b/libgui/src/settings-dialog.cc	Fri Nov 01 18:16:49 2019 -0400
@@ -88,12 +88,13 @@
 
 #endif
 
-  settings_dialog::settings_dialog (QWidget *p, const QString& desired_tab)
-    : QDialog (p), Ui::settings_dialog ()
+  settings_dialog::settings_dialog (QWidget *p, resource_manager& rmgr,
+                                    const QString& desired_tab)
+    : QDialog (p), Ui::settings_dialog (), m_resource_manager (rmgr)
   {
     setupUi (this);
 
-    gui_settings *settings = resource_manager::get_settings ();
+    gui_settings *settings = m_resource_manager.get_settings ();
 
     if (! settings)
       {
@@ -107,7 +108,7 @@
       }
 
     // look for available language files and the actual settings
-    QString qm_dir_name = resource_manager::get_gui_translation_dir ();
+    QString qm_dir_name = m_resource_manager.get_gui_translation_dir ();
     QDir qm_dir (qm_dir_name);
     QFileInfoList qm_files = qm_dir.entryInfoList (QStringList ("*.qm"), QDir::Files | QDir::Readable, QDir::Name);
 
@@ -251,7 +252,7 @@
     editor_showLineNumbers->setChecked (settings->value ("editor/showLineNumbers", true).toBool ());
     editor_linenr_size->setValue (settings->value ("editor/line_numbers_size", 0).toInt ());
 
-    resource_manager::combo_encoding (editor_combo_encoding);
+    m_resource_manager.combo_encoding (editor_combo_encoding);
 
     default_var = QColor (240, 240, 240);
     QColor setting_color = settings->value ("editor/highlight_current_line_color", default_var).value<QColor> ();
@@ -527,7 +528,7 @@
   {
     if (tab.isEmpty ())
       {
-        gui_settings *settings = resource_manager::get_settings ();
+        gui_settings *settings = m_resource_manager.get_settings ();
         if (settings)
           tabWidget->setCurrentIndex (settings->value ("settings/last_tab", 0).toInt ());
       }
@@ -556,9 +557,10 @@
   {
     // FIXME: Remove, if for all common KDE versions (bug #54607) is resolved.
     int opts = QFileDialog::ShowDirsOnly | QFileDialog::DontResolveSymlinks;
-    if (! resource_manager::get_settings ()->value (
-                                    global_use_native_dialogs.key,
-                                    global_use_native_dialogs.def).toBool ())
+
+    gui_settings *settings = m_resource_manager.get_settings ();
+    if (! settings->value (global_use_native_dialogs.key,
+                           global_use_native_dialogs.def).toBool ())
       opts |= QFileDialog::DontUseNativeDialog;
 
     QString dir = QFileDialog::getExistingDirectory
@@ -815,7 +817,7 @@
 
   void settings_dialog::write_changed_settings (bool closing)
   {
-    gui_settings *settings = resource_manager::get_settings ();
+    gui_settings *settings = m_resource_manager.get_settings ();
 
     // the icon set
     QString widget_icon_set = "NONE";
@@ -1042,10 +1044,10 @@
   void settings_dialog::read_workspace_colors (gui_settings *settings)
   {
     // Construct the grid with all color related settings
-    QList<QColor> default_colors =
-      resource_manager::storage_class_default_colors ();
-    QStringList class_names = resource_manager::storage_class_names ();
-    QString class_chars = resource_manager::storage_class_chars ();
+    QList<QColor> default_colors
+      = m_resource_manager.storage_class_default_colors ();
+    QStringList class_names = m_resource_manager.storage_class_names ();
+    QString class_chars = m_resource_manager.storage_class_chars ();
     int nr_of_classes = class_chars.length ();
 
     QGridLayout *style_grid = new QGridLayout ();
@@ -1105,7 +1107,7 @@
     settings->setValue (ws_enable_colors.key, m_ws_enable_colors->isChecked ());
     settings->setValue (ws_hide_tool_tips.key, m_ws_hide_tool_tips->isChecked ());
 
-    QString class_chars = resource_manager::storage_class_chars ();
+    QString class_chars = m_resource_manager.storage_class_chars ();
     color_picker *color;
 
     for (int i = 0; i < class_chars.length (); i++)
@@ -1166,7 +1168,7 @@
   {
     QList<QColor> default_colors = variable_editor::default_colors ();
     QStringList class_names = variable_editor::color_names ();
-    QString class_chars = resource_manager::varedit_color_chars ();
+    QString class_chars = m_resource_manager.varedit_color_chars ();
     int nr_of_classes = class_chars.length ();
 
     QGridLayout *style_grid = new QGridLayout ();
@@ -1200,7 +1202,7 @@
 
   void settings_dialog::write_varedit_colors (gui_settings *settings)
   {
-    QString class_chars = resource_manager::varedit_color_chars ();
+    QString class_chars = m_resource_manager.varedit_color_chars ();
     color_picker *color;
 
     for (int i = 0; i < class_chars.length (); i++)