X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fuisupport%2Fmultilineedit.h;h=f4b2d6de5f121b405b2713fdc37300f76b5a6cd1;hp=7cf418920ec625eaa8ff27cb8cd101211a0ac2a0;hb=a95ad2de573027f9bee36db972bcae4195168d0c;hpb=68878dc8366f2f4a0afe132847aad9a51a80cdbf diff --git a/src/uisupport/multilineedit.h b/src/uisupport/multilineedit.h index 7cf41892..f4b2d6de 100644 --- a/src/uisupport/multilineedit.h +++ b/src/uisupport/multilineedit.h @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005-2018 by the Quassel Project * + * Copyright (C) 2005-2020 by the Quassel Project * * devel@quassel-irc.org * * * * This program is free software; you can redistribute it and/or modify * @@ -18,43 +18,48 @@ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * ***************************************************************************/ -#ifndef MULTILINEEDIT_H_ -#define MULTILINEEDIT_H_ +#pragma once + +#include "uisupport-export.h" -#include #include +#include -#ifdef HAVE_KDE4 -# include -# define MultiLineEditParent KTextEdit -#elif defined HAVE_KF5 -# include -# define MultiLineEditParent KTextEdit +#if defined HAVE_KF5 +# include +# define MultiLineEditParent KTextEdit #else -# include -# define MultiLineEditParent QTextEdit +# include +# define MultiLineEditParent QTextEdit +#endif + +#if defined HAVE_SONNET && !defined HAVE_KDE +# include + +# include +# include #endif -class MultiLineEdit : public MultiLineEditParent +class UISUPPORT_EXPORT MultiLineEdit : public MultiLineEditParent { Q_OBJECT public: - enum Mode { + enum Mode + { SingleLine, MultiLine }; - MultiLineEdit(QWidget *parent = 0); - ~MultiLineEdit(); + MultiLineEdit(QWidget* parent = nullptr); - 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() 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 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(); } @@ -66,7 +71,7 @@ public: 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 QMap mircColorMap() const { return _mircColorMap; } inline QStringList history() const { return _history; } inline QHash tempHistory() const { return _tempHistory; } @@ -74,9 +79,6 @@ public: inline bool emacsMode() const { return _emacsMode; } void addCompletionSpace(); -#if defined HAVE_KF5 || defined HAVE_KDE4 - void createHighlighter() override; -#endif public slots: void setMode(Mode mode); @@ -84,8 +86,7 @@ public slots: 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); + void setPasteProtectionEnabled(bool enable = true, QWidget* msgBoxParent = nullptr); void setLineWrapEnabled(bool enable = false); inline void setHistory(QStringList history) { _history = history; } @@ -93,13 +94,17 @@ public slots: inline void setIdx(qint32 idx) { _idx = idx; } signals: - void textEntered(const QString &text); + void textEntered(const QString& text); void noTextEntered(); protected: - bool event(QEvent *e) override; - void keyPressEvent(QKeyEvent *event) override; - void resizeEvent(QResizeEvent *event) override; + 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(); @@ -107,37 +112,46 @@ private slots: void on_textChanged(); void on_documentHeightChanged(qreal height); - bool addToHistory(const QString &text, bool temporary = false); + bool addToHistory(const QString& text, bool temporary = false); void historyMoveForward(); void historyMoveBack(); QString convertRichtextToMircCodes(); - QString convertMircCodesToHtml(const QString &text); - bool mircCodesChanged(QTextCursor &cursor, QTextCursor &peekcursor); + 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; - int _completionSpace; + 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 +};