- Bug #20 (RPL_NICKNAMEINUSER)
[quassel.git] / gui / channelwidgetinput.cpp
index 893623d..813d1c8 100644 (file)
 ChannelWidgetInput::ChannelWidgetInput(QWidget *parent) : QLineEdit(parent) {
   idx = 0;
   connect(this, SIGNAL(returnPressed()), this, SLOT(enter()));
+  tabComplete = new TabCompleter(this);
+  connect(this, SIGNAL(nickListUpdated(QStringList)), tabComplete, SLOT(updateNickList(QStringList)));
+}
+
+ChannelWidgetInput::~ChannelWidgetInput() {
+  delete tabComplete;
 }
 
 void ChannelWidgetInput::keyPressEvent(QKeyEvent * event) {
-  if(event->key() == Qt::Key_Up) {
-    if(idx > 0) { idx--; setText(history[idx]); }
-    event->accept();
-  } else if(event->key() == Qt::Key_Down) {
-    if(idx < history.count()) idx++;
-    if(idx < history.count()) setText(history[idx]);
-    else setText("");
-    event->accept();
-  } else if(event->key() == Qt::Key_Tab) {
+  if(event->key() == Qt::Key_Tab) {
     // Tabcomplete
-      if(cursorPosition() == text().length()) {
-      
-
+    if(text().length() > 0) {
+      tabComplete->complete();
     }
     event->accept();
+    
   } else {
-    QLineEdit::keyPressEvent(event);
+    tabComplete->disable();
+    if(event->key() == Qt::Key_Up) {
+      if(idx > 0) { idx--; setText(history[idx]); }
+      event->accept();
+    } else if(event->key() == Qt::Key_Down) {
+      if(idx < history.count()) idx++;
+      if(idx < history.count()) setText(history[idx]);
+      else setText("");
+      event->accept();
+    } else {
+      QLineEdit::keyPressEvent(event);
+    }
   }
 }
 
@@ -61,4 +70,5 @@ void ChannelWidgetInput::enter() {
 
 void ChannelWidgetInput::updateNickList(QStringList l) {
   nickList = l;
+  emit nickListUpdated(l);
 }