X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fuisupport%2Fmultilineedit.h;h=3eb729d2415143517b039b8b1ce984e0ccef47d2;hp=da44304139f80a0fa246475c3a5b0446b1a631e1;hb=c64a887d0f05222590299fb2bb8d56fa9fadb16d;hpb=a9c2f4157175cfb775980eb72c8312cdffcbfe00 diff --git a/src/uisupport/multilineedit.h b/src/uisupport/multilineedit.h index da443041..3eb729d2 100644 --- a/src/uisupport/multilineedit.h +++ b/src/uisupport/multilineedit.h @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005-09 by the Quassel Project * + * Copyright (C) 2005-2012 by the Quassel Project * * devel@quassel-irc.org * * * * This program is free software; you can redistribute it and/or modify * @@ -15,7 +15,7 @@ * 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. * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * ***************************************************************************/ #ifndef MULTILINEEDIT_H_ @@ -23,101 +23,117 @@ #include #include -#include #ifdef HAVE_KDE # include +# define MultiLineEditParent KTextEdit +#else +# include +# define MultiLineEditParent QTextEdit #endif class QKeyEvent; class TabCompleter; -class MultiLineEdit : public -#ifdef HAVE_KDE - KTextEdit -#else - QTextEdit -#endif +class MultiLineEdit : public MultiLineEditParent { - Q_OBJECT + Q_OBJECT public: - enum Mode { - SingleLine, - MultiLine - }; + enum Mode { + SingleLine, + MultiLine + }; - MultiLineEdit(QWidget *parent = 0); - ~MultiLineEdit(); + MultiLineEdit(QWidget *parent = 0); + ~MultiLineEdit(); - void setCustomFont(const QFont &); // should be used instead setFont(), so we can set our size correctly + 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 QString html() { return toHtml(); } - 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(); } + // Compatibility methods with the rest of the classes which still expect this to be a QLineEdit + inline QString text() const { return toPlainText(); } + inline QString html() const { return toHtml(); } + inline int cursorPosition() const { 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() const { return textCursor().hasSelection(); } - inline bool isSingleLine() const { return _singleLine; } - inline bool pasteProtectionEnabled() const { return _pasteProtectionEnabled; } + inline bool isSingleLine() const { return _singleLine; } + inline bool pasteProtectionEnabled() const { return _pasteProtectionEnabled; } - virtual QSize sizeHint() const; - virtual QSize minimumSizeHint() const; + virtual QSize sizeHint() const; + virtual QSize minimumSizeHint() const; + + inline QString mircColorFromRGB(QString rgbColor) const { return _mircColorMap.key(rgbColor); } + inline QString rgbColorFromMirc(QString mircColor) const { return _mircColorMap[mircColor]; } + inline QMap mircColorMap() const { return _mircColorMap; } + + inline QStringList history() const { return _history; } + inline QHash tempHistory() const { return _tempHistory; } + inline qint32 idx() const { return _idx; } + inline bool emacsMode() const { return _emacsMode; } public slots: - void setMode(Mode mode); - void setMinHeight(int numLines); - void setMaxHeight(int numLines); - void setScrollBarsEnabled(bool enable = true); - void setSpellCheckEnabled(bool enable = true); - void setPasteProtectionEnabled(bool enable = true, QWidget *msgBoxParent = 0); + void setMode(Mode mode); + void setMinHeight(int numLines); + void setMaxHeight(int numLines); + void setEmacsMode(bool enable = true); + void setScrollBarsEnabled(bool enable = true); + void setSpellCheckEnabled(bool enable = true); + void setPasteProtectionEnabled(bool enable = true, QWidget *msgBoxParent = 0); - // Note: Enabling wrap will make isSingleLine() not work correctly, so only use this if minHeight() > 1! - void setWordWrapEnabled(bool enable = true); + // Note: Enabling wrap will make isSingleLine() not work correctly, so only use this if minHeight() > 1! + void setWordWrapEnabled(bool enable = true); + + inline void setHistory(QStringList history) { _history = history; } + inline void setTempHistory(QHash tempHistory) { _tempHistory = tempHistory; } + inline void setIdx(qint32 idx) { _idx = idx; } signals: - void textEntered(const QString &text); - void noTextEntered(); + void textEntered(const QString &text); + void noTextEntered(); protected: - virtual void keyPressEvent(QKeyEvent * event); - virtual void resizeEvent(QResizeEvent *event); + virtual bool event(QEvent *e); + virtual void keyPressEvent(QKeyEvent *event); + virtual void resizeEvent(QResizeEvent *event); private slots: - void on_returnPressed(); - void on_returnPressed(const QString &text); - void on_textChanged(); - void on_documentHeightChanged(qreal height); + void on_returnPressed(); + void on_returnPressed(const QString &text); + void on_textChanged(); + void on_documentHeightChanged(qreal height); - bool addToHistory(const QString &text, bool temporary = false); - void historyMoveForward(); - void historyMoveBack(); + bool addToHistory(const QString &text, bool temporary = false); + void historyMoveForward(); + void historyMoveBack(); - QString convertHtmlToMircCodes(const QString &text); - QString convertMircCodesToHtml(const QString &text); + QString convertRichtextToMircCodes(); + QString convertMircCodesToHtml(const QString &text); + bool mircCodesChanged(QTextCursor &cursor, QTextCursor &peekcursor); private: - QStringList history; - QHash tempHistory; - qint32 idx; - Mode _mode; - bool _singleLine; - int _minHeight; - int _maxHeight; - bool _scrollBarsEnabled; - bool _pasteProtectionEnabled; - - QSize _sizeHint; - qreal _lastDocumentHeight; - - QHash mircColorMap; - - void reset(); - void showHistoryEntry(); - void updateScrollBars(); - void updateSizeHint(); + QStringList _history; + QHash _tempHistory; + qint32 _idx; + Mode _mode; + bool _singleLine; + int _minHeight; + int _maxHeight; + bool _scrollBarsEnabled; + bool _pasteProtectionEnabled; + bool _emacsMode; + + QSize _sizeHint; + qreal _lastDocumentHeight; + + QMap _mircColorMap; + + void reset(); + void showHistoryEntry(); + void updateScrollBars(); + void updateSizeHint(); }; + #endif