Set current time on creation of MessageEvents if no other time is given
[quassel.git] / src / common / aliasmanager.h
index 37d3880..67a5620 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-08 by the Quassel Project                          *
+ *   Copyright (C) 2005-09 by the Quassel Project                          *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
 #ifndef ALIASMANAGER_H
 #define ALIASMANAGER_H
 
+#include <QVariantMap>
+
+#include "bufferinfo.h"
 #include "syncableobject.h"
 
-#include <QVariantMap>
+class Network;
 
 class AliasManager : public SyncableObject {
+  SYNCABLE_OBJECT
   Q_OBJECT
 
 public:
   inline AliasManager(QObject *parent = 0) : SyncableObject(parent) { setAllowClientUpdates(true); }
   AliasManager &operator=(const AliasManager &other);
-  
+
   struct Alias {
     QString name;
     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; }
@@ -44,23 +49,30 @@ public:
   inline int count() const { return _aliases.count(); }
   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 Alias &operator[](int i) const { return _aliases.at(i); }
+  inline const AliasList &aliases() const { return _aliases; }
+
+  static AliasList defaults();
+
+  typedef QList<QPair<BufferInfo, QString> > CommandList;
+
+  CommandList processInput(const BufferInfo &info, const QString &message);
 
 public slots:
   virtual QVariantMap initAliases() const;
   virtual void initSetAliases(const QVariantMap &aliases);
 
   virtual void addAlias(const QString &name, const QString &expansion);
-  
+
 protected:
   void setAliases(const QList<Alias> &aliases) { _aliases = aliases; }
+  virtual const Network *network(NetworkId) const = 0; // core and client require different access
 
-signals:
-  void aliasAdded(const QString &name, const QString &expansion);
-  
 private:
-  QList<Alias> _aliases;
+  void processInput(const BufferInfo &info, const QString &message, CommandList &previousCommands);
+  void expand(const QString &alias, const BufferInfo &bufferInfo, const QString &msg, CommandList &previousCommands);
+
+  AliasList _aliases;
 
 };