--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/camerauis/cameraxui/cxengine/src/cxeharvestercontrolsymbian.cpp Fri Apr 16 14:51:30 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 <QString>
+#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<TUint32> 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<const TUint16*>(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;
+ }
+}