# HG changeset patch # User Jacob Dawid # Date 1311699847 -7200 # Node ID a43ecce77eec3ba36f999bd2f9cd4606deccf2dc # Parent 869c62c15e958f1db854c333b788d987a233811f Introduced a central ResourceManager class. diff -r 869c62c15e95 -r a43ecce77eec gui/octave-gui.pro --- 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 diff -r 869c62c15e95 -r a43ecce77eec gui/src/FilesDockWidget.cpp --- 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 . */ +#include "ResourceManager.h" #include "FilesDockWidget.h" #include @@ -23,7 +24,6 @@ #include #include #include -#include 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 ()) } diff -r 869c62c15e95 -r a43ecce77eec gui/src/IRCWidget.cpp --- 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 . */ +#include "ResourceManager.h" #include "IRCWidget.h" #include #include @@ -24,17 +25,16 @@ #include #include -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 ("%1"). 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 ("%1"). arg (event->getParam (2))); diff -r 869c62c15e95 -r a43ecce77eec gui/src/IRCWidget.h --- 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 *); diff -r 869c62c15e95 -r a43ecce77eec gui/src/MainWindow.cpp --- 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, diff -r 869c62c15e95 -r a43ecce77eec gui/src/MainWindow.h --- 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 #include #include +#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; diff -r 869c62c15e95 -r a43ecce77eec gui/src/OctaveGUI.cpp --- 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 #include #include +#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 (); diff -r 869c62c15e95 -r a43ecce77eec gui/src/ResourceManager.cpp --- /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; +} diff -r 869c62c15e95 -r a43ecce77eec gui/src/ResourceManager.h --- /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 +#include + +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 diff -r 869c62c15e95 -r a43ecce77eec gui/src/SettingsDialog.cpp --- 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 -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; } diff -r 869c62c15e95 -r a43ecce77eec gui/src/SettingsDialog.h --- 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 diff -r 869c62c15e95 -r a43ecce77eec gui/src/SettingsDialog.ui --- 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 @@ - Warning: Your password will be stored in ~/.quint/ in human-readable format. Do not enter your password if you worry about security issues. + Warning: Your password will be stored in ~/.octavegui in human-readable format. Do not enter your password if you worry about security issues. true