diff -r f54ad444594d -r 61bc0f252b2b camerauis/cameraxui/cxengine/src/cxeharvestercontrolsymbian.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/camerauis/cameraxui/cxengine/src/cxeharvestercontrolsymbian.cpp Tue Aug 31 15:03:46 2010 +0300 @@ -0,0 +1,133 @@ +/* +* 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: +* +*/ +#include +#include "cxeerrormappingsymbian.h" +#include "cxutils.h" +#include "cxeharvestercontrolsymbian.h" + + + +/*! +* CxeHarvesterControlSymbian::CxeHarvesterControlSymbian +*/ +CxeHarvesterControlSymbian::CxeHarvesterControlSymbian() +: mHarvesterClientConnected(false), + mRegisteredForHarvesterEvents(false) +{ + CX_DEBUG_IN_FUNCTION(); +} + + +/*! +* CxeHarvesterControlSymbian::~CxeHarvesterControlSymbian +*/ +CxeHarvesterControlSymbian::~CxeHarvesterControlSymbian() +{ + CX_DEBUG_ENTER_FUNCTION(); + + deRegisterHarverterClientEvents(); + + if (mHarvesterClientConnected) { + mHarvesterClient.Close(); + } + + CX_DEBUG_EXIT_FUNCTION(); +} + + + +/*! +* Calls MDS (Meta data system) harvester client to "harvest" files to +* specific album and also to default "captured" album in photos. +*/ +CxeError::Id CxeHarvesterControlSymbian::harvestFile(const QString& filename, + bool addLocation, + quint32 albumId) +{ + CX_DEBUG_ENTER_FUNCTION(); + + TInt err = KErrNone; + RArray harvestAlbumIds; + + if (albumId > 0) { + err = harvestAlbumIds.Append(albumId); + } + + if (!mHarvesterClientConnected) { + err = mHarvesterClient.Connect(); + if (!err) { + mHarvesterClientConnected = true; + } + + } + + if (KErrNone == err) { + registerForHarvesterEvents(); + TPtrC16 harvestFilename(reinterpret_cast(filename.utf16())); + mHarvesterClient.HarvestFile(harvestFilename, + harvestAlbumIds, + addLocation); + } + + harvestAlbumIds.Close(); + + CX_DEBUG_EXIT_FUNCTION(); + return CxeErrorHandlingSymbian::map(err); +} + + + +/*! +* Call back method, which informs client about harvest complete events from MDS +* harvester client +*/ +void CxeHarvesterControlSymbian::HarvestingComplete(TDesC& aURI ,TInt aError) +{ + CX_DEBUG_ENTER_FUNCTION(); + + QString uri = QString::fromUtf16(aURI.Ptr(),aURI.Length()); + CX_DEBUG(("Harvesting completed! error = %d, filename = %s", aError, + uri.toAscii().constData())); + // update the clients about the harvest complete event + emit fileHarvested(CxeErrorHandlingSymbian::map(aError), uri); + + CX_DEBUG_EXIT_FUNCTION(); +} + + +/*! +* Helper method to de-register for harvester events +*/ +void CxeHarvesterControlSymbian::deRegisterHarverterClientEvents() +{ + if (mRegisteredForHarvesterEvents && mHarvesterClientConnected) { + mHarvesterClient.RemoveObserver(this); + mRegisteredForHarvesterEvents = false; + } +} + + +/*! +* Helper method to register for harvester events +*/ +void CxeHarvesterControlSymbian::registerForHarvesterEvents() +{ + if ( !mRegisteredForHarvesterEvents && mHarvesterClientConnected) { + mHarvesterClient.SetObserver(this); + mRegisteredForHarvesterEvents = true; + } +}