added support for RichText input and conversion to mirc format
[quassel.git] / src / uisupport / multilineedit.h
index dbe9580..da44304 100644 (file)
@@ -54,11 +54,14 @@ public:
 
   // 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(); }
+
   inline bool isSingleLine() const { return _singleLine; }
+  inline bool pasteProtectionEnabled() const { return _pasteProtectionEnabled; }
 
   virtual QSize sizeHint() const;
   virtual QSize minimumSizeHint() const;
@@ -69,12 +72,14 @@ public slots:
   void setMaxHeight(int numLines);
   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);
 
 signals:
   void textEntered(const QString &text);
+  void noTextEntered();
 
 protected:
   virtual void keyPressEvent(QKeyEvent * event);
@@ -82,6 +87,7 @@ protected:
 
 private slots:
   void on_returnPressed();
+  void on_returnPressed(const QString &text);
   void on_textChanged();
   void on_documentHeightChanged(qreal height);
 
@@ -89,6 +95,9 @@ private slots:
   void historyMoveForward();
   void historyMoveBack();
 
+  QString convertHtmlToMircCodes(const QString &text);
+  QString convertMircCodesToHtml(const QString &text);
+
 private:
   QStringList history;
   QHash<int, QString> tempHistory;
@@ -98,14 +107,17 @@ private:
   int _minHeight;
   int _maxHeight;
   bool _scrollBarsEnabled;
+  bool _pasteProtectionEnabled;
 
   QSize _sizeHint;
   qreal _lastDocumentHeight;
 
+  QHash<QString, QString> mircColorMap;
+
   void reset();
   void showHistoryEntry();
   void updateScrollBars();
-  void computeSizeHint();
+  void updateSizeHint();
 };
 
 #endif