/***************************************************************************
- * Copyright (C) 2005-2015 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 *
#include <QKeyEvent>
#include <QHash>
-#ifdef HAVE_KDE4
-# include <KDE/KTextEdit>
-# define MultiLineEditParent KTextEdit
-#elif defined HAVE_KF5
+#if defined HAVE_KF5
# include <KTextWidgets/KTextEdit>
# define MultiLineEditParent KTextEdit
#else
# define MultiLineEditParent QTextEdit
#endif
+#if defined HAVE_SONNET && !defined HAVE_KDE
+# include <QContextMenuEvent>
+# include <Sonnet/Highlighter>
+# include <Sonnet/SpellCheckDecorator>
+#endif
+
class MultiLineEdit : public MultiLineEditParent
{
Q_OBJECT
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]; }
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 setLineWrapEnabled(bool enable = false);
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();
QString convertMircCodesToHtml(const QString &text);
bool mircCodesChanged(QTextCursor &cursor, QTextCursor &peekcursor);
+private:
+ void reset();
+ void showHistoryEntry();
+ void updateScrollBars();
+ void updateSizeHint();
+
private:
QStringList _history;
QHash<int, QString> _tempHistory;
QMap<QString, QString> _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
};