X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fuisupport%2Finputline.h;h=6bbfee2fbfa980e511915204a168ac54e8a1077b;hp=b0d59bd68b5f55d0bd01e2b54848e77fd1c3c038;hb=5b80bf46baa35abc972b9bd71fc26e02a3177655;hpb=5df99c1ab83baf3a6caef7e49177f84bd48d127e diff --git a/src/uisupport/inputline.h b/src/uisupport/inputline.h index b0d59bd6..6bbfee2f 100644 --- a/src/uisupport/inputline.h +++ b/src/uisupport/inputline.h @@ -1,11 +1,11 @@ /*************************************************************************** - * Copyright (C) 2005/06 by The Quassel Team * + * Copyright (C) 2005-09 by the Quassel Project * * devel@quassel-irc.org * * * * 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. * + * (at your option) version 3. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * @@ -18,39 +18,75 @@ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * ***************************************************************************/ -#ifndef _INPUTLINE_H_ -#define _INPUTLINE_H_ +#ifndef INPUTLINE_H_ +#define INPUTLINE_H_ -#include +#include +#include +#include + +#ifdef HAVE_KDE +#include +#endif class TabCompleter; -class InputLine : public QLineEdit { +class InputLine : public +#ifdef HAVE_KDE + KTextEdit +#else + QTextEdit +#endif +{ Q_OBJECT - public: - InputLine(QWidget *parent = 0); - ~InputLine(); - - protected: - virtual bool event(QEvent *); - virtual void keyPressEvent(QKeyEvent * event); - - private slots: - void enter(); - - public slots: - void updateNickList(QStringList); - - signals: - void nickListUpdated(QStringList); - - private: - qint32 idx; - QStringList history; - QStringList nickList; - - TabCompleter *tabComplete; +public: + InputLine(QWidget *parent = 0); + ~InputLine(); + + void setCustomFont(const QFont &); // should be used instead setFont(), so we can set our size correctly + + // Compatibility methods with the rest of the classes which still expect this to be a QLineEdit + inline QString text() { return toPlainText(); } + inline int cursorPosition() { return textCursor().position(); } + inline void insert(const QString &newText) { insertPlainText(newText); } + inline void backspace() { keyPressEvent(new QKeyEvent(QEvent::KeyPress, Qt::Key_Backspace, Qt::NoModifier)); } + inline bool hasSelectedText() { return textCursor().hasSelection(); } + + virtual QSize sizeHint() const; + virtual QSize minimumSizeHint() const; + +protected: + virtual void keyPressEvent(QKeyEvent * event); + virtual bool eventFilter(QObject *watched, QEvent *event); + +private slots: + void on_returnPressed(); + void on_textChanged(QString newText); + + // Needed to emulate the signal that QLineEdit has + inline void on_textChanged() { emit textChanged(toPlainText()); }; + + bool addToHistory(const QString &text, bool temporary = false); + +signals: + void sendText(QString text); + + // QTextEdit does not provide this signal, so we manually emit it in keyPressEvent() + void returnPressed(); + void textChanged(QString newText); + +private: + QStringList history; + QHash tempHistory; + qint32 idx; + TabCompleter *tabCompleter; + + int bindModifier; + int jumpModifier; + + void resetLine(); + void showHistoryEntry(); }; #endif