From 88572ee1e3d4596a1d5aadbb357be0b7d0435d7e Mon Sep 17 00:00:00 2001
From: Paolo Capriotti
Date: Sat, 21 Jul 2007 13:36:18 +0200
Subject: [PATCH] Removed global settings object. Fixes ticket #18.
---
src/board.cpp | 2 +-
src/clock.cpp | 4 ++--
src/console.cpp | 2 +-
src/graphicalgame.cpp | 8 ++++----
src/graphicalsystem.cpp | 2 +-
src/loader/theme.cpp | 4 ++--
src/mainwindow.cpp | 4 ++--
src/mastersettings.cpp | 5 ++++-
src/mastersettings.h | 2 +-
src/movelist.cpp | 6 ++----
src/pref_board.cpp | 8 ++++----
src/pref_engines.cpp | 4 ++--
src/pref_preferences.cpp | 2 +-
src/pref_theme.cpp | 10 +++++-----
src/qconnect.cpp | 4 ++--
15 files changed, 34 insertions(+), 33 deletions(-)
diff --git a/src/board.cpp b/src/board.cpp
index b28b125..1d44668 100644
--- a/src/board.cpp
+++ b/src/board.cpp
@@ -76,7 +76,7 @@ Board::~Board() {
}
void Board::settingsChanged() {
- Settings s_anim = settings.group("animations");
+ Settings s_anim = settings().group("animations");
int speed = (s_anim["speed"] | 16);
int smoothness = (s_anim["smoothness"] | 16);
m_main_animation->setSpeed( 0.4*pow(10.0, speed/32.0) );
diff --git a/src/clock.cpp b/src/clock.cpp
index 5157b40..8c6140b 100644
--- a/src/clock.cpp
+++ b/src/clock.cpp
@@ -202,7 +202,7 @@ void Clock::Info::setup(const Player& player, const QRect& rect, const QString&
m_total_time = 0;
m_rect = rect;
- Settings s_clock = settings.group("clock");
+ Settings s_clock = settings().group("clock");
QColor framecol(0x60,0x60,0x90);
QColor backgroundColor;
@@ -263,7 +263,7 @@ void Clock::Info::setup(const Player& player, const QRect& rect, const QString&
}
void Clock::Info::reload() {
- Settings s_clock = settings.group("clock");
+ Settings s_clock = settings().group("clock");
QFont tempFont;
QColor backgroundColor;
diff --git a/src/console.cpp b/src/console.cpp
index e02cd0b..9f34fbe 100644
--- a/src/console.cpp
+++ b/src/console.cpp
@@ -219,7 +219,7 @@ Console::Console(QWidget* parent, const QString& caption)
display->setAcceptRichText(false);
display->setWordWrapMode (QTextOption::NoWrap);
display->setUndoRedoEnabled (false);
- Settings s_console = settings.group("console");
+ Settings s_console = settings().group("console");
if (!s_console["font"]) {
QFont f = QApplication::font();
f.setFamily("Monospace");
diff --git a/src/graphicalgame.cpp b/src/graphicalgame.cpp
index a0ace99..7aeaba1 100644
--- a/src/graphicalgame.cpp
+++ b/src/graphicalgame.cpp
@@ -51,7 +51,7 @@ GraphicalGame::GraphicalGame(GraphicalSystem* graphical,
m_movelist->setNotifier( static_cast(this) );
m_movelist->show();
}
- settings.onChange(this, "settingsChanged", "Loader::Theme");
+ settings().onChange(this, "settingsChanged", "Loader::Theme");
settingsChanged();
}
@@ -64,9 +64,9 @@ GraphicalGame::~GraphicalGame() {
}
void GraphicalGame::settingsChanged() {
- m_anim_sequence = settings.flag("animations", true)
- && settings("animations").flag("sequence", true);
- m_anim_sequence_max = settings("animations")("sequence")[QString("max")] | 10;
+ m_anim_sequence = settings().flag("animations", true)
+ && settings()("animations").flag("sequence", true);
+ m_anim_sequence_max = settings()("animations")("sequence")[QString("max")] | 10;
}
void GraphicalGame::onAdded(const Index& ix) {
diff --git a/src/graphicalsystem.cpp b/src/graphicalsystem.cpp
index 4d2707e..217c809 100644
--- a/src/graphicalsystem.cpp
+++ b/src/graphicalsystem.cpp
@@ -46,7 +46,7 @@ GraphicalSystem::GraphicalSystem(ChessTable* view,
m_animator = m_variant->createAnimator(this);
- settings.onChange(this, "settingsChanged", "Loader::Theme");
+ settings().onChange(this, "settingsChanged", "Loader::Theme");
settingsChanged();
if (startingPosition)
diff --git a/src/loader/theme.cpp b/src/loader/theme.cpp
index a07e3db..5eebe71 100644
--- a/src/loader/theme.cpp
+++ b/src/loader/theme.cpp
@@ -41,7 +41,7 @@ Theme::Theme(const ThemeInfo& theme)
if(m_lua_loader.error())
ERROR("Script load error: " << std::endl << m_lua_loader.errorString());
- settings.onChange(this, "onSettingsChanged");
+ settings().onChange(this, "onSettingsChanged");
onSettingsChanged();
}
@@ -51,7 +51,7 @@ Theme::~Theme() {
}
void Theme::onSettingsChanged() {
- SettingMap s_lua = settings.group("lua-settings").map("entry", "file-name");
+ SettingMap s_lua = settings().group("lua-settings").map("entry", "file-name");
Settings entry = s_lua.insert(m_theme.file_name);
OptList ol = m_lua_loader.getValue("options", 0, NULL, true);
if(m_lua_loader.error()) {
diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp
index e762497..03c2687 100644
--- a/src/mainwindow.cpp
+++ b/src/mainwindow.cpp
@@ -123,7 +123,7 @@ KAction* MainWindow::installRegularAction(const QString& name, const KIcon& icon
void MainWindow::setupEngineMenu() {
QMenu* engine_menu = 0;
- SettingArray engine_settings = settings.group("engines").array("engine");
+ SettingArray engine_settings = settings().group("engines").array("engine");
foreach (Settings s, engine_settings) {
if (!engine_menu) {
// this way the menu is created only if there is at least one engine
@@ -532,7 +532,7 @@ void MainWindow::icsDisconnect() {
}
void MainWindow::testConnect() {
- Settings s_ics = settings.group("ics");
+ Settings s_ics = settings().group("ics");
if (s_ics["username"]) {
QString username = s_ics["username"].value();
QString password = (s_ics["password"] | "");
diff --git a/src/mastersettings.cpp b/src/mastersettings.cpp
index d2c5019..78700d8 100644
--- a/src/mastersettings.cpp
+++ b/src/mastersettings.cpp
@@ -134,6 +134,9 @@ void MasterSettings::changed() {
sync();
}
-MasterSettings settings(".taguarc.xml");
+MasterSettings& settings() {
+ static MasterSettings static_settings(".taguarc.xml");
+ return static_settings;
+}
diff --git a/src/mastersettings.h b/src/mastersettings.h
index 8f12fde..883b70a 100644
--- a/src/mastersettings.h
+++ b/src/mastersettings.h
@@ -72,6 +72,6 @@ public:
void sync();
};
-extern MasterSettings settings; // yes, I know global objects are evil
+MasterSettings& settings();
#endif // MASTERSETTINGS_H
diff --git a/src/movelist.cpp b/src/movelist.cpp
index dfa43a6..3c6a12b 100644
--- a/src/movelist.cpp
+++ b/src/movelist.cpp
@@ -401,7 +401,7 @@ void Entry::doUpdate () {
//BEGIN Settings---------------------------------------------------------------
void Settings::load() {
- ::Settings s = settings.group("move-list");
+ ::Settings s = settings().group("move-list");
::Settings s_anim = s.group("animations");
anim_enabled = s.group("animations").flag("enabled", true);
@@ -425,12 +425,10 @@ void Settings::load() {
mv_fmetrics = QFontMetrics(mv_font);
sel_mv_fmetrics = QFontMetrics(sel_mv_font);
comm_fmetrics = QFontMetrics(comm_font);
-
-// settings.qSettings()->endGroup();
}
void Settings::save() {
- ::Settings s = settings.group("move-list");
+ ::Settings s = settings().group("move-list");
::Settings s_anim = s.group("animations");
s.group("animations").setFlag("enabled", anim_enabled);
diff --git a/src/pref_board.cpp b/src/pref_board.cpp
index a9e25a1..544dc29 100644
--- a/src/pref_board.cpp
+++ b/src/pref_board.cpp
@@ -20,7 +20,7 @@ PrefBoard::PrefBoard(QWidget *parent)
setupUi(this);
{
- Settings s_anim = settings.group("animations");
+ Settings s_anim = settings().group("animations");
groupAnimations->setChecked(s_anim.flag("enabled", true));
checkMovements->setChecked(s_anim["movement"].flag("enabled", true));
checkExplosions->setChecked(s_anim["explode"].flag("enabled", true));
@@ -37,7 +37,7 @@ PrefBoard::PrefBoard(QWidget *parent)
}
{
- Settings s_border = settings.group("board-border");
+ Settings s_border = settings().group("board-border");
groupBorder->setChecked(s_border.flag("visible", "true"));
colorBorder->setColor(s_border["color"] |= QColor(Qt::white));
colorBorderText->setColor(s_border["text-color"] |= QColor(Qt::black));
@@ -50,7 +50,7 @@ PrefBoard::~PrefBoard() {
void PrefBoard::apply() {
{
- Settings s_anim = settings.group("animations");
+ Settings s_anim = settings().group("animations");
s_anim.setFlag("enabled", groupAnimations->isChecked());
s_anim.group("movement").setFlag("enabled", checkMovements->isChecked());
s_anim.group("explode").setFlag("enabled", checkExplosions->isChecked());
@@ -67,7 +67,7 @@ void PrefBoard::apply() {
}
{
- Settings s_border = settings.group("board-border");
+ Settings s_border = settings().group("board-border");
s_border.setFlag("visible", groupBorder->isChecked());
s_border["color"] = colorBorder->color();
s_border["text-color"] = colorBorderText->color();
diff --git a/src/pref_engines.cpp b/src/pref_engines.cpp
index b844657..42b5a21 100644
--- a/src/pref_engines.cpp
+++ b/src/pref_engines.cpp
@@ -30,7 +30,7 @@ PrefEngines::PrefEngines(QWidget* parent)
m_add_engine->setIcon(KIcon("add"));
m_remove_engine->setIcon(KIcon("edit-delete"));
- SettingArray s_engines = settings.group("engines").array("engine");
+ SettingArray s_engines = settings().group("engines").array("engine");
foreach (Settings s, s_engines) {
EngineDetails details;
s["name"] >> details.name;
@@ -109,7 +109,7 @@ void PrefEngines::changeEngine(QListWidgetItem*) {
void PrefEngines::apply() {
- SettingArray s_engines = settings.group("engines").newArray("engine");
+ SettingArray s_engines = settings().group("engines").newArray("engine");
std::pair p;
for (int i = 0; i < m_engine_list->count(); i++) {
diff --git a/src/pref_preferences.cpp b/src/pref_preferences.cpp
index 0a7a72d..6dcd3ed 100644
--- a/src/pref_preferences.cpp
+++ b/src/pref_preferences.cpp
@@ -89,6 +89,6 @@ Preferences::~Preferences() {
void Preferences::apply() {
emit applied();
- settings.changed();
+ settings().changed();
}
diff --git a/src/pref_theme.cpp b/src/pref_theme.cpp
index 878a57a..35dd40f 100644
--- a/src/pref_theme.cpp
+++ b/src/pref_theme.cpp
@@ -115,7 +115,7 @@ OptList PrefTheme::get_file_options(const QString& f, bool reload_defaults) {
}
if(!reload_defaults) {
- SettingMap s_lua = settings.group("lua-settings").map("entry", "file-name");
+ SettingMap s_lua = settings().group("lua-settings").map("entry", "file-name");
Settings entry = s_lua.insert(f);
options_list_load_from_settings(*o, entry.group("options"));
@@ -174,7 +174,7 @@ PrefTheme::~PrefTheme() {
}
void PrefTheme::apply() {
- SettingMap variants = settings.group("variants").map("variant", "name");
+ SettingMap variants = settings().group("variants").map("variant", "name");
for(CategoryMap::iterator cit = m_categories.begin(); cit != m_categories.end(); ++cit) {
Category* c = cit->second;
@@ -193,7 +193,7 @@ void PrefTheme::apply() {
for(std::map >::iterator it = m_new_theme_options.begin();
it != m_new_theme_options.end(); ++it) {
- SettingMap s_lua = settings.group("lua-settings").map("entry", "file-name");
+ SettingMap s_lua = settings().group("lua-settings").map("entry", "file-name");
Settings entry = s_lua.insert(it->first);
options_list_save_to_settings(*it->second, entry.group("options"));
}
@@ -247,7 +247,7 @@ void PrefTheme::variantChanged() {
QString vname = vi->name();
QString vproxy = vi->themeProxy();
- SettingMap variants = settings.group("variants").map("variant", "name");
+ SettingMap variants = settings().group("variants").map("variant", "name");
Settings var = variants.insert(vname);
bool ck = vname != vproxy;
@@ -278,7 +278,7 @@ ThemeInfo PrefTheme::getBestTheme(VariantInfo* vi, const QString& category) {
QString tag = category + "-theme";
QString deftag = category + "-use-def";
QString v = vi->name();
- SettingMap variants = settings.group("variants").map("variant", "name");
+ SettingMap variants = settings().group("variants").map("variant", "name");
if (v != vi->themeProxy() &&
(variants.insert(v)[deftag] | true) )
v = vi->themeProxy();
diff --git a/src/qconnect.cpp b/src/qconnect.cpp
index 6ad3c9a..3f52d5f 100644
--- a/src/qconnect.cpp
+++ b/src/qconnect.cpp
@@ -34,7 +34,7 @@ QConnect::QConnect(QWidget *parent, const char *name)
editTimesealCmd->setToolTip(timeseal_cmd_tool_tip);
//std::cout << "initializing dialog" << std::endl;
- Settings s_ics = settings.group("ics");
+ Settings s_ics = settings().group("ics");
if (s_ics["username"])
editUsername->setText(s_ics["username"].value());
if (s_ics["password"]) {
@@ -59,7 +59,7 @@ void QConnect::setTimesealPath() {
void QConnect::accept() {
QDialog::accept();
- Settings s_ics = settings.group("ics");
+ Settings s_ics = settings().group("ics");
s_ics["username"] = editUsername->text();
if (chkStore->isChecked())
s_ics["password"] = editPassword->text();
--
2.11.4.GIT