From f053834c1693cc4a98091ba840dab88cf3da43cd Mon Sep 17 00:00:00 2001 From: Paolo Capriotti Date: Wed, 5 Sep 2007 16:26:07 +0200 Subject: [PATCH] Do not create variant instances in pref_theme. --- src/pref_theme.cpp | 6 +++--- src/variants.cpp | 11 ++++++++--- src/variants.h | 2 ++ 3 files changed, 13 insertions(+), 6 deletions(-) diff --git a/src/pref_theme.cpp b/src/pref_theme.cpp index abf645d..d9a3a74 100644 --- a/src/pref_theme.cpp +++ b/src/pref_theme.cpp @@ -240,7 +240,7 @@ void PrefTheme::update_list_view(QListWidget* list, const ThemeInfoList& themes, void PrefTheme::variantChanged() { QString category = comboVariant->itemData(comboVariant->currentIndex()).toString(); - VariantPtr vi = Variants::instance().get(category); + VariantFactory* vi = Variants::instance().getFactory(category); if (!vi) { for (CategoryMap::iterator cit = m_categories.begin(); cit != m_categories.end(); ++cit) { @@ -369,7 +369,7 @@ void PrefThemeCategory::themeChanged() { m_label->setText(m_themes[i].description); QString c = m_parent->comboVariant->itemData(m_parent->comboVariant->currentIndex()).toString(); - VariantPtr vi = Variants::instance().get(c); + VariantFactory* vi = Variants::instance().getFactory(c); if(vi) m_new_themes[vi->name()] = m_themes[i].desktopFile; @@ -396,7 +396,7 @@ void PrefThemeCategory::themeChecked(bool ck) { m_label->setEnabled(!ck); QString c = m_parent->comboVariant->itemData(m_parent->comboVariant->currentIndex()).toString(); - VariantPtr vi = Variants::instance().get(c); + VariantFactory* vi = Variants::instance().getFactory(c); if (vi) m_new_use_def[vi->name()] = ck; } diff --git a/src/variants.cpp b/src/variants.cpp index d595de4..264f878 100644 --- a/src/variants.cpp +++ b/src/variants.cpp @@ -41,13 +41,18 @@ Variants& Variants::instance() { return inst; } -VariantPtr Variants::get(const QString& name) const { +VariantFactory* Variants::getFactory(const QString& name) const { Factories::const_iterator it = m_factories.find(name); if (it != m_factories.end()) { - return VariantPtr(it->second->createVariant()); + return it->second; } - return VariantPtr(); + return 0; +} + +VariantPtr Variants::get(const QString& name) const { + VariantFactory* factory = getFactory(name); + return factory ? VariantPtr(factory->createVariant()) : VariantPtr(); } void Variants::addFactory(const QString& name, VariantFactory* factory) { diff --git a/src/variants.h b/src/variants.h index 6225051..2a706b9 100644 --- a/src/variants.h +++ b/src/variants.h @@ -31,6 +31,8 @@ class Variants { Variants(); public: VariantPtr get(const QString& name) const; + VariantFactory* getFactory(const QString& name) const; + void addFactory(const QString& name, VariantFactory* factory); QStringList all() const; -- 2.11.4.GIT