--- a/mtpdataproviders/mtpimagedp/mediasyncserver/src/cmediasyncobserver.cpp Thu Sep 09 18:17:36 2010 +0800
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,216 +0,0 @@
-// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-// All rights reserved.
-// This component and the accompanying materials are made available
-// under the terms of "Eclipse Public License v1.0"
-// which accompanies this distribution, and is available
-// at the URL "http://www.eclipse.org/legal/epl-v10.html".
-//
-// Initial Contributors:
-// Nokia Corporation - initial contribution.
-//
-// Contributors:
-//
-// Description:
-//
-
-/**
- @file
- @internalTechnology
-*/
-
-//
-#include <mdequery.h>
-#include <mdeconstants.h>
-
-#include "cmediasyncdatabase.h"
-#include "cmediasyncobserver.h"
-
-__FLOG_STMT(_LIT8(KComponent,"MediaSyncObserver");)
-
-CMediaSyncObserver* CMediaSyncObserver::NewL(CMediaSyncDatabase* aDb)
- {
- CMediaSyncObserver* self = new (ELeave) CMediaSyncObserver(aDb);
- CleanupStack::PushL(self);
- self->ConstructL();
- CleanupStack::Pop(self);
- return self;
- }
-
-void CMediaSyncObserver::ConstructL()
- {
- __FLOG_OPEN(KMSSSubsystem, KComponent);
- __FLOG(_L8("CMediaSyncObserver::ConstructL - Entry"));
-
- iSessionWait = new (ELeave) CActiveSchedulerWait();
- iSession = CMdESession::NewL(*this);
- iSessionWait->Start();
-
- User::LeaveIfError(iMdeSessionError);
-
-// SubscribeForChangeNotificationL();
-
- __FLOG(_L8("CMediaSyncObserver::ConstructL - Exit"));
- }
-
-CMediaSyncObserver::CMediaSyncObserver(CMediaSyncDatabase* aDb)
- :iDb(aDb),
- iSubscribed(EFalse)
- {
- }
-
-CMediaSyncObserver::~CMediaSyncObserver()
- {
- __FLOG(_L8("CMediaSyncObserver::~CMediaSyncObserver - Entry"));
-
-// TRAP_IGNORE(UnsubscribeForChangeNotificationL());
-
- delete iSession;
- delete iSessionWait;
-
- __FLOG(_L8("CMediaSyncObserver::~CMediaSyncObserver - Exit"));
- __FLOG_CLOSE;
- }
-
-void CMediaSyncObserver::SubscribeForChangeNotificationL()
- {
- __FLOG(_L8("CMediaSyncObserver::SubscribeForChangeNotificationL - Entry"));
-
- if (!iSubscribed)
- {
- CMdENamespaceDef& def = iSession->GetDefaultNamespaceDefL();
- CMdEObjectDef& imageObjDef = def.GetObjectDefL(MdeConstants::Image::KImageObject);
-
- // add observer
- CMdELogicCondition* addCondition = CMdELogicCondition::NewLC(ELogicConditionOperatorAnd);
- CMdEPropertyDef& itemTypePropDef = imageObjDef.GetPropertyDefL(MdeConstants::Object::KItemTypeProperty);
- addCondition->AddPropertyConditionL(itemTypePropDef, ETextPropertyConditionCompareEndsWith, _L("jpeg"));
- iSession->AddObjectObserverL(*this, addCondition, ENotifyAdd);
- CleanupStack::Pop(addCondition);
-
- // modify observer
- CMdELogicCondition* modifyCondition = CMdELogicCondition::NewLC(ELogicConditionOperatorAnd);
- CMdEPropertyDef& titlePropDef = imageObjDef.GetPropertyDefL(MdeConstants::Object::KTitleProperty);
- modifyCondition->AddPropertyConditionL(titlePropDef);
- iSession->AddObjectObserverL(*this, modifyCondition, ENotifyModify);
- CleanupStack::Pop(modifyCondition);
-
- // remove observer
- iSession->AddObjectObserverL(*this, NULL, ENotifyRemove);
-
- // present observer
- iSession->AddObjectPresentObserverL(*this);
-
- iSubscribed = ETrue;
- }
-
- __FLOG(_L8("CMediaSyncObserver::SubscribeForChangeNotificationL - Exit"));
- }
-
-void CMediaSyncObserver::UnsubscribeForChangeNotificationL()
- {
- __FLOG(_L8("CMediaSyncObserver::UnsubscribeForChangeNotificationL - Entry"));
-
- if (iSubscribed)
- {
- iSession->RemoveObjectObserverL(*this);//add observer
- iSession->RemoveObjectObserverL(*this);//modify observer
- iSession->RemoveObjectObserverL(*this);//remove observer
- iSession->RemoveObjectPresentObserverL(*this);
- iSubscribed = EFalse;
- }
-
- __FLOG(_L8("CMediaSyncObserver::UnsubscribeForChangeNotificationL - Exit"));
- }
-
-// From MMdESessionObserver
-void CMediaSyncObserver::HandleSessionOpened(CMdESession& /*aSession*/, TInt aError)
- {
- __FLOG(_L8("CMediaSyncObserver::HandleSessionOpened - Entry"));
-
- HandleSessionCallback(aError);
-
- __FLOG(_L8("CMediaSyncObserver::HandleSessionOpened - Exit"));
- }
-
-void CMediaSyncObserver::HandleSessionError(CMdESession& /*aSession*/, TInt aError)
- {
- __FLOG(_L8("CMediaSyncObserver::HandleSessionError - Entry"));
-
- HandleSessionCallback(aError);
-
- __FLOG(_L8("CMediaSyncObserver::HandleSessionError - Exit"));
- }
-
-void CMediaSyncObserver::HandleSessionCallback(TInt aError)
- {
- __ASSERT_DEBUG(iSessionWait, User::Invariant());
- iMdeSessionError = aError;
- if (iSessionWait->IsStarted())
- {
- iSessionWait->AsyncStop();
- }
- }
-
-/*
- * After receiving object change notification, check if there is any dp subscribed right now.
- * if none, store change into database
- * if yes, check the type of file with subscribed providers, if there is any match, just forward
- * the change to that dp, if none, store change into database.
- */
-void CMediaSyncObserver::HandleObjectNotification(CMdESession& aSession,
- TObserverNotificationType aType,
- const RArray<TItemId>& aObjectIdArray)
- {
- TRAPD(err, HandleObjectNotificationL(aSession, aType, aObjectIdArray));
-
- if (err != KErrNone)
- {
- __FLOG(_L8("CMediaSyncObserver::HandleObjectNotification - Rollback database"));
- iDb->Rollback();
- }
- }
-
-/*
- * L Function
- */
-void CMediaSyncObserver::HandleObjectNotificationL(CMdESession& /*aSession*/,
- TObserverNotificationType aType,
- const RArray<TItemId>& aObjectIdArray)
- {
- __FLOG(_L8("CMediaSyncObserver::HandleObjectNotificationL - Entry"));
-
- iDb->SaveNotificationsL(aObjectIdArray, aType, *iSession);
-
- __FLOG(_L8("CMediaSyncObserver::HandleObjectNotificationL - Exit"));
- }
-
-/*
- * Called to notify the observer that objects has been set
- * to present or not present state in the metadata engine database.
- */
-void CMediaSyncObserver::HandleObjectPresentNotification(CMdESession& aSession,
- TBool aPresent,
- const RArray<TItemId>& aObjectIdArray)
- {
- TRAPD(err, HandleObjectPresentNotificationL(aSession, aPresent, aObjectIdArray));
-
- if (err != KErrNone)
- {
- __FLOG(_L8("CMediaSyncObserver::HandleObjectPresentNotification - Rollback database"));
- iDb->Rollback();
- }
- }
-
-/*
- * L Function
- */
-void CMediaSyncObserver::HandleObjectPresentNotificationL(CMdESession& /*aSession*/,
- TBool aPresent,
- const RArray<TItemId>& aObjectIdArray)
- {
- __FLOG(_L8("CMediaSyncObserver::HandleObjectPresentNotificationL - Entry"));
-
- iDb->SaveNotificationsL(aObjectIdArray, aPresent, *iSession);
-
- __FLOG(_L8("CMediaSyncObserver::HandleObjectPresentNotificationL - Exit"));
- }