summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJuha Kukkonen <ext-juha.kukkonen@nokia.com>2012-03-27 15:30:42 +0300
committerJuha Kukkonen <ext-juha.kukkonen@nokia.com>2012-03-29 08:50:39 +0300
commitf34601f2ffe23dca249e1e0ffc7feb30e2a436db (patch)
treecab523842c45c9104e62ad53f29e55cae3d95651 /src
parent254143706a664ee266f9df07d2fadb9342938f59 (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.cpp29
-rw-r--r--src/gallery/symbian/qmdesession.cpp8
-rw-r--r--src/gallery/symbian/qmdesession_p.h1
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,