nick-autocompletition and scrollable-history encapsulated now in ChatTools

This commit is contained in:
doitux
2007-10-11 21:58:24 +00:00
parent 9663a225d5
commit ea1770ab21
8 changed files with 185 additions and 169 deletions
+4 -2
View File
@@ -29,6 +29,7 @@ INCLUDEPATH += . \
src/core \
src/gui/qt/sound \
src/gui/qt/qttools \
src/gui/qt/chattools \
src/gui/qt/qttools/qthelper \
src/gui/qt/mainwindow \
src/gui/qt/mainwindow/startsplash \
@@ -62,6 +63,7 @@ DEPENDPATH += . \
src/gui/qt \
src/net/common \
src/gui/qt/sound \
src/gui/qt/chattools \
src/gui/qt/mainwindow \
src/gui/qt/mainwindow/startsplash \
src/gui/qt/mainwindow/log \
@@ -130,6 +132,7 @@ HEADERS += \
src/engine/network_engine/clienthand.h \
src/engine/network_engine/clientplayer.h \
src/engine/network_engine/clientbero.h \
src/gui/qt/chattools/chattools.h \
src/gui/qt/sound/sdlplayer.h \
src/gui/qt/mainwindow/mainwindowimpl.h \
src/gui/qt/mainwindow/mycardspixmaplabel.h \
@@ -157,7 +160,6 @@ HEADERS += \
src/gui/qt/changehumanplayernamedialog/changehumanplayernamedialogimpl.h \
src/gui/qt/changecompleteblindsdialog/changecompleteblindsdialogimpl.h \
src/gui/qt/gamelobbydialog/gamelobbydialogimpl.h \
src/gui/qt/gamelobbydialog/mychatinputlineedit.h \
src/gui/qt/gamelobbydialog/lobbychat/lobbychat.h \
src/gui/qttoolsinterface.h \
src/gui/qt/qttools/qttoolswrapper.h \
@@ -182,6 +184,7 @@ FORMS += \
SOURCES += \
src/pokerth.cpp \
src/gui/qt/chattools/chattools.cpp \
src/gui/qt/sound/sdlplayer.cpp \
src/gui/qt/guiwrapper.cpp \
src/gui/qt/qttools/qttoolswrapper.cpp \
@@ -211,7 +214,6 @@ SOURCES += \
src/gui/qt/changehumanplayernamedialog/changehumanplayernamedialogimpl.cpp \
src/gui/qt/changecompleteblindsdialog/changecompleteblindsdialogimpl.cpp \
src/gui/qt/gamelobbydialog/gamelobbydialogimpl.cpp \
src/gui/qt/gamelobbydialog/mychatinputlineedit.cpp \
src/gui/qt/gamelobbydialog/lobbychat/lobbychat.cpp
TRANSLATIONS = \
+110
View File
@@ -0,0 +1,110 @@
/***************************************************************************
* Copyright (C) 2006 by FThauer FHammer *
* f.thauer@web.de *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with this program; if not, write to the *
* Free Software Foundation, Inc., *
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
***************************************************************************/
#include "chattools.h"
#include <iostream>
using namespace std;
ChatTools::ChatTools(QLineEdit* l, QTreeWidget *t, QStringList *s) : nickAutoCompletitionCounter(0), myLineEdit(l), myNickTreeWidget(t), myNickStringList(s)
{
}
ChatTools::~ChatTools()
{
}
void ChatTools::fillChatLinesHistory(QString fillString) {
chatLinesHistory << fillString;
if(chatLinesHistory.size() > 50) chatLinesHistory.removeFirst();
}
void ChatTools::showChatHistoryIndex(int index) {
if(index <= chatLinesHistory.size()) {
// cout << chatLinesHistory.size() << " : " << index << endl;
if(index > 0)
myLineEdit->setText(chatLinesHistory.at(chatLinesHistory.size()-(index)));
else
myLineEdit->setText("");
}
}
void ChatTools::nickAutoCompletition() {
QString myChatString = myLineEdit->text();
QStringList myChatStringList = myChatString.split(" ");
QStringList matchStringList;
if(nickAutoCompletitionCounter == 0) {
if(myNickTreeWidget) {
QTreeWidgetItemIterator it(myNickTreeWidget);
while (*it) {
if ((*it)->text(0).startsWith(myChatStringList.last(), Qt::CaseInsensitive) && myChatStringList.last() != "")
matchStringList << (*it)->text(0);
++it;
}
}
if(myNickStringList) {
//TODO code for static nickList
}
}
// QStringList::const_iterator constIterator;
// for (constIterator = matchStringList.constBegin(); constIterator != matchStringList.constEnd(); ++constIterator) {
// cout << (*constIterator).toLocal8Bit().constData() << endl;
// }
if(!matchStringList.isEmpty() || nickAutoCompletitionCounter > 0) {
myChatStringList.removeLast();
if(nickAutoCompletitionCounter == 0) {
//first one
lastChatString = myChatStringList.join(" ");
lastMatchStringList = matchStringList;
}
if(nickAutoCompletitionCounter == lastMatchStringList.size()) nickAutoCompletitionCounter = 0;
// cout << nickAutoCompletitionCounter << "\n";
if(lastChatString == "")
myLineEdit->setText(lastMatchStringList.at(nickAutoCompletitionCounter)+": ");
else
myLineEdit->setText(lastChatString+" "+lastMatchStringList.at(nickAutoCompletitionCounter)+" ");
nickAutoCompletitionCounter++;
}
}
void ChatTools::setChatTextEdited() {
nickAutoCompletitionCounter = 0;
}
+57
View File
@@ -0,0 +1,57 @@
/***************************************************************************
* Copyright (C) 2006 by FThauer FHammer *
* f.thauer@web.de *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with this program; if not, write to the *
* Free Software Foundation, Inc., *
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
***************************************************************************/
#ifndef CHATTOOLS_H
#define CHATTOOLS_H
#include <string>
#include <QtCore>
#include <QtGui>
class ChatTools : public QObject
{
Q_OBJECT
public:
ChatTools(QLineEdit* l, QTreeWidget *t = NULL, QStringList *s = NULL);
~ChatTools();
public slots:
void fillChatLinesHistory(QString fillString);
void showChatHistoryIndex(int index);
int getChatLinesHistorySize() { return chatLinesHistory.size(); }
void nickAutoCompletition();
void setChatTextEdited();
private:
QStringList chatLinesHistory;
QString lastChatString;
QStringList lastMatchStringList;
int nickAutoCompletitionCounter;
QLineEdit* myLineEdit;
QTreeWidget *myNickTreeWidget;
QStringList *myNickStringList;
// friend class GuiWrapper;
};
#endif
+1 -8
View File
@@ -454,20 +454,13 @@
<widget class="QTextBrowser" name="textBrowser_ChatDisplay" />
</item>
<item row="1" column="0" >
<widget class="MyChatInputLineEdit" name="lineEdit_ChatInput" />
<widget class="QLineEdit" name="lineEdit_ChatInput" />
</item>
</layout>
</widget>
</item>
</layout>
</widget>
<customwidgets>
<customwidget>
<class>MyChatInputLineEdit</class>
<extends>QLineEdit</extends>
<header>mychatinputlineedit.h</header>
</customwidget>
</customwidgets>
<tabstops>
<tabstop>treeWidget_GameList</tabstop>
<tabstop>pushButton_CreateGame</tabstop>
@@ -25,18 +25,14 @@
#include "gamelobbydialogimpl.h"
#include "session.h"
#include "configfile.h"
#include "chattools.h"
using namespace std;
LobbyChat::LobbyChat(gameLobbyDialogImpl* l, ConfigFile *c) : myLobby(l), myConfig(c), nickAutoCompletitionCounter(0), chatTextEdited(FALSE)
LobbyChat::LobbyChat(gameLobbyDialogImpl* l, ConfigFile *c) : myLobby(l), myConfig(c)
{
// chatInputCompleter = new QCompleter(myLobby->treeWidget_NickList->model());
// // chatInputCompleter->setCaseSensitivity(Qt::CaseInsensitive);
// // chatInputCompleter->setCompletionMode(QCompleter::PopupCompletion);
// // myLobby->lineEdit_ChatInput->setCompleter(chatInputCompleter);
myChatTools = new ChatTools(myLobby->lineEdit_ChatInput, myLobby->treeWidget_NickList);
}
LobbyChat::~LobbyChat()
@@ -236,72 +232,8 @@ void LobbyChat::chatServerError(int errorCode)
// myLobby->textBrowser_ChatDisplay->append(errorMsg);
}
void LobbyChat::fillChatLinesHistory(QString fillString) {
chatLinesHistory << fillString;
if(chatLinesHistory.size() > 50) chatLinesHistory.removeFirst();
}
void LobbyChat::showChatHistoryIndex(int index) {
if(index <= chatLinesHistory.size()) {
// cout << chatLinesHistory.size() << " : " << index << endl;
if(index > 0)
myLobby->lineEdit_ChatInput->setText(chatLinesHistory.at(chatLinesHistory.size()-(index)));
else
myLobby->lineEdit_ChatInput->setText("");
}
}
void LobbyChat::nickAutoCompletition() {
QString myChatString = myLobby->lineEdit_ChatInput->text();
QStringList myChatStringList = myChatString.split(" ");
QStringList matchStringList;
if(nickAutoCompletitionCounter == 0) {
QTreeWidgetItemIterator it(myLobby->treeWidget_NickList);
while (*it) {
if ((*it)->text(0).startsWith(myChatStringList.last(), Qt::CaseInsensitive) && myChatStringList.last() != "")
matchStringList << (*it)->text(0);
++it;
}
}
// QStringList::const_iterator constIterator;
// for (constIterator = matchStringList.constBegin(); constIterator != matchStringList.constEnd(); ++constIterator) {
// cout << (*constIterator).toLocal8Bit().constData() << endl;
// }
if(!matchStringList.isEmpty() || nickAutoCompletitionCounter > 0) {
myChatStringList.removeLast();
if(nickAutoCompletitionCounter == 0) {
//first one
lastChatString = myChatStringList.join(" ");
lastMatchStringList = matchStringList;
}
if(nickAutoCompletitionCounter == lastMatchStringList.size()) nickAutoCompletitionCounter = 0;
// cout << nickAutoCompletitionCounter << "\n";
if(lastChatString == "")
myLobby->lineEdit_ChatInput->setText(lastMatchStringList.at(nickAutoCompletitionCounter)+": ");
else
myLobby->lineEdit_ChatInput->setText(lastChatString+" "+lastMatchStringList.at(nickAutoCompletitionCounter)+" ");
nickAutoCompletitionCounter++;
}
}
void LobbyChat::setChatTextEdited() {
chatTextEdited = TRUE;
nickAutoCompletitionCounter = 0;
}
void LobbyChat::fillChatLinesHistory(QString fillString) { myChatTools->fillChatLinesHistory(fillString); }
int LobbyChat::getChatLinesHistorySize() { return myChatTools->getChatLinesHistorySize(); }
void LobbyChat::showChatHistoryIndex(int index) { myChatTools->showChatHistoryIndex(index); }
void LobbyChat::nickAutoCompletition() { myChatTools->nickAutoCompletition(); }
void LobbyChat::setChatTextEdited() { myChatTools->setChatTextEdited(); }
@@ -27,6 +27,7 @@
class gameLobbyDialogImpl;
class Session;
class ConfigFile;
class ChatTools;
class LobbyChat : public QObject
{
@@ -53,12 +54,12 @@ public slots:
void chatError(int errorCode);
void chatServerError(int errorCode);
ChatTools* getMyChatTools() const { return myChatTools; }
void fillChatLinesHistory(QString fillString);
void showChatHistoryIndex(int index);
int getChatLinesHistorySize() { return chatLinesHistory.size(); }
int getChatLinesHistorySize();
void nickAutoCompletition();
void setChatTextEdited();
private:
@@ -66,16 +67,7 @@ private:
ConfigFile *myConfig;
QString myNick;
QStringList chatLinesHistory;
QCompleter *chatInputCompleter;
QString lastChatString;
QStringList lastMatchStringList;
int nickAutoCompletitionCounter;
bool chatTextEdited;
ChatTools *myChatTools;
// friend class GuiWrapper;
};
@@ -1,32 +0,0 @@
//
// C++ Implementation: mycardspixmaplabel
//
// Description:
//
//
// Author: FThauer FHammer <f.thauer@web.de>, (C) 2007
//
// Copyright: See COPYING file that comes with this distribution
//
//
#include "mychatinputlineedit.h"
using namespace std;
MyChatInputLineEdit::MyChatInputLineEdit(QGroupBox* parent)
: QLineEdit(parent)
{
}
MyChatInputLineEdit::~MyChatInputLineEdit()
{
}
// void MyChatInputLineEdit::keyPressEvent( QKeyEvent * event ) {
//
// if (event->key() == Qt::Key_Tab && this->hasSelectedText()) { }
//
// QLineEdit::keyPressEvent(event);
// }
@@ -1,38 +0,0 @@
//
// C++ Interface: MyChatInputLineEdit
//
// Description:
//
//
// Author: FThauer FHammer <f.thauer@web.de>, (C) 2007
//
// Copyright: See COPYING file that comes with this distribution
//
//
#ifndef MYCHATINPUTLINEEDIT_H
#define MYCHATINPUTLINEEDIT_H
#include <QtGui>
#include <QtCore>
class MyChatInputLineEdit : public QLineEdit
{
Q_OBJECT
public:
MyChatInputLineEdit(QGroupBox*);
~MyChatInputLineEdit();
public slots:
// void keyPressEvent( QKeyEvent * event );
private:
// QTimer *chatBlinkTimer;
// QTabBar *myTabBar;
};
#endif