***************************************************************************/
#include "channelwidgetinput.h"
-#include <QCompleter>
ChannelWidgetInput::ChannelWidgetInput(QWidget *parent) : QLineEdit(parent) {
idx = 0;
- tabMode = false;
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_Tab) {
- // Tabcomplete
- if(text().length() > 0) {
- if (not tabMode) {
- QString tabAbbrev = text().left(cursorPosition()).section(' ',-1,-1);
- tabCompleteList.clear();
- foreach(QString nick, nickList) {
- if(nick.toLower().startsWith(tabAbbrev.toLower())) {
- tabCompleteList << nick;
- }
- }
-
- tabCompleteList.sort();
- lastCompletionLength = tabAbbrev.length();
- tabMode = true;
- nextCompletion = tabCompleteList.begin();
- }
- if (nextCompletion != tabCompleteList.end()) {
- for (int i = 0; i < lastCompletionLength; i++) {
- backspace();
- }
- insert(*nextCompletion);
- lastCompletionLength = nextCompletion->length();
- nextCompletion++;
- } else if (tabCompleteList.end() != tabCompleteList.begin()) {
- nextCompletion = tabCompleteList.begin();
- }
- }
+ if(event->key() == Qt::Key_Tab) { // Tabcomplete
+ tabComplete->complete();
event->accept();
-
} else {
- tabMode = false;
+ tabComplete->disable();
if(event->key() == Qt::Key_Up) {
if(idx > 0) { idx--; setText(history[idx]); }
event->accept();
void ChannelWidgetInput::updateNickList(QStringList l) {
nickList = l;
+ emit nickListUpdated(l);
}