X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fuisupport%2Fmultilineedit.h;h=04afed31e1f1ba4475f017a4039857b8051605ec;hp=67264ddab6951f13548091dae150acd6c88d4471;hb=647215f1dd8ea6fdb6e4fb747c5dc3e19c4ec3fc;hpb=d7832127ff8412b09d9fa4e56570d8a890abcbbe diff --git a/src/uisupport/multilineedit.h b/src/uisupport/multilineedit.h index 67264dda..04afed31 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-2010 by the Quassel Project * * devel@quassel-irc.org * * * * This program is free software; you can redistribute it and/or modify * @@ -53,25 +53,45 @@ public: 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 int cursorPosition() { return textCursor().position(); } + 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() { return textCursor().hasSelection(); } + inline bool hasSelectedText() const { return textCursor().hasSelection(); } + inline bool isSingleLine() const { return _singleLine; } + inline bool pasteProtectionEnabled() const { return _pasteProtectionEnabled; } 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; } + public slots: void setMode(Mode mode); void setMinHeight(int numLines); void setMaxHeight(int numLines); - void enableScrollBars(bool enable = true); - void enableSpellCheck(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); + + 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(); protected: virtual void keyPressEvent(QKeyEvent * event); @@ -79,6 +99,7 @@ protected: private slots: void on_returnPressed(); + void on_returnPressed(const QString &text); void on_textChanged(); void on_documentHeightChanged(qreal height); @@ -86,23 +107,30 @@ private slots: void historyMoveForward(); void historyMoveBack(); + QString convertRichtextToMircCodes(); + QString convertMircCodesToHtml(const QString &text); + bool mircCodesChanged(QTextCursor &cursor, QTextCursor &peekcursor); + private: - QStringList history; - QHash tempHistory; - qint32 idx; + QStringList _history; + QHash _tempHistory; + qint32 _idx; Mode _mode; bool _singleLine; int _minHeight; int _maxHeight; bool _scrollBarsEnabled; + bool _pasteProtectionEnabled; QSize _sizeHint; qreal _lastDocumentHeight; + QMap _mircColorMap; + void reset(); void showHistoryEntry(); void updateScrollBars(); - void computeSizeHint(); + void updateSizeHint(); }; #endif