--- a/contentcontrolsrv/hscontentinfo/bwins/hscontentinfo.def Mon Jan 18 20:32:13 2010 +0200
+++ b/contentcontrolsrv/hscontentinfo/bwins/hscontentinfo.def Tue Jan 26 12:11:15 2010 +0200
@@ -1,45 +1,46 @@
EXPORTS
?MarshalL@CHsContentInfo@@QAEPAVHBufC8@@XZ @ 1 NONAME ; class HBufC8 * CHsContentInfo::MarshalL(void)
- ?CanBeAdded@CHsContentInfo@@QBEHXZ @ 2 NONAME ; int CHsContentInfo::CanBeAdded(void) const
- ?SetDescriptionL@CHsContentInfo@@QAEXABVTDesC16@@@Z @ 3 NONAME ; void CHsContentInfo::SetDescriptionL(class TDesC16 const &)
- ?IconPath@CHsContentInfo@@QBEABVTDesC16@@XZ @ 4 NONAME ; class TDesC16 const & CHsContentInfo::IconPath(void) const
- ?SetPluginIdL@CHsContentInfo@@QAEXABVTDesC8@@@Z @ 5 NONAME ; void CHsContentInfo::SetPluginIdL(class TDesC8 const &)
- ?SetTypeL@CHsContentInfo@@QAEXABVTDesC8@@@Z @ 6 NONAME ; void CHsContentInfo::SetTypeL(class TDesC8 const &)
- ?SetMaxWidgets@CHsContentInfo@@QAEXH@Z @ 7 NONAME ; void CHsContentInfo::SetMaxWidgets(int)
- ?Array@CHsContentInfoArray@@QAEAAV?$RPointerArray@VCHsContentInfo@@@@XZ @ 8 NONAME ; class RPointerArray<class CHsContentInfo> & CHsContentInfoArray::Array(void)
- ?ExternalizeL@CHsContentInfo@@QAEXAAVRWriteStream@@@Z @ 9 NONAME ; void CHsContentInfo::ExternalizeL(class RWriteStream &)
- ?Size@CHsContentInfo@@QAEHXZ @ 10 NONAME ; int CHsContentInfo::Size(void)
- ?SetNameL@CHsContentInfo@@QAEXABVTDesC16@@@Z @ 11 NONAME ; void CHsContentInfo::SetNameL(class TDesC16 const &)
- ?InternalizeL@CHsContentInfoArray@@QAEXAAVRReadStream@@@Z @ 12 NONAME ; void CHsContentInfoArray::InternalizeL(class RReadStream &)
- ?Size@CHsContentInfoArray@@QAEHXZ @ 13 NONAME ; int CHsContentInfoArray::Size(void)
- ?PublisherId@CHsContentInfo@@QBEABVTDesC16@@XZ @ 14 NONAME ; class TDesC16 const & CHsContentInfo::PublisherId(void) const
- ?SetInstallationTime@CHsContentInfo@@QAEXAAVTTime@@@Z @ 15 NONAME ; void CHsContentInfo::SetInstallationTime(class TTime &)
- ?SetPublisherUidL@CHsContentInfo@@QAEXABVTDesC8@@@Z @ 16 NONAME ; void CHsContentInfo::SetPublisherUidL(class TDesC8 const &)
- ?NewL@CHsContentInfoArray@@SAPAV1@XZ @ 17 NONAME ; class CHsContentInfoArray * CHsContentInfoArray::NewL(void)
- ?Name@CHsContentInfo@@QBEABVTDesC16@@XZ @ 18 NONAME ; class TDesC16 const & CHsContentInfo::Name(void) const
- ?SetNameL@CHsContentInfo@@QAEXABVTDesC8@@@Z @ 19 NONAME ; void CHsContentInfo::SetNameL(class TDesC8 const &)
- ?Type@CHsContentInfo@@QBEABVTDesC8@@XZ @ 20 NONAME ; class TDesC8 const & CHsContentInfo::Type(void) const
- ?NewLC@CHsContentInfo@@SAPAV1@XZ @ 21 NONAME ; class CHsContentInfo * CHsContentInfo::NewLC(void)
- ?InstallationTime@CHsContentInfo@@QBE?AVTTime@@XZ @ 22 NONAME ; class TTime CHsContentInfo::InstallationTime(void) const
- ?NewL@CHsContentInfo@@SAPAV1@AAVRReadStream@@@Z @ 23 NONAME ; class CHsContentInfo * CHsContentInfo::NewL(class RReadStream &)
- ?CloneL@CHsContentInfo@@QAEPAV1@XZ @ 24 NONAME ; class CHsContentInfo * CHsContentInfo::CloneL(void)
- ?SetCanBeAdded@CHsContentInfo@@QAEXH@Z @ 25 NONAME ; void CHsContentInfo::SetCanBeAdded(int)
- ?ExternalizeL@CHsContentInfoArray@@QAEXAAVRWriteStream@@@Z @ 26 NONAME ; void CHsContentInfoArray::ExternalizeL(class RWriteStream &)
- ?SetUidL@CHsContentInfo@@QAEXABVTDesC8@@@Z @ 27 NONAME ; void CHsContentInfo::SetUidL(class TDesC8 const &)
- ?MaxWidgets@CHsContentInfo@@QBEHXZ @ 28 NONAME ; int CHsContentInfo::MaxWidgets(void) const
- ?Uid@CHsContentInfo@@QBEABVTDesC8@@XZ @ 29 NONAME ; class TDesC8 const & CHsContentInfo::Uid(void) const
- ?MarshalL@CHsContentInfoArray@@QAEPAVHBufC8@@XZ @ 30 NONAME ; class HBufC8 * CHsContentInfoArray::MarshalL(void)
- ?SetPublisherIdL@CHsContentInfo@@QAEXABVTDesC16@@@Z @ 31 NONAME ; void CHsContentInfo::SetPublisherIdL(class TDesC16 const &)
- ?InternalizeL@CHsContentInfo@@QAEXAAVRReadStream@@@Z @ 32 NONAME ; void CHsContentInfo::InternalizeL(class RReadStream &)
- ?CanBeRemoved@CHsContentInfo@@QBEHXZ @ 33 NONAME ; int CHsContentInfo::CanBeRemoved(void) const
- ?SetCanBeRemoved@CHsContentInfo@@QAEXH@Z @ 34 NONAME ; void CHsContentInfo::SetCanBeRemoved(int)
- ?SetIconPathL@CHsContentInfo@@QAEXABVTDesC16@@@Z @ 35 NONAME ; void CHsContentInfo::SetIconPathL(class TDesC16 const &)
- ?Description@CHsContentInfo@@QBEABVTDesC16@@XZ @ 36 NONAME ; class TDesC16 const & CHsContentInfo::Description(void) const
- ?NewL@CHsContentInfo@@SAPAV1@XZ @ 37 NONAME ; class CHsContentInfo * CHsContentInfo::NewL(void)
- ?PublisherUid@CHsContentInfo@@QBEABVTDesC8@@XZ @ 38 NONAME ; class TDesC8 const & CHsContentInfo::PublisherUid(void) const
- ?NameAs8BitLC@CHsContentInfo@@QBEPAVHBufC8@@XZ @ 39 NONAME ; class HBufC8 * CHsContentInfo::NameAs8BitLC(void) const
- ?PluginId@CHsContentInfo@@QBEABVTDesC8@@XZ @ 40 NONAME ; class TDesC8 const & CHsContentInfo::PluginId(void) const
- ?NewL@CHsContentInfoArray@@SAPAV1@AAVRReadStream@@@Z @ 41 NONAME ; class CHsContentInfoArray * CHsContentInfoArray::NewL(class RReadStream &)
- ?IsWrt@CHsContentInfo@@QBEHXZ @ 42 NONAME ; int CHsContentInfo::IsWrt(void) const
- ?SetIsWrt@CHsContentInfo@@QAEXH@Z @ 43 NONAME ; void CHsContentInfo::SetIsWrt(int)
+ ?IsWrt@CHsContentInfo@@QBEHXZ @ 2 NONAME ; int CHsContentInfo::IsWrt(void) const
+ ?CanBeAdded@CHsContentInfo@@QBEHXZ @ 3 NONAME ; int CHsContentInfo::CanBeAdded(void) const
+ ?SetDescriptionL@CHsContentInfo@@QAEXABVTDesC16@@@Z @ 4 NONAME ; void CHsContentInfo::SetDescriptionL(class TDesC16 const &)
+ ?IconPath@CHsContentInfo@@QBEABVTDesC16@@XZ @ 5 NONAME ; class TDesC16 const & CHsContentInfo::IconPath(void) const
+ ?SetPluginIdL@CHsContentInfo@@QAEXABVTDesC8@@@Z @ 6 NONAME ; void CHsContentInfo::SetPluginIdL(class TDesC8 const &)
+ ?SetTypeL@CHsContentInfo@@QAEXABVTDesC8@@@Z @ 7 NONAME ; void CHsContentInfo::SetTypeL(class TDesC8 const &)
+ ?SetMaxWidgets@CHsContentInfo@@QAEXH@Z @ 8 NONAME ; void CHsContentInfo::SetMaxWidgets(int)
+ ?Array@CHsContentInfoArray@@QAEAAV?$RPointerArray@VCHsContentInfo@@@@XZ @ 9 NONAME ; class RPointerArray<class CHsContentInfo> & CHsContentInfoArray::Array(void)
+ ?SetDescriptionL@CHsContentInfo@@QAEXABVTDesC8@@@Z @ 10 NONAME ; void CHsContentInfo::SetDescriptionL(class TDesC8 const &)
+ ?ExternalizeL@CHsContentInfo@@QAEXAAVRWriteStream@@@Z @ 11 NONAME ; void CHsContentInfo::ExternalizeL(class RWriteStream &)
+ ?Size@CHsContentInfo@@QAEHXZ @ 12 NONAME ; int CHsContentInfo::Size(void)
+ ?SetNameL@CHsContentInfo@@QAEXABVTDesC16@@@Z @ 13 NONAME ; void CHsContentInfo::SetNameL(class TDesC16 const &)
+ ?InternalizeL@CHsContentInfoArray@@QAEXAAVRReadStream@@@Z @ 14 NONAME ; void CHsContentInfoArray::InternalizeL(class RReadStream &)
+ ?Size@CHsContentInfoArray@@QAEHXZ @ 15 NONAME ; int CHsContentInfoArray::Size(void)
+ ?PublisherId@CHsContentInfo@@QBEABVTDesC16@@XZ @ 16 NONAME ; class TDesC16 const & CHsContentInfo::PublisherId(void) const
+ ?SetInstallationTime@CHsContentInfo@@QAEXAAVTTime@@@Z @ 17 NONAME ; void CHsContentInfo::SetInstallationTime(class TTime &)
+ ?SetIsWrt@CHsContentInfo@@QAEXH@Z @ 18 NONAME ; void CHsContentInfo::SetIsWrt(int)
+ ?SetPublisherUidL@CHsContentInfo@@QAEXABVTDesC8@@@Z @ 19 NONAME ; void CHsContentInfo::SetPublisherUidL(class TDesC8 const &)
+ ?NewL@CHsContentInfoArray@@SAPAV1@XZ @ 20 NONAME ; class CHsContentInfoArray * CHsContentInfoArray::NewL(void)
+ ?SetNameL@CHsContentInfo@@QAEXABVTDesC8@@@Z @ 21 NONAME ; void CHsContentInfo::SetNameL(class TDesC8 const &)
+ ?Name@CHsContentInfo@@QBEABVTDesC16@@XZ @ 22 NONAME ; class TDesC16 const & CHsContentInfo::Name(void) const
+ ?Type@CHsContentInfo@@QBEABVTDesC8@@XZ @ 23 NONAME ; class TDesC8 const & CHsContentInfo::Type(void) const
+ ?NewLC@CHsContentInfo@@SAPAV1@XZ @ 24 NONAME ; class CHsContentInfo * CHsContentInfo::NewLC(void)
+ ?InstallationTime@CHsContentInfo@@QBE?AVTTime@@XZ @ 25 NONAME ; class TTime CHsContentInfo::InstallationTime(void) const
+ ?NewL@CHsContentInfo@@SAPAV1@AAVRReadStream@@@Z @ 26 NONAME ; class CHsContentInfo * CHsContentInfo::NewL(class RReadStream &)
+ ?CloneL@CHsContentInfo@@QAEPAV1@XZ @ 27 NONAME ; class CHsContentInfo * CHsContentInfo::CloneL(void)
+ ?SetCanBeAdded@CHsContentInfo@@QAEXH@Z @ 28 NONAME ; void CHsContentInfo::SetCanBeAdded(int)
+ ?ExternalizeL@CHsContentInfoArray@@QAEXAAVRWriteStream@@@Z @ 29 NONAME ; void CHsContentInfoArray::ExternalizeL(class RWriteStream &)
+ ?SetUidL@CHsContentInfo@@QAEXABVTDesC8@@@Z @ 30 NONAME ; void CHsContentInfo::SetUidL(class TDesC8 const &)
+ ?MaxWidgets@CHsContentInfo@@QBEHXZ @ 31 NONAME ; int CHsContentInfo::MaxWidgets(void) const
+ ?Uid@CHsContentInfo@@QBEABVTDesC8@@XZ @ 32 NONAME ; class TDesC8 const & CHsContentInfo::Uid(void) const
+ ?MarshalL@CHsContentInfoArray@@QAEPAVHBufC8@@XZ @ 33 NONAME ; class HBufC8 * CHsContentInfoArray::MarshalL(void)
+ ?SetPublisherIdL@CHsContentInfo@@QAEXABVTDesC16@@@Z @ 34 NONAME ; void CHsContentInfo::SetPublisherIdL(class TDesC16 const &)
+ ?InternalizeL@CHsContentInfo@@QAEXAAVRReadStream@@@Z @ 35 NONAME ; void CHsContentInfo::InternalizeL(class RReadStream &)
+ ?CanBeRemoved@CHsContentInfo@@QBEHXZ @ 36 NONAME ; int CHsContentInfo::CanBeRemoved(void) const
+ ?SetCanBeRemoved@CHsContentInfo@@QAEXH@Z @ 37 NONAME ; void CHsContentInfo::SetCanBeRemoved(int)
+ ?SetIconPathL@CHsContentInfo@@QAEXABVTDesC16@@@Z @ 38 NONAME ; void CHsContentInfo::SetIconPathL(class TDesC16 const &)
+ ?Description@CHsContentInfo@@QBEABVTDesC16@@XZ @ 39 NONAME ; class TDesC16 const & CHsContentInfo::Description(void) const
+ ?NewL@CHsContentInfo@@SAPAV1@XZ @ 40 NONAME ; class CHsContentInfo * CHsContentInfo::NewL(void)
+ ?PublisherUid@CHsContentInfo@@QBEABVTDesC8@@XZ @ 41 NONAME ; class TDesC8 const & CHsContentInfo::PublisherUid(void) const
+ ?NameAs8BitLC@CHsContentInfo@@QBEPAVHBufC8@@XZ @ 42 NONAME ; class HBufC8 * CHsContentInfo::NameAs8BitLC(void) const
+ ?PluginId@CHsContentInfo@@QBEABVTDesC8@@XZ @ 43 NONAME ; class TDesC8 const & CHsContentInfo::PluginId(void) const
+ ?NewL@CHsContentInfoArray@@SAPAV1@AAVRReadStream@@@Z @ 44 NONAME ; class CHsContentInfoArray * CHsContentInfoArray::NewL(class RReadStream &)
--- a/contentcontrolsrv/hscontentinfo/eabi/hscontentinfo.def Mon Jan 18 20:32:13 2010 +0200
+++ b/contentcontrolsrv/hscontentinfo/eabi/hscontentinfo.def Tue Jan 26 12:11:15 2010 +0200
@@ -6,42 +6,43 @@
_ZN14CHsContentInfo13SetCanBeAddedEi @ 5 NONAME
_ZN14CHsContentInfo13SetMaxWidgetsEi @ 6 NONAME
_ZN14CHsContentInfo15SetCanBeRemovedEi @ 7 NONAME
- _ZN14CHsContentInfo15SetDescriptionLERK7TDesC16 @ 8 NONAME
- _ZN14CHsContentInfo15SetPublisherIdLERK7TDesC16 @ 9 NONAME
- _ZN14CHsContentInfo16SetPublisherUidLERK6TDesC8 @ 10 NONAME
- _ZN14CHsContentInfo19SetInstallationTimeER5TTime @ 11 NONAME
- _ZN14CHsContentInfo4NewLER11RReadStream @ 12 NONAME
- _ZN14CHsContentInfo4NewLEv @ 13 NONAME
- _ZN14CHsContentInfo4SizeEv @ 14 NONAME
- _ZN14CHsContentInfo5NewLCEv @ 15 NONAME
- _ZN14CHsContentInfo6CloneLEv @ 16 NONAME
- _ZN14CHsContentInfo7SetUidLERK6TDesC8 @ 17 NONAME
- _ZN14CHsContentInfo8MarshalLEv @ 18 NONAME
- _ZN14CHsContentInfo8SetNameLERK6TDesC8 @ 19 NONAME
- _ZN14CHsContentInfo8SetNameLERK7TDesC16 @ 20 NONAME
- _ZN14CHsContentInfo8SetTypeLERK6TDesC8 @ 21 NONAME
- _ZN19CHsContentInfoArray12ExternalizeLER12RWriteStream @ 22 NONAME
- _ZN19CHsContentInfoArray12InternalizeLER11RReadStream @ 23 NONAME
- _ZN19CHsContentInfoArray4NewLER11RReadStream @ 24 NONAME
- _ZN19CHsContentInfoArray4NewLEv @ 25 NONAME
- _ZN19CHsContentInfoArray4SizeEv @ 26 NONAME
- _ZN19CHsContentInfoArray5ArrayEv @ 27 NONAME
- _ZN19CHsContentInfoArray8MarshalLEv @ 28 NONAME
- _ZNK14CHsContentInfo10CanBeAddedEv @ 29 NONAME
- _ZNK14CHsContentInfo10MaxWidgetsEv @ 30 NONAME
- _ZNK14CHsContentInfo11DescriptionEv @ 31 NONAME
- _ZNK14CHsContentInfo11PublisherIdEv @ 32 NONAME
- _ZNK14CHsContentInfo12CanBeRemovedEv @ 33 NONAME
- _ZNK14CHsContentInfo12NameAs8BitLCEv @ 34 NONAME
- _ZNK14CHsContentInfo12PublisherUidEv @ 35 NONAME
- _ZNK14CHsContentInfo16InstallationTimeEv @ 36 NONAME
- _ZNK14CHsContentInfo3UidEv @ 37 NONAME
- _ZNK14CHsContentInfo4NameEv @ 38 NONAME
- _ZNK14CHsContentInfo4TypeEv @ 39 NONAME
- _ZNK14CHsContentInfo8IconPathEv @ 40 NONAME
- _ZNK14CHsContentInfo8PluginIdEv @ 41 NONAME
- _ZTI19CHsContentInfoArray @ 42 NONAME
- _ZTV19CHsContentInfoArray @ 43 NONAME
- _ZN14CHsContentInfo8SetIsWrtEi @ 44 NONAME
- _ZNK14CHsContentInfo5IsWrtEv @ 45 NONAME
+ _ZN14CHsContentInfo15SetDescriptionLERK6TDesC8 @ 8 NONAME
+ _ZN14CHsContentInfo15SetDescriptionLERK7TDesC16 @ 9 NONAME
+ _ZN14CHsContentInfo15SetPublisherIdLERK7TDesC16 @ 10 NONAME
+ _ZN14CHsContentInfo16SetPublisherUidLERK6TDesC8 @ 11 NONAME
+ _ZN14CHsContentInfo19SetInstallationTimeER5TTime @ 12 NONAME
+ _ZN14CHsContentInfo4NewLER11RReadStream @ 13 NONAME
+ _ZN14CHsContentInfo4NewLEv @ 14 NONAME
+ _ZN14CHsContentInfo4SizeEv @ 15 NONAME
+ _ZN14CHsContentInfo5NewLCEv @ 16 NONAME
+ _ZN14CHsContentInfo6CloneLEv @ 17 NONAME
+ _ZN14CHsContentInfo7SetUidLERK6TDesC8 @ 18 NONAME
+ _ZN14CHsContentInfo8MarshalLEv @ 19 NONAME
+ _ZN14CHsContentInfo8SetIsWrtEi @ 20 NONAME
+ _ZN14CHsContentInfo8SetNameLERK6TDesC8 @ 21 NONAME
+ _ZN14CHsContentInfo8SetNameLERK7TDesC16 @ 22 NONAME
+ _ZN14CHsContentInfo8SetTypeLERK6TDesC8 @ 23 NONAME
+ _ZN19CHsContentInfoArray12ExternalizeLER12RWriteStream @ 24 NONAME
+ _ZN19CHsContentInfoArray12InternalizeLER11RReadStream @ 25 NONAME
+ _ZN19CHsContentInfoArray4NewLER11RReadStream @ 26 NONAME
+ _ZN19CHsContentInfoArray4NewLEv @ 27 NONAME
+ _ZN19CHsContentInfoArray4SizeEv @ 28 NONAME
+ _ZN19CHsContentInfoArray5ArrayEv @ 29 NONAME
+ _ZN19CHsContentInfoArray8MarshalLEv @ 30 NONAME
+ _ZNK14CHsContentInfo10CanBeAddedEv @ 31 NONAME
+ _ZNK14CHsContentInfo10MaxWidgetsEv @ 32 NONAME
+ _ZNK14CHsContentInfo11DescriptionEv @ 33 NONAME
+ _ZNK14CHsContentInfo11PublisherIdEv @ 34 NONAME
+ _ZNK14CHsContentInfo12CanBeRemovedEv @ 35 NONAME
+ _ZNK14CHsContentInfo12NameAs8BitLCEv @ 36 NONAME
+ _ZNK14CHsContentInfo12PublisherUidEv @ 37 NONAME
+ _ZNK14CHsContentInfo16InstallationTimeEv @ 38 NONAME
+ _ZNK14CHsContentInfo3UidEv @ 39 NONAME
+ _ZNK14CHsContentInfo4NameEv @ 40 NONAME
+ _ZNK14CHsContentInfo4TypeEv @ 41 NONAME
+ _ZNK14CHsContentInfo5IsWrtEv @ 42 NONAME
+ _ZNK14CHsContentInfo8IconPathEv @ 43 NONAME
+ _ZNK14CHsContentInfo8PluginIdEv @ 44 NONAME
+ _ZTI19CHsContentInfoArray @ 45 NONAME
+ _ZTV19CHsContentInfoArray @ 46 NONAME
--- a/contentcontrolsrv/hscontentinfo/src/hscontentinfo.cpp Mon Jan 18 20:32:13 2010 +0200
+++ b/contentcontrolsrv/hscontentinfo/src/hscontentinfo.cpp Tue Jan 26 12:11:15 2010 +0200
@@ -376,6 +376,17 @@
return iInstallationTime;
}
+// ---------------------------------------------------------------------------
+// CHsContentInfo::SetDescriptionL
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CHsContentInfo::SetDescriptionL( const TDesC8& aDescription )
+ {
+ delete iDescription;
+ iDescription = NULL;
+ iDescription = CnvUtfConverter::ConvertToUnicodeFromUtf8L( aDescription );
+ }
+
// -----------------------------------------------------------------------
// CHsContentInfo::SetDescriptionL()
// -----------------------------------------------------------------------
@@ -384,7 +395,6 @@
{
delete iDescription;
iDescription = NULL;
-
iDescription = aDescription.AllocL();
}
--- a/contentpublishingsrv/contentharvester/contentharvesterswiplugin/group/chswiplugin.mmp Mon Jan 18 20:32:13 2010 +0200
+++ b/contentpublishingsrv/contentharvester/contentharvesterswiplugin/group/chswiplugin.mmp Tue Jan 26 12:11:15 2010 +0200
@@ -29,6 +29,8 @@
SOURCEPATH ../src
SOURCE chswiplugin.cpp
+SOURCE chswiusbhandler.cpp
+SOURCE chswiusbobserver.cpp
SOURCEPATH ../data
START RESOURCE chswiplugin.rss
@@ -49,6 +51,10 @@
LIBRARY apgrfx.lib
LIBRARY apparc.lib
+LIBRARY PlatformEnv.lib
+LIBRARY efsrv.lib
+
LIBRARY liwservicehandler.lib //AIW Framework
+LIBRARY bafl.lib // CDesC16ArrayFlat
//end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/contentpublishingsrv/contentharvester/contentharvesterswiplugin/inc/chswimassmodeobserver.h Tue Jan 26 12:11:15 2010 +0200
@@ -0,0 +1,53 @@
+/*
+* 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:
+ *
+*/
+
+#ifndef CHSWIMASSMODEOBSERVER_H_
+#define CHSWIMASSMODEOBSERVER_H_
+
+
+/**
+ * Mass storage mode observer.
+ */
+class MCHSwiMassModeObserver
+ {
+public:
+ /**
+ * Sets Mass Storage Mode
+ * @param aMode Mass Storage mode
+ */
+ virtual void SetMassStorageMode( TBool aMode ) = 0;
+
+ /**
+ * Sets Mass Storage Mode
+ * @returns Mass Storage mode
+ */
+ virtual TBool IsMassStorageMode() = 0;
+
+ /**
+ * Handles ending of mass storage mode (e.g. unplugging usb cable when in mass storage mode)
+ */
+ virtual void HandleMassStorageModeEndEvent() = 0;
+
+ /*
+ * Handles successful drive scan, which has been executed asynchronously after either:
+ * - Explicitly postponed drive scan, or
+ * - Error recovery from synchronous drive scan.
+ */
+ virtual void HandleSuccessfulAsynchDriveScan() = 0;
+ };
+
+#endif /* CHSWIMASSMODEOBSERVER_H_ */
--- a/contentpublishingsrv/contentharvester/contentharvesterswiplugin/inc/chswiplugin.h Mon Jan 18 20:32:13 2010 +0200
+++ b/contentpublishingsrv/contentharvester/contentharvesterswiplugin/inc/chswiplugin.h Tue Jan 26 12:11:15 2010 +0200
@@ -21,16 +21,21 @@
#include <contentharvesterplugin.h>
#include <apgnotif.h>
+#include "chswimassmodeobserver.h"
+
class MLiwInterface;
class CLiwGenericParamList;
+class CCHSwiUsbHandler;
+class CCHSwiUsbObserver;
+
/**
* Active Data plugin for SIS installation events.
*
* @since S60 S60 v3.1
*/
class CCHSwiPlugin: public CContentHarvesterPlugin,
- MApaAppListServObserver
+ MApaAppListServObserver, MCHSwiMassModeObserver
{
public:
@@ -53,6 +58,13 @@
void UpdateL();
private:
+
+ // from MCHSwiMassModeObserver
+ void SetMassStorageMode( TBool aMode );
+ TBool IsMassStorageMode();
+ void HandleMassStorageModeEndEvent();
+ void HandleSuccessfulAsynchDriveScan();
+
// from MApaAppListServObserver
void HandleAppListEvent( TInt aEvent );
@@ -67,16 +79,23 @@
*/
CCHSwiPlugin( MLiwInterface* aInterface );
-
- /**
- * This function removes publishers from database when
- * an applicaion is uninstalled or when the MMC is removed.
+ /**
+ * Removes publishers from database when an applicaion
+ * is uninstalled or when the MMC is removed.
*/
void UpdateWidgetsL();
-
+ /**
+ * Removes widgets.
+ * @param aWidgets Widgets list.
+ */
void RemoveWidgetsL( CLiwGenericParamList* aWidgets );
+ /**
+ * Removes single widget.
+ * @param aType Widget type.
+ * @param aContentId Widget UID.
+ */
void RemoveWidgetL( const TDesC& aType,
const TDesC& aContentId );
@@ -87,17 +106,42 @@
* An interface to Content Publisher Service
*/
MLiwInterface* iCPSInterface;
-
-
+
/**
* AppArc session.
* Own.
*/
RApaLsSession iApaLsSession;
- CApaAppListNotifier* iNotifier; ///< Change notifier. Own.
+ /**
+ * File session.
+ */
+ RFs iFs;
+
+ /**
+ * Change notifier.
+ * Own.
+ */
+ CApaAppListNotifier* iNotifier;
+
+ /**
+ * Mass storage mode handler.
+ * Own.
+ */
+ CCHSwiUsbHandler* iUsbHandler;
+
+ /**
+ * Disk observer for monitoring status of mass drive.
+ * Own.
+ */
+ CCHSwiUsbObserver* iUsbObserver;
+
+ /**
+ * Mass storage mode flag.
+ */
+ TBool iMassStorageMode;
+ };
- };
+
#endif // C_CCHSWIPLUGIN_H
-
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/contentpublishingsrv/contentharvester/contentharvesterswiplugin/inc/chswiusbhandler.h Tue Jan 26 12:11:15 2010 +0200
@@ -0,0 +1,163 @@
+/*
+* 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:
+ *
+*/
+
+#ifndef C_CCHSWIUSBHANDLER_H
+#define C_CCHSWIUSBHANDLER_H
+
+// INCLUDES
+#include <e32std.h>
+#include <e32base.h>
+#include <f32file.h>
+
+
+
+
+// FORWARD DECLARATION
+class MCHSwiMassModeObserver;
+
+
+/*
+ * Inherited CActive, performs a asynchronous checks for mass storage mode
+ *
+ * @since 3.1
+ */
+class CCHSwiUsbHandler : public CActive
+ {
+public:
+ /**
+ * Two-phased constructor.
+ * @param aPlugin Owning plugin.
+ * @param aFs File session.
+ */
+ static CCHSwiUsbHandler* NewL( MCHSwiMassModeObserver* aMassModeObserver,
+ RFs& aFs );
+
+ /**
+ * Destructor.
+ */
+ virtual ~CCHSwiUsbHandler();
+
+ /**
+ * Performs synchronous drive scan. Checks whether Mass Drive is available.
+ * If it available: observer's Mass Mode flag is set to EFalse.
+ * If it is not available: Mass Mode flag is set to ETrue.
+ * In case of error, the check is postponed to be done again in RunL and Mass
+ * Mode flag is set to ETrue.
+ */
+ void SynchronousDriveScan();
+
+ /**
+ * Performs postponed drive scan. Checks whether Mass Drive is available.
+ * If it available: observer's Mass Mode flag is set to EFalse.
+ * If it is not available: Mass Mode flag is set to ETrue.
+ * In case of error, the check is postponed to be done again in RunL and Mass
+ * Mode flag is set to ETrue.
+ */
+ void PostponedDriveScan();
+
+protected:
+
+ /**
+ * Handles timer events to start drive scan.
+ */
+ void RunL();
+
+ /**
+ * RunL error handling.
+ * @param aError Error.
+ */
+ TInt RunError( TInt aError );
+
+ /**
+ * Cancels notifications.
+ */
+ void DoCancel();
+
+private:
+
+ /**
+ * no copy constructor
+ */
+ CCHSwiUsbHandler( const CCHSwiUsbHandler& );
+
+ /**
+ * no assignment
+ */
+ CCHSwiUsbHandler& operator=( const CCHSwiUsbHandler& );
+
+ /**
+ * C++ default constructor
+ */
+ CCHSwiUsbHandler( MCHSwiMassModeObserver* aMassModeObserver, RFs& aFs );
+
+ /**
+ * Symbian default constructor.
+ */
+ void ConstructL();
+
+ /**
+ * Scans drives to check mass storage mode.
+ */
+ TInt ScanDrives( TInt& aDriveFlags );
+
+ /**
+ * Handles drive access errors by launching new postponed scan.
+ */
+ void HandleDriveError();
+
+ /**
+ * Scans drives and updates Mass Mode flag in the observer.
+ * @param aFlagsValid indicates whether current iDriveFlags are valid
+ * (they become invalid in case of an error).
+ */
+ TInt ScanDrivesAndUpdateFlag( TBool aFlagsValid );
+
+ /**
+ * Updates mass mode flag in observer.
+ */
+ TInt UpdateMassModeFlag();
+
+private:
+ /**
+ * Error from last drive scan.
+ */
+ TInt iLastDriveScanError;
+
+ /**
+ * Observer.
+ */
+ MCHSwiMassModeObserver* iMassModeObserver;
+
+ /**
+ * File session. Not owned.
+ */
+ RFs iFs;
+
+ /**
+ * Drive flags obtained in last drive scan. Every bit indicates presence
+ * of given drive. This member is used for drive access optimalization -
+ * if flags are valid (i.e. no error occured)
+ */
+ TInt iDriveFlags;
+
+ /**
+ * Timer for postponed drive scan.
+ */
+ RTimer iTimer;
+ };
+
+#endif // #ifndef C_CCHSWIUSBHANDLER_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/contentpublishingsrv/contentharvester/contentharvesterswiplugin/inc/chswiusbobserver.h Tue Jan 26 12:11:15 2010 +0200
@@ -0,0 +1,113 @@
+/*
+* 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:
+ *
+*/
+
+#ifndef C_CCHSWIUSBOBSERVER_H
+#define C_CCHSWIUSBOBSERVER_H
+
+// INCLUDES
+#include <e32std.h>
+#include <e32base.h>
+#include <f32file.h>
+
+// FORWARD DECLARATION
+class CCHSwiUsbHandler;
+
+/*
+ * Observes RFs for RawDiskWrite events (these are also triggered when
+ * (un)mounting drive; RFs does not provide better, more specific
+ * notifications for mount and dismount).
+ *
+ * After receiving notification, calls
+ * CCHSwiUsbHandler::PostponedDriveScan() and does not subscribe to
+ * further notifcations. It is up to the plugin to call
+ * CCHSwiUsbObserver::Start() after a successful drive scan.
+ *
+ * @since 3.1
+ */
+class CCHSwiUsbObserver : public CActive
+ {
+public:
+ /**
+ * Two-phased constructor.
+ * @param aFs File session.
+ */
+ static CCHSwiUsbObserver* NewL( CCHSwiUsbHandler* aHandler, RFs& aFs );
+
+ /**
+ * Destructor.
+ */
+ virtual ~CCHSwiUsbObserver();
+
+ /**
+ * Active object start.
+ */
+ void Start();
+
+protected:
+
+ /**
+ * Handle RFs notifications.
+ */
+ void RunL();
+
+ /**
+ * RunL error handling.
+ * @param aError Error.
+ */
+ TInt RunError( TInt aError );
+
+ /**
+ * Cancels notifications.
+ */
+ void DoCancel();
+
+private:
+
+ /**
+ * no copy constructor
+ */
+ CCHSwiUsbObserver( const CCHSwiUsbObserver& );
+
+ /**
+ * no assignment
+ */
+ CCHSwiUsbObserver& operator=( const CCHSwiUsbObserver& );
+
+ /**
+ * C++ default constructor
+ */
+ CCHSwiUsbObserver( CCHSwiUsbHandler* aHandler, RFs& aFs );
+
+ /**
+ * Symbian default constructor.
+ */
+ void ConstructL();
+
+private:
+
+ /**
+ * File Session.
+ */
+ RFs iFs;
+
+ /**
+ * Usb handler to perform postponed checks for mass storage mode.
+ */
+ CCHSwiUsbHandler* iUsbHandler;
+ };
+
+#endif // #ifndef C_CCHSWIUSBOBSERVER_H
--- a/contentpublishingsrv/contentharvester/contentharvesterswiplugin/src/chswiplugin.cpp Mon Jan 18 20:32:13 2010 +0200
+++ b/contentpublishingsrv/contentharvester/contentharvesterswiplugin/src/chswiplugin.cpp Tue Jan 26 12:11:15 2010 +0200
@@ -21,13 +21,18 @@
#include <ecom/implementationproxy.h>
#include <contentharvesterpluginuids.hrh>
-#include <liwservicehandler.h>
+#include <LiwServiceHandler.h>
+
#include "cpglobals.h"
+#include "chswiusbhandler.h"
+#include "chswiusbobserver.h"
_LIT( KHsWidgetPublisher, "hswidgetpublisher");
_LIT( KHsPublisher, "ai3templatedwidget" );
_LIT8( KWidgetUid, "widget_uid");
+const TInt KWidgetArrayGran = 8;
+
// Map the interface UIDs to implementation factory functions
// ============================= LOCAL FUNCTIONS ===============================
@@ -69,6 +74,12 @@
{
iNotifier = CApaAppListNotifier::NewL( this, CActive::EPriorityStandard );
User::LeaveIfError( iApaLsSession.Connect() );
+ User::LeaveIfError( iFs.Connect() );
+
+ iUsbHandler = CCHSwiUsbHandler::NewL( this, iFs );
+
+ iUsbObserver = CCHSwiUsbObserver::NewL( iUsbHandler, iFs );
+ iUsbObserver->Start();
}
// ----------------------------------------------------------------------------
@@ -92,8 +103,11 @@
//
CCHSwiPlugin::~CCHSwiPlugin()
{
+ delete iNotifier;
+ delete iUsbHandler;
+ delete iUsbObserver;
iApaLsSession.Close();
- delete iNotifier;
+ iFs.Close();
}
// ----------------------------------------------------------------------------
@@ -117,28 +131,48 @@
}
// ----------------------------------------------------------------------------
+// CCHSwiPlugin::HandleMassStorageModeEndEvent
+// (refer to MCHSwiMassModeObserver declaration).
+// ----------------------------------------------------------------------------
+//
+void CCHSwiPlugin::HandleMassStorageModeEndEvent()
+ {
+ TRAP_IGNORE( UpdateWidgetsL() );
+ }
+
+// ----------------------------------------------------------------------------
+// CCHSwiPlugin::HandleSuccessfulAsynchDriveScan
+// (refer to MCHSwiMassModeObserver declaration).
+// ----------------------------------------------------------------------------
+//
+void CCHSwiPlugin::HandleSuccessfulAsynchDriveScan()
+ {
+ iUsbObserver->Start();
+ }
+
+// ----------------------------------------------------------------------------
// CCHSwiPlugin::UpdateWidgetsL
// MMC watcher callback.
// ----------------------------------------------------------------------------
//
void CCHSwiPlugin::UpdateWidgetsL()
{
- CLiwGenericParamList* inparam = CLiwGenericParamList::NewLC( );
- CLiwGenericParamList* outparam = CLiwGenericParamList::NewLC( );
- inparam->AppendL( TLiwGenericParam( KType, TLiwVariant( KPublisher ) ) );
- CLiwDefaultMap* filter = CLiwDefaultMap::NewLC();
-
- filter->InsertL( KPublisherId, TLiwVariant( KHsWidgetPublisher ));
- filter->InsertL( KContentType, TLiwVariant( KHsPublisher ));
- inparam->AppendL( TLiwGenericParam( KFilter, TLiwVariant( filter ) ) );
-
- iCPSInterface->ExecuteCmdL( KGetList, *inparam, *outparam );
-
- RemoveWidgetsL( outparam );
-
- CleanupStack::PopAndDestroy( filter );
- CleanupStack::PopAndDestroy( outparam );
- CleanupStack::PopAndDestroy( inparam );
+ CLiwGenericParamList* inparam = CLiwGenericParamList::NewLC( );
+ CLiwGenericParamList* outparam = CLiwGenericParamList::NewLC( );
+ inparam->AppendL( TLiwGenericParam( KType, TLiwVariant( KPublisher ) ) );
+ CLiwDefaultMap* filter = CLiwDefaultMap::NewLC();
+
+ filter->InsertL( KPublisherId, TLiwVariant( KHsWidgetPublisher ));
+ filter->InsertL( KContentType, TLiwVariant( KHsPublisher ));
+ inparam->AppendL( TLiwGenericParam( KFilter, TLiwVariant( filter ) ) );
+
+ iCPSInterface->ExecuteCmdL( KGetList, *inparam, *outparam );
+
+ RemoveWidgetsL( outparam );
+
+ CleanupStack::PopAndDestroy( filter );
+ CleanupStack::PopAndDestroy( outparam );
+ CleanupStack::PopAndDestroy( inparam );
}
// ----------------------------------------------------------------------------
@@ -149,14 +183,19 @@
void CCHSwiPlugin::RemoveWidgetsL( CLiwGenericParamList* aWidgets )
{
TInt pos ( 0 );
- aWidgets->FindFirst( pos, KResults );
- if( pos != KErrNotFound )
+ aWidgets->FindFirst( pos, KResults );
+
+ if ( pos != KErrNotFound )
{
+ CDesC16ArrayFlat* notFoundWidgets = new (ELeave) CDesC16ArrayFlat( KWidgetArrayGran );
+ CleanupStack::PushL( notFoundWidgets );
+
TLiwVariant variant = (*aWidgets)[pos].Value();
variant.PushL();
CLiwIterable* iterable = variant.AsIterable();
iterable->Reset();
- if( iterable->NextL( variant ) )
+
+ while ( iterable->NextL( variant ) )
{
CLiwDefaultMap *map = CLiwDefaultMap::NewLC();
variant.Get( *map );
@@ -173,8 +212,7 @@
{
if( map->FindL( KContentId, variant ) )
{
- RemoveWidgetL( KPublisher, variant.AsDes() );
- RemoveWidgetL( KCpData, variant.AsDes() );
+ notFoundWidgets->AppendL( variant.AsDes() );
}
}
}
@@ -182,8 +220,26 @@
}
CleanupStack::PopAndDestroy( map );
}
- CleanupStack::PopAndDestroy(&variant);
+
+ if ( notFoundWidgets->Count() > 0 )
+ {
+ iUsbHandler->SynchronousDriveScan();
+
+ if ( !IsMassStorageMode() )
+ {
+ for ( TInt i = 0; i < notFoundWidgets->Count(); i++ )
+ {
+ RemoveWidgetL( KPublisher, (*notFoundWidgets)[i] );
+ RemoveWidgetL( KCpData, (*notFoundWidgets)[i] );
+ }
+ }
+ }
+
+ CleanupStack::PopAndDestroy( &variant );
+ CleanupStack::PopAndDestroy( notFoundWidgets );
}
+
+
}
// ----------------------------------------------------------------------------
@@ -211,4 +267,24 @@
CleanupStack::PopAndDestroy( inparam );
}
+// ----------------------------------------------------------------------------
+// CCHSwiPlugin::SetMassStorageMode
+// Sets Mass Storage mode.
+// ----------------------------------------------------------------------------
+//
+void CCHSwiPlugin::SetMassStorageMode( TBool aMode )
+ {
+ iMassStorageMode = aMode;
+ }
+
+// ----------------------------------------------------------------------------
+// CCHSwiPlugin::IsMassStorageMode
+// Gets Mass Storage mode.
+// ----------------------------------------------------------------------------
+//
+TBool CCHSwiPlugin::IsMassStorageMode()
+ {
+ return iMassStorageMode;
+ }
+
// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/contentpublishingsrv/contentharvester/contentharvesterswiplugin/src/chswiusbhandler.cpp Tue Jan 26 12:11:15 2010 +0200
@@ -0,0 +1,307 @@
+/*
+* 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: Software Installer plug-in usb handler
+*
+*/
+
+
+// INCLUDE FILES
+
+#include "chswiusbhandler.h"
+#include "chswiplugin.h"
+#include "chswimassmodeobserver.h"
+#include <DriveInfo.h>
+
+// CONSTANTS
+const TInt KCallBackDelay = 5000000;
+
+// ----------------------------------------------------------------------------
+// CCHSwiUsbHandler::NewL()
+// two-phase constructor
+// ----------------------------------------------------------------------------
+//
+CCHSwiUsbHandler* CCHSwiUsbHandler::NewL(
+ MCHSwiMassModeObserver* aMassModeObserver,
+ RFs& aFs )
+ {
+ CCHSwiUsbHandler* self =
+ new(ELeave) CCHSwiUsbHandler( aMassModeObserver, aFs );
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ CleanupStack::Pop( self );
+ return self;
+ }
+
+// ----------------------------------------------------------------------------
+// CCHSwiUsbHandler::CCHSwiUsbHandler()
+// C++ default constructor
+// ----------------------------------------------------------------------------
+//
+CCHSwiUsbHandler::CCHSwiUsbHandler( MCHSwiMassModeObserver* aMassModeObserver,
+ RFs& aFs )
+ : CActive( CActive::EPriorityUserInput ),
+ iLastDriveScanError( KErrNone ),
+ iMassModeObserver( aMassModeObserver ),
+ iFs( aFs ),
+ iDriveFlags( 0 )
+ {
+ CActiveScheduler::Add( this );
+ }
+
+// ----------------------------------------------------------------------------
+// CCHSwiUsbHandler::ConstructL()
+// Symbian default constructor
+// ----------------------------------------------------------------------------
+//
+void CCHSwiUsbHandler::ConstructL()
+ {
+ User::LeaveIfError( iTimer.CreateLocal() );
+
+ iLastDriveScanError = ScanDrivesAndUpdateFlag( EFalse );
+
+ if ( iLastDriveScanError != KErrNone )
+ {
+ HandleDriveError();
+ }
+ }
+
+// ----------------------------------------------------------------------------
+// CCHSwiUsbHandler::~CCHSwiUsbHandler()
+// destructor
+// ----------------------------------------------------------------------------
+//
+CCHSwiUsbHandler::~CCHSwiUsbHandler()
+ {
+ Cancel();
+ iTimer.Close();
+ }
+
+// ----------------------------------------------------------------------------
+// CCHSwiUsbHandler::SynchronousDriveScan()
+// Performs synchronous drive scan. Checks whether Mass Drive is available
+// and updates the flag in observer.
+// ----------------------------------------------------------------------------
+//
+void CCHSwiUsbHandler::SynchronousDriveScan()
+ {
+ iLastDriveScanError = ScanDrivesAndUpdateFlag( iLastDriveScanError == KErrNone );
+
+ if ( iLastDriveScanError != KErrNone )
+ {
+ HandleDriveError();
+ }
+ }
+
+// ----------------------------------------------------------------------------
+// CCHSwiUsbHandler::PostponedDriveScan()
+// Starts postponed drive scan.
+// ----------------------------------------------------------------------------
+//
+void CCHSwiUsbHandler::PostponedDriveScan()
+ {
+ Cancel();
+ iTimer.After( iStatus, KCallBackDelay );
+ SetActive();
+ }
+
+// ----------------------------------------------------------------------------
+// CCHSwiUsbHandler::RunL()
+// Handles postponed drive scan.
+// Executed either after call to PostponedDriveScan or in case of drive reading
+// errors in SynchronousDriveScan or ConstructL.
+// ----------------------------------------------------------------------------
+//
+void CCHSwiUsbHandler::RunL()
+ {
+ TBool massModeBeforeScan = iMassModeObserver->IsMassStorageMode();
+ TInt errorBeforeScan = iLastDriveScanError;
+
+ SynchronousDriveScan();
+
+ if ( iLastDriveScanError == KErrNone )
+ {
+ iMassModeObserver->HandleSuccessfulAsynchDriveScan();
+
+ // CCHSwiUsbObserver can't detect app uninstall when app had been installed on removable
+ // memory card, the memory card was removed during mass mode, and then mass
+ // mode was deactivated.
+ // Additionaly, we need to update widgets when recovering from error.
+ if ( !iMassModeObserver->IsMassStorageMode() &&
+ ( massModeBeforeScan || errorBeforeScan != KErrNone ) )
+ {
+ iMassModeObserver->HandleMassStorageModeEndEvent();
+ }
+ }
+ }
+
+// ----------------------------------------------------------------------------
+// CCHSwiUsbHandler::HandleDriveError()
+// Handles drive access errors by launching new postponed scan.
+// ----------------------------------------------------------------------------
+void CCHSwiUsbHandler::HandleDriveError()
+ {
+ Cancel();
+ iMassModeObserver->SetMassStorageMode( ETrue );
+
+ iTimer.After( iStatus, KCallBackDelay );
+ SetActive();
+ }
+
+// ----------------------------------------------------------------------------
+// CCHSwiUsbHandler::ScanDrivesAndUpdateFlag()
+// Scans drives and updates Mass Mode flag in the observer.
+// ----------------------------------------------------------------------------
+TInt CCHSwiUsbHandler::ScanDrivesAndUpdateFlag( TBool aFlagsValid )
+ {
+ TInt error( KErrNone );
+
+ if( aFlagsValid )
+ {
+ // iDriveFlags is valid, we can use deltaDriveFlags to avoid
+ // unnecessary calls to DriveInfo::GetDriveStatus
+ TInt driveFlags = 0;
+ TInt deltaDriveFlags = 0;
+
+ error = ScanDrives( driveFlags );
+
+ if ( error == KErrNone )
+ {
+ deltaDriveFlags = iDriveFlags ^ driveFlags;
+ iDriveFlags = driveFlags;
+ }
+
+ if ( deltaDriveFlags )
+ {
+ error = UpdateMassModeFlag();
+ }
+ }
+ else
+ {
+ error = ScanDrives( iDriveFlags );
+
+ if ( error == KErrNone )
+ {
+ error = UpdateMassModeFlag();
+ }
+ }
+
+ return error;
+ }
+
+// ----------------------------------------------------------------------------
+// CCHSwiUsbHandler::UpdateMassModeFlag()
+// Updates Mass Mode flag in the observer.
+// ----------------------------------------------------------------------------
+TInt CCHSwiUsbHandler::UpdateMassModeFlag()
+ {
+ TInt flags = iDriveFlags;
+ TBool massMemoryPresent = EFalse;
+
+ for( TInt DriveNo = EDriveA + 1 ; DriveNo <= EDriveY; DriveNo++ )
+ {
+ flags = flags >> 1;
+ if( flags & 01 )
+ {
+ TUint status( 0 );
+ TInt error = DriveInfo::GetDriveStatus( iFs, DriveNo, status );
+
+ if( error != KErrNone )
+ {
+ return error;
+ }
+
+ if( ( status & DriveInfo::EDriveExternallyMountable )
+ && ( status & DriveInfo::EDriveInternal ) )
+ {
+ // Internal Memory
+ massMemoryPresent = ETrue;
+ break;
+ }
+ }
+ }
+
+ iMassModeObserver->SetMassStorageMode( !massMemoryPresent );
+ return KErrNone;
+ }
+
+// ----------------------------------------------------------------------------
+// CCHSwiUsbHandler::RunError()
+// Ignore errors from RunL.
+// ----------------------------------------------------------------------------
+//
+TInt CCHSwiUsbHandler::RunError( TInt /* aError */ )
+ {
+ return KErrNone; // indicates error was handled
+ }
+
+// ----------------------------------------------------------------------------
+// CCHSwiUsbHandler::DoCancel()
+// Cancel the MMC event handler
+// ----------------------------------------------------------------------------
+void CCHSwiUsbHandler::DoCancel()
+ {
+ iTimer.Cancel();
+ }
+
+// ----------------------------------------------------------------------------
+// CCHSwiUsbHandler::ScanDrives( TInt& aDriveFlags )
+// Scans drives and records a bit flag for those that exist and are
+// suitable for installing widgets to.
+// ----------------------------------------------------------------------------
+//
+TInt CCHSwiUsbHandler::ScanDrives( TInt& aDriveFlags )
+ {
+ // List all drives in the system
+ TDriveList driveList;
+ TInt error = iFs.DriveList( driveList );
+
+ if ( KErrNone == error )
+ {
+ for ( TInt driveNumber = EDriveY;
+ driveNumber >= EDriveA;
+ driveNumber-- )
+ {
+ // The drives that will be filtered out are the same ones that
+ // WidgetInstaller filters out in CWidgetUIHandler::SelectDriveL()
+ if ( (EDriveD == driveNumber)
+ || !driveList[driveNumber] )
+ {
+ // EDriveD is a temporary drive usually a RAM disk
+ continue;
+ }
+
+ TVolumeInfo volInfo;
+ if ( iFs.Volume( volInfo, driveNumber ) != KErrNone )
+ {
+ // volume is not usable (e.g. no media card inserted)
+ continue;
+ }
+ if ( (volInfo.iDrive.iType == EMediaNotPresent) ||
+ (volInfo.iDrive.iType == EMediaRom) ||
+ (volInfo.iDrive.iType == EMediaRemote) ||
+ (volInfo.iDrive.iDriveAtt & KDriveAttRom) ||
+ (volInfo.iDrive.iDriveAtt & KDriveAttSubsted) )
+ {
+ // not a suitable widget install drive
+ continue;
+ }
+
+ // found a usable drive
+ aDriveFlags |= (1 << driveNumber);
+ }
+ }
+
+ return error;
+ }
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/contentpublishingsrv/contentharvester/contentharvesterswiplugin/src/chswiusbobserver.cpp Tue Jan 26 12:11:15 2010 +0200
@@ -0,0 +1,111 @@
+/*
+* 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:
+ *
+*/
+
+// INCLUDE FILES
+
+#include "chswiusbobserver.h"
+#include "chswiusbhandler.h"
+
+// ----------------------------------------------------------------------------
+// CCHSwiUsbObserver::NewL()
+// two-phase constructor
+// ----------------------------------------------------------------------------
+//
+CCHSwiUsbObserver* CCHSwiUsbObserver::NewL( CCHSwiUsbHandler* aHandler, RFs& aFs )
+ {
+ CCHSwiUsbObserver* self =
+ new(ELeave) CCHSwiUsbObserver( aHandler, aFs );
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ CleanupStack::Pop( self );
+ return self;
+ }
+
+// ----------------------------------------------------------------------------
+// CCHSwiUsbObserver::CCHSwiUsbObserver()
+// C++ default constructor
+// ----------------------------------------------------------------------------
+//
+CCHSwiUsbObserver::CCHSwiUsbObserver( CCHSwiUsbHandler* aHandler, RFs& aFs )
+ : CActive( CActive::EPriorityUserInput ),
+ iFs( aFs ),
+ iUsbHandler( aHandler )
+ {
+ CActiveScheduler::Add( this );
+ }
+
+// ----------------------------------------------------------------------------
+// CCHSwiUsbObserver::ConstructL()
+// Symbian default constructor
+// ----------------------------------------------------------------------------
+//
+void CCHSwiUsbObserver::ConstructL()
+ {
+ }
+
+// ----------------------------------------------------------------------------
+// CCHSwiUsbObserver::~CCHSwiUsbObserver()
+// destructor
+// ----------------------------------------------------------------------------
+//
+CCHSwiUsbObserver::~CCHSwiUsbObserver()
+ {
+ Cancel();
+ }
+
+// ----------------------------------------------------------------------------
+// CCHSwiUsbObserver::DoCancel()
+//
+// ----------------------------------------------------------------------------
+//
+void CCHSwiUsbObserver::DoCancel()
+ {
+ iFs.NotifyChangeCancel( iStatus );
+ }
+
+// ----------------------------------------------------------------------------
+// CCHSwiUsbObserver::Start()
+// Start monitoring.
+// ----------------------------------------------------------------------------
+//
+void CCHSwiUsbObserver::Start()
+ {
+ Cancel();
+ iFs.NotifyChange( ENotifyDisk, iStatus );
+ SetActive();
+ }
+
+// ----------------------------------------------------------------------------
+// CCHSwiUsbObserver::RunL()
+// Handle notifications of MMC events.
+// ----------------------------------------------------------------------------
+//
+void CCHSwiUsbObserver::RunL()
+ {
+ iUsbHandler->PostponedDriveScan();
+ }
+
+// ----------------------------------------------------------------------------
+// CCHSwiUsbObserver::RunError()
+//
+// ----------------------------------------------------------------------------
+//
+TInt CCHSwiUsbObserver::RunError( TInt /*aError*/)
+ {
+ return KErrNone;
+ }
+
--- a/homescreenpluginsrv/hspsmanager/src/hspsclientrequesthandler.cpp Mon Jan 18 20:32:13 2010 +0200
+++ b/homescreenpluginsrv/hspsmanager/src/hspsclientrequesthandler.cpp Tue Jan 26 12:11:15 2010 +0200
@@ -628,7 +628,7 @@
CleanupStack::PushL( pluginIter );
ChspsDomNode* pluginNode = pluginIter->First();
TBool steppingtoConfNode(EFalse);
- while(pluginNode && !steppingtoConfNode)
+ while( pluginNode && !steppingtoConfNode )
{
const TDesC8& pluginNodeName = pluginNode->Name();
@@ -643,10 +643,16 @@
}
CleanupStack::PopAndDestroy( pluginIter );
- // Copy the plugin configuration to the main document.
- ChspsDomNode* rootCopy = pluginNode->CloneL( node->StringPool());
- rootCopy->SetParent( node );
- node->AddChildL( rootCopy );
+ if ( pluginNode )
+ {
+ // Copy the plugin configuration to the main document.
+ ChspsDomNode* rootCopy = pluginNode->CloneL( node->StringPool());
+ if ( rootCopy )
+ {
+ rootCopy->SetParent( node );
+ node->AddChildL( rootCopy );
+ }
+ }
} // !pluginOdt else
CleanupStack::PopAndDestroy( pluginOdt );
--- a/homescreenpluginsrv/hspsmanager/src/hspsmaintenancehandler.cpp Mon Jan 18 20:32:13 2010 +0200
+++ b/homescreenpluginsrv/hspsmanager/src/hspsmaintenancehandler.cpp Tue Jan 26 12:11:15 2010 +0200
@@ -3557,7 +3557,8 @@
odt->SetProviderNameL( aOdt.ProviderName() );
odt->SetThemeFullNameL( aOdt.ThemeFullName() );
odt->SetThemeShortNameL( aOdt.ThemeShortName() );
- odt->SetThemeVersionL( aOdt.ThemeVersion() );
+ odt->SetThemeVersionL( aOdt.ThemeVersion() );
+ odt->SetDescriptionL( aOdt.Description() );
odt->SetFlags( aOdt.Flags() );
odt->SetMultiInstance( aOdt.MultiInstance() );
User::LeaveIfError( iDefinitionRepository.GetOdtL( *odt ) );
@@ -3623,6 +3624,7 @@
odt->SetThemeFullNameL( header->ThemeFullName() );
odt->SetThemeShortNameL( header->ThemeShortName() );
odt->SetThemeVersionL( header->ThemeVersion() );
+ odt->SetDescriptionL( header->Description() );
odt->SetFlags( header->Flags() );
odt->SetMultiInstance( header->MultiInstance() );
User::LeaveIfError( iDefinitionRepository.GetOdtL( *odt ) );
@@ -3704,16 +3706,18 @@
return err;
}
- ChspsDomNode* pluginNode = NULL;
- ChspsDomNode* configNode = NULL;
- for(TInt i = 0; i < aPluginIds.Count() && err == KErrNone; i++ )
+ for( TInt i = 0; i < aPluginIds.Count() && err == KErrNone; i++ )
{
- pluginNode =
- hspsServerUtil::FindPluginNodeL( aOdt, aPluginIds[i] );
+ ChspsDomNode* configNode = NULL;
+ ChspsDomNode* pluginNode =
+ hspsServerUtil::FindPluginNodeL( aOdt, aPluginIds[i] );
TInt index = 0;
- configNode =
- hspsServerUtil::FindChildNodeByTagL( KConfigurationElement, *pluginNode, index );
+ if ( pluginNode )
+ {
+ configNode =
+ hspsServerUtil::FindChildNodeByTagL( KConfigurationElement, *pluginNode, index );
+ }
if( configNode )
{
--- a/homescreenpluginsrv/hspsmanager/src/hspsserverutil.cpp Mon Jan 18 20:32:13 2010 +0200
+++ b/homescreenpluginsrv/hspsmanager/src/hspsserverutil.cpp Tue Jan 26 12:11:15 2010 +0200
@@ -583,42 +583,41 @@
targetFile = targetParser.DriveAndPath();
targetFile.Append( sourceParser.NameAndExt() );
}
-
- // Make target folder
- TInt error = aFs.MkDirAll( aTargetPath );
- if( error == KErrAlreadyExists )
- {
- // lets ignore error if directory already exists
- error = KErrNone;
- }
- if( !error )
+
+ TInt error = KErrNone;
+
+ if ( hspsServerUtil::ResourceCopyIsRelevantL(
+ aSourceFile,
+ targetFile,
+ aFs )
+ )
{
- // Default to 'copying was not neccessary'
- error = KErrAlreadyExists;
+ // Make target folder
+ error = aFs.MkDirAll( aTargetPath );
+ if( error == KErrAlreadyExists )
+ {
+ // lets ignore error if directory already exists
+ error = KErrNone;
+ }
- // Check whether the resource needs to be copied
- if ( hspsServerUtil::ResourceCopyIsRelevantL(
- aSourceFile,
- targetFile,
- aFs )
- )
+ if( !error )
{
// Slowish operation
error = aFilemanager.Copy(
aSourceFile,
aTargetPath );
- if( !error )
- {
- // Clear readonly file attribs that might be inherited from the source file
- aFilemanager.Attribs(
- aTargetPath,
- 0,
- KEntryAttReadOnly,
- TTime( 0 ) ); // TTime(0) = preserve original time stamp.
- }
+ }
- } // copy op
- }
+ if( !error )
+ {
+ // Clear readonly file attribs that might be inherited from the source file
+ aFilemanager.Attribs(
+ aTargetPath,
+ 0,
+ KEntryAttReadOnly,
+ TTime( 0 ) ); // TTime(0) = preserve original time stamp.
+ }
+ }
return error;
}
@@ -639,18 +638,11 @@
}
// Collect data from files.
-
- TEntry sourceEntry;
- TInt entryError = aFs.Entry( aSource, sourceEntry );
- if( entryError != KErrNone )
- {
- // Problem. Do not copy.
- return EFalse;
- }
TEntry targetEntry;
- entryError = aFs.Entry( aTarget, targetEntry );
- if( entryError == KErrNotFound )
+ TInt entryError = aFs.Entry( aTarget, targetEntry );
+ if( entryError == KErrNotFound ||
+ entryError == KErrPathNotFound )
{
// Target does not exist. Copy needed.
return ETrue;
@@ -661,6 +653,14 @@
return EFalse;
}
+ TEntry sourceEntry;
+ entryError = aFs.Entry( aSource, sourceEntry );
+ if( entryError != KErrNone )
+ {
+ // Problem. Do not copy.
+ return EFalse;
+ }
+
TParse sourceParser;
sourceParser.Set( aSource, NULL, NULL );
@@ -686,25 +686,21 @@
targetDriveNumber = tmpDriveNumber;
}
}
-
- const TInt KTargetExists = BaflUtils::FileExists( aFs, aTarget );
-
- // Target exists + size and time stamp identical?
- if( KTargetExists &&
- sourceEntry.iSize == targetEntry.iSize &&
+
+ // Size and time stamp identical?
+ if( sourceEntry.iSize == targetEntry.iSize &&
sourceEntry.iModified == targetEntry.iModified )
{
return EFalse;
}
// Check required disk space.
- TInt requiredDiskSpace = 0;
-
- if( KTargetExists && sourceEntry.iSize > targetEntry.iSize )
+ TInt requiredDiskSpace = 0;
+ if( sourceEntry.iSize > targetEntry.iSize )
{
requiredDiskSpace = sourceEntry.iSize - targetEntry.iSize;
}
- else if( !KTargetExists )
+ else
{
requiredDiskSpace = sourceEntry.iSize;
}
@@ -1720,8 +1716,8 @@
{
ChspsResource& resource = aODT.ResourceL( resourceIndex );
if ( resource.ConfigurationUid() == aConfUid &&
- resource.FileName().FindF( KSourcesFolder ) > 0 &&
- resource.Language() == aActiveLanguage )
+ resource.Language() == aActiveLanguage &&
+ resource.FileName().FindF( KSourcesFolder ) > 0 )
{
aWidgetResources.Append( &resource );
}
--- a/homescreenpluginsrv/hspsmanager/src/hspsthemeserver.cpp Mon Jan 18 20:32:13 2010 +0200
+++ b/homescreenpluginsrv/hspsmanager/src/hspsthemeserver.cpp Tue Jan 26 12:11:15 2010 +0200
@@ -895,7 +895,8 @@
odt->SetProviderNameL( header->ProviderName() );
odt->SetThemeFullNameL( header->ThemeFullName() );
odt->SetThemeShortNameL( header->ThemeShortName() );
- odt->SetThemeVersionL( header->ThemeVersion() );
+ odt->SetThemeVersionL( header->ThemeVersion() );
+ odt->SetDescriptionL( header->Description() );
odt->SetFlags( header->Flags() );
odt->SetMultiInstance( header->MultiInstance() );
@@ -1514,6 +1515,7 @@
odt->SetThemeFullNameL( header->ThemeFullName() );
odt->SetThemeShortNameL( header->ThemeShortName() );
odt->SetThemeVersionL( header->ThemeVersion() );
+ odt->SetDescriptionL( header->Description() );
odt->SetFlags( header->Flags() );
odt->SetMultiInstance( header->MultiInstance() );
User::LeaveIfError( iDefinitionRepository->GetOdtL( *odt ) );
@@ -2218,7 +2220,8 @@
if ( localized )
{
// Set header's name from the ODT
- header->SetThemeFullNameL( odt->ThemeFullName() );
+ header->SetThemeFullNameL( odt->ThemeFullName() );
+ header->SetDescriptionL( odt->Description() );
}
CleanupStack::PopAndDestroy( odt );
--- a/homescreenpluginsrv/hspsodt/src/hspsodt.cpp Mon Jan 18 20:32:13 2010 +0200
+++ b/homescreenpluginsrv/hspsodt/src/hspsodt.cpp Tue Jan 26 12:11:15 2010 +0200
@@ -450,12 +450,15 @@
TInt count = aStream.ReadInt32L();
for (TInt i=0;i<count;i++)
{
- ChspsResource* resource = ChspsResource::NewL();
- CleanupStack::PushL(resource);
- resource->InternalizeL(aStream);
- iResourceList->AppendL( resource );
- CleanupStack::Pop( resource ); // now owned by array
- resource = NULL;
+ ChspsResource* resource = ChspsResource::NewL();
+ CleanupStack::PushL(resource);
+ resource->InternalizeL(aStream);
+ if ( iResourceList )
+ {
+ iResourceList->AppendL( resource );
+ }
+ CleanupStack::Pop( resource ); // now owned by array
+ resource = NULL;
}
}
@@ -722,6 +725,10 @@
{
clone->SetPackageVersionL( *iPackageVersion );
}
+ if( iDescription )
+ {
+ clone->SetDescriptionL( *iDescription );
+ }
clone->SetOdtLanguage( iLanguage );
clone->SetFlags( iFlags );
--- a/homescreensrv_plat/ai_content_model_api/inc/aicontentobserver.h Mon Jan 18 20:32:13 2010 +0200
+++ b/homescreensrv_plat/ai_content_model_api/inc/aicontentobserver.h Tue Jan 26 12:11:15 2010 +0200
@@ -35,6 +35,28 @@
*/
class MAiContentObserver
{
+public: // New Enumeration
+ /**
+ * CSS Primitive value type
+ */
+ enum TValueType
+ {
+ EValueUnknown = 0,
+ EValueNumber,
+ EValuePercentage,
+ EValuePx,
+ EValueDimension,
+ EValueString,
+ EValueIdent,
+ EValueAttr,
+ EValueCounter,
+ EValueRect,
+ EValueRgbColor,
+ EValueRgbaColor,
+ EValueFunction,
+ EValueUnitValue
+ };
+
public: // New functions
/**
@@ -250,8 +272,52 @@
* @param aPublsiherInfo Publisher which requires subscription
* @return ETrue if subsription is needed, EFalse otherwise
*/
- virtual TBool RequiresSubscription( const TAiPublisherInfo& aPublisherInfo ) const = 0;
-
+ virtual TBool RequiresSubscription( const TAiPublisherInfo& aPublisherInfo ) const = 0;
+
+ /**
+ * Invoked by the plug-in to change the property value of a specific content.
+ * value type must be string.
+ * @param aPlugin - Plug-in property extension interface implementation.
+ * @param aElementId - id of content selector, MUST correspond
+ * single content supported by plug-in. The framework
+ * utilizes the id to find in the plugin xml defintion.
+ * @param aPropertyName - property name.
+ * @param aPropertyValue - property value.
+ * @return - Possible return values:
+ * - KErrNone - if content reference found.
+ * - KErrNotFound - if content reference is not found in current
+ * plugin definition.
+ * - KErrNotSupported - if content selector is not supported by
+ * current plugin definition.
+ */
+ virtual TInt SetProperty( MAiPropertyExtension& aPlugin,
+ const TDesC8& aElementId,
+ const TDesC8& aPropertyName,
+ const TDesC8& aPropertyValue ) = 0;
+
+ /**
+ * Invoked by the plug-in to change the property value of a specific content.
+ *
+ * @param aPlugin - Plug-in property extension interface implementation.
+ * @param aElementId - id of content selector, MUST correspond
+ * single content supported by plug-in. The framework
+ * utilizes the id to find in the plugin xml defintion.
+ * @param aPropertyName - property name.
+ * @param aPropertyValue - property value.
+ * @param aValueType - value type.
+ * @return - Possible return values:
+ * - KErrNone - if content reference found.
+ * - KErrNotFound - if content reference is not found in current
+ * plugin definition.
+ * - KErrNotSupported - if content selector is not supported by
+ * current plugin definition.
+ */
+ virtual TInt SetProperty( MAiPropertyExtension& aPlugin,
+ const TDesC8& aElementId,
+ const TDesC8& aPropertyName,
+ const TDesC8& aPropertyValue,
+ MAiContentObserver::TValueType aValueType) = 0;
+
protected:
/**
* Protected destructor prevents deletion through this interface.
--- a/homescreensrv_plat/hs_content_control_api/inc/hscontentinfo.h Mon Jan 18 20:32:13 2010 +0200
+++ b/homescreensrv_plat/hs_content_control_api/inc/hscontentinfo.h Tue Jan 26 12:11:15 2010 +0200
@@ -253,6 +253,14 @@
IMPORT_C void SetDescriptionL( const TDesC& aDescription );
/**
+ * Sets this widget's description
+ *
+ * @since S60 5.0
+ * @param aDescription Description
+ */
+ IMPORT_C void SetDescriptionL( const TDesC8& aDescription );
+
+ /**
* Gets this widget's description
*
* @since S60 5.0
@@ -394,11 +402,11 @@
* WRT Widget publisher uid, Owned
*/
HBufC8* iPublisherUid;
-
- /**
- * Flag to indicate whether this is a WRT widget
- */
- TBool iIsWrt;
+
+ /**
+ * Flag to indicate whether this is a WRT widget
+ */
+ TBool iIsWrt;
};
#endif // HSCONTENTINFO_H
--- a/homescreensrv_plat/sapi_actionhandler/actionhandlerplugins/inc/ahtelkeyhandler.h Mon Jan 18 20:32:13 2010 +0200
+++ b/homescreensrv_plat/sapi_actionhandler/actionhandlerplugins/inc/ahtelkeyhandler.h Tue Jan 26 12:11:15 2010 +0200
@@ -52,6 +52,11 @@
void ConstructL();
+ /**
+ * Helper method for AIW attach.
+ */
+ void AttachServiceHandlerL();
+
private:
CAiwServiceHandler* iServiceHandler;
--- a/homescreensrv_plat/sapi_actionhandler/actionhandlerplugins/src/ahtelkeyhandler.cpp Mon Jan 18 20:32:13 2010 +0200
+++ b/homescreensrv_plat/sapi_actionhandler/actionhandlerplugins/src/ahtelkeyhandler.cpp Tue Jan 26 12:11:15 2010 +0200
@@ -11,7 +11,7 @@
*
* Contributors:
*
-* Description:
+* Description:
*
*/
@@ -19,6 +19,7 @@
#include <AiwServiceHandler.h> // AIW
#include <aiwdialdata.h> //include\oem
#include <liwvariant.h>
+#include <mmf/common/mmfcontrollerpluginresolver.h>
#include "ahtelkeyhandler.h"
#include "ahproperties.hrh"
@@ -30,24 +31,6 @@
// ---------------------------------------------------------------------------
void CAHTelKeyHandler::ConstructL()
{
- iServiceHandler = CAiwServiceHandler::NewL( );
- TAiwServiceCommands serviceCommand = KAiwCmdCall;
-
- //service command used as criteria item ID
- _LIT8( KStar, "*" );
- CAiwCriteriaItem* criteria = CAiwCriteriaItem::NewLC( serviceCommand,
- serviceCommand, KStar );
-
- RCriteriaArray interest;
- CleanupClosePushL( interest );
- // We are using a base service.
- TUid base( KNullUid);
- base.iUid = KAiwClassBase;
- criteria->SetServiceClass( base );
- User::LeaveIfError( interest.Append( criteria ) );
- iServiceHandler->AttachL( interest );
- CleanupStack::PopAndDestroy( &interest );
- CleanupStack::PopAndDestroy( criteria );
}
// ---------------------------------------------------------------------------
@@ -80,6 +63,32 @@
}
// ---------------------------------------------------------------------------
+// Helper method for AIW attach
+// ---------------------------------------------------------------------------
+void CAHTelKeyHandler::AttachServiceHandlerL()
+ {
+ iServiceHandler = CAiwServiceHandler::NewL();
+
+ RCriteriaArray interest;
+ CleanupResetAndDestroy<RCriteriaArray>::PushL( interest );
+
+ TAiwServiceCommands serviceCommand = KAiwCmdCall;
+ _LIT8( KStar, "*" );
+ // Service command used as criteria item ID
+ CAiwCriteriaItem* criteria = CAiwCriteriaItem::NewLC( serviceCommand,
+ serviceCommand, KStar );
+
+ // We are using a base service.
+ TUid base = { KAiwClassBase };
+ criteria->SetServiceClass( base );
+ interest.AppendL( criteria );
+ CleanupStack::Pop( criteria );
+
+ iServiceHandler->AttachL( interest );
+ CleanupStack::PopAndDestroy( &interest );
+ }
+
+// ---------------------------------------------------------------------------
// Executes provided action
// ---------------------------------------------------------------------------
//
@@ -98,11 +107,14 @@
dialData->SetPhoneNumberL( number );
dialData->SetWindowGroup( AIWDialData::KAiwGoToIdle );
// Attach the interest to the AIW framework.
-
+ if ( !iServiceHandler )
+ {
+ AttachServiceHandlerL();
+ }
// Set parameters for the AIW call
CAiwGenericParamList* paramList = CAiwGenericParamList::NewLC( );
CAiwGenericParamList& paramListOut =
- iServiceHandler->OutParamListL( );
+ iServiceHandler->OutParamListL( );
dialData->FillInParamListL( *paramList );
iServiceHandler->ExecuteServiceCmdL( KAiwCmdCall, *paramList,
--- a/homescreensrv_plat/sapi_homescreenplugin/src/hspsliwutilities.cpp Mon Jan 18 20:32:13 2010 +0200
+++ b/homescreensrv_plat/sapi_homescreenplugin/src/hspsliwutilities.cpp Tue Jan 26 12:11:15 2010 +0200
@@ -683,12 +683,15 @@
ChspsDomAttribute* attr = static_cast<ChspsDomAttribute*>(
attrList.FindByName( KAttrId ));
- const TDesC8& value = attr->Value();
- if( value.Compare( aNodeIdentifier ) == 0 )
- {
- found = ETrue;
- targetNode = node;
- }
+ if ( attr )
+ {
+ const TDesC8& value = attr->Value();
+ if( value.Compare( aNodeIdentifier ) == 0 )
+ {
+ found = ETrue;
+ targetNode = node;
+ }
+ }
}
node = iter->NextL();
}
--- a/homescreensrv_plat/sapi_homescreenplugin/tsrc/group/updatetests.cmd Mon Jan 18 20:32:13 2010 +0200
+++ b/homescreensrv_plat/sapi_homescreenplugin/tsrc/group/updatetests.cmd Tue Jan 26 12:11:15 2010 +0200
@@ -1,3 +1,18 @@
+@rem
+@rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+@rem All rights reserved.
+@rem This component and the accompanying materials are made available
+@rem under the terms of "Eclipse Public License v1.0"
+@rem which accompanies this distribution, and is available
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+@rem
+@rem Initial Contributors:
+@rem Nokia Corporation - initial contribution.
+@rem
+@rem Contributors:
+@rem
+@rem Description:
+@rem
@echo off
rem
rem For testing/debugging in emulator after the SISX package has been installed
--- a/homescreensrv_plat/sapi_homescreenplugin/tsrc/hspsconfigurationif/inc/mt_hsps_requestnotify_6.h Mon Jan 18 20:32:13 2010 +0200
+++ b/homescreensrv_plat/sapi_homescreenplugin/tsrc/hspsconfigurationif/inc/mt_hsps_requestnotify_6.h Tue Jan 26 12:11:15 2010 +0200
@@ -1,21 +1,21 @@
/*
-* ==============================================================================
-* Name : mt_hsps_requestnotify_6.h
-* Part of : HSPS / SAPI module testing
-* Description : Test case RequestNotify(6) test data
-* Version : %version: e003sa35#2 %
+* Copyright (c) 2008 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".
*
-* Copyright © 2008 Nokia. All rights reserved.
-* This material, including documentation and any related computer
-* programs, is protected by copyright controlled by Nokia. All
-* rights are reserved. Copying, including reproducing, storing,
-* adapting or translating, any or all of this material requires the
-* prior written consent of Nokia. This material also contains
-* confidential information which may not be disclosed to others
-* without the prior written consent of Nokia.
-* ==============================================================================
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: Test case RequestNotify(6) test data
+*
*/
+
#ifndef C_MT_HSPS_REQUESTNOTIFY_6_H
#define C_MT_HSPS_REQUESTNOTIFY_6_H
--- a/idlefw/plugins/devicestatus/inc/aimulticontentobserver.h Mon Jan 18 20:32:13 2010 +0200
+++ b/idlefw/plugins/devicestatus/inc/aimulticontentobserver.h Tue Jan 26 12:11:15 2010 +0200
@@ -64,6 +64,17 @@
TAny* Extension( TUid aUid );
TBool RequiresSubscription( const TAiPublisherInfo& aPublisherInfo ) const;
+ TInt SetProperty( MAiPropertyExtension& aPlugin,
+ const TDesC8& aElementId,
+ const TDesC8& aPropertyName,
+ const TDesC8& aPropertyValue );
+
+ TInt SetProperty( MAiPropertyExtension& aPlugin,
+ const TDesC8& aElementId,
+ const TDesC8& aPropertyName,
+ const TDesC8& aPropertyValue,
+ MAiContentObserver::TValueType aValueType);
+
private:
CAiMultiContentObserver();
void ConstructL();
--- a/idlefw/plugins/devicestatus/src/aimulticontentobserver.cpp Mon Jan 18 20:32:13 2010 +0200
+++ b/idlefw/plugins/devicestatus/src/aimulticontentobserver.cpp Tue Jan 26 12:11:15 2010 +0200
@@ -224,6 +224,23 @@
return ETrue;
}
+TInt CAiMultiContentObserver::SetProperty( MAiPropertyExtension& /*aPlugin*/,
+ const TDesC8& /*aElementId*/,
+ const TDesC8& /*aPropertyName*/,
+ const TDesC8& /*aPropertyValue*/ )
+ {
+ return KErrNotSupported;
+ }
+
+TInt CAiMultiContentObserver::SetProperty( MAiPropertyExtension& /*aPlugin*/,
+ const TDesC8& /*aElementId*/,
+ const TDesC8& /*aPropertyName*/,
+ const TDesC8& /*aPropertyValue*/,
+ MAiContentObserver::TValueType /*aValueType*/)
+ {
+ return KErrNotSupported;
+ }
+
CAiMultiContentObserver::CAiMultiContentObserver()
{
}
--- a/idlefw/plugins/mcsplugin/group/bld.inf Mon Jan 18 20:32:13 2010 +0200
+++ b/idlefw/plugins/mcsplugin/group/bld.inf Tue Jan 26 12:11:15 2010 +0200
@@ -22,6 +22,8 @@
PRJ_PLATFORMS
DEFAULT
+// Help exports
+#include "../help/group/bld.inf"
PRJ_EXPORTS
../loc/mcspluginsettings.loc MW_LAYER_LOC_EXPORT_PATH(mcspluginsettings.loc)
Binary file idlefw/plugins/mcsplugin/help/data/xhtml.zip has changed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/idlefw/plugins/mcsplugin/help/group/bld.inf Tue Jan 26 12:11:15 2010 +0200
@@ -0,0 +1,26 @@
+/*
+* 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:
+* Export help related files.
+*
+*/
+
+#include <platform_paths.hrh>
+PRJ_EXPORTS
+:zip ../data/xhtml.zip /epoc32/data/z/resource/ overwrite
+:zip ../data/xhtml.zip /epoc32/winscw/c/resource/ overwrite
+
+../inc/ai.hlp.hrh MW_LAYER_PLATFORM_EXPORT_PATH(csxhelp/ai.hlp.hrh)
+../rom/mcspluginhelps_variant.iby CUSTOMER_APP_LAYER_IBY_EXPORT_PATH(mcspluginhelps_variant.iby)
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/idlefw/plugins/mcsplugin/help/inc/ai.hlp.hrh Tue Jan 26 12:11:15 2010 +0200
@@ -0,0 +1,27 @@
+/*
+* 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:
+*
+*/
+
+//
+// ai.hlp.hrh generated by CSXHelp Utilities.
+//
+
+#ifndef __AI_HLP_HRH__
+#define __AI_HLP_HRH__
+
+_LIT(KSET_HLP_HOME_SCREEN_SHORTCUTS, "SET_HLP_HOME_SCREEN_SHORTCUTS"); //
+
+#endif
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/idlefw/plugins/mcsplugin/help/rom/mcspluginhelps_variant.iby Tue Jan 26 12:11:15 2010 +0200
@@ -0,0 +1,28 @@
+/*
+* Copyright (c) 2010 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:
+*
+*/
+
+#ifndef __MCSPLUGINHELPS_VARIANT_IBY__
+#define __MCSPLUGINHELPS_VARIANT_IBY__
+
+#if defined(FF_S60_HELPS_IN_USE)
+ data=LOCALISE(DATAZ_\resource\xhtml\%02d\0x20022FDC\contents.zip, RESOURCE_FILES_DIR\xhtml\%02d\0x20022FDC\contents.zip)
+ data=LOCALISE(DATAZ_\resource\xhtml\%02d\0x20022FDC\index.xml, RESOURCE_FILES_DIR\xhtml\%02d\0x20022FDC\index.xml)
+ data=LOCALISE(DATAZ_\resource\xhtml\%02d\0x20022FDC\keywords.xml, RESOURCE_FILES_DIR\xhtml\%02d\0x20022FDC\keywords.xml)
+ data=LOCALISE(DATAZ_\resource\xhtml\%02d\0x20022FDC\meta.xml, RESOURCE_FILES_DIR\xhtml\%02d\0x20022FDC\meta.xml)
+#endif
+
+#endif
\ No newline at end of file
--- a/idlefw/plugins/mcsplugin/settings/src/mcspluginsettingscontainer.cpp Mon Jan 18 20:32:13 2010 +0200
+++ b/idlefw/plugins/mcsplugin/settings/src/mcspluginsettingscontainer.cpp Tue Jan 26 12:11:15 2010 +0200
@@ -26,6 +26,8 @@
#include <akntextsettingpage.h>
#include <centralrepository.h>
#include <StringLoader.h>
+
+#include <csxhelp/ai.hlp.hrh>
#include <hlplch.h>
// For CActiveFavouritesDbNotifier
@@ -36,10 +38,8 @@
#include "mcspluginsettingsmodel.h"
#include "mcspluginsettingsbkmlist.h"
#include "mcspluginsettings.hrh"
+#include "mcspluginuids.hrh"
-const TUid KUidAI = { 0x102750FB }; // Active Standby Shortcuts help uid
-
-_LIT(KSET_HLP_HOME_SCREEN_SHORTCUTS, "SET_HLP_HOME_SCREEN_SHORTCUTS");
_LIT( KMyMenuData, "matrixmenudata" );
// ======== MEMBER FUNCTIONS ========
@@ -410,12 +410,13 @@
//
TCoeHelpContext CMCSPluginSettingsContainer::GetHelpContext() const
{
+ TUid uid = TUid::Uid( AI_UID_ECOM_DLL_SETTINGS_MCSPLUGIN );
TCoeContextName helpString;
helpString.Copy( KSET_HLP_HOME_SCREEN_SHORTCUTS );
// set UID and topic of Help to display
- return TCoeHelpContext( KUidAI, helpString );
+ return TCoeHelpContext( uid, helpString );
}
// ---------------------------------------------------------------------------
--- a/idlefw/plugins/sapidataplugin/src/sapidataobserver.cpp Mon Jan 18 20:32:13 2010 +0200
+++ b/idlefw/plugins/sapidataplugin/src/sapidataobserver.cpp Tue Jan 26 12:11:15 2010 +0200
@@ -156,7 +156,7 @@
operation = variant.AsDes().AllocLC();
}
variant.Reset();
- if( operation->Des() != KOperationExecute )
+ if( operation && ( operation->Des() != KOperationExecute ) )
{
// Nothing to update for execute action
HBufC* publisher = NULL;
--- a/idlefw/plugins/wrtdataplugin/group/bld.inf Mon Jan 18 20:32:13 2010 +0200
+++ b/idlefw/plugins/wrtdataplugin/group/bld.inf Tue Jan 26 12:11:15 2010 +0200
@@ -29,8 +29,6 @@
PRJ_MMPFILES
wrtdataplugin.mmp
-//#include "../internal/testpublisher/group/bld.inf"
-//#include "../internal/templatedwidget/group/bld.inf"
// End of File.
--- a/idlefw/plugins/wrtdataplugin/group/wrtdataplugin.mmp Mon Jan 18 20:32:13 2010 +0200
+++ b/idlefw/plugins/wrtdataplugin/group/wrtdataplugin.mmp Tue Jan 26 12:11:15 2010 +0200
@@ -40,9 +40,9 @@
LIBRARY euser.lib
-LIBRARY bafl.lib
+LIBRARY bafl.lib
LIBRARY efsrv.lib
-LIBRARY liwservicehandler.lib
+LIBRARY liwservicehandler.lib
LIBRARY ecom.lib
LIBRARY aiutils.lib
LIBRARY cone.lib
@@ -50,6 +50,8 @@
LIBRARY fbscli.lib
LIBRARY egul.lib
LIBRARY aknskins.lib
+LIBRARY estor.lib
+LIBRARY apgrfx.lib
// End of File
SOURCEPATH ../src
--- a/idlefw/plugins/wrtdataplugin/inc/wrtdata.h Mon Jan 18 20:32:13 2010 +0200
+++ b/idlefw/plugins/wrtdataplugin/inc/wrtdata.h Tue Jan 26 12:11:15 2010 +0200
@@ -25,11 +25,13 @@
#include "wrtdatapluginconst.h"
#include "aicontentpublisher.h"
+// FORWARD DECLARATIONS
class MLiwInterface;
class CLiwServiceHandler;
class CWrtDataObserver;
class CWrtDataPlugin;
+// CLASS DECLARATION
/**
* @ingroup group_wrtdataplugin
*
@@ -39,258 +41,272 @@
*/
class CWrtData : public CBase
{
+
public:
+
+ /**
+ * Part of the two phased construction
+ *
+ * @param aPlugin refrence of the plugin
+ * @return none
+ */
+ static CWrtData* NewL(CWrtDataPlugin* aPlugin);
+
+ /**
+ * Destructor
+ *
+ * @param none
+ * @return none
+ */
+ ~CWrtData();
+
+ public :
+
+ /**
+ * Configures the subscriber and data to subscribe.
+ *
+ * @param aConfigurations Information about the subscriber
+ * and the data to subscribe.
+ * @return void
+ */
+ void ConfigureL(RAiSettingsItemArray& aConfigurations);
+
+ /**
+ * Checks is this menu item is supported by the publisher
+ *
+ * @param aMenuItem menu item name.
+ * @return boolean (ETrue/EFalse)
+ */
+ TBool HasMenuItem(const TDesC16& aMenuItem );
- /**
- * Part of the two phased construction
- *
- * @param aPlugin refrence of the plugin
- * @return none
- */
- static CWrtData* NewL(CWrtDataPlugin* aPlugin);
-
- /**
- * Destructor
- *
- * @param none
- * @return none
- */
- ~CWrtData();
-
+ /**
+ * Register to CPS for all (add/delete/update/execute) action
+ *
+ * @param none
+ * @return void
+ */
+ void RegisterL();
+
+ /**
+ * Update the publisher status
+ *
+ * @param None
+ * @return void
+ */
+ void UpdatePublisherStatusL();
+
+ /**
+ * Publish updated data for all the items in the widget
+ *
+ * @param aObserver to publish data
+ * @return void
+ */
+ void PublishDefaultImageL( MAiContentObserver* aObserver );
+
+ /**
+ * Publish the updated data
+ *
+ * @param aObserver to publish data
+ * @param aDataMap data map
+ * @return void
+ */
+ void PublishL( MAiContentObserver* aObserver, CLiwDefaultMap* aDataMap );
+
+ /**
+ * Called by the observer to refresh the changed content
+ *
+ * @param aContentId content Id.
+ * @param aOperation operation (add/delete/update/execute).
+ * @param aDataMap data map.
+ * @return void
+ */
+ void RefreshL( TDesC& aContentId, TDesC& aOperation, CLiwDefaultMap* aDataMap );
+
+ /**
+ * Tigger for execution of a action for a specific content id.
+ *
+ * @param aObjectId object Id.
+ * @param aTrigger name of the trigger.
+ * @return void
+ */
+ void ExecuteActionL(const TDesC& aObjectId, const TDesC& aTrigger);
+
+ /**
+ * Is the pugin is active to publish the data.
+ *
+ * @param None
+ * @return boolean (ETrue/EFalse).
+ */
+ TBool IsPluginActive();
+
+ /**
+ * Activate the publisher
+ *
+ * @param None
+ * @return void
+ */
+ void ActivateL();
+
+ /**
+ * Resume the publisher
+ *
+ * @param None
+ * @return void
+ */
+ void ResumeL();
+
+ /**
+ * Suspend the publisher
+ *
+ * @param None
+ * @return void
+ */
+ void SuspendL();
+
+ /**
+ * Deactivate the publisher
+ *
+ * @param None
+ * @return void
+ */
+ void DeActivateL();
+
+ /**
+ * InActiveL
+ *
+ * @param None
+ * @return void
+ */
+ void InActiveL();
+
+ /**
+ * OnLineL
+ *
+ * @param None
+ * @return void
+ */
+ void OnLineL();
+
+ /**
+ * OffLineL
+ *
+ * @param None
+ * @return void
+ */
+ void OffLineL();
+
private :
- /**
- * Constructor
- *
- * @param none
- * @return none
- */
- CWrtData();
-
-
- /**
- * Part of the two phased construction
- *
- * @param aPlugin reference of the plugin
- * @return void
- */
- void ConstructL(CWrtDataPlugin* aPlugin);
-
- /**
- * Change the publisher status
- *
- * @param aStatus new status of the publisher
- * @return void
- */
- void ChangePublisherStatusL(const TDesC& aStatus);
-
- /**
- * Gets the menu item from the publisher
- *
- * @param none
- * @return void
- */
- void GetMenuItemsL();
-
- public :
-
- /**
- * Configures the subscriber and data to subscribe.
- *
- * @param aConfigurations Information about the subscriber
- * and the data to subscribe.
- * @return void
- */
- void ConfigureL(RAiSettingsItemArray& aConfigurations);
-
- /**
- * Publish updated data for all the items in the widget
- *
- * @param aObserver to publish data
- * @return void
- */
- void PublishAllL( MAiContentObserver* aObserver );
-
- /**
- * Execute the command to get the data from CPS
- *
- * @param aInFilter input filter for the command
- * @param aOutDataMap output data map
- * @param aRegistry type of registry (publisher/cp_data)
- * @return void
- */
- void ExecuteCommandL(CLiwDefaultMap* aInFilter,
- CLiwDefaultMap* aOutDataMap, const TDesC16& aRegistry );
-
- /**
- * Checks is this menu item is supported by the publisher
- *
- * @param aMenuItem menu item name.
- * @return boolean (ETrue/EFalse)
- */
- TBool HasMenuItem(const TDesC16& aMenuItem );
-
- /**
- * Publish the updated data
- *
- * @param aObserver to publish data
- * @return void
- */
- void PublishL( MAiContentObserver* aObserver );
-
- /**
- * Tigger for execution of a action for a specific content id.
- *
- * @param aObjectId object Id.
- * @param aTrigger name of the trigger.
- * @return void
- */
- void ExecuteActionL(const TDesC& aObjectId, const TDesC& aTrigger);
-
- /**
- * Register to CPS for all (add/delete/update/execute) action
- *
- * @param none
- * @return void
- */
- void RegisterL();
-
- /**
- * Called by the observer to refresh the changed content
- *
- * @param aPublisher publisher.
- * @param aContentType content type.
- * @param aContentId content Id.
- * @param aOperation operation (add/delete/update/execute).
- * @return void
- */
- void RefreshL( TDesC& aPublisher, TDesC& aContentType,
- TDesC& aContentId, TDesC& aOperation );
-
- /**
- * Createts the filter map
- *
- * @return filter map
- */
- CLiwDefaultMap* CreateFilterLC( );
-
- /**
- * Is the pugin is active to publish the data.
- *
- * @param None
- * @return boolean (ETrue/EFalse).
- */
- TBool IsPluginActive();
-
- /**
- * Resume the publisher
- *
- * @param None
- * @return void
- */
- void ResumeL();
-
- /**
- * Suspend the publisher
- *
- * @param None
- * @return void
- */
- void SuspendL();
-
- /**
- * Activate the publisher
- *
- * @param None
- * @return void
- */
- void ActivateL();
-
- /**
- * Deactivate the publisher
- *
- * @param None
- * @return void
- */
- void DeActivateL();
-
- /**
- * OnLineL
- *
- * @param None
- * @return void
- */
- void OnLineL();
-
- /**
- * OffLineL
- *
- * @param None
- * @return void
- */
- void OffLineL();
-
- /**
- * InActiveL
- *
- * @param None
- * @return void
- */
- void InActiveL();
-
- /**
- * Update the publisher status
- *
- * @param None
- * @return void
- */
- void UpdatePublisherStatusL();
-
- /**
- * Resolves skin item id and Mif id from pattern
- * skin( <majorId> <minorId> (<colourGroupId>)
- * mif(<MifFileName.mif> <bitmapId> <maskId>)
- *
- * @param aPath skin pattern / mif pattern value
- * @param aItemId skin item id
- * @param aMifId mif id
- * @param aMaskId mask id
- * @param aFilename mif file name
- * @return boolean (ETrue/EFalse)
- */
- TBool ResolveSkinIdAndMifId( const TDesC& aPath, TAknsItemID& aItemId,
- TInt& aMifId, TInt& aMaskId, TDes& aFilename );
+ /**
+ * Default Constructor
+ *
+ */
+ CWrtData();
+
+ /**
+ * Part of the two phased construction
+ *
+ * @param aPlugin reference of the plugin
+ * @return void
+ */
+ void ConstructL(CWrtDataPlugin* aPlugin);
+
+ /**
+ * Createts the filter map
+ *
+ * @return filter map
+ */
+ CLiwDefaultMap* CreateFilterLC( );
+
+ /**
+ * Execute the command to get the data from CPS
+ *
+ * @param aInFilter input filter for the command
+ * @param aOutDataMap output data map
+ * @param aRegistry type of registry (publisher/cp_data)
+ * @return void
+ */
+ void ExecuteCommandL(CLiwDefaultMap* aInFilter,
+ CLiwDefaultMap* aOutDataMap, const TDesC16& aRegistry );
+
+
+ /**
+ * Change the publisher status
+ *
+ * @param aStatus new status of the publisher
+ * @return void
+ */
+ void ChangePublisherStatusL(const TDesC& aStatus);
+
+ /**
+ * Gets the menu item from the publisher
+ *
+ * @param none
+ * @return void
+ */
+ void GetMenuItemsL();
+
+ /**
+ * Gets the widgent name and uid
+ *
+ * @param aName - widget name
+ * @param aAppUID - widget uid
+ * @return void
+ */
+ void GetWidgetNameAndUidL(TDes& aName, TDes& aAppUID );
+
+ /**
+ * Resolves the Uid from the string
+ *
+ * @param aUidDes - uid in string
+ * @param aUid - uid
+ * @return ETure/EFalse
+ */
+ TBool ResolveUid(const TDesC& aUidDes, TUid& aUid );
+
+ /**
+ * Creates icon from the uid
+ *
+ * @param aHandle - icon handle
+ * @param aMaskHandle - mask handle
+ * @param aAppUid - application uid
+ * @return ETure/EFalse
+ */
+ void CreateIconFromUidL(TInt& aHandle, TInt& aMaskHandle, const TUid& aAppUid );
private :
+
+ // Subscriber interface
+ // own
+ MLiwInterface* iInterface;
+
+ // Data Observer to CPS
+ // Own
+ CWrtDataObserver* iObserver;
+
+ // Service handler
+ // Own
+ CLiwServiceHandler* iServiceHandler;
- // Subscriber interface
- // own
- MLiwInterface* iInterface;
-
- // Data Observer to CPS
- // Own
- CWrtDataObserver* iObserver;
-
- // Service handler
- // Own
- CLiwServiceHandler* iServiceHandler;
-
- // Command name in configuration Array
- HBufC8* iCommandName;
-
- // Reference of the wrt data plugin
- // Not owned
- CWrtDataPlugin* iPlugin;
-
- // Menu item names
- // Own
- RPointerArray<HBufC16> iMenuItems;
-
- // Trigger names for the menu items
- // Own
- RPointerArray<HBufC8> iMenuTriggers;
-
- HBufC* iContentId;
+ // Command name in configuration Array
+ HBufC8* iCommandName;
+
+ // Reference of the wrt data plugin
+ // Not owned
+ CWrtDataPlugin* iPlugin;
+
+ // Menu item names
+ // Own
+ RPointerArray<HBufC16> iMenuItems;
+
+ // Trigger names for the menu items
+ // Own
+ RPointerArray<HBufC8> iMenuTriggers;
+
+ // Widgets content id.
+ // Own
+ HBufC* iContentId;
+
};
#endif /*WRTDATA_H*/
--- a/idlefw/plugins/wrtdataplugin/inc/wrtdataobserver.h Mon Jan 18 20:32:13 2010 +0200
+++ b/idlefw/plugins/wrtdataplugin/inc/wrtdataobserver.h Tue Jan 26 12:11:15 2010 +0200
@@ -22,8 +22,10 @@
// INCLUDE FILES
#include <liwcommon.h>
+// FORWARD DECLARATIONS
class CWrtData;
+// CLASS DECLARATION
/**
* @ingroup group_wrtdataplugin
*
@@ -33,91 +35,91 @@
*/
class CWrtDataObserver : public CBase, public MLiwNotifyCallback
{
-public:
+ public:
- /**
- * Part of the two phased constuction
- *
- * @param aInterface reference of the interface
- * @param aData reference of the wrt data object
- * @return none
- */
- static CWrtDataObserver* NewL( MLiwInterface* aInterface, CWrtData* aData );
+ /**
+ * Part of the two phased constuction
+ *
+ * @param aInterface reference of the interface
+ * @param aData reference of the wrt data object
+ * @return none
+ */
+ static CWrtDataObserver* NewL( MLiwInterface* aInterface, CWrtData* aData );
- /**
- * Destructor
- *
- * @param none
- * @return none
- */
- ~CWrtDataObserver();
+ /**
+ * Destructor
+ *
+ * @param none
+ * @return none
+ */
+ ~CWrtDataObserver();
-private :
-
- /**
- * Constructor
- *
- * @param none
- * @return none
- */
- CWrtDataObserver();
+ private :
- /**
- * Part of the two phased construction
- *
- * @param aInterface reference of the interface
- * @param aData reference of the wrt data object
- * @return void
- */
- void ConstructL( MLiwInterface* aInterface, CWrtData* aData );
+ /**
+ * Constructor
+ *
+ * @param none
+ * @return none
+ */
+ CWrtDataObserver();
+
+ /**
+ * Part of the two phased construction
+ *
+ * @param aInterface reference of the interface
+ * @param aData reference of the wrt data object
+ * @return void
+ */
+ void ConstructL( MLiwInterface* aInterface, CWrtData* aData );
-public: //from MLiwNotifyCallbackc
+ public: //from MLiwNotifyCallbackc
- /**
- * Handles notifications caused by an asynchronous Execute*CmdL call
- * or an event.
- *
- * @param aCmdId The service command associated to the event.
- * @param aEventId occurred 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 call back.
- */
- virtual TInt HandleNotifyL(
- TInt aCmdId,
- TInt /*aEventId*/,
- CLiwGenericParamList& aEventParamList,
- const CLiwGenericParamList& /*aInParamList*/);
+ /**
+ * Handles notifications caused by an asynchronous Execute*CmdL call
+ * or an event.
+ *
+ * @param aCmdId The service command associated to the event.
+ * @param aEventId occurred 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 call back.
+ */
+ virtual TInt HandleNotifyL(
+ TInt aCmdId,
+ TInt /*aEventId*/,
+ CLiwGenericParamList& aEventParamList,
+ const CLiwGenericParamList& /*aInParamList*/);
-public:
+ public:
- /**
- * Registers to CPS for add, delete , update and execute notifications
- * @aFilter - filter for input parameter list
- * @return void.
- */
- void RegisterL( CLiwDefaultMap* aFilter );
-
- /**
- * Cancel all the registered notifications.
- * @return void.
- */
- void ReleaseL();
+ /**
+ * Registers to CPS for add, delete , update and execute notifications
+ * @aFilter - filter for input parameter list
+ * @return void.
+ */
+ void RegisterL( CLiwDefaultMap* aFilter );
+
+ /**
+ * Cancel all the registered notifications.
+ * @return void.
+ */
+ void ReleaseL();
+
+ private:
+
+ // Reference of
+ // Not owned
+ MLiwInterface* iInterface;
-private:
+ // Reference of the wrt data
+ // Not owned
+ CWrtData* iData;
- // Reference of
- // Not owned
- MLiwInterface* iInterface;
-
- // Reference of the wrt data
- // Not owned
- CWrtData* iData;
-
- // Call back error code
- TInt iError;
+ // Call back error code
+ TInt iError;
};
--- a/idlefw/plugins/wrtdataplugin/inc/wrtdataplugin.h Mon Jan 18 20:32:13 2010 +0200
+++ b/idlefw/plugins/wrtdataplugin/inc/wrtdataplugin.h Tue Jan 26 12:11:15 2010 +0200
@@ -24,18 +24,17 @@
#include <aicontentmodel.h>
#include <aieventhandlerextension.h>
+// FORWARD DECLARATIONS
class MAiContentObserver;
class MAiContentItemIterator;
class MAiPSPropertyObserver;
class CWrtData;
class CDesC16Array;
class CGulIcon;
+class CLiwDefaultMap;
-enum TContentItem
- {
- EImage1,
- EText1
- };
+
+// CLASS DECLARATION
/**
* @ingroup group_wrtdataplugin
*
@@ -48,356 +47,395 @@
public MAiEventHandlerExtension
{
-
-public :
- /**
- * Plugin's network state.
- */
- enum TPluginNetworkStatus
- {
- EUnknown,
- EOffline,
- EOnline
- };
-
- /**
- * Plugin's state.
- */
- enum TPluginStates
- {
- ENone,
- EResume,
- ESuspend,
- EInActive,
- };
-public:
+
+ public :
+ /**
+ * Plugin's network state.
+ */
+ enum TPluginNetworkStatus
+ {
+ EUnknown,
+ EOffline,
+ EOnline
+ };
+
+ /**
+ * Plugin's state.
+ */
+ enum TPluginStates
+ {
+ ENone,
+ EResume,
+ ESuspend,
+ EInActive,
+ };
+
+ /**
+ * Content Items
+ */
+ enum TContentItem
+ {
+ EDefaultImage,
+ EDefaultText,
+ EImage1
+ };
- /**
- * Part of the two phased constuction
- *
- * @param none
- * @return none
- */
- static CWrtDataPlugin* NewL();
-
- /**
- * Destructor
- *
- * @param none
- * @return none
- */
- ~CWrtDataPlugin();
-
-private:
-
- /**
- * Constructor
- *
- * @param none
- * @return none
- */
- CWrtDataPlugin();
-
- /**
- * Publishes widget's texts and images
- *
- * @param void
- * @return void
- */
- void PublishL();
-
- /**
- * Part of the two phased construction
- *
- * @param void
- * @return void
- */
- void ConstructL();
-
- /**
- * Resume the plug-in.
- *
- * @param aReason reason for state change, see TAiTransitionChange.
- * @return void
- */
- void DoResumeL(TAiTransitionReason aReason);
-
-public: // from base class CAiContentPublisher
+ public:
- /**
- * From CAiContentPublisher
- * The method is called by the framework to request the plug-in free all
- * memory and CPU resources and close all its open files, e.g. the plug-in
- * should unload its engines due backup operation. The method transits the
- * plug-in to "Idle" state.
- *
- * @param aReason reason for state change, see TAiTransitionChange.
- * @return void
- */
- void Stop( TAiTransitionReason aReason );
-
- /**
- * From CAiContentPublisher
- * The method is called by the framework to instruct plug-in that it is
- * allowed to consume CPU resources, e.g plug-in is able to run timers,
- * perform asynchronous operations, etc. The method transits the plug-in
- * to "Alive" state.
- *
- * @param aReason reason for state change, see TAiTransitionChange.
- * @return void
- */
- void Resume( TAiTransitionReason aReason );
-
- /**
- * From CAiContentPublisher
- * The method is called by the framework to instruct plug-in that it is
- * not allowed to consume CPU resources, e.g plug-in MUST stop each
- * timers, cancel outstanding asynchronous operations, etc. The method
- * transits the plug-in to "Suspendend" state.
- *
- * @param aReason reason for state change, see TAiTransitionChange.
- * @return void
- */
- void Suspend( TAiTransitionReason aReason );
-
- /**
- * From CAiContentPublisher
- * Adds the content observer / subscriber to plug-in. The plug-in MUST
- * maintain a registry of subscribers and send notification to all them
- * whenever the plug-in changes state or new content available.
- *
- * @param aObserver content observer to register.
- * @return void
- */
- void SubscribeL( MAiContentObserver& aObserver );
-
- /**
- * From CAiContentPublisher
- * Configures the plug-in.
- * Plug-ins take ownership of the settings array, so it must either
- * store it in a member or free it. Framework has put the array in cleanup
- * stack so the plugin shouldn't do that.
- * If this leaves, the plug-in will be destroyed by AI FW.
- * Plug-in must support LaunchByValue-event even if normal shortcuts don't
- * work. The only allowed serious enough leave is KErrNotFound from CenRep.
- *
- * @param aSettings setting items defined in the UI definition.
- * @return void
- */
- void ConfigureL( RAiSettingsItemArray& aSettings );
-
- /**
- * From CAiContentPublisher
- * Returns interface extension. In Series 60 3.1 only event & property
- * extensions are supported. See MAiEventExtension & MAiPropertyExtension
- * interfaces.
- *
- * @param aUid - UID of the extension interface to access.
- * @return the extension interface. Actual type depends on the passed aUid
- * argument.
- */
- TAny* Extension( TUid aUid );
-
-// from base class MAiPropertyExtension
-
- /**
- * From MAiPropertyExtension.
- * Read property of publisher plug-in.
- *
- * @param aProperty - identification of property.
- * @return pointer to property value.
- */
- TAny* GetPropertyL( TInt aProperty );
+ /**
+ * Part of the two phased constuction
+ *
+ * @param none
+ * @return none
+ */
+ static CWrtDataPlugin* NewL();
+
+ /**
+ * Destructor
+ *
+ * @param none
+ * @return none
+ */
+ ~CWrtDataPlugin();
- /**
- * From MAiPropertyExtension.
- * Write property value.
- *
- * @param aProperty - identification of property.
- * @param aValue - contains pointer to property value.
- */
- void SetPropertyL( TInt aProperty, TAny* aValue );
-
- // from base class MAiEventHandlerExtension
-
- /**
- * From MAiEventHandlerExtension
- * Invoked by the framework when plug-in must handle an event.
- * @param aEvent - unique identifier of event from plug-in content model.
- * @param aParam - parameters associated with event. Each UI Definition
- * declares events in the format: <event name>(<event params>),
- * where <event name> is mapped by the framework to unique
- * identifier supplied in aEvent, <event params> are provided to
- * plug-in as-is in the descriptor.
- * @since S60 3.2
- */
- void HandleEvent(TInt aEvent, const TDesC& aParam);
+ public: // from base class CAiContentPublisher
+
+ /**
+ * From CAiContentPublisher
+ * The method is called by the framework to request the plug-in free all
+ * memory and CPU resources and close all its open files, e.g. the plug-in
+ * should unload its engines due backup operation. The method transits the
+ * plug-in to "Idle" state.
+ *
+ * @param aReason reason for state change, see TAiTransitionChange.
+ * @return void
+ */
+ void Stop( TAiTransitionReason aReason );
+
+ /**
+ * From CAiContentPublisher
+ * The method is called by the framework to instruct plug-in that it is
+ * allowed to consume CPU resources, e.g plug-in is able to run timers,
+ * perform asynchronous operations, etc. The method transits the plug-in
+ * to "Alive" state.
+ *
+ * @param aReason reason for state change, see TAiTransitionChange.
+ * @return void
+ */
+ void Resume( TAiTransitionReason aReason );
+
+ /**
+ * From CAiContentPublisher
+ * The method is called by the framework to instruct plug-in that it is
+ * not allowed to consume CPU resources, e.g plug-in MUST stop each
+ * timers, cancel outstanding asynchronous operations, etc. The method
+ * transits the plug-in to "Suspendend" state.
+ *
+ * @param aReason reason for state change, see TAiTransitionChange.
+ * @return void
+ */
+ void Suspend( TAiTransitionReason aReason );
+
+ /**
+ * From CAiContentPublisher
+ * Adds the content observer / subscriber to plug-in. The plug-in MUST
+ * maintain a registry of subscribers and send notification to all them
+ * whenever the plug-in changes state or new content available.
+ *
+ * @param aObserver content observer to register.
+ * @return void
+ */
+ void SubscribeL( MAiContentObserver& aObserver );
+
+ /**
+ * From CAiContentPublisher
+ * Configures the plug-in.
+ * Plug-ins take ownership of the settings array, so it must either
+ * store it in a member or free it. Framework has put the array in cleanup
+ * stack so the plugin shouldn't do that.
+ * If this leaves, the plug-in will be destroyed by AI FW.
+ * Plug-in must support LaunchByValue-event even if normal shortcuts don't
+ * work. The only allowed serious enough leave is KErrNotFound from CenRep.
+ *
+ * @param aSettings setting items defined in the UI definition.
+ * @return void
+ */
+ void ConfigureL( RAiSettingsItemArray& aSettings );
+
+ /**
+ * From CAiContentPublisher
+ * Returns interface extension. In Series 60 3.1 only event & property
+ * extensions are supported. See MAiEventExtension & MAiPropertyExtension
+ * interfaces.
+ *
+ * @param aUid - UID of the extension interface to access.
+ * @return the extension interface. Actual type depends on the passed aUid
+ * argument.
+ */
+ TAny* Extension( TUid aUid );
+
+ // from base class MAiPropertyExtension
+
+ /**
+ * From MAiPropertyExtension.
+ * Read property of publisher plug-in.
+ *
+ * @param aProperty - identification of property.
+ * @return pointer to property value.
+ */
+ TAny* GetPropertyL( TInt aProperty );
- /**
- * From MAiEventHandlerExtension
- * Invoked by the framework when plug-in must handle an event.
- *
- * @param aEventName - name of the event from plug-in content model.
- * @param aParam - parameters associated with event. Each UI Definition
- * declares events in the format: <event name>(<event params>),
- * where <event name> mapping to unique identifier supplied by event
- * is failed by the frame work then the <event name> and
- * <event params> are provided to plug-in as-is in the descriptor.
- */
- void HandleEvent(const TDesC& aEventName, const TDesC& aParam);
-
- /**
- * Invoked by the framework for querying if plugin has menu item
- *
- * @param aMenuItem menu item name.
- * @return ETrue if plugin has specific menu item, EFalse otherwise
- */
- TBool HasMenuItem(const TDesC16& aMenuItem);
-
-public :
-
- /**
- * Gets the id of a content
- *
- * @param aObjectId image or text id
- * @return id of the content
- */
- TInt GetIdL(TDesC16& aObjectId);
-
- /**
- * Gets the type of a specific content
- *
- * @param aObjectId image or text id
- * @param aType type
- * @return void
- */
- void GetTypeL( TDesC16& aObjectId, TDes16& aType );
-
- /**
- * RefereshL a specific image of text in the widget
- *
- * @param aOperation operation performed
- * @return void
- */
- void RefreshL(TDesC16& aOperation );
+ /**
+ * From MAiPropertyExtension.
+ * Write property value.
+ *
+ * @param aProperty - identification of property.
+ * @param aValue - contains pointer to property value.
+ */
+ void SetPropertyL( TInt aProperty, TAny* aValue );
+
+ // from base class MAiEventHandlerExtension
+
+ /**
+ * From MAiEventHandlerExtension
+ * Invoked by the framework when plug-in must handle an event.
+ * @param aEvent - unique identifier of event from plug-in content model.
+ * @param aParam - parameters associated with event. Each UI Definition
+ * declares events in the format: <event name>(<event params>),
+ * where <event name> is mapped by the framework to unique
+ * identifier supplied in aEvent, <event params> are provided to
+ * plug-in as-is in the descriptor.
+ * @since S60 3.2
+ */
+ void HandleEvent(TInt aEvent, const TDesC& aParam);
+
+ /**
+ * From MAiEventHandlerExtension
+ * Invoked by the framework when plug-in must handle an event.
+ *
+ * @param aEventName - name of the event from plug-in content model.
+ * @param aParam - parameters associated with event. Each UI Definition
+ * declares events in the format: <event name>(<event params>),
+ * where <event name> mapping to unique identifier supplied by event
+ * is failed by the frame work then the <event name> and
+ * <event params> are provided to plug-in as-is in the descriptor.
+ */
+ void HandleEvent(const TDesC& aEventName, const TDesC& aParam);
+
+ /**
+ * Invoked by the framework for querying if plugin has menu item
+ *
+ * @param aMenuItem menu item name.
+ * @return ETrue if plugin has specific menu item, EFalse otherwise
+ */
+ TBool HasMenuItem(const TDesC16& aMenuItem);
+
+ public : // New functions
- /**
- * Is plugin active to publish the data
- *
- * @param void
- * @return boolean (ETrue/EFalse)
- */
- TBool IsActive();
+ /**
+ * Gets the id of a content
+ *
+ * @param aObjectId image or text id
+ * @return id of the content
+ */
+ TInt GetIdL(TDesC16& aObjectId);
+
+ /**
+ * Gets the type of a specific content
+ *
+ * @param aObjectId image or text id
+ * @param aType type
+ * @return void
+ */
+ void GetTypeL( TDesC16& aObjectId, TDes16& aType );
+
+ /**
+ * RefereshL a specific image of text in the widget
+ *
+ * @param aOperation operation performed
+ * @param aDataMap data map
+ * @return void
+ */
+ void RefreshL(TDesC16& aOperation, CLiwDefaultMap* aDataMap );
+
+ /**
+ * Is plugin active to publish the data
+ *
+ * @param void
+ * @return boolean (ETrue/EFalse)
+ */
+ TBool IsActive();
+
+ /**
+ * Publish a specific text of the widget
+ *
+ * @param aObserver observer
+ * @param aContentId content model id
+ * @param aContentValue content value
+ * @return void
+ */
+ void PublishTextL(MAiContentObserver* aObserver,
+ TInt aContentId, const TDesC16& aContentValue);
- /**
- * Publish a specific text of the widget
- *
- * @param aObserver observer
- * @param aContentId content model id
- * @param aContentValue content value
- * @return void
- */
- /*void PublishTextL(MAiContentObserver* aObserver,
- TInt& aContentId, TDesC16& aContentValue);*/
+ /**
+ * Publish a specific image of the widget
+ *
+ * @param aObserver observer
+ * @param aContentId content model id
+ * @param aHandle image handle
+ * @param aMaskHandle handle of the mask image
+ * @return void
+ */
+ void PublishImageL(MAiContentObserver* aObserver,
+ TContentItem aContentId, TInt aHandle, TInt aMaskHandle);
+
+ /**
+ * Publish a specific image of the widget
+ *
+ * @param aObserver observer
+ * @param aContentId content model id
+ * @param aPath image path / skin id pattern / mif id Pattern
+ * @return void
+ */
+ void PublishImageL(MAiContentObserver* aObserver,
+ TContentItem aContentId, const TDesC16& aPath );
+
+ /**
+ * Cleans a data from the widget
+ *
+ * @param aObserver observer
+ * @param aContentId content model id
+ * @return void
+ */
+ void Clean(MAiContentObserver* aObserver,
+ TInt aContentId );
+
+ /**
+ * Shows the loading icon animation
+ *
+ * @param aObserver observer
+ * @return void
+ */
+ void ShowLoadingIcon(MAiContentObserver* aObserver);
- /**
- * Publish a specific image of the widget
- *
- * @param aObserver observer
- * @param aContentId content model id
- * @param aHandle image handle
- * @param aMaskHandle handle of the mask image
- * @return void
- */
- void PublishImageL(MAiContentObserver* aObserver,
- TContentItem aContentId, TInt aHandle, TInt aMaskHandle);
+ /**
+ * Hides the loading icon animation
+ *
+ * @param aObserver observer
+ * @return void
+ */
+ void HideLoadingIcon(MAiContentObserver* aObserver);
- /**
- * Publish a specific image of the widget
- *
- * @param aObserver observer
- * @param aContentId content model id
- * @param aPath image path / skin id pattern / mif id Pattern
- * @return void
- */
- void PublishImageL(MAiContentObserver* aObserver,
- TContentItem aContentId, TDesC16& aPath );
+ /**
+ * CWrtData getter
+ * @return Pointer to CWrtData
+ */
+ inline CWrtData* Data() const
+ {
+ return iData;
+ }
+
+ /*
+ * Plugin's network status getter
+ * @return Pointer to Harvester status observer
+ */
+ inline TPluginNetworkStatus NetworkStatus() const
+ {
+ return iNetworkStatus;
+ }
- /**
- * Cleans a data from the widget
- *
- * @param aObserver observer
- * @param aContentId content model id
- * @return void
- */
- void Clean(MAiContentObserver* aObserver,
- TInt aContentId );
-
- /**
- * CWrtData getter
- * @return Pointer to CWrtData
- */
- inline CWrtData* Data() const
- {
- return iData;
- }
+ private:
+
+ /**
+ * Constructor
+ *
+ * @param none
+ * @return none
+ */
+ CWrtDataPlugin();
+
+ /**
+ * Part of the two phased construction
+ *
+ * @param void
+ * @return void
+ */
+ void ConstructL();
+
+ /**
+ * Publishes widget's texts and images
+ *
+ * @param void
+ * @return void
+ */
+ void PublishL();
- /*
- * Plugin's network status getter
- * @return Pointer to Harvester status observer
- */
- inline TPluginNetworkStatus NetworkStatus() const
- {
- return iNetworkStatus;
- }
-
-private: // data
-
- // Iterator for plugin content
- // Own
- MAiContentItemIterator* iContent;
-
- // Array of content observers
- // Own
- RPointerArray<MAiContentObserver> iObservers;
+ /**
+ * Resume the plug-in.
+ *
+ * @param aReason reason for state change, see TAiTransitionChange.
+ * @return void
+ */
+ void DoResumeL(TAiTransitionReason aReason);
+
+ /**
+ * Resolves skin item id and Mif id from pattern
+ * skin( <majorId> <minorId> (<colourGroupId>)
+ * mif(<MifFileName.mif> <bitmapId> <maskId>)
+ *
+ * @param aPath skin pattern / mif pattern value
+ * @param aItemId skin item id
+ * @param aMifId mif id
+ * @param aMaskId mask id
+ * @param aFilename mif file name
+ * @return boolean (ETrue/EFalse)
+ */
+ TBool ResolveSkinIdAndMifId( const TDesC& aPath, TAknsItemID& aItemId,
+ TInt& aMifId, TInt& aMaskId, TDes& aFilename );
+
+ private: // data
+
+ // Iterator for plugin content
+ // Own
+ MAiContentItemIterator* iContent;
- // Information about the content publisher (this plug-in)
- TAiPublisherInfo iInfo;
-
- // Number of data in the content model.
- TInt iDataCount;
-
- // Dynamic content model
- // Own
- TAiContentItem* iContentModel;
-
- // Reference array for Published text
- // Own
- RPointerArray<HBufC> iDataArray;
-
- // Service API Data Subscriber.
- // Own
- CWrtData* iData;
+ // Array of content observers
+ // Own
+ RPointerArray<MAiContentObserver> iObservers;
+
+ // Information about the content publisher (this plug-in)
+ TAiPublisherInfo iInfo;
+
+ // Number of data in the content model.
+ TInt iDataCount;
+
+ // Dynamic content model
+ // Own
+ TAiContentItem* iContentModel;
+
+ // Reference array for Published text
+ // Own
+ RPointerArray<HBufC> iDataArray;
+
+ // Service API Data Subscriber.
+ // Own
+ CWrtData* iData;
+
+ // References array for published images
+ // Own
+ RArray<CGulIcon*> iIconArray;
+
+ // Plugin's network status
+ TPluginNetworkStatus iNetworkStatus;
+
+ // Is Homescreen foreground.
+ TBool iHSForeGround;
+
+ // Is KeyLockON.
+ TBool iKeyLockOn;
- // References array for published images
- // Own
- RArray<CGulIcon*> iIconArray;
-
- // File Server
- // Reference
- RFs iRfs;
-
- // Plugin's network status
- TPluginNetworkStatus iNetworkStatus;
-
- // Is Homescreen foreground.
- TBool iHSForeGround;
-
- // Is KeyLockON.
- TBool iKeyLockOn;
-
- // Plugin state
- TPluginStates iPluginState;
+ // Plugin state
+ TPluginStates iPluginState;
};
#endif // WRTDATAPLUGIN_H
--- a/idlefw/plugins/wrtdataplugin/inc/wrtdatapluginconst.h Mon Jan 18 20:32:13 2010 +0200
+++ b/idlefw/plugins/wrtdataplugin/inc/wrtdatapluginconst.h Tue Jan 26 12:11:15 2010 +0200
@@ -34,6 +34,7 @@
*/
_LIT(KText ,"text");
_LIT(KImage, "image");
+_LIT(KAnimation, "animation");
_LIT(KPlugin, "plugin");
_LIT(KNewsTicker ,"newsticker");
@@ -79,6 +80,7 @@
_LIT( KOnLine, "online");
_LIT( KOffLine, "offline");
_LIT( KInActive, "inactive");
+
// reserved extension for retrieving mask handle
_LIT8( KImageMask, "image1_mask");
@@ -90,6 +92,29 @@
_LIT( KTemplateWidget,"ai3templatedwidget");
_LIT( KWRTPublisher, "wrt_publisher");
_LIT8(KImage1, "image1");
+_LIT8( KWidgetInfo, "widget_info");
+_LIT8( KWidgetName, "widget_name");
+_LIT8( KWidgetIcon, "widget_icon");
+
+_LIT( KHexPrefix, "0x" );
+_LIT( KUid, "uid" );
+_LIT8(KElement, "loading");
+_LIT8(KDisplay, "display");
+_LIT8(KShow, "block");
+_LIT8(KHide, "none");
+
+#ifdef __WINS__
+_LIT( KDrive, "C:" );
+#else
+_LIT( KDrive, "Z:" );
+#endif
+
+#ifdef WRT_PREDEFINED_IMAGE
+_LIT(KImgFolder, "200286dd\\");
+_LIT(KJPEG, ".jpg");
+_LIT(KPNG, ".png");
+#endif
+
const TUint KLeftParenthesis = '(';
@@ -116,5 +141,11 @@
*/
const TInt KAiPluginNameMaxLength = 255;
+/**
+ * Maximum length for the application uid string
+ * uid(0x123456578)
+ *
+ */
+const TInt KWRTAppUidLenth = 16;
#endif /* WRTDATAPLUGINCONST_H */
--- a/idlefw/plugins/wrtdataplugin/src/wrtdata.cpp Mon Jan 18 20:32:13 2010 +0200
+++ b/idlefw/plugins/wrtdataplugin/src/wrtdata.cpp Tue Jan 26 12:11:15 2010 +0200
@@ -16,15 +16,20 @@
*
*/
+
+// INCLUDE FILES
#include <ecom/ecom.h>
#include <liwservicehandler.h>
#include <aipluginsettings.h>
-
+#include <apgcli.h>
+#include <apgicnfl.h>
+#include <bautils.H>
#include "wrtdata.h"
#include "wrtdatapluginconst.h"
#include "wrtdataobserver.h"
#include "wrtdataplugin.h"
+
// ======== MEMBER FUNCTIONS ========
// ---------------------------------------------------------------------------
@@ -99,7 +104,7 @@
}
// ---------------------------------------------------------------------------
-// ConfigureL
+// CWrtData::ConfigureL
// ---------------------------------------------------------------------------
//
void CWrtData::ConfigureL(RAiSettingsItemArray& aConfigurations )
@@ -191,7 +196,439 @@
}
// ---------------------------------------------------------------------------
-// GetMenuItemsL
+// CWrtData::HasMenuItem
+// ---------------------------------------------------------------------------
+//
+TBool CWrtData::HasMenuItem(const TDesC16& aMenuItem )
+ {
+ TBool found = EFalse;
+ for (TInt i = 0; i < iMenuItems.Count(); i++ )
+ {
+ if( aMenuItem == iMenuItems[i] )
+ {
+ found = ETrue;
+ break;
+ }
+ }
+ return found;
+ }
+
+// ---------------------------------------------------------------------------
+// CWrtData::RegisterL
+// ---------------------------------------------------------------------------
+//
+void CWrtData::RegisterL()
+ {
+ CLiwDefaultMap* filter = CreateFilterLC();
+ filter->InsertL( KOperation, TLiwVariant( KAddUpdateDelete ) );
+ iObserver->RegisterL(filter);
+ CleanupStack::PopAndDestroy( filter );
+ }
+
+// ---------------------------------------------------------------------------
+// CWrtData::UpdatePublisherStatusL
+// ---------------------------------------------------------------------------
+//
+void CWrtData::UpdatePublisherStatusL()
+ {
+ // Resent the plugin status to publisher
+ ActivateL();
+ if ( iPlugin->IsActive() )
+ {
+ ResumeL();
+ }
+ else
+ {
+ SuspendL();
+ }
+ // forward the network status if it uses.
+ if ( iPlugin->NetworkStatus() == CWrtDataPlugin::EOnline )
+ {
+ OnLineL();
+ }
+ else if ( iPlugin->NetworkStatus() == CWrtDataPlugin::EOffline )
+ {
+ OffLineL();
+ }
+ }
+
+// ---------------------------------------------------------------------------
+// CWrtData::PublishDefaultImageL
+// ---------------------------------------------------------------------------
+//
+void CWrtData::PublishDefaultImageL( MAiContentObserver* aObserver )
+ {
+ TBuf<KWRTAppUidLenth> appUidStr;
+ TBuf<KWRTContentValueMaxLength> appName;
+ GetWidgetNameAndUidL( appName, appUidStr );
+
+ TUid appUid;
+ if ( ResolveUid (appUidStr, appUid ) )
+ {
+#ifdef WRT_PREDEFINED_IMAGE
+ RFs rfs;
+ User::LeaveIfError( rfs.Connect() );
+
+ TFileName privatePath;
+ rfs.PrivatePath(privatePath);
+ privatePath.Insert(0,KDrive);
+ privatePath.Append( KImgFolder );
+
+ appUidStr.Copy( appUid.Name());
+ appUidStr.Delete(0,1);
+ appUidStr.Delete( appUidStr.Length() -1, 1);
+ privatePath.Append (appUidStr );
+ privatePath.Append ( KJPEG );
+ if ( BaflUtils::FileExists(rfs,privatePath) )
+ {
+ // Publish predefined jpeg image
+ iPlugin->PublishImageL( aObserver, CWrtDataPlugin::EImage1,privatePath);
+ }
+ else
+ {
+ privatePath.Delete( privatePath.Length() - 4 , 4);
+ privatePath.Append( KPNG );
+ if ( BaflUtils::FileExists(rfs,privatePath) )
+ {
+ // Publish predefined image
+ iPlugin->PublishImageL( aObserver, CWrtDataPlugin::EImage1,privatePath);
+ }
+ else
+ {
+#endif
+ TInt handle = KErrNotFound;
+ TInt mask = KErrNotFound;
+ CreateIconFromUidL( handle, mask, appUid );
+ // Publish widget apparc image
+ iPlugin->PublishImageL( aObserver, CWrtDataPlugin::EDefaultImage,handle,mask);
+ if ( appName.Length() > 0)
+ {
+ // Publish Widget Name
+ iPlugin->PublishTextL( aObserver, CWrtDataPlugin::EDefaultText, appName);
+ }
+#ifdef WRT_PREDEFINED_IMAGE
+ }
+ }
+ rfs.Close();
+#endif
+ }
+
+ // Show loading animation
+ iPlugin->ShowLoadingIcon(aObserver);
+ }
+
+// ---------------------------------------------------------------------------
+// CWrtData::PublishL
+// ---------------------------------------------------------------------------
+//
+void CWrtData::PublishL( MAiContentObserver* aObserver, CLiwDefaultMap* aDataMap )
+ {
+ TLiwVariant variant;
+ iPlugin->HideLoadingIcon(aObserver);
+ if ( aDataMap->FindL( KImage1, variant ) )
+ {
+ TInt handle = KErrBadHandle;
+ TUint uintHandle = 0;
+ TPtrC16 valPtr;
+ if ( variant.Get( uintHandle ) )
+ {
+ handle = uintHandle;
+ }
+ else if ( !variant.Get( handle ) )
+ {
+ handle = KErrBadHandle;
+ }
+ // read as a image handle
+ if( handle == KErrBadHandle )
+ {
+ // no handle, so read as image path
+ variant.Get( valPtr );
+ iPlugin->PublishImageL(aObserver, CWrtDataPlugin::EImage1, valPtr );
+ }
+ else
+ {
+ TInt maskHandle = KErrBadHandle;
+ //Look for image mask
+ if ( aDataMap->FindL( KImageMask, variant ) )
+ {
+ variant.Get( maskHandle );
+ }
+ iPlugin->PublishImageL(aObserver, CWrtDataPlugin::EImage1, handle, maskHandle );
+ }
+ }
+ variant.Reset();
+ }
+
+// ---------------------------------------------------------------------------
+// CWrtData::RefreshL
+// ---------------------------------------------------------------------------
+//
+void CWrtData::RefreshL( TDesC& aContentId, TDesC& aOperation,
+ CLiwDefaultMap* aDataMap )
+ {
+ if ( aContentId == iContentId )
+ {
+ iPlugin->RefreshL( aOperation, aDataMap);
+ }
+ }
+
+// ---------------------------------------------------------------------------
+// CWrtData::ExecuteActionL
+// ---------------------------------------------------------------------------
+//
+void CWrtData::ExecuteActionL(const TDesC& aObjectId, const TDesC& aTrigger )
+ {
+ HBufC8* triggerName = HBufC8::NewLC( KWRTContentNameMaxLength );
+
+ CLiwGenericParamList* inParamList = &iServiceHandler->InParamListL();
+ CLiwGenericParamList* outParamList = &iServiceHandler->OutParamListL();
+ CLiwDefaultMap* filter = NULL;
+
+ triggerName->Des().Copy(aTrigger);
+ if ( aObjectId == KPubData )
+ {
+ // this trigger belongs to publisher registery.
+ // in such case it is assumed that all the items in the widgets
+ // belongs to same publisher, type and id.
+ TLiwGenericParam cptype( KType, TLiwVariant( KPubData ) );
+ inParamList->AppendL( cptype );
+ cptype.Reset();
+ // use the first item configuration to create the filter
+ filter = CreateFilterLC();
+ }
+ else
+ {
+ if ( aObjectId == KMenuItem16 )
+ {
+ TInt pos = KErrNotFound;
+ for (TInt i = 0; i < iMenuItems.Count(); i++)
+ {
+ if ( aTrigger == iMenuItems[i] )
+ {
+ pos = i;
+ break;
+ }
+ }
+ if( pos == KErrNotFound )
+ {
+ // No such menu items
+ CleanupStack::PopAndDestroy( triggerName );
+ return;
+ }
+ triggerName->Des().Copy( iMenuTriggers[pos]->Des() );
+ filter = CreateFilterLC();
+ }
+ else
+ {
+ //Create filter criteria for requested entries in form of LIW map:
+ filter = CreateFilterLC();
+ }
+ //append type to inparam list
+ TLiwGenericParam cptype( KType, TLiwVariant( KCpData ) );
+ inParamList->AppendL( cptype );
+ cptype.Reset();
+ }
+
+ filter->InsertL( KActionTrigger, TLiwVariant( triggerName->Des() ) );
+ //append filter to input param
+ TLiwGenericParam item( KFilter, TLiwVariant( filter ) );
+ inParamList->AppendL( item );
+ iInterface->ExecuteCmdL( KExecuteAction, *inParamList, *outParamList );
+
+ CleanupStack::PopAndDestroy( filter );
+ CleanupStack::PopAndDestroy( triggerName );
+ item.Reset();
+
+ inParamList->Reset();
+ outParamList->Reset();
+
+ }
+
+// ---------------------------------------------------------------------------
+// CWrtData::IsPluginActive
+// ---------------------------------------------------------------------------
+//
+TBool CWrtData::IsPluginActive()
+ {
+ return iPlugin->IsActive();
+ }
+
+// ---------------------------------------------------------------------------
+// CWrtData::ActivateL
+// ---------------------------------------------------------------------------
+//
+void CWrtData::ActivateL()
+ {
+ ChangePublisherStatusL( KActive );
+ }
+
+// ---------------------------------------------------------------------------
+// CWrtData::ResumeL
+// ---------------------------------------------------------------------------
+//
+void CWrtData::ResumeL()
+ {
+ ChangePublisherStatusL( KResume );
+ }
+
+// ---------------------------------------------------------------------------
+// CWrtData::SuspendL
+// ---------------------------------------------------------------------------
+//
+void CWrtData::SuspendL()
+ {
+ ChangePublisherStatusL( KSuspend );
+ }
+
+// ---------------------------------------------------------------------------
+// CWrtData::DeActivateL
+// ---------------------------------------------------------------------------
+//
+void CWrtData::DeActivateL()
+ {
+ ChangePublisherStatusL( KDeActive );
+ }
+
+// ---------------------------------------------------------------------------
+// CWrtData::InActiveL
+// ---------------------------------------------------------------------------
+//
+void CWrtData::InActiveL()
+ {
+ ChangePublisherStatusL( KInActive );
+ }
+
+// ---------------------------------------------------------------------------
+// CWrtData::OnLineL
+// ---------------------------------------------------------------------------
+//
+void CWrtData::OnLineL()
+ {
+ ChangePublisherStatusL( KOnLine );
+ }
+
+// ---------------------------------------------------------------------------
+// CWrtData::offLineL
+// ---------------------------------------------------------------------------
+//
+void CWrtData::OffLineL()
+ {
+ ChangePublisherStatusL( KOffLine );
+ }
+
+// ---------------------------------------------------------------------------
+// CWrtData::CreateFilterL
+// ---------------------------------------------------------------------------
+//
+CLiwDefaultMap* CWrtData::CreateFilterLC()
+ {
+ CLiwDefaultMap* filter = CLiwDefaultMap::NewLC();
+ filter->InsertL( KPublisherId, TLiwVariant( KWRTPublisher ));
+ filter->InsertL( KContentType, TLiwVariant( KTemplateWidget ));
+ filter->InsertL( KContentId, TLiwVariant( iContentId ));
+ return filter;
+ }
+
+// ---------------------------------------------------------------------------
+// CWrtData::ExecuteCommandL
+// ---------------------------------------------------------------------------
+//
+void CWrtData::ExecuteCommandL(CLiwDefaultMap* aInFilter, CLiwDefaultMap* aOutDataMap, const TDesC16& aRegistry )
+ {
+ CLiwGenericParamList* inParamList = &iServiceHandler->InParamListL();
+ CLiwGenericParamList* outParamList = &iServiceHandler->OutParamListL();
+
+ TLiwGenericParam type( KType, TLiwVariant( aRegistry ) );
+ inParamList->AppendL( type );
+
+ //append filter to input param
+ TLiwGenericParam item( KFilter, TLiwVariant( aInFilter ));
+ inParamList->AppendL( item );
+
+ // execute service.It is assumed that iInterface is already initiatedd
+ if(iInterface)
+ {
+ iInterface->ExecuteCmdL( *iCommandName, *inParamList, *outParamList);
+ }
+ else
+ {
+ User::Leave( KErrNotSupported );
+ }
+ type.Reset();
+ item.Reset();
+ inParamList->Reset();
+
+ //extracts data map
+ TInt pos = 0;
+ outParamList->FindFirst( pos, KResults );
+ if( pos != KErrNotFound )
+ // results present
+ {
+ //extract iterator on results list
+ TLiwVariant variant = (*outParamList)[pos].Value();
+ CLiwIterable* iterable = variant.AsIterable();
+ iterable->Reset();
+
+ //get next result
+ if( iterable->NextL( variant ) )
+ {
+ //extract content map
+ CLiwDefaultMap *map = CLiwDefaultMap::NewLC();
+ variant.Get( *map );
+ if( map->FindL( KDataMap, variant) )
+ {
+ variant.Get( *aOutDataMap );
+ }
+ CleanupStack::PopAndDestroy( map );
+ }
+ iterable->Reset();
+ variant.Reset();
+ }
+ outParamList->Reset();
+ }
+
+// ---------------------------------------------------------------------------
+// CWrtData::PublisherStatusL
+// ---------------------------------------------------------------------------
+//
+void CWrtData::ChangePublisherStatusL(const TDesC& aStatus)
+ {
+ if( iContentId == NULL )
+ {
+ return;
+ }
+ HBufC8* triggerName = HBufC8::NewLC(KWRTContentNameMaxLength);
+ triggerName->Des().Copy(aStatus);
+
+ CLiwGenericParamList* inParamList = &iServiceHandler->InParamListL();
+ CLiwGenericParamList* outParamList = &iServiceHandler->OutParamListL();
+
+ TLiwGenericParam type( KType, TLiwVariant( KPubData ) );
+ inParamList->AppendL( type );
+
+ CLiwDefaultMap* filter = CreateFilterLC();
+ filter->InsertL(KActionTrigger, TLiwVariant(triggerName->Des()) );
+
+ TLiwGenericParam item( KFilter, TLiwVariant( filter ));
+ inParamList->AppendL( item );
+
+ if(iInterface)
+ {
+ iInterface->ExecuteCmdL( KExecuteAction, *inParamList, *outParamList);
+ }
+ else
+ {
+ User::Leave( KErrNotSupported );
+ }
+ CleanupStack::PopAndDestroy( filter );
+
+ inParamList->Reset();
+ outParamList->Reset();
+ CleanupStack::PopAndDestroy( triggerName );
+ }
+
+// ---------------------------------------------------------------------------
+// CWrtData::GetMenuItemsL
// ---------------------------------------------------------------------------
//
void CWrtData::GetMenuItemsL()
@@ -241,463 +678,120 @@
}
// ---------------------------------------------------------------------------
-// CreateFilterL
-// ---------------------------------------------------------------------------
-//
-CLiwDefaultMap* CWrtData::CreateFilterLC()
- {
- CLiwDefaultMap* filter = CLiwDefaultMap::NewLC();
- filter->InsertL( KPublisherId, TLiwVariant( KWRTPublisher ));
- filter->InsertL( KContentType, TLiwVariant( KTemplateWidget ));
- filter->InsertL( KContentId, TLiwVariant( iContentId ));
- return filter;
- }
-
-// ---------------------------------------------------------------------------
-// HasMenuItem
-// ---------------------------------------------------------------------------
-//
-TBool CWrtData::HasMenuItem(const TDesC16& aMenuItem )
- {
- TBool found = EFalse;
- for (TInt i = 0; i < iMenuItems.Count(); i++ )
- {
- if( aMenuItem == iMenuItems[i] )
- {
- found = ETrue;
- break;
- }
- }
- return found;
- }
-
-// ---------------------------------------------------------------------------
-// PublishAllL
-// ---------------------------------------------------------------------------
-//
-void CWrtData::PublishAllL( MAiContentObserver* aObserver )
- {
- PublishL( aObserver );
- }
-
-// ---------------------------------------------------------------------------
-// PublishL
-// ---------------------------------------------------------------------------
-//
-void CWrtData::PublishL( MAiContentObserver* aObserver )
- {
- CLiwDefaultMap *outDataMap = CLiwDefaultMap::NewLC();
- //Create filter criteria for requested entries in form of LIW map:
- CLiwDefaultMap* filter = CreateFilterLC();
- ExecuteCommandL( filter, outDataMap, KCpData );
- CleanupStack::PopAndDestroy( filter );
- TLiwVariant variant;
- if ( outDataMap->FindL( KImage1, variant ) )
- {
- TInt handle = KErrBadHandle;
- TUint uintHandle = 0;
- TPtrC16 valPtr;
- if ( variant.Get( uintHandle ) )
- {
- handle = uintHandle;
- }
- else if ( !variant.Get( handle ) )
- {
- handle = KErrBadHandle;
- }
- // read as a image handle
- if( handle == KErrBadHandle )
- {
- // no handle, so read as image path
- variant.Get( valPtr );
- iPlugin->PublishImageL(aObserver, EImage1, valPtr );
- }
- else
- {
- TInt maskHandle = KErrBadHandle;
- //Look for image mask
- if ( outDataMap->FindL( KImageMask, variant ) )
- {
- variant.Get( maskHandle );
- }
- iPlugin->PublishImageL(aObserver, EImage1, handle, maskHandle );
- }
- }
-
- variant.Reset();
- CleanupStack::PopAndDestroy( outDataMap );
- }
-
-// ---------------------------------------------------------------------------
-// ExecuteCommandL
+// CWrtData::GetWidgetNameAndUidL
// ---------------------------------------------------------------------------
//
-void CWrtData::ExecuteCommandL(CLiwDefaultMap* aInFilter, CLiwDefaultMap* aOutDataMap, const TDesC16& aRegistry )
- {
- CLiwGenericParamList* inParamList = &iServiceHandler->InParamListL();
- CLiwGenericParamList* outParamList = &iServiceHandler->OutParamListL();
-
- TLiwGenericParam type( KType, TLiwVariant( aRegistry ) );
- inParamList->AppendL( type );
-
- //append filter to input param
- TLiwGenericParam item( KFilter, TLiwVariant( aInFilter ));
- inParamList->AppendL( item );
-
- // execute service.It is assumed that iInterface is already initiatedd
- if(iInterface)
- {
- iInterface->ExecuteCmdL( *iCommandName, *inParamList, *outParamList);
- }
- else
- {
- User::Leave( KErrNotSupported );
- }
- type.Reset();
- item.Reset();
- inParamList->Reset();
-
- //extracts data map
- TInt pos = 0;
- outParamList->FindFirst( pos, KResults );
- if( pos != KErrNotFound )
- // results present
- {
- //extract iterator on results list
- TLiwVariant variant = (*outParamList)[pos].Value();
- CLiwIterable* iterable = variant.AsIterable();
- iterable->Reset();
-
- //get next result
- if( iterable->NextL( variant ) )
- {
- //extract content map
- CLiwDefaultMap *map = CLiwDefaultMap::NewLC();
- variant.Get( *map );
- if( map->FindL( KDataMap, variant) )
- {
- variant.Get( *aOutDataMap );
- }
- CleanupStack::PopAndDestroy( map );
- }
- iterable->Reset();
- variant.Reset();
- }
- outParamList->Reset();
- }
-
-// ---------------------------------------------------------------------------
-// ExecuteActionL
-// ---------------------------------------------------------------------------
-//
-void CWrtData::ExecuteActionL(const TDesC& aObjectId, const TDesC& aTrigger )
- {
- HBufC8* triggerName = HBufC8::NewLC( KWRTContentNameMaxLength );
+void CWrtData::GetWidgetNameAndUidL(TDes& aName, TDes& aAppUID )
+ {
+ CLiwDefaultMap *outDataMap = CLiwDefaultMap::NewLC();
+ //Create filter criteria for requested entries in form of LIW map:
+ CLiwDefaultMap* filter = CreateFilterLC();
+ ExecuteCommandL( filter, outDataMap, KPubData );
+ CleanupStack::PopAndDestroy( filter );
- CLiwGenericParamList* inParamList = &iServiceHandler->InParamListL();
- CLiwGenericParamList* outParamList = &iServiceHandler->OutParamListL();
- CLiwDefaultMap* filter = NULL;
-
- triggerName->Des().Copy(aTrigger);
- if ( aObjectId == KPubData )
- {
- // this trigger belongs to publisher registery.
- // in such case it is assumed that all the items in the widgets
- // belongs to same publisher, type and id.
- TLiwGenericParam cptype( KType, TLiwVariant( KPubData ) );
- inParamList->AppendL( cptype );
- cptype.Reset();
- // use the first item configuration to create the filter
- filter = CreateFilterLC();
- }
- else
- {
- if ( aObjectId == KMenuItem16 )
- {
- TInt pos = KErrNotFound;
- for (TInt i = 0; i < iMenuItems.Count(); i++)
- {
- if ( aTrigger == iMenuItems[i] )
- {
- pos = i;
- break;
- }
- }
- if( pos == KErrNotFound )
- {
- // No such menu items
- CleanupStack::PopAndDestroy( triggerName );
- return;
- }
- triggerName->Des().Copy( iMenuTriggers[pos]->Des() );
- filter = CreateFilterLC();
- }
- else
- {
- //Create filter criteria for requested entries in form of LIW map:
- filter = CreateFilterLC();
- }
- //append type to inparam list
- TLiwGenericParam cptype( KType, TLiwVariant( KCpData ) );
- inParamList->AppendL( cptype );
- cptype.Reset();
- }
-
- filter->InsertL( KActionTrigger, TLiwVariant( triggerName->Des() ) );
- //append filter to input param
- TLiwGenericParam item( KFilter, TLiwVariant( filter ) );
- inParamList->AppendL( item );
- iInterface->ExecuteCmdL( KExecuteAction, *inParamList, *outParamList );
-
- CleanupStack::PopAndDestroy( filter );
- CleanupStack::PopAndDestroy( triggerName );
- item.Reset();
-
- inParamList->Reset();
- outParamList->Reset();
-
- }
-
-// ---------------------------------------------------------------------------
-// RegisterL
-// ---------------------------------------------------------------------------
-//
-void CWrtData::RegisterL()
- {
- CLiwDefaultMap* filter = CreateFilterLC();
- filter->InsertL( KOperation, TLiwVariant( KAddUpdateDelete ) );
- iObserver->RegisterL(filter);
- CleanupStack::PopAndDestroy( filter );
+ TLiwVariant variant;
+ if ( outDataMap->FindL(KWidgetInfo, variant) )
+ {
+ CLiwDefaultMap* widgetInfoMap = CLiwDefaultMap::NewLC();
+ variant.Get( *widgetInfoMap );
+ variant.Reset();
+ if ( widgetInfoMap->FindL( KWidgetName, variant ) )
+ {
+ aName.Copy(variant.AsDes());
+ variant.Reset();
+ if ( widgetInfoMap->FindL( KWidgetIcon, variant ) )
+ {
+ aAppUID.Copy(variant.AsDes());
+ }
+ }
+ CleanupStack::PopAndDestroy( widgetInfoMap );
+ }
+ variant.Reset();
+ CleanupStack::PopAndDestroy( outDataMap );
}
// ---------------------------------------------------------------------------
-// RefreshL
-// ---------------------------------------------------------------------------
-//
-void CWrtData::RefreshL( TDesC& aPublisher, TDesC& aContentType,
- TDesC& aContentId, TDesC& aOperation )
- {
- if ( aPublisher == KWRTPublisher() && aContentType == KTemplateWidget()
- && aContentId == iContentId )
- {
- iPlugin->RefreshL( aOperation);
- }
- }
-
-// ---------------------------------------------------------------------------
-// IsPluginActive
-// ---------------------------------------------------------------------------
-//
-TBool CWrtData::IsPluginActive()
- {
- return iPlugin->IsActive();
- }
-
-// ---------------------------------------------------------------------------
-// PublisherStatusL
+// CWrtData::ResolveUid
// ---------------------------------------------------------------------------
//
-void CWrtData::ChangePublisherStatusL(const TDesC& aStatus)
+TBool CWrtData::ResolveUid(const TDesC& aUidDes, TUid& aUid )
{
- if( iContentId == NULL )
- {
- return;
- }
- HBufC8* triggerName = HBufC8::NewLC(KWRTContentNameMaxLength);
- triggerName->Des().Copy(aStatus);
-
- CLiwGenericParamList* inParamList = &iServiceHandler->InParamListL();
- CLiwGenericParamList* outParamList = &iServiceHandler->OutParamListL();
-
- TLiwGenericParam type( KType, TLiwVariant( KPubData ) );
- inParamList->AppendL( type );
-
- CLiwDefaultMap* filter = CreateFilterLC();
- filter->InsertL(KActionTrigger, TLiwVariant(triggerName->Des()) );
-
- TLiwGenericParam item( KFilter, TLiwVariant( filter ));
- inParamList->AppendL( item );
-
- if(iInterface)
- {
- iInterface->ExecuteCmdL( KExecuteAction, *inParamList, *outParamList);
- }
- else
- {
- User::Leave( KErrNotSupported );
- }
- CleanupStack::PopAndDestroy( filter );
-
- inParamList->Reset();
- outParamList->Reset();
- CleanupStack::PopAndDestroy( triggerName );
- }
+ // Syntax: uid(0x12345678)
+ TInt error = KErrNotFound;
+ TInt pos = aUidDes.FindF( KUid );
+ if( pos == 0 )
+ {
+ // Skip skin token
+ pos += KUid().Length();
+
+ // Initialize lexer
+ TLex lex( aUidDes.Mid( pos ) );
-// ---------------------------------------------------------------------------
-// ResumeL
-// ---------------------------------------------------------------------------
-//
-void CWrtData::ResumeL()
- {
- ChangePublisherStatusL( KResume );
- }
-
-// ---------------------------------------------------------------------------
-// SuspendL
-// ---------------------------------------------------------------------------
-//
-void CWrtData::SuspendL()
- {
- ChangePublisherStatusL( KSuspend );
- }
-
-// ---------------------------------------------------------------------------
-// ActivateL
-// ---------------------------------------------------------------------------
-//
-void CWrtData::ActivateL()
- {
- ChangePublisherStatusL( KActive );
- }
-
-// ---------------------------------------------------------------------------
-// DeActivateL
-// ---------------------------------------------------------------------------
-//
-void CWrtData::DeActivateL()
- {
- ChangePublisherStatusL( KDeActive );
- }
-
-// ---------------------------------------------------------------------------
-// OnLineL
-// ---------------------------------------------------------------------------
-//
-void CWrtData::OnLineL()
- {
- ChangePublisherStatusL( KOnLine );
+ // Check left parenthesis
+ if ( lex.Get() == KLeftParenthesis )
+ {
+ lex.SkipSpaceAndMark();
+ lex.SkipCharacters();
+
+ TPtrC mtoken = lex.MarkedToken();
+ pos = mtoken.FindF( KHexPrefix );
+ if ( pos == 0 )
+ {
+ TLex lex( mtoken.Mid( KHexPrefix().Length() ) );
+ TUint id = 0;
+ error = lex.Val( id, EHex );
+ aUid = TUid::Uid( (TInt)id );
+ }
+ else
+ {
+ TInt id( 0 );
+ error = lex.Val( id );
+ aUid.iUid = id;
+ }
+ }
+ }
+ return (error == KErrNone );
}
// ---------------------------------------------------------------------------
-// offLineL
-// ---------------------------------------------------------------------------
-//
-void CWrtData::OffLineL()
- {
- ChangePublisherStatusL( KOffLine );
- }
-
-// ---------------------------------------------------------------------------
-// InActiveL
-// ---------------------------------------------------------------------------
-//
-void CWrtData::InActiveL()
- {
- ChangePublisherStatusL( KInActive );
- }
-
-// ---------------------------------------------------------------------------
-// UpdatePublisherStatusL
-// ---------------------------------------------------------------------------
-//
-void CWrtData::UpdatePublisherStatusL()
- {
- // Resent the plugin status to publisher
- ActivateL();
- if ( iPlugin->IsActive() )
- {
- ResumeL();
- }
- else
- {
- SuspendL();
- }
- // forward the network status if it uses.
- if ( iPlugin->NetworkStatus() == CWrtDataPlugin::EOnline )
- {
- OnLineL();
- }
- else if ( iPlugin->NetworkStatus() == CWrtDataPlugin::EOffline )
- {
- OffLineL();
- }
- }
-
-// ---------------------------------------------------------------------------
-// ResolveSkinItemId
+// CWrtData::CreateIconFromUidL
// ---------------------------------------------------------------------------
//
-TBool CWrtData::ResolveSkinIdAndMifId( const TDesC& aPath, TAknsItemID& aItemId,
- TInt& abitmapId, TInt& aMaskId, TDes& aFilename )
- {
- // Syntax: skin( <major> <minor> ):mif(filename bimapId maskId)
- TInt error = KErrNotFound;
- TInt pos = aPath.FindF( KSkin );
- if( pos != KErrNotFound )
- {
- // Skip skin token
- pos += KSkin().Length();
-
- // Initialize lexer
- TLex lex( aPath.Mid( pos ) );
- lex.SkipSpace();
-
- // Check left parenthesis
- if (lex.Get() == KLeftParenthesis )
- {
- //lex.SkipSpace();
-
- TInt majorId( 0 );
- TInt minorId( 0 );
-
- // Resolve major id
- error = lex.Val( majorId );
-
- // Resolve minor id
- lex.SkipSpace();
- error |= lex.Val( minorId );
-
- // initilize skin item id object
- aItemId.Set( majorId, minorId );
- }
- }
+void CWrtData::CreateIconFromUidL(TInt& aHandle, TInt& aMaskHandle, const TUid& aAppUid )
+ {
+ RApaLsSession lsSession;
+ User::LeaveIfError( lsSession.Connect() );
+ CleanupClosePushL( lsSession ); // lsSession (1)
+
+ CArrayFixFlat<TSize>* sizeArray = new(ELeave) CArrayFixFlat<TSize>( 5 );
+ CleanupStack::PushL( sizeArray );
+ if ( KErrNone == lsSession.GetAppIconSizes(aAppUid, *sizeArray) )
+ {
+ if ( sizeArray->Count() )
+ {
+ // There are other icon sizes
+ TInt idx = 0;
+ TInt size( sizeArray->At(idx).iWidth * sizeArray->At(idx).iHeight );
+ for ( TInt i = 1; i < sizeArray->Count(); i++ )
+ {
+ if ( ( sizeArray->At(i).iWidth * sizeArray->At(i).iHeight ) > size )
+ {
+ idx = i;
+ size = sizeArray->At(idx).iWidth * sizeArray->At(idx).iHeight;
+ }
+ }
- if( (error == KErrNone && aPath.FindF( KColon ) != KErrNotFound )
- || ( error == KErrNotFound ) )
- {
- error = KErrNotFound;
- pos = aPath.FindF( KMif );
- if ( pos != KErrNotFound )
- {
- pos += KMif().Length();
- // Initialize lexer
- TLex lex( aPath.Mid( pos ) );
- lex.SkipSpace();
-
- // Check left parenthesis
- if (lex.Get() == KLeftParenthesis )
- {
- lex.SkipSpaceAndMark();
- lex.SkipCharacters();
- // Resolve MifFile name
- aFilename.Copy(lex.MarkedToken());
- if( aFilename.Length()!= 0)
- {
- // Resolve bitmap id
- lex.SkipSpace();
- error = lex.Val( abitmapId );
-
- // Resolve mask id
- // dont return error if it is not found, that is ok
- lex.SkipSpace();
- lex.Val( aMaskId );
- }
- else
- {
- error = KErrNotFound;
- }
- }
- }
- }
- return (error == KErrNone );
- }
+ CApaMaskedBitmap* appBitMap = CApaMaskedBitmap::NewLC();
+ if ( KErrNone == lsSession.GetAppIcon( aAppUid, sizeArray->At(idx),
+ *appBitMap ) )
+ {
+ aHandle = appBitMap->Handle();
+ aMaskHandle = appBitMap->Mask()->Handle();
+ }
+ CleanupStack::PopAndDestroy( appBitMap );
+ }
+ }
+ CleanupStack::PopAndDestroy( sizeArray );
+ CleanupStack::PopAndDestroy( &lsSession );
+ }
+
--- a/idlefw/plugins/wrtdataplugin/src/wrtdataobserver.cpp Mon Jan 18 20:32:13 2010 +0200
+++ b/idlefw/plugins/wrtdataplugin/src/wrtdataobserver.cpp Tue Jan 26 12:11:15 2010 +0200
@@ -16,12 +16,40 @@
*
*/
+
+// INCLUDE FILES
#include <liwservicehandler.h>
#include <liwvariant.h>
#include <liwgenericparam.h>
+#include <s32mem.h>
#include "wrtdata.h"
#include "wrtdataobserver.h"
#include "wrtdatapluginconst.h"
+
+// ---------------------------------------------------------------------------
+// Factory method construction
+// ---------------------------------------------------------------------------
+//
+CWrtDataObserver * CWrtDataObserver::NewL( MLiwInterface* aInterface, CWrtData* aData )
+ {
+ CWrtDataObserver * self = new (ELeave) CWrtDataObserver();
+ CleanupStack::PushL( self );
+ self->ConstructL( aInterface, aData );
+ CleanupStack::Pop( self );
+ return self;
+ }
+
+
+// ---------------------------------------------------------------------------
+// 2n phase constructor
+// ---------------------------------------------------------------------------
+//
+void CWrtDataObserver::ConstructL( MLiwInterface* aInterface, CWrtData* aData )
+ {
+ iData = aData;
+ iInterface = aInterface;
+ }
+
// ---------------------------------------------------------------------------
// Constructor
// ---------------------------------------------------------------------------
@@ -43,82 +71,7 @@
}
// ---------------------------------------------------------------------------
-// Register for notifications
-// ---------------------------------------------------------------------------
-//
-void CWrtDataObserver::RegisterL( CLiwDefaultMap* aFilter )
- {
- CLiwGenericParamList* inParamList = CLiwGenericParamList::NewL();
- CleanupStack::PushL( inParamList );
- CLiwGenericParamList* outParamList = CLiwGenericParamList::NewL();
- CleanupStack::PushL( outParamList );
-
- // Fill in input list for RequestNotification command
- inParamList->AppendL(TLiwGenericParam(KType,TLiwVariant(KCpData_PubData)));
- inParamList->AppendL(TLiwGenericParam(KFilter ,TLiwVariant(aFilter)));
-
- iError = KErrNone;
- TRAP( iError, iInterface->ExecuteCmdL(
- KRequestNotification,
- *inParamList,
- *outParamList,
- 0,
- this ) );
-
- CleanupStack::PopAndDestroy( outParamList );
- CleanupStack::PopAndDestroy( inParamList );
- }
-
-// ---------------------------------------------------------------------------
-// Sing off to notification
-// ---------------------------------------------------------------------------
-//
-void CWrtDataObserver ::ReleaseL()
- {
- if( iInterface )
- {
- CLiwGenericParamList* inParamList = CLiwGenericParamList::NewL();
- CleanupStack::PushL( inParamList );
- CLiwGenericParamList* outParamList = CLiwGenericParamList::NewL();
- CleanupStack::PushL( outParamList );
-
- TInt err(KErrNone);
- TRAP(err, iInterface->ExecuteCmdL(
- KRequestNotification,
- *inParamList,
- *outParamList,
- KLiwOptCancel,
- this ));
-
- CleanupStack::PopAndDestroy( outParamList );
- CleanupStack::PopAndDestroy( inParamList );
- }
- }
-
-// ---------------------------------------------------------------------------
-// Factory method construction
-// ---------------------------------------------------------------------------
-//
-CWrtDataObserver * CWrtDataObserver::NewL( MLiwInterface* aInterface, CWrtData* aData )
- {
- CWrtDataObserver * self = new (ELeave) CWrtDataObserver();
- CleanupStack::PushL( self );
- self->ConstructL( aInterface, aData );
- CleanupStack::Pop( self );
- return self;
- }
-
-// ---------------------------------------------------------------------------
-// 2n phase constructor
-// ---------------------------------------------------------------------------
-//
-void CWrtDataObserver::ConstructL( MLiwInterface* aInterface, CWrtData* aData )
- {
- iData = aData;
- iInterface = aInterface;
- }
-
-// ---------------------------------------------------------------------------
+// CWrtDataObserver::HandleNotifyL
// Handles Published content notification
// ---------------------------------------------------------------------------
//
@@ -150,71 +103,54 @@
CLiwDefaultMap *map = CLiwDefaultMap::NewLC();
variant.Get( *map );
- TBool found;
- found = map->FindL( KOperation, variant );
- if (found)
+ if (map->FindL( KOperation, variant ))
{
operation = variant.AsDes().AllocLC();
- }
- variant.Reset();
- if( operation->Des() != KOperationExecute )
- {
- // Nothing to update for execute action
- HBufC16* publisher = NULL;
- HBufC16* contentType = NULL;
- HBufC16* contentId = NULL;
- found = map->FindL( KFLAG, variant );
- if ( found)
- {
- // notification from publisher registry
- if ( operation->Des() != KOperationDelete )
- {
- iData->UpdatePublisherStatusL();
- }
- }
- // ignore update if plugin is in suspend mode
- else if ( iData->IsPluginActive() )
- {
- // notification from content registry
- found = map->FindL( KPublisherId, variant );
- if (found)
- {
- publisher = variant.AsDes().AllocLC();
- }
- variant.Reset();
- found = map->FindL( KContentType, variant );
- if (found)
- {
- contentType = variant.AsDes().AllocLC();
- }
- variant.Reset();
- found = map->FindL( KContentId, variant );
- if (found)
- {
- contentId = variant.AsDes().AllocLC();
- }
- variant.Reset();
- iData->RefreshL( *publisher, *contentType, *contentId, *operation );
-
- if ( contentId )
- {
- CleanupStack::PopAndDestroy( contentId );
- }
- if ( contentType )
- {
- CleanupStack::PopAndDestroy( contentType );
- }
- if ( publisher )
- {
- CleanupStack::PopAndDestroy( publisher );
- }
- }
- variant.Reset();
- }
- if ( operation )
- {
- CleanupStack::PopAndDestroy( operation );
- }
+ variant.Reset();
+ if( operation->Des() != KOperationExecute )
+ {
+ // Nothing to update for execute action
+ if ( map->FindL( KFLAG, variant ))
+ {
+ // notification from publisher registry
+ if ( operation->Des() != KOperationDelete )
+ {
+ iData->UpdatePublisherStatusL();
+ }
+ }
+ // ignore update if plugin is in suspend mode
+ else if ( iData->IsPluginActive() )
+ {
+ HBufC16* contentId = NULL;
+ CLiwDefaultMap* dataMap = NULL;
+ // Get the data Map if available
+ if ( map->FindL( KDataMap, variant))
+ {
+ TPtrC8 data = variant.AsData();
+ RDesReadStream datastrm ( data );
+ dataMap = CLiwDefaultMap::NewLC(datastrm);
+ }
+ // Get the content Id
+ if ( map->FindL( KContentId, variant ))
+ {
+ contentId = variant.AsDes().AllocLC();
+ // Refresh only if contentId is retrieved
+ iData->RefreshL( *contentId, *operation, dataMap );
+ CleanupStack::PopAndDestroy( contentId );
+ }
+
+ if ( dataMap )
+ {
+ CleanupStack::PopAndDestroy( dataMap );
+ }
+ }
+ variant.Reset();
+ }
+ if ( operation )
+ {
+ CleanupStack::PopAndDestroy( operation );
+ }
+ }
CleanupStack::PopAndDestroy( map );
}
CleanupStack::PopAndDestroy( listOfMaps );
@@ -222,3 +158,57 @@
return aErrorCode;
}
+// ---------------------------------------------------------------------------
+// CWrtDataObserver::RegisterL
+// Register for notifications
+// ---------------------------------------------------------------------------
+//
+void CWrtDataObserver::RegisterL( CLiwDefaultMap* aFilter )
+ {
+ CLiwGenericParamList* inParamList = CLiwGenericParamList::NewL();
+ CleanupStack::PushL( inParamList );
+ CLiwGenericParamList* outParamList = CLiwGenericParamList::NewL();
+ CleanupStack::PushL( outParamList );
+
+ // Fill in input list for RequestNotification command
+ inParamList->AppendL(TLiwGenericParam(KType,TLiwVariant(KCpData_PubData)));
+ inParamList->AppendL(TLiwGenericParam(KFilter ,TLiwVariant(aFilter)));
+
+ iError = KErrNone;
+ TRAP( iError, iInterface->ExecuteCmdL(
+ KRequestNotification,
+ *inParamList,
+ *outParamList,
+ 0,
+ this ) );
+
+ CleanupStack::PopAndDestroy( outParamList );
+ CleanupStack::PopAndDestroy( inParamList );
+ }
+
+// ---------------------------------------------------------------------------
+// CWrtDataObserver ::ReleaseL
+// Sing off to notification
+// ---------------------------------------------------------------------------
+//
+void CWrtDataObserver ::ReleaseL()
+ {
+ if( iInterface )
+ {
+ CLiwGenericParamList* inParamList = CLiwGenericParamList::NewL();
+ CleanupStack::PushL( inParamList );
+ CLiwGenericParamList* outParamList = CLiwGenericParamList::NewL();
+ CleanupStack::PushL( outParamList );
+
+ TInt err(KErrNone);
+ TRAP(err, iInterface->ExecuteCmdL(
+ KRequestNotification,
+ *inParamList,
+ *outParamList,
+ KLiwOptCancel,
+ this ));
+
+ CleanupStack::PopAndDestroy( outParamList );
+ CleanupStack::PopAndDestroy( inParamList );
+ }
+ }
--- a/idlefw/plugins/wrtdataplugin/src/wrtdataplugin.cpp Mon Jan 18 20:32:13 2010 +0200
+++ b/idlefw/plugins/wrtdataplugin/src/wrtdataplugin.cpp Tue Jan 26 12:11:15 2010 +0200
@@ -16,6 +16,9 @@
*
*/
+
+
+// INCLUDE FILES
#include <ecom/ecom.h>
#include <ecom/implementationproxy.h>
#include <aicontentobserver.h>
@@ -125,291 +128,6 @@
}
// ---------------------------------------------------------------------------
-// Publishes widget's texts and images
-// ---------------------------------------------------------------------------
-//
-void CWrtDataPlugin::PublishL()
- {
- User::LeaveIfError( iRfs.Connect() );
-
- TInt observers( iObservers.Count() );
- TInt transactionId = reinterpret_cast<TInt>( this );
-
- for ( int i = 0; i < observers; i++ )
- {
- MAiContentObserver* observer = iObservers[i];
-
- if ( observer->StartTransaction( transactionId ) == KErrNone )
- {// Publish all the data
- iData->PublishAllL(observer);
- observer->Commit( transactionId );
- }
-
- // Release memory of the published text
- iDataArray.ResetAndDestroy();
- // Release memory of the published icons
- iIconArray.Reset();
- }
- iRfs.Close();
- }
-
-// ---------------------------------------------------------------------------
-// Publish a specific text of the widget
-// ---------------------------------------------------------------------------
-//
-/*
-void CWrtDataPlugin::PublishTextL(MAiContentObserver* aObserver,
- TInt& aContentId, TDesC16& aContentValue)
- {
- if ( aObserver->CanPublish( *this, aContentId , aContentId ) )
- {
- if( aContentValue.Length() > 0 )
- {
- HBufC* contentText = HBufC::NewLC(aContentValue.Size());
- TPtr16 cDes = contentText->Des();
- cDes.Copy(aContentValue);
- aObserver->Publish( *this, aContentId, cDes, aContentId );
- iDataArray.AppendL( contentText );
- CleanupStack::Pop( contentText );
- }
- else
- {
- aObserver->Clean( *this, aContentId, aContentId );
- }
- }
- }*/
-
-// ---------------------------------------------------------------------------
-// Publish a specific image of the widget
-// ---------------------------------------------------------------------------
-//
-void CWrtDataPlugin::PublishImageL(MAiContentObserver* aObserver,
- TContentItem aContentId, TDesC16& aPath )
- {
- TInt err = KErrNone;
- TAknsItemID iconId;
- iconId.iMajor=0;
- iconId.iMinor=0;
- TInt bitmapId(0);
- TInt maskId(0);
- TFileName fileName;
- CGulIcon* icon = NULL;
- CFbsBitmap* bitmap = NULL;
- CFbsBitmap* mask = NULL;
-
- if ( aObserver->CanPublish( *this, aContentId , aContentId ) )
- {
- TBool inSkin = iData->ResolveSkinIdAndMifId( aPath, iconId, bitmapId, maskId, fileName );
- if ( inSkin )
- {
- // Load from skin
- MAknsSkinInstance* skin = AknsUtils::SkinInstance();
- if ( iconId.iMajor != 0 && iconId.iMajor!=0 )
- {
- // Create icon with fall back
- TRAP_IGNORE(AknsUtils::CreateIconL(
- skin,
- iconId,
- bitmap,
- mask,
- fileName, /* backup filename */
- bitmapId, /* backup bit map id */
- maskId)); /* backup mask id */
- }
- else if( bitmapId !=0 )
- {
- if ( maskId!=0 )
- {
- // Create icon from Mif filename , bitmap id and mask id
- TRAP_IGNORE(icon = AknsUtils::CreateGulIconL(
- skin,
- iconId,
- fileName,
- bitmapId,
- maskId) );
- }
- else
- {
- TRAP_IGNORE(AknsUtils::CreateIconL(
- skin,
- iconId,
- bitmap,
- fileName, /* backup filename */
- bitmapId)); /* backup bit map id */
- }
- }
-
- if ( icon == NULL && bitmap != NULL )
- {
- icon = CGulIcon::NewL( bitmap, mask );
- }
-
- if ( icon != NULL ) // Syntax correct but icon not found
- {
- aObserver->PublishPtr( *this, aContentId, icon , aContentId );
- iIconArray.Append(icon);
- }
- else
- {
- err = KErrNotFound;
- aObserver->Clean( *this, aContentId, aContentId );
- }
- }
- else // Interpret as File path
- {
- RFile* iconFile = new (ELeave) RFile();
- err = iconFile->Open( iRfs, aPath, EFileShareReadersOnly | EFileRead );
- if( err == KErrNone )
- {
- aObserver->Publish( *this, aContentId, *iconFile, aContentId );
- }
- else
- {
- aObserver->Clean( *this, aContentId, aContentId );
- }
- iconFile->Close();
- delete iconFile;
- iconFile = NULL;
- }
- }
- }
-
-// ---------------------------------------------------------------------------
-// Publish a image of the widget
-// ---------------------------------------------------------------------------
-//
-void CWrtDataPlugin::PublishImageL(MAiContentObserver* aObserver,
- TContentItem aContentId, TInt aHandle, TInt aMaskHandle )
- {
- if ( aObserver->CanPublish( *this, aContentId , aContentId ) )
- {
- if( aHandle != KErrBadHandle )
- {
- CFbsBitmap* bitmap = new (ELeave) CFbsBitmap();
- if( KErrNone == bitmap->Duplicate( aHandle) )
- {
- // Take the ownership
- CGulIcon* icon = CGulIcon::NewL(bitmap);
- if( aMaskHandle != KErrBadHandle )
- {
- CFbsBitmap* mask = new (ELeave) CFbsBitmap();
- if (KErrNone == mask->Duplicate( aMaskHandle) )
- {
- icon->SetMask( mask );
- }
- }
- aObserver->PublishPtr( *this, aContentId, icon , aContentId );
- iIconArray.Append(icon);
- }
- else
- {
- delete bitmap;
- bitmap = NULL;
- aObserver->Clean( *this, aContentId, aContentId );
- }
- }
- }
- }
-
-// ---------------------------------------------------------------------------
-// Gets the id of a content
-// ---------------------------------------------------------------------------
-//
-TInt CWrtDataPlugin::GetIdL( TDesC16& aObjectId)
- {
- TInt id = KErrNotFound;
- HBufC16* objectId = HBufC16::NewLC( KAiContentIdMaxLength );
- for( TInt i = 0;i< iDataCount; i++ )
- {
- objectId->Des().Copy((TUint16*)iContentModel[i].cid);
- if( aObjectId == objectId->Des() )
- {
- id = iContentModel[i].id;
- break;
- }
- }
- CleanupStack::PopAndDestroy( objectId );
- return id;
- }
-
-
-// ---------------------------------------------------------------------------
-// Gets type of a content
-// ---------------------------------------------------------------------------
-//
-void CWrtDataPlugin::GetTypeL(TDesC16& aObjectId, TDes16& aType )
- {
- HBufC16* objectId = HBufC16::NewLC( KAiContentIdMaxLength );
- for( TInt i = 0;i< iDataCount; i++ )
- {
- objectId->Des().Copy((TUint16*)iContentModel[i].cid);
- if( aObjectId == objectId->Des() )
- {
- if( iContentModel[i].type == KAiContentTypeText)
- {
- aType.Copy( KText );
- }
- else if( iContentModel[i].type == KAiContentTypeBitmap)
- {
- aType.Copy( KImage );
- }
- break;
- }
- }
- CleanupStack::PopAndDestroy( objectId );
- }
-
-// ---------------------------------------------------------------------------
-//Refresh a specific image of text in the widget
-// ---------------------------------------------------------------------------
-//
-void CWrtDataPlugin::RefreshL(TDesC16& aOperation)
- {
- User::LeaveIfError( iRfs.Connect() );
- TInt observers( iObservers.Count() );
- TInt transactionId = reinterpret_cast<TInt>( this );
-
- for ( TInt obsIndex = 0; obsIndex < observers; obsIndex++ )
- {
- MAiContentObserver* observer = iObservers[obsIndex];
-
- if ( observer->StartTransaction( transactionId ) == KErrNone )
- {
- if( aOperation != KOperationDelete)
- {
- iData->PublishL( observer );
- }
- else
- {
- Clean( observer , EImage1 ) ;
- }
-
- observer->Commit( transactionId );
- }
-
- // Relese memory of the published text
- iDataArray.ResetAndDestroy();
- // Release memory of the published icons
- iIconArray.Reset();
- }
-
- iRfs.Close();
- }
-
-// ---------------------------------------------------------------------------
-// Cleans a data from the widget
-// ---------------------------------------------------------------------------
-//
-void CWrtDataPlugin::Clean(MAiContentObserver* aObserver,
- TInt aContentId )
- {
- if ( aObserver->CanPublish( *this, aContentId, aContentId ) )
- {
- aObserver->Clean( *this, aContentId, aContentId );
- }
-
- }
-// ---------------------------------------------------------------------------
// From class CAiContentPublisher
// Plug-in is requested to unload its engines due backup operation
// ---------------------------------------------------------------------------
@@ -440,19 +158,19 @@
void CWrtDataPlugin::Suspend( TAiTransitionReason aReason )
{
switch( aReason )
- {
- case EAiKeylockDisabled:
+ {
+ case EAiKeylockDisabled:
case EAiKeylockEnabled:
- {
- // handled in resume
- break;
- }
+ {
+ // handled in resume
+ break;
+ }
default :
- {
- iPluginState = ESuspend;
- TRAP_IGNORE ( iData->SuspendL() );
- }
- }
+ {
+ iPluginState = ESuspend;
+ TRAP_IGNORE ( iData->SuspendL() );
+ }
+ }
}
// ---------------------------------------------------------------------------
@@ -514,12 +232,13 @@
{
MAiPluginContentItem& contentItem = (contentItemsArr[i])->AiPluginContentItem();
iContentModel[i].id = i;
- /*if( contentItem.Type() == KText() || contentItem.Type() == KNewsTicker() )
+ if( contentItem.Type() == KText() )
{
// text
iContentModel[i].type = KAiContentTypeText;
- }*/
- if( contentItem.Type() == KImage() )
+ }
+ if( contentItem.Type() == KImage() ||
+ contentItem.Type() == KAnimation() )
{
// image
iContentModel[i].type = KAiContentTypeBitmap;
@@ -566,17 +285,17 @@
TAny* CWrtDataPlugin::Extension( TUid aUid )
{
if ( aUid == KExtensionUidProperty )
- {
+ {
return static_cast<MAiPropertyExtension*>( this );
- }
+ }
else if (aUid == KExtensionUidEventHandler)
- {
+ {
return static_cast<MAiEventHandlerExtension*>( this );
- }
+ }
else
- {
+ {
return NULL;
- }
+ }
}
// ---------------------------------------------------------------------------
@@ -617,18 +336,18 @@
{
switch ( aProperty )
{
- case EAiPublisherInfo:
- {
- if( aValue )
- {
- const TAiPublisherInfo* info = static_cast<const TAiPublisherInfo*>( aValue );
- iInfo.iName.Copy( info->iName );
- iInfo.iNamespace.Copy( info->iNamespace );
- }
- break;
- }
- default:
- break;
+ case EAiPublisherInfo:
+ {
+ if( aValue )
+ {
+ const TAiPublisherInfo* info = static_cast<const TAiPublisherInfo*>( aValue );
+ iInfo.iName.Copy( info->iName );
+ iInfo.iNamespace.Copy( info->iNamespace );
+ }
+ break;
+ }
+ default:
+ break;
}
}
@@ -638,9 +357,9 @@
// ---------------------------------------------------------------------------
//
void CWrtDataPlugin::HandleEvent( TInt /*aEvent*/, const TDesC& /*aParam*/ )
- {
+ {
// This is not as there is no event id to retrieve in this dynamic plugin.
- }
+ }
// ---------------------------------------------------------------------------
// From class MAiEventHandlerExtension.
@@ -659,102 +378,92 @@
// ---------------------------------------------------------------------------
//
TBool CWrtDataPlugin::HasMenuItem( const TDesC16& aMenuItem )
- {
- return iData->HasMenuItem ( aMenuItem );
- }
+ {
+ return iData->HasMenuItem ( aMenuItem );
+ }
// ---------------------------------------------------------------------------
-// From class CAiContentPublisher
-// framework instructs plug-in that it is allowed to consume CPU resources
+// Gets the id of a content
+// ---------------------------------------------------------------------------
+//
+TInt CWrtDataPlugin::GetIdL( TDesC16& aObjectId)
+ {
+ TInt id = KErrNotFound;
+ HBufC16* objectId = HBufC16::NewLC( KAiContentIdMaxLength );
+ for( TInt i = 0;i< iDataCount; i++ )
+ {
+ objectId->Des().Copy((TUint16*)iContentModel[i].cid);
+ if( aObjectId == objectId->Des() )
+ {
+ id = iContentModel[i].id;
+ break;
+ }
+ }
+ CleanupStack::PopAndDestroy( objectId );
+ return id;
+ }
+
+
+// ---------------------------------------------------------------------------
+// Gets type of a content
// ---------------------------------------------------------------------------
//
-void CWrtDataPlugin::DoResumeL( TAiTransitionReason aReason )
+void CWrtDataPlugin::GetTypeL(TDesC16& aObjectId, TDes16& aType )
+ {
+ HBufC16* objectId = HBufC16::NewLC( KAiContentIdMaxLength );
+ for( TInt i = 0;i< iDataCount; i++ )
+ {
+ objectId->Des().Copy((TUint16*)iContentModel[i].cid);
+ if( aObjectId == objectId->Des() )
+ {
+ if( iContentModel[i].type == KAiContentTypeText)
+ {
+ aType.Copy( KText );
+ }
+ else if( iContentModel[i].type == KAiContentTypeBitmap)
+ {
+ aType.Copy( KImage );
+ }
+ break;
+ }
+ }
+ CleanupStack::PopAndDestroy( objectId );
+ }
+
+// ---------------------------------------------------------------------------
+//Refresh a specific image of text in the widget
+// ---------------------------------------------------------------------------
+//
+void CWrtDataPlugin::RefreshL( TDesC16& aOperation, CLiwDefaultMap* aDataMap )
{
- //update in startup phase and idle is on foreground.
- switch ( aReason )
- {
- case EAiIdleOnLine:
- {
- iNetworkStatus = EOnline;
- iData->OnLineL();
- break;
- }
- case EAiIdleOffLine:
- {
- iNetworkStatus = EOffline;
- iData->OffLineL();
- break;
- }
- case EAiIdlePageSwitch:
- {
- if ( iPluginState == EResume )
- {
- iData->SuspendL();
- }
- iPluginState = EInActive;
- iData->InActiveL();
- }
- break;
- case EAiSystemStartup:
- case EAiIdleForeground:
- {
- iHSForeGround = ETrue;
- }
- case EAiBacklightOn:
- {
- if ( iPluginState == ESuspend && !iKeyLockOn )
- {
- iPluginState = EResume;
- iData->ResumeL();
- }
- break;
- }
- case EAiKeylockDisabled:
- {
- iKeyLockOn = EFalse;
- // Key lock events considered only if HS is in foreground
- if ( iHSForeGround && iPluginState == ESuspend )
- {
- iPluginState = EResume;
- iData->ResumeL();
- }
- break;
- }
- case EAiKeylockEnabled:
- {
- iKeyLockOn = ETrue;
- // Key lock events considered only if HS is in foreground
- if ( iHSForeGround && iPluginState == EResume )
- {
- iPluginState = ESuspend ;
- iData->SuspendL();
- }
- break;
- }
- case EAiScreenLayoutChanged:
- {
- // ignore events
- break;
- }
- case EAiGeneralThemeChanged:
- {
- // ignore event
- break;
- }
- case EAiIdleBackground:
- {
- iHSForeGround = EFalse;
- }
- default :
- {
- if ( iPluginState == EResume )
- {
- iPluginState = ESuspend;
- iData->SuspendL();
- }
- break;
- }
- }
+ TInt observers( iObservers.Count() );
+ TInt transactionId = reinterpret_cast<TInt>( this );
+
+ for ( TInt obsIndex = 0; obsIndex < observers; obsIndex++ )
+ {
+ MAiContentObserver* observer = iObservers[obsIndex];
+
+ if ( observer->StartTransaction( transactionId ) == KErrNone )
+ {
+ if( ( aOperation == KOperationUpdate
+ || aOperation == KOperationAdd )
+ && aDataMap )
+ {
+ iData->PublishL( observer, aDataMap );
+ }
+ else if ( aOperation == KOperationDelete )
+ {
+ Clean( observer , EImage1 ) ;
+ }
+
+ observer->Commit( transactionId );
+ }
+
+ // Relese memory of the published text
+ iDataArray.ResetAndDestroy();
+ // Release memory of the published icons
+ iIconArray.Reset();
+ }
}
// ---------------------------------------------------------------------------
@@ -765,3 +474,395 @@
{
return (iPluginState == EResume );
}
+
+// ---------------------------------------------------------------------------
+// Publish a specific text of the widget
+// ---------------------------------------------------------------------------
+//
+void CWrtDataPlugin::PublishTextL(MAiContentObserver* aObserver,
+ TInt aContentId, const TDesC16& aContentValue)
+ {
+ if ( aObserver->CanPublish( *this, aContentId , aContentId ) )
+ {
+ if( aContentValue.Length() > 0 )
+ {
+ HBufC* contentText = HBufC::NewLC(aContentValue.Size());
+ TPtr16 cDes = contentText->Des();
+ cDes.Copy(aContentValue);
+ aObserver->Publish( *this, aContentId, cDes, aContentId );
+ iDataArray.AppendL( contentText );
+ CleanupStack::Pop( contentText );
+ }
+ else
+ {
+ aObserver->Clean( *this, aContentId, aContentId );
+ }
+ }
+ }
+
+// ---------------------------------------------------------------------------
+// Publish a specific image of the widget
+// ---------------------------------------------------------------------------
+//
+void CWrtDataPlugin::PublishImageL(MAiContentObserver* aObserver,
+ TContentItem aContentId, const TDesC16& aPath )
+ {
+ TInt err = KErrNone;
+ TAknsItemID iconId;
+ iconId.iMajor=0;
+ iconId.iMinor=0;
+ TInt bitmapId(0);
+ TInt maskId(0);
+ TFileName fileName;
+ CGulIcon* icon = NULL;
+ CFbsBitmap* bitmap = NULL;
+ CFbsBitmap* mask = NULL;
+
+ if ( aObserver->CanPublish( *this, aContentId , aContentId ) )
+ {
+ TBool inSkin = ResolveSkinIdAndMifId( aPath, iconId, bitmapId, maskId, fileName );
+ if ( inSkin )
+ {
+ // Load from skin
+ MAknsSkinInstance* skin = AknsUtils::SkinInstance();
+ if ( iconId.iMajor != 0 && iconId.iMajor!=0 )
+ {
+ // Create icon with fall back
+ TRAP_IGNORE(AknsUtils::CreateIconL(
+ skin,
+ iconId,
+ bitmap,
+ mask,
+ fileName, /* backup filename */
+ bitmapId, /* backup bit map id */
+ maskId)); /* backup mask id */
+ }
+ else if( bitmapId !=0 )
+ {
+ if ( maskId!=0 )
+ {
+ // Create icon from Mif filename , bitmap id and mask id
+ TRAP_IGNORE(icon = AknsUtils::CreateGulIconL(
+ skin,
+ iconId,
+ fileName,
+ bitmapId,
+ maskId) );
+ }
+ else
+ {
+ TRAP_IGNORE(AknsUtils::CreateIconL(
+ skin,
+ iconId,
+ bitmap,
+ fileName, /* backup filename */
+ bitmapId)); /* backup bit map id */
+ }
+ }
+
+ if ( icon == NULL && bitmap != NULL )
+ {
+ icon = CGulIcon::NewL( bitmap, mask );
+ }
+
+ if ( icon != NULL ) // Syntax correct but icon not found
+ {
+ aObserver->PublishPtr( *this, aContentId, icon , aContentId );
+ iIconArray.Append(icon);
+ }
+ else
+ {
+ err = KErrNotFound;
+ aObserver->Clean( *this, aContentId, aContentId );
+ }
+ }
+ else // Interpret as File path
+ {
+ RFs rfs;
+ User::LeaveIfError( rfs.Connect() );
+ RFile* iconFile = new (ELeave) RFile();
+ err = iconFile->Open( rfs, aPath, EFileShareReadersOnly | EFileRead );
+ if( err == KErrNone )
+ {
+ aObserver->Publish( *this, aContentId, *iconFile, aContentId );
+ }
+ else
+ {
+ aObserver->Clean( *this, aContentId, aContentId );
+ }
+ iconFile->Close();
+ delete iconFile;
+ iconFile = NULL;
+ rfs.Close();
+ }
+ }
+ }
+
+// ---------------------------------------------------------------------------
+// Publish a image of the widget
+// ---------------------------------------------------------------------------
+//
+void CWrtDataPlugin::PublishImageL(MAiContentObserver* aObserver,
+ TContentItem aContentId, TInt aHandle, TInt aMaskHandle )
+ {
+ if ( aObserver->CanPublish( *this, aContentId , aContentId ) )
+ {
+ if( aHandle != KErrBadHandle )
+ {
+ CFbsBitmap* bitmap = new (ELeave) CFbsBitmap();
+ if( KErrNone == bitmap->Duplicate( aHandle) )
+ {
+ // Take the ownership
+ CGulIcon* icon = CGulIcon::NewL(bitmap);
+ if( aMaskHandle != KErrBadHandle )
+ {
+ CFbsBitmap* mask = new (ELeave) CFbsBitmap();
+ if (KErrNone == mask->Duplicate( aMaskHandle) )
+ {
+ icon->SetMask( mask );
+ }
+ }
+ aObserver->PublishPtr( *this, aContentId, icon , aContentId );
+ iIconArray.Append(icon);
+ }
+ else
+ {
+ delete bitmap;
+ bitmap = NULL;
+ aObserver->Clean( *this, aContentId, aContentId );
+ }
+ }
+ }
+ }
+
+// ---------------------------------------------------------------------------
+// Cleans a data from the widget
+// ---------------------------------------------------------------------------
+//
+void CWrtDataPlugin::Clean(MAiContentObserver* aObserver,
+ TInt aContentId )
+ {
+ if ( aObserver->CanPublish( *this, aContentId, aContentId ) )
+ {
+ aObserver->Clean( *this, aContentId, aContentId );
+ }
+
+ }
+
+// ---------------------------------------------------------------------------
+// Show the loading icong animation
+// ---------------------------------------------------------------------------
+//
+void CWrtDataPlugin::ShowLoadingIcon(MAiContentObserver* aObserver)
+ {
+ aObserver->SetProperty( *this, KElement , KDisplay , KShow );
+ }
+
+// ---------------------------------------------------------------------------
+// Hides the loading icon animation
+// ---------------------------------------------------------------------------
+//
+void CWrtDataPlugin::HideLoadingIcon(MAiContentObserver* aObserver)
+ {
+ aObserver->SetProperty( *this, KElement , KDisplay , KHide );
+ }
+
+// ---------------------------------------------------------------------------
+// Publishes widget's texts and images
+// ---------------------------------------------------------------------------
+//
+void CWrtDataPlugin::PublishL()
+ {
+ TInt observers( iObservers.Count() );
+ TInt transactionId = reinterpret_cast<TInt>( this );
+
+ for ( int i = 0; i < observers; i++ )
+ {
+ MAiContentObserver* observer = iObservers[i];
+
+ if ( observer->StartTransaction( transactionId ) == KErrNone )
+ {// Publish default data
+ iData->PublishDefaultImageL(observer);
+ observer->Commit( transactionId );
+ }
+
+ // Release memory of the published text
+ iDataArray.ResetAndDestroy();
+ // Release memory of the published icons
+ iIconArray.Reset();
+ }
+
+ }
+
+// ---------------------------------------------------------------------------
+// From class CAiContentPublisher
+// framework instructs plug-in that it is allowed to consume CPU resources
+// ---------------------------------------------------------------------------
+//
+void CWrtDataPlugin::DoResumeL( TAiTransitionReason aReason )
+ {
+ //update in startup phase and idle is on foreground.
+ switch ( aReason )
+ {
+ case EAiIdleOnLine:
+ {
+ iNetworkStatus = EOnline;
+ iData->OnLineL();
+ break;
+ }
+ case EAiIdleOffLine:
+ {
+ iNetworkStatus = EOffline;
+ iData->OffLineL();
+ break;
+ }
+ case EAiIdlePageSwitch:
+ {
+ if ( iPluginState == EResume )
+ {
+ iData->SuspendL();
+ }
+ iPluginState = EInActive;
+ iData->InActiveL();
+ }
+ break;
+ case EAiSystemStartup:
+ case EAiIdleForeground:
+ {
+ iHSForeGround = ETrue;
+ }
+ case EAiBacklightOn:
+ {
+ if ( iPluginState == ESuspend && !iKeyLockOn )
+ {
+ iPluginState = EResume;
+ iData->ResumeL();
+ }
+ break;
+ }
+ case EAiKeylockDisabled:
+ {
+ iKeyLockOn = EFalse;
+ // Key lock events considered only if HS is in foreground
+ if ( iHSForeGround && iPluginState == ESuspend )
+ {
+ iPluginState = EResume;
+ iData->ResumeL();
+ }
+ break;
+ }
+ case EAiKeylockEnabled:
+ {
+ iKeyLockOn = ETrue;
+ // Key lock events considered only if HS is in foreground
+ if ( iHSForeGround && iPluginState == EResume )
+ {
+ iPluginState = ESuspend ;
+ iData->SuspendL();
+ }
+ break;
+ }
+ case EAiScreenLayoutChanged:
+ {
+ // ignore events
+ break;
+ }
+ case EAiGeneralThemeChanged:
+ {
+ // ignore event
+ break;
+ }
+ case EAiIdleBackground:
+ {
+ iHSForeGround = EFalse;
+ }
+ default :
+ {
+ if ( iPluginState == EResume )
+ {
+ iPluginState = ESuspend;
+ iData->SuspendL();
+ }
+ break;
+ }
+ }
+ }
+
+// ---------------------------------------------------------------------------
+// ResolveSkinItemId
+// ---------------------------------------------------------------------------
+//
+TBool CWrtDataPlugin::ResolveSkinIdAndMifId( const TDesC& aPath, TAknsItemID& aItemId,
+ TInt& abitmapId, TInt& aMaskId, TDes& aFilename )
+ {
+ // Syntax: skin( <major> <minor> ):mif(filename bimapId maskId)
+ TInt error = KErrNotFound;
+ TInt pos = aPath.FindF( KSkin );
+ if( pos != KErrNotFound )
+ {
+ // Skip skin token
+ pos += KSkin().Length();
+
+ // Initialize lexer
+ TLex lex( aPath.Mid( pos ) );
+ lex.SkipSpace();
+
+ // Check left parenthesis
+ if (lex.Get() == KLeftParenthesis )
+ {
+ //lex.SkipSpace();
+
+ TInt majorId( 0 );
+ TInt minorId( 0 );
+
+ // Resolve major id
+ error = lex.Val( majorId );
+
+ // Resolve minor id
+ lex.SkipSpace();
+ error |= lex.Val( minorId );
+
+ // initilize skin item id object
+ aItemId.Set( majorId, minorId );
+ }
+ }
+
+ if( (error == KErrNone && aPath.FindF( KColon ) != KErrNotFound )
+ || ( error == KErrNotFound ) )
+ {
+ error = KErrNotFound;
+ pos = aPath.FindF( KMif );
+ if ( pos != KErrNotFound )
+ {
+ pos += KMif().Length();
+ // Initialize lexer
+ TLex lex( aPath.Mid( pos ) );
+ lex.SkipSpace();
+
+ // Check left parenthesis
+ if (lex.Get() == KLeftParenthesis )
+ {
+ lex.SkipSpaceAndMark();
+ lex.SkipCharacters();
+ // Resolve MifFile name
+ aFilename.Copy(lex.MarkedToken());
+ if( aFilename.Length()!= 0)
+ {
+ // Resolve bitmap id
+ lex.SkipSpace();
+ error = lex.Val( abitmapId );
+
+ // Resolve mask id
+ // dont return error if it is not found, that is ok
+ lex.SkipSpace();
+ lex.Val( aMaskId );
+ }
+ else
+ {
+ error = KErrNotFound;
+ }
+ }
+ }
+ }
+ return (error == KErrNone );
+ }
--- a/inc/aisystemuids.hrh Mon Jan 18 20:32:13 2010 +0200
+++ b/inc/aisystemuids.hrh Tue Jan 26 12:11:15 2010 +0200
@@ -146,6 +146,9 @@
#define AI3_UID_RENDERING_PLUGIN_TEXTEDITORFACTORY 0x20022FD3
#define AI3_UID_RENDERING_PLUGIN_TEXTEDITORFACTORY_IMPLEMENTATION 0x20022FD3
+#define AI3_UID_RENDERING_PLUGIN_ANIMATIONFACTORY 0x200286E2
+#define AI3_UID_RENDERING_PLUGIN_ANIMATIONFACTORY_IMPLEMENTATION 0x200286E2
+
#endif // AISYSTEMUIDS_HRH
--- a/xcfw/src/xcfwengine.cpp Mon Jan 18 20:32:13 2010 +0200
+++ b/xcfw/src/xcfwengine.cpp Tue Jan 26 12:11:15 2010 +0200
@@ -1383,8 +1383,12 @@
}
}
}
- //Store DTD name to tree, so it is available at save.
- iTree->SetDTDNameL( iDTD->Des() );
+
+ if ( iDTD )
+ {
+ //Store DTD name to tree, so it is available at save.
+ iTree->SetDTDNameL( iDTD->Des() );
+ }
}
// End of File