mulwidgets/mulsliderwidget/src/mulsliderwidgetfactoryplugin.cpp
changeset 0 e83bab7cf002
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mulwidgets/mulsliderwidget/src/mulsliderwidgetfactoryplugin.cpp	Thu Dec 17 08:56:02 2009 +0200
@@ -0,0 +1,244 @@
+/*
+* 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:  Plugin factory implementation for slider widget.
+*
+*/
+
+// OSN Includes
+#include <osn/ustring.h>
+
+// WidgetModel Includes
+#include "alf/alfwidget.h"
+#include <alf/ialfwidget.h>
+#include <alf/ialfelement.h>
+
+// Symbian Includes
+#include <ecom/ecom.h>
+
+// OpenC Includes
+#include <libc/string.h>
+
+// Widget Includes
+#include <mul/imulsliderwidget.h>
+#include <mul/mulsliderproductids.h>
+#include "imulsliderbaseelementinternal.h"
+//Internal includes
+#include "mulsliderwidgetfactoryplugin.h"
+#include "mulsliderwidget.h"
+#include "mulslidermodel.h"
+#include "mulslidervertical.h"
+#include "mulprogressbarslider.h"
+#include "mulsliderhorizontal.h"
+//#include "alfscrollbardefaultlctbaseelement.h"
+
+using namespace osncore;
+
+namespace Alf
+    {
+const TInt KScrollBarWidgetFactoryPluginUid = {0x2000FA80};
+const int KProductCount = 5;
+
+
+// ---------------------------------------------------------------------------
+// Two-phased Symbian constructor.
+// ---------------------------------------------------------------------------
+//
+MulSliderWidgetFactoryPlugin* MulSliderWidgetFactoryPlugin::NewL()
+    {
+    return new (EMM) MulSliderWidgetFactoryPlugin;
+    }
+
+
+// ---------------------------------------------------------------------------
+// Destructor.
+// ---------------------------------------------------------------------------
+//
+MulSliderWidgetFactoryPlugin::~MulSliderWidgetFactoryPlugin()
+    {
+
+    }
+    
+    
+// ---------------------------------------------------------------------------
+// Creates either a scrollbar widget or a scrollbar model.
+// ---------------------------------------------------------------------------
+//
+IAlfInterfaceBase* MulSliderWidgetFactoryPlugin::createProduct(
+    const char* aProduct,
+    void* aInitData)
+    {
+    IAlfInterfaceBase* ret (0);
+ 
+     if (!strcmp(aProduct, KSliderWidget))
+        {
+        AlfWidgetInitData* initData = (AlfWidgetInitData*)aInitData;        
+        auto_ptr<MulSliderWidget> widget(MulSliderWidget::create(
+            *initData->mEnv, 
+            *initData->mContainerWidget,
+            initData->mWidgetId,
+            initData->mCustomData));            
+        ret = widget->makeInterface (IMulSliderWidget::type());
+        widget.release();
+        }
+    else if (!strcmp(aProduct, KSliderModel))
+        {
+        auto_ptr<MulSliderModel> model(new(EMM) MulSliderModel());
+        ret = model->makeInterface (IMulSliderModel::type());
+        model.release();
+        }
+    // Vertical  element support template 3, 9
+    else if (!strcmp(aProduct, KSliderVerticalElement))
+        {
+        AlfElementInitData* initData = (AlfElementInitData*) aInitData;
+        auto_ptr<MulSliderVertical> element(
+            new(EMM) MulSliderVertical(
+                (CAlfWidgetControl&)(*initData->mControl),
+                initData->mElementId,
+                initData->mCustomData));
+                
+        ret = element->makeInterface(IMulSliderBaseElementInternal::type());
+        element.release();
+        }
+    // Progressbar element support template 7,8 
+        else if(!strcmp(aProduct, KSliderProgressbarElement))
+        {
+        AlfElementInitData* initData = (AlfElementInitData*) aInitData;
+        auto_ptr<MulSliderProgressive> element(
+            new(EMM) MulSliderProgressive(
+                (CAlfWidgetControl&)(*initData->mControl),
+                initData->mElementId,
+                initData->mCustomData));
+        ret = element->makeInterface(IMulSliderBaseElementInternal::type());
+        element.release();
+        }      
+    // Horizontal element support template 1,2,4,6      
+        else if(!strcmp(aProduct, KSliderHorizontalElement))
+        {
+        AlfElementInitData* initData = (AlfElementInitData*) aInitData;
+        auto_ptr<MulSliderHorizontal> element(
+            new(EMM) MulSliderHorizontal(
+                (CAlfWidgetControl&)(*initData->mControl),
+                initData->mElementId,
+                initData->mCustomData));
+        ret = element->makeInterface(IMulSliderBaseElementInternal::type());
+        element.release();
+        }      
+  
+    return ret;
+    }
+    
+    
+// ---------------------------------------------------------------------------
+// From IAlfInterfaceBase.
+// Creates interface based on the given type.
+// ---------------------------------------------------------------------------
+//
+IAlfInterfaceBase* MulSliderWidgetFactoryPlugin::makeInterface(
+    const IfId& aType)
+    {
+    UString param (aType.mImplementationId);
+    if (param == UString (IAlfFactoryPlugin::type().mImplementationId))
+        {
+        return static_cast<IAlfFactoryPlugin*> (this);
+        }
+    else
+        {
+        // Do Nothing
+        }
+    return NULL;
+    }
+    
+    
+// ---------------------------------------------------------------------------
+// Returns the amount of products this factory can produce.
+// ---------------------------------------------------------------------------
+//
+int MulSliderWidgetFactoryPlugin::productCount() const
+    {
+    return KProductCount;
+    }
+    
+    
+// ---------------------------------------------------------------------------
+// Returns product information.
+// ---------------------------------------------------------------------------
+//
+const char* MulSliderWidgetFactoryPlugin::productInfo (int aIndex) const
+    {
+    switch (aIndex)
+        {
+    case ESliderWidget:
+        {
+        return KSliderWidget;
+        }    
+
+    case ESliderModel:
+        {
+        return KSliderModel;
+        }
+
+    case ESliderHorizontalElement:
+        {
+        return KSliderHorizontalElement;
+        }
+
+    case ESliderVerticalElement:
+        {
+        return KSliderVerticalElement;
+        }
+        
+    case ESliderProgressbarElement:
+        {
+        return KSliderProgressbarElement;
+        }    
+        
+    default:
+        break;
+
+        }
+
+    return 0;
+    }
+
+    }// NameSpace 
+
+
+// ---------------------------------------------------------------------------
+// OTHER EXPORTED FUNCTIONS.
+// ---------------------------------------------------------------------------
+//
+
+using namespace Alf;
+const TImplementationProxy ImplementationTable[] =
+    {
+#ifdef __EABI__
+    IMPLEMENTATION_PROXY_ENTRY (
+        KScrollBarWidgetFactoryPluginUid, 
+        MulSliderWidgetFactoryPlugin::NewL)
+#else
+        {
+        {KScrollBarWidgetFactoryPluginUid}, 
+        MulSliderWidgetFactoryPlugin::NewL}
+#endif
+    };
+
+OSN_EXPORT const TImplementationProxy* ImplementationGroupProxy(
+    TInt& aTableCount)
+    {
+    aTableCount = sizeof (ImplementationTable) / sizeof (TImplementationProxy);
+
+    return ImplementationTable;
+    }
+
+