00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef KPIMTEXTEDIT_TEXTEDIT_H
00023 #define KPIMTEXTEDIT_TEXTEDIT_H
00024
00025 #include "kpimtextedit_export.h"
00026
00027 #include <kpimidentities/signature.h>
00028
00029 #include <KDE/KRichTextWidget>
00030
00031 #include <QtCore/QSharedPointer>
00032
00033 #include <memory>
00034
00035 class KUrl;
00036
00037 namespace KPIMTextEdit {
00038
00039 class TextEditPrivate;
00040 class EMailQuoteHighlighter;
00041
00046 struct EmbeddedImage
00047 {
00048 QByteArray image;
00049 QString contentID;
00050 QString imageName;
00051 };
00052
00059 struct ImageWithName
00060 {
00061 QImage image;
00062 QString name;
00063 };
00064
00065 typedef QSharedPointer<ImageWithName> ImageWithNamePtr;
00066 typedef QList< ImageWithNamePtr > ImageWithNameList;
00067 typedef QList< QSharedPointer<EmbeddedImage> > ImageList;
00068
00080 class KPIMTEXTEDIT_EXPORT TextEdit : public KRichTextWidget,
00081 protected KTextEditSpellInterface
00082 {
00083 Q_OBJECT
00084
00085 public:
00086
00092 explicit TextEdit( const QString& text, QWidget *parent = 0 );
00093
00098 explicit TextEdit( QWidget *parent = 0 );
00099
00100
00109 explicit TextEdit( QWidget * parent, const QString & configFile );
00110
00119 void enableImageActions();
00120
00124 ~TextEdit();
00125
00135 virtual void createActions( KActionCollection *actionCollection );
00136
00143 void addImage( const KUrl &url );
00144
00155 void loadImage( const QImage &image, const QString &matchName, const QString &resourceName );
00156
00161 void deleteCurrentLine();
00162
00170 ImageList embeddedImages() const;
00171
00178 ImageWithNameList imagesWithName() const;
00179
00184 QString toWrappedPlainText() const;
00185
00190 QString toCleanPlainText() const;
00191
00203 virtual void setHighlighterColors( EMailQuoteHighlighter *highlighter );
00204
00208 bool isLineQuoted( const QString &line ) const;
00209
00220 virtual int quoteLength( const QString &line ) const;
00221
00226 virtual const QString defaultQuoteSign() const;
00227
00245 static QByteArray imageNamesToContentIds( const QByteArray &htmlBody, const ImageList &imageList );
00246
00255 bool isFormattingUsed() const;
00256
00257
00258
00259
00260 QString configFile() const;
00261 protected:
00262
00266 virtual bool canInsertFromMimeData( const QMimeData *source ) const;
00267
00271 virtual void insertFromMimeData( const QMimeData *source );
00272
00277 virtual bool eventFilter( QObject*o, QEvent* e );
00278
00283 virtual void keyPressEvent ( QKeyEvent * e );
00284
00285
00286
00287
00291 virtual bool isSpellCheckingEnabled() const;
00292
00296 virtual void setSpellCheckingEnabled( bool enable );
00297
00302 virtual bool shouldBlockBeSpellChecked( const QString& block ) const;
00303
00308 virtual void createHighlighter();
00309
00310 private:
00311
00312 std::auto_ptr<TextEditPrivate> const d;
00313 friend class TextEditPrivate;
00314 Q_PRIVATE_SLOT( d, void _k_slotAddImage() )
00315 Q_PRIVATE_SLOT( d, void _k_slotDeleteLine() )
00316 };
00317
00318 }
00319
00320 #endif