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 #define FIX_KMAIL_INSERT_IMAGE 1
00035
00036 class KUrl;
00037 class QFileInfo;
00038 namespace KPIMTextEdit {
00039
00040 class TextEditPrivate;
00041 class EMailQuoteHighlighter;
00042
00047 struct EmbeddedImage
00048 {
00049 QByteArray image;
00050 QString contentID;
00051 QString imageName;
00052 };
00053
00060 struct ImageWithName
00061 {
00062 QImage image;
00063 QString name;
00064 };
00065
00066 typedef QSharedPointer<ImageWithName> ImageWithNamePtr;
00067 typedef QList< ImageWithNamePtr > ImageWithNameList;
00068 typedef QList< QSharedPointer<EmbeddedImage> > ImageList;
00069
00081 class KPIMTEXTEDIT_EXPORT TextEdit : public KRichTextWidget,
00082 protected KTextEditSpellInterface
00083 {
00084 Q_OBJECT
00085
00086 public:
00087
00093 explicit TextEdit( const QString& text, QWidget *parent = 0 );
00094
00099 explicit TextEdit( QWidget *parent = 0 );
00100
00101
00110 explicit TextEdit( QWidget * parent, const QString & configFile );
00111
00120 void enableImageActions();
00121
00125 ~TextEdit();
00126
00136 virtual void createActions( KActionCollection *actionCollection );
00137
00144 void addImage( const KUrl &url );
00145
00156 void loadImage( const QImage &image, const QString &matchName, const QString &resourceName );
00157
00162 void deleteCurrentLine();
00163
00171 ImageList embeddedImages() const;
00172
00179 ImageWithNameList imagesWithName() const;
00180
00185 QString toWrappedPlainText() const;
00186
00191 QString toCleanPlainText() const;
00192
00204 virtual void setHighlighterColors( EMailQuoteHighlighter *highlighter );
00205
00209 bool isLineQuoted( const QString &line ) const;
00210
00221 virtual int quoteLength( const QString &line ) const;
00222
00227 virtual const QString defaultQuoteSign() const;
00228
00246 static QByteArray imageNamesToContentIds( const QByteArray &htmlBody, const ImageList &imageList );
00247
00256 bool isFormattingUsed() const;
00257
00258
00259
00260
00261 QString configFile() const;
00262
00263
00264
00265
00266 bool isEnableImageActions() const;
00267
00268
00269
00270 void insertImage( const QImage &image, const QFileInfo&info );
00271
00272 protected:
00273
00277 virtual bool canInsertFromMimeData( const QMimeData *source ) const;
00278
00282 virtual void insertFromMimeData( const QMimeData *source );
00283
00288 virtual bool eventFilter( QObject*o, QEvent* e );
00289
00294 virtual void keyPressEvent ( QKeyEvent * e );
00295
00296
00297
00298
00302 virtual bool isSpellCheckingEnabled() const;
00303
00307 virtual void setSpellCheckingEnabled( bool enable );
00308
00313 virtual bool shouldBlockBeSpellChecked( const QString& block ) const;
00314
00319 virtual void createHighlighter();
00320
00321 private:
00322
00323 std::auto_ptr<TextEditPrivate> const d;
00324 friend class TextEditPrivate;
00325 Q_PRIVATE_SLOT( d, void _k_slotAddImage() )
00326 Q_PRIVATE_SLOT( d, void _k_slotDeleteLine() )
00327 };
00328
00329 }
00330
00331 #endif