23 ** |
23 ** |
24 ****************************************************************************/ |
24 ****************************************************************************/ |
25 #ifndef HBSMILEYENGINE_P_H |
25 #ifndef HBSMILEYENGINE_P_H |
26 #define HBSMILEYENGINE_P_H |
26 #define HBSMILEYENGINE_P_H |
27 |
27 |
|
28 #include <hbglobal.h> |
28 #include <hbsmileytheme.h> |
29 #include <hbsmileytheme.h> |
29 #include <hbsmileyengine.h> |
30 |
30 #include <QTextCursor> |
|
31 #include <QTextObjectInterface> |
|
32 #include <QObject> |
31 #include <QObject> |
33 #include <QPair> |
|
34 |
32 |
35 class HbIconAnimator; |
33 class HbSmileyEnginePrivate; |
36 QT_FORWARD_DECLARE_CLASS(QTextDocument); |
34 QT_FORWARD_DECLARE_CLASS(QTextDocument); |
|
35 QT_FORWARD_DECLARE_CLASS(QTextCursor); |
37 |
36 |
38 class HbIconTextObject : public QObject, public QTextObjectInterface |
37 class HB_AUTOTEST_EXPORT HbSmileyEngine : public QObject |
39 { |
38 { |
40 Q_OBJECT |
39 Q_OBJECT |
41 Q_INTERFACES(QTextObjectInterface) |
|
42 public: |
40 public: |
43 enum Properties { HbSmileyData = 1 }; |
41 explicit HbSmileyEngine(QObject *parent = 0); |
44 typedef QPair<QTextCursor*, HbIconAnimator*> HbSmileyDataType; |
42 ~HbSmileyEngine(); |
45 |
43 |
46 public: |
44 void setDocument(QTextDocument *doc); |
47 QSizeF intrinsicSize(QTextDocument *doc, int posInDocument, |
45 void startAnimation(); |
48 const QTextFormat &format); |
46 void stopAnimation(); |
49 void drawObject(QPainter *painter, const QRectF &rect, QTextDocument *doc, |
47 void setTheme(const HbSmileyTheme& theme); |
50 int posInDocument, const QTextFormat &format); |
48 HbSmileyTheme theme() const; |
|
49 HbSmileyTheme defaultTheme() const; |
|
50 |
|
51 QString toPlainText() const; |
|
52 QString toHtml() const; |
|
53 void setSmileyScaleFactor(qreal scaleFactor); |
|
54 |
|
55 public slots: |
|
56 void insertSmileys(); |
|
57 void insertSmileys(const QTextCursor& cursor); |
|
58 void insertSmiley(const QTextCursor& cursor); |
|
59 |
|
60 |
|
61 protected: |
|
62 HbSmileyEnginePrivate * const d_ptr; |
|
63 explicit HbSmileyEngine(HbSmileyEnginePrivate &dd, QObject *parent = 0); |
|
64 |
|
65 private: |
|
66 Q_DECLARE_PRIVATE_D(d_ptr, HbSmileyEngine) |
|
67 Q_DISABLE_COPY(HbSmileyEngine) |
|
68 Q_PRIVATE_SLOT(d_func(), void _q_animationProgressed()) |
|
69 Q_PRIVATE_SLOT(d_func(), void _q_documentContentsChanged(int position, int charsRemoved, int charsAdded)) |
|
70 |
51 }; |
71 }; |
52 |
72 |
53 class HbSmileyEnginePrivate |
73 Q_DECLARE_METATYPE(HbSmileyEngine*) |
54 { |
|
55 Q_DECLARE_PUBLIC(HbSmileyEngine) |
|
56 public: |
|
57 enum { HbIconTextFormat = QTextFormat::UserObject + 1 }; |
|
58 HbSmileyEnginePrivate(); |
|
59 virtual ~HbSmileyEnginePrivate(); |
|
60 void init(); |
|
61 void cleanUp(); |
|
62 void setDocument(QTextDocument *doc); |
|
63 void insertSmiley( QTextCursor cursor, const QString& name); |
|
64 void insertSmileys( QTextCursor cursor, bool insertOne = false); |
|
65 HbIconAnimator* lookupAnimator(const QString& name); |
|
66 bool isCursorValid(QTextCursor* cursor) const; |
|
67 |
|
68 HbIconAnimator* animatorForCursor(const QTextCursor& cursor); |
|
69 void removeCursor(const QTextCursor &cursor, HbIconAnimator* animator); |
|
70 void convertToText(QTextDocument *copyDoc) const; |
|
71 |
|
72 void _q_animationProgressed(); |
|
73 void _q_documentContentsChanged(int position, int charsRemoved, int charsAdded); |
|
74 |
|
75 HbSmileyEngine *q_ptr; |
|
76 |
|
77 QTextDocument *mDocument; |
|
78 HbSmileyTheme mSmileyTheme; |
|
79 bool mEdited; |
|
80 QObject *mIconTextObject; |
|
81 |
|
82 |
|
83 QHash<HbIconAnimator*, QList<QTextCursor*> > mAnimatorToCursors; |
|
84 QHash<QTextCursor*,HbIconAnimator*> mCursorToAnimator; |
|
85 QHash<QString, HbIconAnimator*> mSmileyAnimator; |
|
86 |
|
87 static HbSmileyTheme mDefaultTheme; |
|
88 }; |
|
89 |
|
90 Q_DECLARE_METATYPE(HbIconAnimator*) |
|
91 Q_DECLARE_METATYPE(HbIconTextObject::HbSmileyDataType) |
|
92 |
|
93 |
|
94 #endif // HBSMILEYENGINE_P_H |
74 #endif // HBSMILEYENGINE_P_H |