--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/phonebookui/Phonebook/View/src/CPbkObserverAdapter.cpp Tue Feb 02 10:12:17 2010 +0200
@@ -0,0 +1,251 @@
+/*
+* Copyright (c) 2002-2004 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 FILES
+#include "CPbkObserverAdapter.h"
+#include <MPbkImageOperationObservers.h>
+
+// ============================= LOCAL FUNCTIONS ===============================
+
+/// Unnamed namespace for local definitions
+namespace {
+
+// LOCAL CONSTANTS AND MACROS
+/// Panic codes
+enum TPanicCode
+ {
+ EPanicPreCond_PbkThumbnailGetComplete=1,
+ EPanicPreCond_PbkThumbnailGetFailed,
+ EPanicPreCond_PbkThumbnailSetComplete,
+ EPanicPreCond_PbkThumbnailSetFailed,
+ EPanicPreCond_PbkThumbnailGetImageComplete,
+ EPanicPreCond_PbkThumbnailGetImageFailed,
+ EPanicPreCond_PbkThumbnailGetObserver,
+ EPanicPreCond_PbkThumbnailSetObserver,
+ EPanicPreCond_PbkThumbnailGetImageObserver
+
+ };
+
+void Panic(TPanicCode aReason)
+ {
+ _LIT(KPanicText, "CPbkObserverAdapter");
+ User::Panic(KPanicText, aReason);
+ }
+
+} // namespace
+
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CPbkObserverAdapter::CPbkObserverAdapter
+// C++ default constructor can NOT contain any code, that
+// might leave.
+// -----------------------------------------------------------------------------
+//
+CPbkObserverAdapter::CPbkObserverAdapter()
+ {
+ }
+
+// -----------------------------------------------------------------------------
+// CPbkObserverAdapter::ConstructL
+// Symbian 2nd phase constructor can leave.
+// -----------------------------------------------------------------------------
+//
+void CPbkObserverAdapter::ConstructL()
+ {
+ }
+
+// -----------------------------------------------------------------------------
+// CPbkObserverAdapter::NewL
+// Two-phased constructor.
+// -----------------------------------------------------------------------------
+//
+CPbkObserverAdapter* CPbkObserverAdapter::NewL()
+ {
+ CPbkObserverAdapter* self = new( ELeave ) CPbkObserverAdapter;
+
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ CleanupStack::Pop();
+
+ return self;
+ }
+
+
+// Destructor
+CPbkObserverAdapter::~CPbkObserverAdapter()
+ {
+ }
+
+void CPbkObserverAdapter::DoSetImageGetObserver(MPbkImageGetObserver&
+ aPbkImageGetObserver)
+ {
+ iPbkImageGetObserver = &aPbkImageGetObserver;
+ }
+
+MPbkImageGetObserver* CPbkObserverAdapter::ImageGetObserver()
+ {
+ return iPbkImageGetObserver;
+ }
+
+void CPbkObserverAdapter::PbkThumbnailGetComplete
+ (MPbkThumbnailOperation& aOperation, CFbsBitmap* aBitmap)
+ {
+ __ASSERT_ALWAYS(iPbkImageGetObserver, Panic(
+ EPanicPreCond_PbkThumbnailGetComplete));
+
+ // MPbkImageOperation and MPbkThumbnailOperation are identical.
+ // Both contain only the destructor. More complex implementation avoided
+ // by using reinterpret cast. Otherwise there might be a need to generate
+ // a new thumbnail operation adapter instance when MPbkImageGetObserver's
+ // method is called once.
+
+// TODO reinterpret_cast causes a crash
+// TO BE CONTINUED wrapper needed for MPbkImageOperation and MPbkThumbnailOperation conversion
+ iPbkImageGetObserver->PbkImageGetComplete(
+ reinterpret_cast<MPbkImageOperation&>(aOperation),aBitmap);
+ }
+
+void CPbkObserverAdapter::PbkThumbnailGetFailed
+ (MPbkThumbnailOperation& aOperation, TInt aError)
+ {
+ __ASSERT_ALWAYS(iPbkImageGetObserver, Panic(
+ EPanicPreCond_PbkThumbnailGetFailed));
+ // MPbkImageOperation and MPbkThumbnailOperation are identical.
+ iPbkImageGetObserver->PbkImageGetFailed(
+ reinterpret_cast<MPbkImageOperation&>(aOperation), aError);
+ }
+
+
+void CPbkObserverAdapter::DoSetImageSetObserver(MPbkImageSetObserver&
+ aPbkImageSetObserver)
+ {
+ iPbkImageSetObserver = &aPbkImageSetObserver;
+ }
+
+MPbkImageSetObserver* CPbkObserverAdapter::ImageSetObserver()
+ {
+ return iPbkImageSetObserver;
+ }
+
+void CPbkObserverAdapter::PbkThumbnailSetComplete(
+ MPbkThumbnailOperation& aOperation)
+ {
+ __ASSERT_ALWAYS(iPbkImageSetObserver, Panic(
+ EPanicPreCond_PbkThumbnailSetComplete));
+ // MPbkImageOperation and MPbkThumbnailOperation are identical.
+ iPbkImageSetObserver->PbkImageSetComplete(
+ reinterpret_cast<MPbkImageOperation&>(aOperation));
+ }
+void CPbkObserverAdapter::PbkThumbnailSetFailed(
+ MPbkThumbnailOperation& aOperation, TInt aError)
+ {
+ __ASSERT_ALWAYS(iPbkImageGetObserver, Panic(
+ EPanicPreCond_PbkThumbnailSetFailed));
+ // MPbkImageOperation and MPbkThumbnailOperation are identical.
+ iPbkImageSetObserver->PbkImageSetFailed(
+ reinterpret_cast<MPbkImageOperation&>(aOperation), aError);
+ }
+
+void CPbkObserverAdapter::DoSetImageGetImageObserver(MPbkImageGetImageObserver&
+ aPbkImageGetImageObserver)
+ {
+ iPbkImageGetImageObserver = &aPbkImageGetImageObserver;
+ }
+
+MPbkImageGetImageObserver* CPbkObserverAdapter::ImageGetImageObserver()
+ {
+ return iPbkImageGetImageObserver;
+ }
+
+void CPbkObserverAdapter::PbkThumbnailGetImageComplete
+ (MPbkThumbnailOperation& aOperation, CPbkImageDataWithInfo* aImageData)
+ {
+ __ASSERT_ALWAYS(iPbkImageGetImageObserver,
+ Panic(EPanicPreCond_PbkThumbnailGetImageComplete));
+ // MPbkImageOperation and MPbkThumbnailOperation are identical.
+ iPbkImageGetImageObserver->PbkImageGetImageComplete(
+ reinterpret_cast<MPbkImageOperation&>(aOperation), aImageData);
+ }
+
+void CPbkObserverAdapter::PbkThumbnailGetImageFailed
+ (MPbkThumbnailOperation& aOperation, TInt aError)
+ {
+ __ASSERT_ALWAYS(iPbkImageGetImageObserver,
+ Panic(EPanicPreCond_PbkThumbnailGetImageFailed));
+ // MPbkImageOperation and MPbkThumbnailOperation are identical.
+ iPbkImageGetImageObserver->PbkImageGetImageFailed(
+ reinterpret_cast<MPbkImageOperation&>(aOperation), aError);
+ }
+
+void CPbkObserverAdapter::SetPbkImageGetObserver(MPbkImageGetObserver& aObserver)
+ {
+ // TODO: Multiple observer might need to be supported
+ DoSetImageGetObserver(aObserver);
+ }
+
+MPbkThumbnailGetObserver& CPbkObserverAdapter::PbkThumbnailGetObserver()
+ {
+ MPbkImageGetObserver* currentObserver = ImageGetObserver();
+ if (!currentObserver)
+ {
+ // Observer must be set before use of this function
+ Panic( EPanicPreCond_PbkThumbnailGetObserver );
+ }
+ return *this;
+ }
+
+void CPbkObserverAdapter::SetPbkImageSetObserver(MPbkImageSetObserver& aObserver)
+ {
+ // TODO: Multiple observer might need to be supported
+ DoSetImageSetObserver(aObserver);
+ }
+
+MPbkThumbnailSetObserver& CPbkObserverAdapter::PbkThumbnailSetObserver()
+ {
+ MPbkImageSetObserver* currentObserver = ImageSetObserver();
+ if (!currentObserver)
+ {
+ // Observer must be set before use of this function
+ Panic( EPanicPreCond_PbkThumbnailSetObserver );
+ }
+ return *this;
+ }
+
+void CPbkObserverAdapter::SetPbkImageGetImageObserver(
+ MPbkImageGetImageObserver& aObserver)
+ {
+ // TODO: Multiple observer might need to be supported
+ DoSetImageGetImageObserver(aObserver);
+ }
+
+MPbkThumbnailGetImageObserver& CPbkObserverAdapter::PbkThumbnailGetImageObserver()
+ {
+ MPbkImageGetImageObserver* currentObserver = ImageGetImageObserver();
+
+ if (!currentObserver)
+ {
+ // Observer must be set before use of this function
+ Panic( EPanicPreCond_PbkThumbnailGetImageObserver );
+ }
+ return *this;
+ }
+
+// End of File