diff options
author | Andrew den Exter <andrew.den-exter@nokia.com> | 2011-12-05 11:36:55 +1000 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2011-12-07 05:49:46 +0100 |
commit | d052d2f569324f9a5416ee69ad60d4d4ded84ad3 (patch) | |
tree | 6706193f9ab4ee6b74afb9d5fdeb51417d4234e1 /src/quick/items/qquicktext.cpp | |
parent | 389626a2232910945b4f78b9b60ff15d71f0b93b (diff) |
Add support for pixmap cache images to TextEdit.
Re-use the QQuickTextDocumentWithImageResources class from Text to
allow image resources to be loaded from the pixmap cache.
Change-Id: I13170eefe664447b77f2980fb2fe7b4e2f8eb81c
Reviewed-by: Yann Bodson <yann.bodson@nokia.com>
Diffstat (limited to 'src/quick/items/qquicktext.cpp')
-rw-r--r-- | src/quick/items/qquicktext.cpp | 62 |
1 files changed, 22 insertions, 40 deletions
diff --git a/src/quick/items/qquicktext.cpp b/src/quick/items/qquicktext.cpp index d01512740d..274ea93abb 100644 --- a/src/quick/items/qquicktext.cpp +++ b/src/quick/items/qquicktext.cpp @@ -67,29 +67,6 @@ QT_BEGIN_NAMESPACE extern Q_GUI_EXPORT bool qt_applefontsmoothing_enabled; -class QQuickTextDocumentWithImageResources : public QTextDocument { - Q_OBJECT - -public: - QQuickTextDocumentWithImageResources(QQuickText *parent); - virtual ~QQuickTextDocumentWithImageResources(); - - void setText(const QString &); - int resourcesLoading() const { return outstanding; } - -protected: - QVariant loadResource(int type, const QUrl &name); - -private slots: - void requestFinished(); - -private: - QHash<QUrl, QDeclarativePixmap *> m_resources; - - int outstanding; - static QSet<QUrl> errors; -}; - DEFINE_BOOL_CONFIG_OPTION(qmlDisableDistanceField, QML_DISABLE_DISTANCEFIELD) DEFINE_BOOL_CONFIG_OPTION(enableImageCache, QML_ENABLE_TEXT_IMAGE_CACHE); @@ -123,7 +100,7 @@ void QQuickTextPrivate::init() q->setFlag(QQuickItem::ItemHasContents); } -QQuickTextDocumentWithImageResources::QQuickTextDocumentWithImageResources(QQuickText *parent) +QQuickTextDocumentWithImageResources::QQuickTextDocumentWithImageResources(QQuickItem *parent) : QTextDocument(parent), outstanding(0) { setUndoRedoEnabled(false); @@ -171,25 +148,32 @@ void QQuickTextDocumentWithImageResources::requestFinished() { outstanding--; if (outstanding == 0) { - QQuickText *textItem = static_cast<QQuickText*>(parent()); - QString text = textItem->text(); -#ifndef QT_NO_TEXTHTMLPARSER - setHtml(text); -#else - setPlainText(text); -#endif - QQuickTextPrivate *d = QQuickTextPrivate::get(textItem); - d->updateLayout(); + markContentsDirty(0, characterCount()); + + if (QQuickText *item = qobject_cast<QQuickText *>(parent())) + QQuickTextPrivate::get(item)->updateLayout(); } } +void QQuickTextDocumentWithImageResources::clear() +{ + clearResources(); + + QTextDocument::clear(); +} + +void QQuickTextDocumentWithImageResources::clearResources() +{ + foreach (QDeclarativePixmap *pixmap, m_resources) + pixmap->clear(this); + qDeleteAll(m_resources); + m_resources.clear(); + outstanding = 0; +} + void QQuickTextDocumentWithImageResources::setText(const QString &text) { - if (!m_resources.isEmpty()) { - qDeleteAll(m_resources); - m_resources.clear(); - outstanding = 0; - } + clearResources(); #ifndef QT_NO_TEXTHTMLPARSER setHtml(text); @@ -1946,5 +1930,3 @@ void QQuickText::mouseReleaseEvent(QMouseEvent *event) } QT_END_NAMESPACE - -#include "qquicktext.moc" |