From: Jesper Thomschütz Date: Fri, 13 Mar 2009 15:53:11 +0000 (+0200) Subject: Use KTextEdit instead of QLineEdit. On most KDE systems this means Spell Check support! X-Git-Tag: 0.5-rc1~288 X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=commitdiff_plain;h=c21696b07427a43b305dfbfddef73fcf274dfddf Use KTextEdit instead of QLineEdit. On most KDE systems this means Spell Check support! --- diff --git a/src/uisupport/inputline.cpp b/src/uisupport/inputline.cpp index 76796dd5..eaf1212f 100644 --- a/src/uisupport/inputline.cpp +++ b/src/uisupport/inputline.cpp @@ -24,10 +24,23 @@ #include "tabcompleter.h" InputLine::InputLine(QWidget *parent) - : QLineEdit(parent), + : +#ifdef HAVE_KDE + KTextEdit(parent), +#else + QLineEdit(parent), +#endif idx(0), tabCompleter(new TabCompleter(this)) { +#ifdef HAVE_KDE +//This is done to make the KTextEdit look like a lineedit + setMaximumHeight(document()->size().toSize().height()); + setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + setAcceptRichText(false); + connect(this, SIGNAL(textChanged()), this, SLOT(on_textChanged())); +#endif + connect(this, SIGNAL(returnPressed()), this, SLOT(on_returnPressed())); connect(this, SIGNAL(textChanged(QString)), this, SLOT(on_textChanged(QString))); } @@ -91,8 +104,18 @@ void InputLine::keyPressEvent(QKeyEvent * event) { case Qt::Key_Select: // for Qtopia emit returnPressed(); +#ifdef HAVE_KDE +//Since this is a ktextedit, we don't have this signal "natively" + case Qt::Key_Return: + emit returnPressed(); +#endif + default: +#ifdef HAVE_KDE + KTextEdit::keyPressEvent(event); +#else QLineEdit::keyPressEvent(event); +#endif } } diff --git a/src/uisupport/inputline.h b/src/uisupport/inputline.h index dc6d691c..dddf8d5e 100644 --- a/src/uisupport/inputline.h +++ b/src/uisupport/inputline.h @@ -23,15 +23,34 @@ #include +#ifdef HAVE_KDE +#include +#endif + class TabCompleter; -class InputLine : public QLineEdit { +class InputLine : public +#ifdef HAVE_KDE + KTextEdit +#else + QLineEdit +#endif + { Q_OBJECT public: InputLine(QWidget *parent = 0); ~InputLine(); +#ifdef HAVE_KDE +//Compatibility methods with the rest of the classes which expects this to be a QLineEdit + QString text() { return toPlainText(); }; + int cursorPosition() { return textCursor().position(); }; + void insert(const QString &newText) { insertPlainText(newText); }; + void backspace() { keyPressEvent(new QKeyEvent(QEvent::KeyPress, Qt::Key_Backspace, Qt::NoModifier)); }; + bool hasSelectedText() { return textCursor().hasSelection(); }; +#endif + protected: // virtual bool event(QEvent *); virtual void keyPressEvent(QKeyEvent * event); @@ -40,11 +59,20 @@ protected: private slots: void on_returnPressed(); void on_textChanged(QString newText); +#ifdef HAVE_KDE +//Needed to emulate the signal that QLineEdit has + void on_textChanged() { emit textChanged(toPlainText()); }; +#endif bool addToHistory(const QString &text, bool temporary = false); signals: void sendText(QString text); +#ifdef HAVE_KDE +//KTextEdit does not provide this signal, so we manually emit it in keyPressEvent() + void returnPressed(); + void textChanged(QString newText); +#endif private: QStringList history;