Make tabcompletion key configurable via shortcuts. fixes 1018
[quassel.git] / src / uisupport / tabcompleter.h
index eb066e7..47aebb0 100644 (file)
@@ -27,7 +27,7 @@
 
 #include "types.h"
 
-class InputLine;
+class MultiLineEdit;
 class IrcUser;
 class Network;
 
@@ -35,32 +35,43 @@ class TabCompleter : public QObject {
   Q_OBJECT
 
 public:
-  TabCompleter(InputLine *inputLine_);
+  enum Type {
+    UserTab = 0x01,
+    ChannelTab = 0x02
+  };
+
+  explicit TabCompleter(MultiLineEdit *inputLine_);
 
   void reset();
   void complete();
 
   virtual bool eventFilter(QObject *obj, QEvent *event);
 
+public slots:
+  void onTabCompletionKey();
+
 private:
+
   struct CompletionKey {
-    inline CompletionKey(const QString &n) { nick = n; }
+    inline CompletionKey(const QString &n) { contents = n; }
     bool operator<(const CompletionKey &other) const;
-    QString nick;
+    QString contents;
   };
 
-  QPointer<InputLine> inputLine;
-  bool enabled;
-  QString nickSuffix;
+  QPointer<MultiLineEdit> _lineEdit;
+  bool _enabled;
+  QString _nickSuffix;
 
   static const Network *_currentNetwork;
   static BufferId _currentBufferId;
+  static QString _currentBufferName;
+  static Type _completionType;
 
-  QMap<CompletionKey, QString> completionMap;
+  QMap<CompletionKey, QString> _completionMap;
   // QStringList completionTemplates;
 
-  QMap<CompletionKey, QString>::Iterator nextCompletion;
-  int lastCompletionLength;
+  QMap<CompletionKey, QString>::Iterator _nextCompletion;
+  int _lastCompletionLength;
 
   void buildCompletionList();