From 8179670f13fbbdd5cbcd7fb4a3dc187913ee9ba3 Mon Sep 17 00:00:00 2001 From: Marcus Eggenberger Date: Sat, 15 Nov 2008 12:00:43 +0100 Subject: [PATCH] default aliases can now be restored via settingspage --- src/common/aliasmanager.cpp | 13 +++++++++++++ src/common/aliasmanager.h | 7 +++++-- src/core/corealiasmanager.cpp | 15 ++++----------- src/qtui/settingspages/aliasesmodel.cpp | 18 ++++++++++++++++++ src/qtui/settingspages/aliasesmodel.h | 1 + src/qtui/settingspages/aliasessettingspage.cpp | 4 ++++ src/qtui/settingspages/aliasessettingspage.h | 3 +++ 7 files changed, 48 insertions(+), 13 deletions(-) diff --git a/src/common/aliasmanager.cpp b/src/common/aliasmanager.cpp index f9b0385b..aabb0c73 100644 --- a/src/common/aliasmanager.cpp +++ b/src/common/aliasmanager.cpp @@ -80,3 +80,16 @@ void AliasManager::addAlias(const QString &name, const QString &expansion) { emit aliasAdded(name, expansion); } + +AliasManager::AliasList AliasManager::defaults() { + AliasList aliases; + aliases << Alias("j", "/join $0") + << Alias("ns", "/msg nickserv $0") + << Alias("nickserv", "/msg nickserv $0") + << Alias("cs", "/msg chanserv $0") + << Alias("chanserv", "/msg chanserv $0") + << Alias("hs", "/msg hostserv $0") + << Alias("hostserv", "/msg hostserv $0") + << Alias("back", "/quote away"); + return aliases; +} diff --git a/src/common/aliasmanager.h b/src/common/aliasmanager.h index 37d38804..8ae54cdf 100644 --- a/src/common/aliasmanager.h +++ b/src/common/aliasmanager.h @@ -37,6 +37,7 @@ public: QString expansion; Alias(const QString &name_, const QString &expansion_) : name(name_), expansion(expansion_) {} }; + typedef QList AliasList ; int indexOf(const QString &name) const; inline bool contains(const QString &name) const { return indexOf(name) != -1; } @@ -45,7 +46,9 @@ public: inline void removeAt(int index) { _aliases.removeAt(index); } inline Alias &operator[](int i) { return _aliases[i]; } inline const Alias &operator[](int i) const { return _aliases[i]; } - inline const QList &aliases() const { return _aliases; } + inline const AliasList &aliases() const { return _aliases; } + + static AliasList defaults(); public slots: virtual QVariantMap initAliases() const; @@ -60,7 +63,7 @@ signals: void aliasAdded(const QString &name, const QString &expansion); private: - QList _aliases; + AliasList _aliases; }; diff --git a/src/core/corealiasmanager.cpp b/src/core/corealiasmanager.cpp index f75dd3c6..9576c04b 100644 --- a/src/core/corealiasmanager.cpp +++ b/src/core/corealiasmanager.cpp @@ -50,16 +50,9 @@ CoreAliasManager::~CoreAliasManager() { Core::setUserSetting(session->user(), "Aliases", initAliases()); } -void CoreAliasManager::loadDefaults() { - // Default Aliases: - addAlias("j", "/join $0"); - - addAlias("ns", "/msg nickserv $0"); - addAlias("nickserv", "/msg nickserv $0"); - addAlias("cs", "/msg chanserv $0"); - addAlias("chanserv", "/msg chanserv $0"); - addAlias("hs", "/msg hostserv $0"); - addAlias("hostserv", "/msg hostserv $0"); - addAlias("back", "/quote away"); +void CoreAliasManager::loadDefaults() { + foreach(Alias alias, AliasManager::defaults()) { + addAlias(alias.name, alias.expansion); + } } diff --git a/src/qtui/settingspages/aliasesmodel.cpp b/src/qtui/settingspages/aliasesmodel.cpp index baaaa9b9..3896eb8f 100644 --- a/src/qtui/settingspages/aliasesmodel.cpp +++ b/src/qtui/settingspages/aliasesmodel.cpp @@ -117,6 +117,24 @@ void AliasesModel::newAlias() { endInsertRows(); } +void AliasesModel::loadDefaults() { + AliasManager &manager = cloneAliasManager(); + + if(!manager.isEmpty()) { + beginRemoveRows(QModelIndex(), 0, rowCount() - 1); + for(int i = rowCount() - 1; i >= 0; i--) + manager.removeAt(i); + endRemoveRows(); + } + + AliasManager::AliasList defaults = AliasManager::defaults(); + beginInsertRows(QModelIndex(), 0, defaults.count() - 1); + foreach(AliasManager::Alias alias, defaults) { + manager.addAlias(alias.name, alias.expansion); + } + endInsertRows(); +} + void AliasesModel::removeAlias(int index) { if(index < 0 || index >= rowCount()) return; diff --git a/src/qtui/settingspages/aliasesmodel.h b/src/qtui/settingspages/aliasesmodel.h index f689f7a7..ace321c3 100644 --- a/src/qtui/settingspages/aliasesmodel.h +++ b/src/qtui/settingspages/aliasesmodel.h @@ -50,6 +50,7 @@ public: public slots: void newAlias(); + void loadDefaults(); void removeAlias(int index); void revert(); void commit(); diff --git a/src/qtui/settingspages/aliasessettingspage.cpp b/src/qtui/settingspages/aliasessettingspage.cpp index 8f8ac9b3..ec5108ed 100644 --- a/src/qtui/settingspages/aliasessettingspage.cpp +++ b/src/qtui/settingspages/aliasessettingspage.cpp @@ -52,6 +52,10 @@ void AliasesSettingsPage::load() { _aliasesModel.revert(); } +void AliasesSettingsPage::defaults() { + _aliasesModel.loadDefaults(); +} + void AliasesSettingsPage::save() { if(_aliasesModel.configChanged()) _aliasesModel.commit(); diff --git a/src/qtui/settingspages/aliasessettingspage.h b/src/qtui/settingspages/aliasessettingspage.h index 9f36d56f..65cd6dab 100644 --- a/src/qtui/settingspages/aliasessettingspage.h +++ b/src/qtui/settingspages/aliasessettingspage.h @@ -32,9 +32,12 @@ class AliasesSettingsPage : public SettingsPage { public: AliasesSettingsPage(QWidget *parent = 0); + virtual inline bool hasDefaults() const { return true; } + public slots: void save(); void load(); + void defaults(); private slots: void enableDialog(bool); -- 2.20.1