--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/phonebookui/Phonebook2/Presentation/src/CPbk2ImageManager.cpp Tue Feb 02 10:12:17 2010 +0200
@@ -0,0 +1,227 @@
+/*
+* Copyright (c) 2005-2007 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:
+* Provides Phonebook2 image manager methods.
+*
+*/
+
+
+
+// INCLUDE FILES
+#include "CPbk2ImageManager.h"
+
+// From Phonebook2
+#include "MPbk2ImageOperationObservers.h"
+#include "CPbk2ImageManagerImpl.h"
+
+// From Virtual Phonebook
+#include "CVPbkContactManager.h"
+#include "MVPbkFieldType.h"
+#include <MVPbkStoreContact.h>
+#include <MVPbkContactFieldData.h>
+
+// From System
+
+// Unnamed namespace for local definitions
+namespace
+ {
+ /**
+ * Finds field index from contact.
+ *
+ * @param aContactManager Reference to contact manager.
+ * @param aContact Reference to contact,
+ * @param aFieldType Reference to field type.
+ * @return Found field index. KErrNotFound if field cannot be found.
+ */
+ TInt FindFieldIndex(
+ CVPbkContactManager& aContactManager,
+ const MVPbkBaseContact& aContact,
+ const MVPbkFieldType& aFieldType)
+ {
+ const MVPbkBaseContactFieldCollection& fields = aContact.Fields();
+ const TInt fieldCount = fields.FieldCount();
+
+ const TInt maxMatchPriority =
+ aContactManager.FieldTypes().MaxMatchPriority();
+ for (TInt matchPriority = 0;
+ matchPriority <= maxMatchPriority;
+ ++matchPriority)
+ {
+ for (TInt i = 0; i < fieldCount; ++i)
+ {
+ const MVPbkFieldType* fieldType =
+ fields.FieldAt(i).MatchFieldType(matchPriority);
+ if (fieldType && fieldType->IsSame(aFieldType))
+ {
+ return i;
+ }
+ }
+ }
+ return KErrNotFound;
+ }
+ } // unnamed namespace
+
+// ================= MEMBER FUNCTIONS =======================
+
+// --------------------------------------------------------------------------
+// CPbk2ImageManager::CPbk2ImageManager
+// --------------------------------------------------------------------------
+//
+inline CPbk2ImageManager::CPbk2ImageManager
+ (CVPbkContactManager& aContactManager)
+ : iContactManager(aContactManager)
+ {
+ }
+
+// --------------------------------------------------------------------------
+// CPbk2ImageManager::~CPbk2ImageManager
+// --------------------------------------------------------------------------
+//
+CPbk2ImageManager::~CPbk2ImageManager()
+ {
+ }
+
+// --------------------------------------------------------------------------
+// CPbk2ImageManager::NewL
+// --------------------------------------------------------------------------
+//
+EXPORT_C CPbk2ImageManager* CPbk2ImageManager::NewL(
+ CVPbkContactManager& aContactManager)
+ {
+ CPbk2ImageManager* self =
+ new(ELeave) CPbk2ImageManager(aContactManager);
+ CleanupStack::PushL(self);
+ self->ConstructL();
+ CleanupStack::Pop(self);
+ return self;
+ }
+
+// --------------------------------------------------------------------------
+// CPbk2ImageManager::ConstructL
+// --------------------------------------------------------------------------
+//
+inline void CPbk2ImageManager::ConstructL()
+ {
+ }
+
+// --------------------------------------------------------------------------
+// CPbk2ImageManager::GetImageAsyncL
+// --------------------------------------------------------------------------
+//
+EXPORT_C MPbk2ImageOperation* CPbk2ImageManager::GetImageAsyncL
+ (TPbk2ImageManagerParams* aParams,
+ MVPbkBaseContact& aContact,
+ const MVPbkFieldType& aFieldType,
+ MPbk2ImageGetObserver& aObserver)
+ {
+ MPbk2ImageReader* reader = Pbk2ImageOperationFactory::CreateReaderLC
+ (iContactManager, aContact, aObserver, aFieldType);
+ if (reader)
+ {
+ reader->StartReadL(aParams);
+ CleanupStack::Pop(); // reader
+ }
+ return reader;
+ }
+
+// --------------------------------------------------------------------------
+// CPbk2ImageManager::SetImageAsyncL
+// --------------------------------------------------------------------------
+//
+EXPORT_C MPbk2ImageOperation* CPbk2ImageManager::SetImageAsyncL(
+ MVPbkStoreContact& aContact,
+ const MVPbkFieldType& aFieldType,
+ MPbk2ImageSetObserver& aObserver,
+ const CFbsBitmap& aBitmap)
+ {
+ MPbk2ImageWriter* writer = Pbk2ImageOperationFactory::CreateWriterLC
+ (iContactManager, aContact, aObserver, aFieldType);
+ if ( writer )
+ {
+ writer->StartWriteL(aBitmap);
+ CleanupStack::Pop(); // writer
+ }
+ return writer;
+ }
+
+// --------------------------------------------------------------------------
+// CPbk2ImageManager::SetImageAsyncL
+// --------------------------------------------------------------------------
+//
+EXPORT_C MPbk2ImageOperation* CPbk2ImageManager::SetImageAsyncL(
+ MVPbkStoreContact& aContact,
+ const MVPbkFieldType& aFieldType,
+ MPbk2ImageSetObserver& aObserver,
+ const TDesC8& aImageBuffer)
+ {
+ MPbk2ImageWriter* writer = Pbk2ImageOperationFactory::CreateWriterLC
+ (iContactManager, aContact, aObserver, aFieldType);
+ writer->StartWriteL(aImageBuffer);
+ CleanupStack::Pop(); // writer
+ return writer;
+ }
+
+// --------------------------------------------------------------------------
+// CPbk2ImageManager::SetImageAsyncL
+// --------------------------------------------------------------------------
+//
+EXPORT_C MPbk2ImageOperation* CPbk2ImageManager::SetImageAsyncL(
+ MVPbkStoreContact& aContact,
+ const MVPbkFieldType& aFieldType,
+ MPbk2ImageSetObserver& aObserver,
+ const TDesC& aFileName)
+ {
+ MPbk2ImageWriter* writer = Pbk2ImageOperationFactory::CreateWriterLC
+ (iContactManager, aContact, aObserver, aFieldType);
+ writer->StartWriteL(aFileName);
+ CleanupStack::Pop(); // writer
+ return writer;
+ }
+
+// --------------------------------------------------------------------------
+// CPbk2ImageManager::HasImage
+// --------------------------------------------------------------------------
+//
+EXPORT_C TBool CPbk2ImageManager::HasImage
+ (const MVPbkBaseContact& aContact,
+ const MVPbkFieldType& aFieldType) const
+ {
+ TInt fieldId = FindFieldIndex(iContactManager, aContact, aFieldType);
+ if ( fieldId != KErrNotFound )
+ {
+ const MVPbkBaseContactField& field = aContact.Fields().FieldAt(fieldId);
+ if ( !field.FieldData().IsEmpty() )
+ {
+ return ETrue;
+ }
+ }
+ return EFalse;
+ }
+
+// --------------------------------------------------------------------------
+// CPbk2ImageManager::RemoveImage
+// --------------------------------------------------------------------------
+//
+EXPORT_C void CPbk2ImageManager::RemoveImage(
+ MVPbkStoreContact& aContact,
+ const MVPbkFieldType& aFieldType)
+ {
+ TInt index(FindFieldIndex(iContactManager, aContact, aFieldType));
+ if (index != KErrNotFound)
+ {
+ aContact.RemoveField(index);
+ }
+ }
+
+// End of File