changeset 13537:a43ecce77eec

Introduced a central ResourceManager class.
author Jacob Dawid <jacob.dawid@googlemail.com>
date Tue, 26 Jul 2011 19:04:07 +0200
parents 869c62c15e95
children ac64163efbe8
files gui/octave-gui.pro gui/src/FilesDockWidget.cpp gui/src/IRCWidget.cpp gui/src/IRCWidget.h gui/src/MainWindow.cpp gui/src/MainWindow.h gui/src/OctaveGUI.cpp gui/src/ResourceManager.cpp gui/src/ResourceManager.h gui/src/SettingsDialog.cpp gui/src/SettingsDialog.h gui/src/SettingsDialog.ui
diffstat 12 files changed, 133 insertions(+), 96 deletions(-) [+]
line wrap: on
line diff
--- a/gui/octave-gui.pro	Tue Jul 26 18:11:34 2011 +0200
+++ b/gui/octave-gui.pro	Tue Jul 26 19:04:07 2011 +0200
@@ -84,7 +84,8 @@
     src/qirc/IRCClient.cpp \
     src/qirc/IClientSocket.cpp \
     src/SettingsDialog.cpp \
-    src/OctaveGUI.cpp
+    src/OctaveGUI.cpp \
+    src/ResourceManager.cpp
 
 HEADERS += \
         src/terminal/TerminalCharacterDecoder.h \
@@ -126,7 +127,8 @@
     src/qirc/IRCCodes.h \
     src/qirc/IRCClient.h \
     src/qirc/IClientSocket.h \
-    src/SettingsDialog.h
+    src/SettingsDialog.h \
+    src/ResourceManager.h
 
 FORMS += \
     src/SettingsDialog.ui
--- a/gui/src/FilesDockWidget.cpp	Tue Jul 26 18:11:34 2011 +0200
+++ b/gui/src/FilesDockWidget.cpp	Tue Jul 26 19:04:07 2011 +0200
@@ -16,6 +16,7 @@
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+#include "ResourceManager.h"
 #include "FilesDockWidget.h"
 
 #include <QApplication>
@@ -23,7 +24,6 @@
 #include <QCompleter>
 #include <QSettings>
 #include <QProcess>
-#include <QDesktopServices>
 
 FilesDockWidget::FilesDockWidget (QWidget * parent):QDockWidget (parent)
 {
@@ -111,14 +111,10 @@
   else
     {
       // Check if the user wants to use a custom file editor.
-      QDesktopServices desktopServices;
-      QString settingsFile =
-        desktopServices.storageLocation (QDesktopServices::HomeLocation) +
-        "/.quint/settings.ini";
-      QSettings settings (settingsFile, QSettings::IniFormat);
-      if (settings.value ("useCustomFileEditor").toBool ())
+      QSettings *settings = ResourceManager::instance ()->settings ();
+      if (settings->value ("useCustomFileEditor").toBool ())
         {
-          QString editor = settings.value ("customFileEditor").toString ();
+          QString editor = settings->value ("customFileEditor").toString ();
           QStringList arguments;
           arguments << fileInfo.filePath ();
           QProcess::execute (editor, arguments);
@@ -169,5 +165,11 @@
 void
 FilesDockWidget::noticeSettings ()
 {
-
+  QSettings *settings = ResourceManager::instance ()->settings ();
+  m_fileTreeView->setColumnHidden (0, !settings->value ("showFilenames").toBool ());
+  m_fileTreeView->setColumnHidden (1, !settings->value ("showFileSize").toBool ());
+  m_fileTreeView->setColumnHidden (2, !settings->value ("showFileType").toBool ());
+  m_fileTreeView->setColumnHidden (3, !settings->value ("showLastModified").toBool ());
+  m_fileTreeView->setAlternatingRowColors (settings->value ("useAlternatingRowColors").toBool ());
+  //if (settings.value ("showHiddenFiles").toBool ())
 }
--- a/gui/src/IRCWidget.cpp	Tue Jul 26 18:11:34 2011 +0200
+++ b/gui/src/IRCWidget.cpp	Tue Jul 26 19:04:07 2011 +0200
@@ -16,6 +16,7 @@
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+#include "ResourceManager.h"
 #include "IRCWidget.h"
 #include <QMessageBox>
 #include <QHBoxLayout>
@@ -24,17 +25,16 @@
 #include <QSettings>
 #include <QInputDialog>
 
-IRCWidget::IRCWidget (QWidget * parent, QString settingsFile):
+IRCWidget::IRCWidget (QWidget * parent):
 QWidget (parent)
 {
-  m_settingsFile = settingsFile;
   m_alternatingColor = false;
-  QSettings settings (m_settingsFile, QSettings::IniFormat);
-  bool connectOnStartup = settings.value ("connectOnStartup").toBool ();
-  m_autoIdentification = settings.value ("autoIdentification").toBool ();
-  m_nickServPassword = settings.value ("nickServPassword").toString ();
+  QSettings *settings = ResourceManager::instance ()->settings ();
+  bool connectOnStartup = settings->value ("connectOnStartup").toBool ();
+  m_autoIdentification = settings->value ("autoIdentification").toBool ();
+  m_nickServPassword = settings->value ("nickServPassword").toString ();
 
-  m_initialNick = settings.value ("IRCNick").toString ();
+  m_initialNick = settings->value ("IRCNick").toString ();
 
   if (m_initialNick.isEmpty ())
     m_initialNick = "OctaveGUI-User";
@@ -298,14 +298,14 @@
 IRCWidget::handleNickInUseChanged ()
 {
   m_nickButton->setText (m_ircClient->nickInUse ());
-  QSettings settings (m_settingsFile, QSettings::IniFormat);
-  settings.setValue ("IRCNick", m_ircClient->nickInUse ());
+  QSettings *settings = ResourceManager::instance ()->settings ();
+  settings->setValue ("IRCNick", m_ircClient->nickInUse ());
 }
 
 void
 IRCWidget::handleReplyCode (IRCEvent * event)
 {
-  QSettings settings (m_settingsFile, QSettings::IniFormat);
+  QSettings *settings = ResourceManager::instance ()->settings ();
 
   switch (event->getNumeric ())
     {
@@ -313,13 +313,13 @@
     case RPL_MOTD:
     case ERR_NOMOTD:
     case RPL_ENDOFMOTD:
-      if (settings.value ("showMessageOfTheDay").toBool ())
+      if (settings->value ("showMessageOfTheDay").toBool ())
 	m_chatWindow->append (QString ("<font color=\"#777777\">%1</font>").
 			      arg (event->getParam (1)));
       break;
     case RPL_NOTOPIC:
     case RPL_TOPIC:
-      if (settings.value ("showTopic").toBool ())
+      if (settings->value ("showTopic").toBool ())
 	m_chatWindow->
 	  append (QString ("<font color=\"#000088\"><b>%1</b></font>").
 		  arg (event->getParam (2)));
--- a/gui/src/IRCWidget.h	Tue Jul 26 18:11:34 2011 +0200
+++ b/gui/src/IRCWidget.h	Tue Jul 26 19:04:07 2011 +0200
@@ -29,7 +29,7 @@
 class IRCWidget:public QWidget
 {
 Q_OBJECT public:
-  explicit IRCWidget (QWidget * parent, QString settingsFile);
+  explicit IRCWidget (QWidget * parent);
   void connectToServer ();
 
     signals:public slots:void showStatusMessage (const char *);
--- a/gui/src/MainWindow.cpp	Tue Jul 26 18:11:34 2011 +0200
+++ b/gui/src/MainWindow.cpp	Tue Jul 26 19:04:07 2011 +0200
@@ -33,8 +33,6 @@
 MainWindow::MainWindow (QWidget * parent):QMainWindow (parent),
 m_isRunning (true)
 {
-  QDesktopServices desktopServices;
-  m_settingsFile = desktopServices.storageLocation (QDesktopServices::HomeLocation) + "/.quint/settings.ini";
   construct ();
   establishOctaveLink ();
 }
@@ -78,12 +76,9 @@
 void
 MainWindow::handleSaveWorkspaceRequest ()
 {
-  QDesktopServices desktopServices;
   QString selectedFile =
     QFileDialog::getSaveFileName (this, tr ("Save Workspace"),
-				  desktopServices.
-				  storageLocation (QDesktopServices::
-                                                   HomeLocation));
+                                  ResourceManager::instance ()->homePath ());
   m_octaveTerminal->sendText (QString ("save \'%1\'\n").arg (selectedFile));
   m_octaveTerminal->setFocus ();
 }
@@ -91,12 +86,9 @@
 void
 MainWindow::handleLoadWorkspaceRequest ()
 {
-  QDesktopServices desktopServices;
   QString selectedFile =
     QFileDialog::getOpenFileName (this, tr ("Load Workspace"),
-				  desktopServices.
-				  storageLocation (QDesktopServices::
-                                                   HomeLocation));
+                                  ResourceManager::instance ()->homePath ());
   m_octaveTerminal->sendText (QString ("load \'%1\'\n").arg (selectedFile));
   m_octaveTerminal->setFocus ();
 }
@@ -150,7 +142,7 @@
 void
 MainWindow::processSettingsDialogRequest ()
 {
-  SettingsDialog settingsDialog (this, m_settingsFile);
+  SettingsDialog settingsDialog (this);
   settingsDialog.exec ();
   emit settingsChanged ();
 }
@@ -172,20 +164,20 @@
 void
 MainWindow::readSettings ()
 {
-  QSettings settings (m_settingsFile, QSettings::IniFormat);
-  restoreGeometry (settings.value ("MainWindow/geometry").toByteArray ());
-  restoreState (settings.value ("MainWindow/windowState").toByteArray ());
-  m_centralMdiArea->restoreGeometry (settings.value ("MdiArea/geometry").toByteArray ());
+  QSettings *settings = ResourceManager::instance ()->settings ();
+  restoreGeometry (settings->value ("MainWindow/geometry").toByteArray ());
+  restoreState (settings->value ("MainWindow/windowState").toByteArray ());
+  m_centralMdiArea->restoreGeometry (settings->value ("MdiArea/geometry").toByteArray ());
   emit settingsChanged ();
 }
 
 void
 MainWindow::writeSettings ()
 {
-  QSettings settings (m_settingsFile, QSettings::IniFormat);
-  settings.setValue ("MainWindow/geometry", saveGeometry ());
-  settings.setValue ("MainWindow/windowState", saveState ());
-  settings.setValue ("MdiArea/geometry", m_centralMdiArea->saveGeometry ());
+  QSettings *settings = ResourceManager::instance ()->settings ();
+  settings->setValue ("MainWindow/geometry", saveGeometry ());
+  settings->setValue ("MainWindow/windowState", saveState ());
+  settings->setValue ("MdiArea/geometry", m_centralMdiArea->saveGeometry ());
 }
 
 void
@@ -211,7 +203,7 @@
   // Setup essential MDI Windows.
   m_octaveTerminal = new OctaveTerminal (this);
   m_documentationWidget = new BrowserWidget (this);
-  m_ircWidget = new IRCWidget (this, m_settingsFile);
+  m_ircWidget = new IRCWidget (this);
 
   m_documentationWidgetSubWindow =
     m_centralMdiArea->addSubWindow (m_documentationWidget,
--- a/gui/src/MainWindow.h	Tue Jul 26 18:11:34 2011 +0200
+++ b/gui/src/MainWindow.h	Tue Jul 26 19:04:07 2011 +0200
@@ -26,6 +26,7 @@
 #include <QStatusBar>
 #include <QToolBar>
 #include <QQueue>
+#include "ResourceManager.h"
 #include "OctaveTerminal.h"
 #include "OctaveLink.h"
 #include "VariablesDockWidget.h"
@@ -113,8 +114,6 @@
   // Toolbars.
   QStatusBar *m_statusBar;
 
-  QString m_settingsFile;
-
   // Threads for running octave and managing the data interaction.
   OctaveMainThread *m_octaveMainThread;
   OctaveCallbackThread *m_octaveCallbackThread;
--- a/gui/src/OctaveGUI.cpp	Tue Jul 26 18:11:34 2011 +0200
+++ b/gui/src/OctaveGUI.cpp	Tue Jul 26 19:04:07 2011 +0200
@@ -19,30 +19,18 @@
 #include <QtGui/QApplication>
 #include <QTranslator>
 #include <QSettings>
+#include "ResourceManager.h"
 #include "MainWindow.h"
 
 int
 main (int argc, char *argv[])
 {
   QApplication application (argc, argv);
-  QDesktopServices desktopServices;
-  QSettings settings (desktopServices.
-		      storageLocation (QDesktopServices::HomeLocation) +
-		      "/.quint/settings.ini", QSettings::IniFormat);
+  // QSettings *settings = ResourceManager::instance ()->instance ();
 
-  QTranslator translator;
-  QString translatorFile =
-    QString ("../languages/%1.qm").arg (settings.
-					value ("application/language").
-					toString ());
-  if (!QFile::exists (translatorFile))
-    translatorFile =
-      QString ("/usr/share/octave/quint/languages/%1.qm").arg (settings.
-							       value
-							       ("application/language").
-							       toString ());
-  translator.load (translatorFile);
-  application.installTranslator (&translator);
+  // TODO: reimplement translation.
+  // translator.load (translatorFile);
+  // application.installTranslator (&translator);
 
   MainWindow w;
   w.show ();
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gui/src/ResourceManager.cpp	Tue Jul 26 19:04:07 2011 +0200
@@ -0,0 +1,27 @@
+#include "ResourceManager.h"
+
+ResourceManager ResourceManager::m_singleton;
+
+ResourceManager::ResourceManager ()
+{
+  QDesktopServices desktopServices;
+  m_homePath = desktopServices.storageLocation (QDesktopServices::HomeLocation);
+  m_settings = new QSettings (m_homePath + "/.octave-gui", QSettings::IniFormat);
+}
+
+ResourceManager::~ResourceManager ()
+{
+  delete m_settings;
+}
+
+QSettings *
+ResourceManager::settings ()
+{
+  return m_settings;
+}
+
+QString
+ResourceManager::homePath ()
+{
+  return m_homePath;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gui/src/ResourceManager.h	Tue Jul 26 19:04:07 2011 +0200
@@ -0,0 +1,28 @@
+#ifndef RESOURCEMANAGER_H
+#define RESOURCEMANAGER_H
+
+#include <QSettings>
+#include <QDesktopServices>
+
+class ResourceManager
+{
+public:
+  ~ResourceManager ();
+
+  static ResourceManager *
+  instance ()
+  {
+    return &m_singleton;
+  }
+
+  QSettings *settings ();
+  QString homePath ();
+private:
+  ResourceManager ();
+
+  QSettings *m_settings;
+  QString m_homePath;
+  static ResourceManager m_singleton;
+};
+
+#endif // RESOURCEMANAGER_H
--- a/gui/src/SettingsDialog.cpp	Tue Jul 26 18:11:34 2011 +0200
+++ b/gui/src/SettingsDialog.cpp	Tue Jul 26 19:04:07 2011 +0200
@@ -1,44 +1,44 @@
+#include "ResourceManager.h"
 #include "SettingsDialog.h"
 #include "ui_SettingsDialog.h"
 #include <QSettings>
 
-SettingsDialog::SettingsDialog (QWidget * parent, QString settingsFile):
+SettingsDialog::SettingsDialog (QWidget * parent):
 QDialog (parent), ui (new Ui::SettingsDialog)
 {
-  m_settingsFile = settingsFile;
   ui->setupUi (this);
 
-  QSettings settings (m_settingsFile, QSettings::IniFormat);
-  ui->connectOnStartup->setChecked (settings.value ("connectOnStartup").toBool ());
-  ui->showMessageOfTheDay->setChecked (settings.value ("showMessageOfTheDay").toBool ());
-  ui->showTopic->setChecked (settings.value ("showTopic").toBool ());
-  ui->autoIdentification->setChecked (settings.value ("autoIdentification").toBool ());
-  ui->nickServPassword->setText (settings.value ("nickServPassword").toString ());
-  ui->useCustomFileEditor->setChecked (settings.value ("useCustomFileEditor").toBool ());
-  ui->customFileEditor->setText (settings.value ("customFileEditor").toString ());
-  ui->showFilenames->setChecked (settings.value ("showFilenames").toBool());
-  ui->showFileSize->setChecked (settings.value ("showFileSize").toBool());
-  ui->showFileType->setChecked (settings.value ("showFileType").toBool());
-  ui->showLastModified->setChecked (settings.value ("showLastModified").toBool());
-  ui->showHiddenFiles->setChecked (settings.value ("showHiddenFiles").toBool());
-  ui->useAlternatingRowColors->setChecked (settings.value ("useAlternatingRowColors").toBool());
+  QSettings *settings = ResourceManager::instance ()->settings ();
+  ui->connectOnStartup->setChecked (settings->value ("connectOnStartup").toBool ());
+  ui->showMessageOfTheDay->setChecked (settings->value ("showMessageOfTheDay").toBool ());
+  ui->showTopic->setChecked (settings->value ("showTopic").toBool ());
+  ui->autoIdentification->setChecked (settings->value ("autoIdentification").toBool ());
+  ui->nickServPassword->setText (settings->value ("nickServPassword").toString ());
+  ui->useCustomFileEditor->setChecked (settings->value ("useCustomFileEditor").toBool ());
+  ui->customFileEditor->setText (settings->value ("customFileEditor").toString ());
+  ui->showFilenames->setChecked (settings->value ("showFilenames").toBool());
+  ui->showFileSize->setChecked (settings->value ("showFileSize").toBool());
+  ui->showFileType->setChecked (settings->value ("showFileType").toBool());
+  ui->showLastModified->setChecked (settings->value ("showLastModified").toBool());
+  ui->showHiddenFiles->setChecked (settings->value ("showHiddenFiles").toBool());
+  ui->useAlternatingRowColors->setChecked (settings->value ("useAlternatingRowColors").toBool());
 }
 
 SettingsDialog::~SettingsDialog ()
 {
-  QSettings settings (m_settingsFile, QSettings::IniFormat);
-  settings.setValue ("connectOnStartup", ui->connectOnStartup->isChecked ());
-  settings.setValue ("showMessageOfTheDay", ui->showMessageOfTheDay->isChecked ());
-  settings.setValue ("showTopic", ui->showTopic->isChecked ());
-  settings.setValue ("autoIdentification", ui->autoIdentification->isChecked ());
-  settings.setValue ("nickServPassword", ui->nickServPassword->text ());
-  settings.setValue ("useCustomFileEditor", ui->useCustomFileEditor->isChecked ());
-  settings.setValue ("customFileEditor", ui->customFileEditor->text ());
-  settings.setValue ("showFilenames", ui->showFilenames->isChecked ());
-  settings.setValue ("showFileSize", ui->showFileSize->isChecked ());
-  settings.setValue ("showFileType", ui->showFileType->isChecked ());
-  settings.setValue ("showLastModified", ui->showLastModified->isChecked ());
-  settings.setValue ("showHiddenFiles", ui->showHiddenFiles->isChecked ());
-  settings.setValue ("useAlternatingRowColors", ui->useAlternatingRowColors->isChecked ());
+  QSettings *settings = ResourceManager::instance ()->settings ();
+  settings->setValue ("connectOnStartup", ui->connectOnStartup->isChecked ());
+  settings->setValue ("showMessageOfTheDay", ui->showMessageOfTheDay->isChecked ());
+  settings->setValue ("showTopic", ui->showTopic->isChecked ());
+  settings->setValue ("autoIdentification", ui->autoIdentification->isChecked ());
+  settings->setValue ("nickServPassword", ui->nickServPassword->text ());
+  settings->setValue ("useCustomFileEditor", ui->useCustomFileEditor->isChecked ());
+  settings->setValue ("customFileEditor", ui->customFileEditor->text ());
+  settings->setValue ("showFilenames", ui->showFilenames->isChecked ());
+  settings->setValue ("showFileSize", ui->showFileSize->isChecked ());
+  settings->setValue ("showFileType", ui->showFileType->isChecked ());
+  settings->setValue ("showLastModified", ui->showLastModified->isChecked ());
+  settings->setValue ("showHiddenFiles", ui->showHiddenFiles->isChecked ());
+  settings->setValue ("useAlternatingRowColors", ui->useAlternatingRowColors->isChecked ());
   delete ui;
 }
--- a/gui/src/SettingsDialog.h	Tue Jul 26 18:11:34 2011 +0200
+++ b/gui/src/SettingsDialog.h	Tue Jul 26 19:04:07 2011 +0200
@@ -11,12 +11,11 @@
 class SettingsDialog:public QDialog
 {
 Q_OBJECT public:
-  explicit SettingsDialog (QWidget * parent, QString settingsFile);
+  explicit SettingsDialog (QWidget * parent);
   ~SettingsDialog ();
 
 private:
   Ui::SettingsDialog * ui;
-  QString m_settingsFile;
 };
 
 #endif // SETTINGSDIALOG_H
--- a/gui/src/SettingsDialog.ui	Tue Jul 26 18:11:34 2011 +0200
+++ b/gui/src/SettingsDialog.ui	Tue Jul 26 19:04:07 2011 +0200
@@ -75,7 +75,7 @@
          <item>
           <widget class="QLabel" name="label_2">
            <property name="text">
-            <string>Warning: Your password will be stored in ~/.quint/ in human-readable format. Do not enter your password if you worry about security issues.</string>
+            <string>Warning: Your password will be stored in ~/.octavegui in human-readable format. Do not enter your password if you worry about security issues.</string>
            </property>
            <property name="wordWrap">
             <bool>true</bool>