--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreensrv_plat/hs_widget_publisher_api/inc/hswidgetpublisherimpl.h Thu Dec 17 08:54:17 2009 +0200
@@ -0,0 +1,247 @@
+/*
+* Copyright (c) 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: Updates applications and icons in Operator Tile.
+*
+*/
+
+
+#ifndef __HSWIDGETPUBLISHERIMPL_H__
+#define __HSWIDGETPUBLISHERIMPL_H__
+
+#include <liwservicehandler.h>
+#include <liwvariant.h>
+#include <liwgenericparam.h>
+#include <liwcommon.h>
+#include <vector>
+#include <map>
+#include <memory>
+#include <string>
+
+#include "hsdataobserver.h"
+
+namespace Hs {
+
+class HsWidget;
+
+typedef std::map<std::string, std::wstring> WidgetContentIdMapType;
+
+class HsWidgetPublisherImpl :
+ public MLiwNotifyCallback
+ {
+public://MLiwNotifyCallback
+
+ /**
+ * Handles notifications caused by an asynchronous Execute*CmdL call
+ * or an event.
+ *
+ * @param aCmdId The service command associated to the event.
+ * @param aEventId Occured event, see LiwCommon.hrh.
+ * @param aEventParamList Event parameters, if any, as defined per
+ * each event.
+ * @param aInParamList Input parameters, if any, given in the
+ * related HandleCommmandL.
+ * @return Error code for the callback.
+ */
+ virtual TInt HandleNotifyL(
+ TInt aCmdId,
+ TInt aEventId,
+ CLiwGenericParamList& aEventParamList,
+ const CLiwGenericParamList& aInParamList);
+
+public:
+ /**
+ */
+ HsWidgetPublisherImpl();
+
+ /**
+ */
+ virtual ~HsWidgetPublisherImpl();
+
+ /**
+ */
+ HsWidget& CreateWidget( std::string& aTemplateName,
+ std::string& aWidgetName,
+ std::string& aIdentifier,
+ std::string& aDescription,
+ std::string& aIconLocation );
+
+ /**
+ */
+ void RemoveWidget( std::string& aTemplateName,
+ std::string& aWidgetName,
+ std::string& aIdentifier );
+
+ /**
+ */
+ void SetDataObserver( IHsDataObserver* aDataObserver );
+
+ /**
+ */
+ HsWidget& GetWidget( std::string& aTemplateName,
+ std::string& aWidgetName,
+ std::string& aIdentifier );
+
+ /**
+ */
+ void PublishWidget( HsWidget& aWidget );
+
+
+private:
+ /**
+ */
+ MLiwInterface* GetServiceInterfaceL();
+
+ /**
+ */
+ void RegisterNotificationL( HsWidget& aWidget );
+
+ /**
+ */
+ void UnegisterNotificationL();
+
+ /**
+ */
+ void PublishWidgetActionsL( HsWidget& aWidget );
+
+ /**
+ */
+ void PublishWidgetDataL( HsWidget& aWidget );
+
+ /**
+ */
+ void RemoveWidgetL( HsWidget& aWidget );
+
+ /**
+ */
+ void RemoveFromCpsL( CLiwDefaultMap* aCpDataMap, const TDesC& aType );
+
+ /**
+ */
+ void TranslateObserverAction( const TDesC8& aActionDes,
+ IHsDataObserver::EEvent& aAction );
+
+ /**
+ */
+ HsWidget* GetWidgetL( const CLiwMap* aMap );
+
+ /**
+ */
+ int HandleWidgetActionL( const TDesC8& aActionDes,
+ HsWidget& aWidget );
+
+ /**
+ */
+ int HandleWidgetItemActionL( const TDesC8& aActionDes,
+ HsWidget& aWidget );
+
+ /**
+ */
+ bool CheckIfWidgetExist( std::string& aTemplateName,
+ std::string& aWidgetName,
+ std::string& aIdentifier,
+ TBool aAdjustToIdentifier );
+
+ /**
+ */
+ std::string ToStringL( const TDesC& aText );
+
+ /**
+ */
+ std::wstring ToWideStringL( const TDesC& aText ) const;
+
+ /**
+ */
+ void InsertWidgetIdentifiersL( HsWidget& aWidget,
+ CLiwDefaultMap* aDataMap );
+
+ /**
+ */
+ void InsertWidgetDataIdentifiersL( HsWidget& aWidget,
+ CLiwDefaultMap* aDataMap );
+
+ /**
+ */
+ void InsertWidgetInfoL( HsWidget& aWidget,
+ CLiwDefaultMap* aDataMap );
+
+ /**
+ */
+ void InsertWidgetItemsL( HsWidget& aWidget,
+ CLiwDefaultMap* aDataMap );
+
+ /**
+ */
+ TInt ObtainErrorCode( const CLiwGenericParamList& aOutParamList );
+
+ /**
+ */
+ TInt TranslateServiceError( TInt32 aServiceErrorCode );
+
+ /**
+ */
+ void InsertItemsTriggersL( HsWidget& aWidget,
+ CLiwDefaultMap* aTriggerMap );
+
+ /**
+ */
+ void InsertWidgetACLL( CLiwDefaultMap* aDataMap );
+
+ /**
+ * Returns publisher name that should be used with a certain widget
+ * when registering the widget, writing/deleting widget data or
+ * requesting event notification.
+ *
+ * @param aWidget A valid widget object.
+ * @return Publisher name.
+ */
+ std::string GetPublisherNameL( HsWidget& aWidget );
+
+ /**
+ * Parses publisher name in order to determine widget identifier.
+ * Will leave with KErrNotFound if publisher name is invalid.
+ *
+ * @param aPublisherName Publisher name
+ * @return Widget identifier.
+ */
+ std::string GetWidgetIdentifierFromPublisherNameL(
+ const TDesC& aPublisherName );
+
+ /**
+ * Wraps CnvUtfConverter::ConvertToUnicodeFromUtf8.
+ *
+ * @param aSrcString 8-bit utf8-encoded string.
+ * @return Converted unicode-encoded (16 bit) string.
+ */
+ HBufC* Utf8ToUnicodeLC( const TDesC8& aSrcString ) const;
+
+ /**
+ * A convenient std::string to HBufC converter.
+ *
+ * @param aSrcString utf8-encoded std::string.
+ * @return Converted unicode-encoded (16 bit) string.
+ */
+ HBufC* StdStringToUnicodeLC( const std::string& aSrcString ) const;
+
+private:
+
+ std::vector<HsWidget*> mWidgets;
+ WidgetContentIdMapType mWidgetContentIds;
+ CLiwServiceHandler* mServiceHandler;
+ MLiwInterface* mServiceInterface;
+ IHsDataObserver* mHsDataObserver;
+ TInt32 iWidgetUid;
+ };
+}
+
+#endif /*__HSWIDGETPUBLISHERIMPL_H__*/