default aliases can now be restored via settingspage
authorMarcus Eggenberger <egs@quassel-irc.org>
Sat, 15 Nov 2008 11:00:43 +0000 (12:00 +0100)
committerMarcus Eggenberger <egs@quassel-irc.org>
Sat, 15 Nov 2008 11:00:43 +0000 (12:00 +0100)
src/common/aliasmanager.cpp
src/common/aliasmanager.h
src/core/corealiasmanager.cpp
src/qtui/settingspages/aliasesmodel.cpp
src/qtui/settingspages/aliasesmodel.h
src/qtui/settingspages/aliasessettingspage.cpp
src/qtui/settingspages/aliasessettingspage.h

index f9b0385..aabb0c7 100644 (file)
@@ -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;
+}
index 37d3880..8ae54cd 100644 (file)
@@ -37,6 +37,7 @@ public:
     QString expansion;
     Alias(const QString &name_, const QString &expansion_) : name(name_), expansion(expansion_) {}
   };
+  typedef QList<Alias> 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<Alias> &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<Alias> _aliases;
+  AliasList _aliases;
 
 };
 
index f75dd3c..9576c04 100644 (file)
@@ -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);
+  }
 }
index baaaa9b..3896eb8 100644 (file)
@@ -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;
index f689f7a..ace321c 100644 (file)
@@ -50,6 +50,7 @@ public:
 
 public slots:
   void newAlias();
+  void loadDefaults();
   void removeAlias(int index);
   void revert();
   void commit();
index 8f8ac9b..ec5108e 100644 (file)
@@ -52,6 +52,10 @@ void AliasesSettingsPage::load() {
     _aliasesModel.revert();
 }
 
+void AliasesSettingsPage::defaults() {
+  _aliasesModel.loadDefaults();
+}
+
 void AliasesSettingsPage::save() {
   if(_aliasesModel.configChanged())
     _aliasesModel.commit();
index 9f36d56..65cd6da 100644 (file)
@@ -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);