diff options
author | Juha Kukkonen <ext-juha.kukkonen@nokia.com> | 2012-03-27 15:30:42 +0300 |
---|---|---|
committer | Juha Kukkonen <ext-juha.kukkonen@nokia.com> | 2012-03-29 08:50:39 +0300 |
commit | f34601f2ffe23dca249e1e0ffc7feb30e2a436db (patch) | |
tree | cab523842c45c9104e62ad53f29e55cae3d95651 /src | |
parent | 254143706a664ee266f9df07d2fadb9342938f59 (diff) |
Fix QGalleryQueryRequest::setMetaData does not work on Symbian
There were to issues in setMetaData:
- CommitObjectL was never called to save changes
- OpenObjectL was not called before making modifications so changes
could not be committed succesfully
Task-number: QTMOBILITY-1417
Task-number: ou1cimx1#956601
Diffstat (limited to 'src')
-rw-r--r-- | src/gallery/symbian/qmdegalleryresultset.cpp | 29 | ||||
-rw-r--r-- | src/gallery/symbian/qmdesession.cpp | 8 | ||||
-rw-r--r-- | src/gallery/symbian/qmdesession_p.h | 1 |
3 files changed, 21 insertions, 17 deletions
diff --git a/src/gallery/symbian/qmdegalleryresultset.cpp b/src/gallery/symbian/qmdegalleryresultset.cpp index 0eb2d88a80..e444a40e4f 100644 --- a/src/gallery/symbian/qmdegalleryresultset.cpp +++ b/src/gallery/symbian/qmdegalleryresultset.cpp @@ -177,23 +177,18 @@ QVariant QMDEGalleryResultSet::metaData(int key) const bool QMDEGalleryResultSet::setMetaData(int key, const QVariant &value) { - bool ret = false; - - TRAPD( err, QDocumentGalleryMDSUtility::SetMetaDataFieldL( - m_itemArray[m_cursorPosition], value, key) ); - if (err) { - return false; - } else { - if (ret) { - TRAP( err, m_session->CommitObjectL( *m_itemArray[m_cursorPosition] ) ); - if (err) { - return false; - } else { - return true; - } - } - } - return false; + TRAPD( err, + CMdEObject* object = m_session->OpenObjectL(m_itemArray[m_cursorPosition]->Id(), + m_itemArray[m_cursorPosition]->Def()); + if (!object) + User::Leave(KErrNotFound); + CleanupStack::PushL(object); + QDocumentGalleryMDSUtility::SetMetaDataFieldL(object, value, key); + m_session->CommitObjectL(*object); + CleanupStack::PopAndDestroy(object); + ); + + return err == KErrNone ? true: false; } int QMDEGalleryResultSet::currentIndex() const diff --git a/src/gallery/symbian/qmdesession.cpp b/src/gallery/symbian/qmdesession.cpp index cc5db8cf82..888ca6be1d 100644 --- a/src/gallery/symbian/qmdesession.cpp +++ b/src/gallery/symbian/qmdesession.cpp @@ -108,6 +108,14 @@ CMdEObject* QMdeSession::GetFullObjectL(const unsigned int id) return NULL; } +CMdEObject* QMdeSession::OpenObjectL( const unsigned int id, CMdEObjectDef& objectDef ) +{ + if (m_cmdeSession) + return m_cmdeSession->OpenObjectL(id, objectDef); + else + return NULL; +} + void QMdeSession::CommitObjectL( CMdEObject& object ) { if (m_cmdeSession) diff --git a/src/gallery/symbian/qmdesession_p.h b/src/gallery/symbian/qmdesession_p.h index e241209c48..fd850842b4 100644 --- a/src/gallery/symbian/qmdesession_p.h +++ b/src/gallery/symbian/qmdesession_p.h @@ -95,6 +95,7 @@ public: // From MMdESessionObserver CMdEObject* GetFullObjectL( const unsigned int id ); + CMdEObject* OpenObjectL( const unsigned int id, CMdEObjectDef& objectDef ); void CommitObjectL( CMdEObject& object ); CMdEObjectQuery* NewObjectQueryL(MMdEQueryObserver *observer, |