X-Git-Url: https://git.quassel-irc.org/?a=blobdiff_plain;ds=sidebyside;f=src%2Fuisupport%2Fmultilineedit.h;h=a8d2d1300cee1a6c90595e28d202fcdd5daa1c1e;hb=158443f71d48215eea8b47b836b61afd77654b78;hp=2041be292b1a2ee316ccf4afc45710d2e2d63f8a;hpb=694f9bfbf7f1af19108461c7e00d133e55082bce;p=quassel.git diff --git a/src/uisupport/multilineedit.h b/src/uisupport/multilineedit.h index 2041be29..a8d2d130 100644 --- a/src/uisupport/multilineedit.h +++ b/src/uisupport/multilineedit.h @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005-2012 by the Quassel Project * + * Copyright (C) 2005-2018 by the Quassel Project * * devel@quassel-irc.org * * * * This program is free software; you can redistribute it and/or modify * @@ -15,27 +15,31 @@ * 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_ -#define MULTILINEEDIT_H_ +#pragma once + +#include "uisupport-export.h" #include #include -#ifdef HAVE_KDE -# include +#if defined HAVE_KF5 +# include # define MultiLineEditParent KTextEdit #else # include # define MultiLineEditParent QTextEdit #endif -class QKeyEvent; -class TabCompleter; +#if defined HAVE_SONNET && !defined HAVE_KDE +# include +# include +# include +#endif -class MultiLineEdit : public MultiLineEditParent +class UISUPPORT_EXPORT MultiLineEdit : public MultiLineEditParent { Q_OBJECT @@ -45,8 +49,8 @@ public: MultiLine }; - MultiLineEdit(QWidget *parent = 0); - ~MultiLineEdit(); + MultiLineEdit(QWidget *parent = nullptr); + ~MultiLineEdit() override; void setCustomFont(const QFont &); // should be used instead setFont(), so we can set our size correctly @@ -61,8 +65,8 @@ public: inline bool isSingleLine() const { return _singleLine; } inline bool pasteProtectionEnabled() const { return _pasteProtectionEnabled; } - virtual QSize sizeHint() const; - virtual QSize minimumSizeHint() const; + QSize sizeHint() const override; + QSize minimumSizeHint() const override; inline QString mircColorFromRGB(QString rgbColor) const { return _mircColorMap.key(rgbColor); } inline QString rgbColorFromMirc(QString mircColor) const { return _mircColorMap[mircColor]; } @@ -73,17 +77,16 @@ public: inline qint32 idx() const { return _idx; } inline bool emacsMode() const { return _emacsMode; } + void addCompletionSpace(); + public slots: 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); + void setPasteProtectionEnabled(bool enable = true, QWidget *msgBoxParent = nullptr); + void setLineWrapEnabled(bool enable = false); inline void setHistory(QStringList history) { _history = history; } inline void setTempHistory(QHash tempHistory) { _tempHistory = tempHistory; } @@ -94,13 +97,17 @@ signals: void noTextEntered(); protected: - virtual bool event(QEvent *e); - virtual void keyPressEvent(QKeyEvent *event); - virtual void resizeEvent(QResizeEvent *event); + bool event(QEvent *e) override; + void keyPressEvent(QKeyEvent *event) override; + void resizeEvent(QResizeEvent *event) override; + +#if defined HAVE_SONNET && !defined HAVE_KDE + void contextMenuEvent(QContextMenuEvent *event) override; +#endif private slots: void on_returnPressed(); - void on_returnPressed(const QString &text); + void on_returnPressed(QString text); void on_textChanged(); void on_documentHeightChanged(qreal height); @@ -112,28 +119,38 @@ private slots: QString convertMircCodesToHtml(const QString &text); bool mircCodesChanged(QTextCursor &cursor, QTextCursor &peekcursor); +private: + void reset(); + void showHistoryEntry(); + void updateScrollBars(); + void updateSizeHint(); + private: QStringList _history; QHash _tempHistory; - qint32 _idx; - Mode _mode; - bool _singleLine; - int _minHeight; - int _maxHeight; - bool _scrollBarsEnabled; - bool _pasteProtectionEnabled; - bool _emacsMode; + qint32 _idx{0}; + Mode _mode{SingleLine}; + bool _singleLine{true}; + int _minHeight{1}; + int _maxHeight{5}; + bool _scrollBarsEnabled{true}; + bool _pasteProtectionEnabled{true}; + bool _emacsMode{false}; + int _completionSpace{0}; QSize _sizeHint; - qreal _lastDocumentHeight; + qreal _lastDocumentHeight{-1}; QMap _mircColorMap; - void reset(); - void showHistoryEntry(); - void updateScrollBars(); - void updateSizeHint(); -}; +#if defined HAVE_SONNET && !defined HAVE_KDE + // This member function is provided by KTextEdit + Sonnet::Highlighter *highlighter() const; +private slots: + void setSpellCheckEnabled(bool enabled); +private: + Sonnet::SpellCheckDecorator *_spellCheckDecorator{nullptr}; #endif +};