src/hbwidgets/editors/hbsmileyengine_p.h
changeset 1 f7ac710697a9
parent 0 16d8024aca5e
child 5 627c4a0fd0e7
equal deleted inserted replaced
0:16d8024aca5e 1:f7ac710697a9
    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