--- a/idlefw/plugins/devicestatus/src/aidevicestatusplugin.cpp Tue Feb 02 00:23:10 2010 +0200
+++ b/idlefw/plugins/devicestatus/src/aidevicestatusplugin.cpp Fri Feb 19 23:07:29 2010 +0200
@@ -15,7 +15,7 @@
*
*/
-
+// System includes
#include <ecom/ecom.h>
#include <ecom/implementationproxy.h>
#include <coemain.h>
@@ -23,6 +23,8 @@
#include <bautils.h>
#include <aiutility.h>
#include <featmgr.h>
+
+// User includes
#include "aidevicestatusplugin.h"
#include "aidevicestatuspluginengine.h"
#include "aipublishprioritizer.h"
@@ -31,9 +33,11 @@
#include "aipluginsettings.h"
#include "ainetworkinfolistener.h"
+// Constants
_LIT( KResourceDrive, "Z:" );
_LIT( KResourceFile, "aidevstaplgres.rsc" );
-#define KResourcePath KDC_APP_RESOURCE_DIR
+
+#define KResourcePath KDC_RESOURCE_FILES_DIR
// ECOM implementation table
const TImplementationProxy KImplementationTable[] =
@@ -43,17 +47,23 @@
// ======== MEMBER FUNCTIONS ========
-
-CAiDeviceStatusPlugin::CAiDeviceStatusPlugin() :
- iResourceOffset( KErrNotFound )
+// ----------------------------------------------------------------------------
+// CAiDeviceStatusPlugin::CAiDeviceStatusPlugin
+//
+// ----------------------------------------------------------------------------
+//
+CAiDeviceStatusPlugin::CAiDeviceStatusPlugin()
+ : iResourceOffset( KErrNotFound )
{
}
-
+// ----------------------------------------------------------------------------
+// CAiDeviceStatusPlugin::ConstructL
+//
+// ----------------------------------------------------------------------------
+//
void CAiDeviceStatusPlugin::ConstructL()
- {
- iInfo.iUid.iUid = AI_UID_ECOM_IMPLEMENTATION_CONTENTPUBLISHER_DEVSTAPLUGIN;
-
+ {
FeatureManager::InitializeLibL();
// Create master instance to prevent deletion on Stop()
@@ -62,11 +72,17 @@
//Create content here since this is needed in optimization phase.
iContent = AiUtility::CreateContentItemArrayIteratorL( KAiDeviceStatusContent );
iResources = AiUtility::CreateContentItemArrayIteratorL( KAiDeviceStatusResources );
+
iContentObservers = CAiMultiContentObserver::NewL();
+
iPrioritizer = CAiPublishPrioritizer::NewL( *iContentObservers, *this );
}
-
+// ----------------------------------------------------------------------------
+// CAiDeviceStatusPlugin::NewL
+//
+// ----------------------------------------------------------------------------
+//
CAiDeviceStatusPlugin* CAiDeviceStatusPlugin::NewL()
{
CAiDeviceStatusPlugin* self = CAiDeviceStatusPlugin::NewLC();
@@ -74,7 +90,11 @@
return self;
}
-
+// ----------------------------------------------------------------------------
+// CAiDeviceStatusPlugin::NewLC
+//
+// ----------------------------------------------------------------------------
+//
CAiDeviceStatusPlugin* CAiDeviceStatusPlugin::NewLC()
{
CAiDeviceStatusPlugin* self = new( ELeave ) CAiDeviceStatusPlugin;
@@ -83,57 +103,65 @@
return self;
}
-
+// ----------------------------------------------------------------------------
+// CAiDeviceStatusPlugin::~CAiDeviceStatusPlugin
+//
+// ----------------------------------------------------------------------------
+//
CAiDeviceStatusPlugin::~CAiDeviceStatusPlugin()
{
delete iPrioritizer;
+
FreeResources();
+
delete iContentObservers;
+
Release( iResources );
Release( iContent );
+
FeatureManager::UnInitializeLib();
+
if( iListener )
{
iListener->Release();
}
}
-
-/**
- * Allocates all resourcers required for plug-in operation.
- */
+// ----------------------------------------------------------------------------
+// CAiDeviceStatusPlugin::AllocateResourcesL
+//
+// ----------------------------------------------------------------------------
+//
void CAiDeviceStatusPlugin::AllocateResourcesL()
{
//create engine
if( !iEngine )
{
- iEngine = CAiDeviceStatusPluginEngine::NewL( *iContentObservers,
- *this,
- *iPrioritizer);
+ iEngine = CAiDeviceStatusPluginEngine::NewL(
+ *iContentObservers, *this, *iPrioritizer );
}
if( iResourceOffset < 0 )
{
- CCoeEnv* coe = CCoeEnv::Static();
-
- if( !coe )
- {
- User::Leave( KErrNotReady );
- }
+ CCoeEnv* coe( CCoeEnv::Static() );
- //Add resource file to cone
- TFullName resourceFile( KResourceDrive );
- resourceFile.Append( KResourcePath );
- resourceFile.Append( KResourceFile );
- BaflUtils::NearestLanguageFile( CCoeEnv::Static()->FsSession(), resourceFile );
- iResourceOffset = coe->AddResourceFileL( resourceFile );
+ if ( coe )
+ {
+ //Add resource file to cone
+ TFullName resourceFile( KResourceDrive );
+ resourceFile.Append( KResourcePath );
+ resourceFile.Append( KResourceFile );
+ BaflUtils::NearestLanguageFile( coe->FsSession(), resourceFile );
+ iResourceOffset = coe->AddResourceFileL( resourceFile );
+ }
}
}
-
-/**
- * Frees all allocated resources.
- */
+// ----------------------------------------------------------------------------
+// CAiDeviceStatusPlugin::FreeResources
+//
+// ----------------------------------------------------------------------------
+//
void CAiDeviceStatusPlugin::FreeResources()
{
if( iResourceOffset >= 0 )
@@ -153,155 +181,151 @@
iEngine = NULL;
}
-
-void CAiDeviceStatusPlugin::Resume(TAiTransitionReason aReason)
- {
- if( IgnoreReason( aReason ) )
- {
- return;
- }
- // resume all publishers only in startup
- if( iEngine )
+// ----------------------------------------------------------------------------
+// CAiDeviceStatusPlugin::Start
+//
+// ----------------------------------------------------------------------------
+//
+void CAiDeviceStatusPlugin::Start( TStartReason aReason )
+ {
+ if ( aReason == EPageStartup || aReason == ESystemStartup )
{
- if ( aReason == EAiIdleForeground || aReason == EAiKeylockDisabled )
- {
- // not much can be done if some publisher cannot be refreshed
- TRAP_IGNORE( iEngine->RefreshPublishersL(
- EAiDeviceStatusContentNetworkIdentity, ETrue ) );
-
- TRAP_IGNORE( iEngine->RefreshPublishersL(
- EAiDeviceStatusContentCUGMCNIndicator, ETrue ) );
- }
- // if layout changed republish some information
- else if ( aReason == EAiScreenLayoutChanged )
- {
- TRAP_IGNORE( iEngine->RefreshPublishersL( EAiDeviceStatusContentDate, ETrue ));
- TRAP_IGNORE( iEngine->RefreshPublishersL( EAiDeviceStatusContentCUGMCNIndicator, ETrue ));
- TRAP_IGNORE( iEngine->RefreshPublishersL( EAiDeviceStatusContentVHZText, ETrue ));
- TRAP_IGNORE( iEngine->RefreshPublishersL( EAiDeviceStatusContentNetworkIdentity, ETrue ));
- }
- return;
- }
- // If engine has been deleted. create it again.
- else
- {
- iContentObservers->StartTransaction( KImplUidDevStaPlugin );
-
- TRAPD( err, DoResumeL(aReason) );
-
- if( err == KErrNone )
- {
- iContentObservers->Commit( KImplUidDevStaPlugin );
- }
- else
- {
- iContentObservers->CancelTransaction( KImplUidDevStaPlugin );
- }
+ iRequirePublish = ETrue;
}
}
-
-void CAiDeviceStatusPlugin::DoResumeL(TAiTransitionReason /*aReason*/)
- {
- AllocateResourcesL( );
- iEngine->ResumePublishersL();
- iEngine->RefreshPublishersL( EFalse );
- }
-
-
-TBool CAiDeviceStatusPlugin::IgnoreReason( TAiTransitionReason aReason )
- {
- switch( aReason )
- {
- case EAiBacklightOff:
- return ETrue;
- }
- return EFalse;
+// ----------------------------------------------------------------------------
+// CAiDeviceStatusPlugin::Stop
+//
+// ----------------------------------------------------------------------------
+//
+void CAiDeviceStatusPlugin::Stop( TStopReason /*aReason*/ )
+ {
}
-
-void CAiDeviceStatusPlugin::Stop(TAiTransitionReason /*aReason*/)
- {
- FreeResources();
+// ----------------------------------------------------------------------------
+// CAiDeviceStatusPlugin::Resume
+//
+// ----------------------------------------------------------------------------
+//
+void CAiDeviceStatusPlugin::Resume( TResumeReason aReason )
+ {
+ if ( aReason == EForeground )
+ {
+ if ( iRequirePublish )
+ {
+ TRAP_IGNORE( DoResumeL() );
+
+ iRequirePublish = EFalse;
+ }
+ }
}
-
-
-void CAiDeviceStatusPlugin::Suspend(TAiTransitionReason /*aReason*/)
+
+// ----------------------------------------------------------------------------
+// CAiDeviceStatusPlugin::Suspend
+//
+// ----------------------------------------------------------------------------
+//
+void CAiDeviceStatusPlugin::Suspend( TSuspendReason /*aReason*/ )
{
}
-
-void CAiDeviceStatusPlugin::SubscribeL(MAiContentObserver& aObserver)
+// ----------------------------------------------------------------------------
+// CAiDeviceStatusPlugin::SubscribeL
+//
+// ----------------------------------------------------------------------------
+//
+void CAiDeviceStatusPlugin::SubscribeL( MAiContentObserver& aObserver )
{
iContentObservers->AddObserverL( aObserver );
}
-
-TAny* CAiDeviceStatusPlugin::Extension(TUid aUid)
+// ----------------------------------------------------------------------------
+// CAiDeviceStatusPlugin::ConfigureL
+//
+// ----------------------------------------------------------------------------
+//
+void CAiDeviceStatusPlugin::ConfigureL( RAiSettingsItemArray& aSettings )
{
- //Access to extensions
- if( aUid == KExtensionUidProperty )
+ aSettings.ResetAndDestroy();
+
+ AllocateResourcesL();
+ }
+
+// ----------------------------------------------------------------------------
+// CAiDeviceStatusPlugin::GetProperty
+//
+// ----------------------------------------------------------------------------
+//
+TAny* CAiDeviceStatusPlugin::GetProperty( TProperty aProperty )
+ {
+ if ( aProperty == EPublisherContent )
{
- return static_cast<MAiPropertyExtension*>(this);
+ return static_cast< MAiContentItemIterator* >( iContent );
+ }
+ else if ( aProperty == EPublisherResources )
+ {
+ return static_cast< MAiContentItemIterator* >( iResources );
}
-
+ else if ( aProperty == EContentRequest )
+ {
+ return static_cast< MAiContentRequest* >( this );
+ }
+
return NULL;
}
-
-void CAiDeviceStatusPlugin::ConfigureL(RAiSettingsItemArray& aSettings)
- {
- aSettings.ResetAndDestroy();
+// ----------------------------------------------------------------------------
+// CAiDeviceStatusPlugin::DoResumeL
+//
+// ----------------------------------------------------------------------------
+//
+void CAiDeviceStatusPlugin::DoResumeL()
+ {
+ iEngine->ResumePublishersL();
+ iEngine->RefreshPublishersL( EFalse );
}
-TAny* CAiDeviceStatusPlugin::GetPropertyL(TInt aProperty)
- {
- //Return properties.
- switch (aProperty)
- {
- case EAiPublisherInfo:
- return &iInfo;
-
- case EAiPublisherContent:
- return static_cast<MAiContentItemIterator*>(iContent);
-
- case EAiPublisherResources:
- return static_cast<MAiContentItemIterator*>(iResources);
-
- case EAiContentRequest:
- return static_cast<MAiContentRequest*>(this);
- }
-
- return NULL;
- }
-
-void CAiDeviceStatusPlugin::SetPropertyL(TInt aProperty, TAny* aValue)
- {
- if( aProperty == EAiPublisherInfo )
- {
- ASSERT( aValue );
-
- const TAiPublisherInfo* info(
- static_cast<const TAiPublisherInfo*>( aValue ) );
-
- iInfo = *info;
- }
- }
-
+// ----------------------------------------------------------------------------
+// CAiDeviceStatusPlugin::RefreshContent
+//
+// ----------------------------------------------------------------------------
+//
TBool CAiDeviceStatusPlugin::RefreshContent( TInt aContentId )
{
- TBool result = EFalse;
+ TBool result( EFalse );
TRAP_IGNORE( result = iEngine->RefreshPublishersL( aContentId, EFalse ) );
+
return result;
}
+// ----------------------------------------------------------------------------
+// CAiDeviceStatusPlugin::SuspendContent
+//
+// ----------------------------------------------------------------------------
+//
+TBool CAiDeviceStatusPlugin::SuspendContent( TInt aContentId )
+ {
+ TBool result( EFalse );
+
+ TRAP_IGNORE( result = iEngine->SuspendPublishersL( aContentId, EFalse ) );
+
+ return result;
+ }
-/**
- * ECom component entry point.
- */
-EXPORT_C const TImplementationProxy* ImplementationGroupProxy( TInt& aTableCount )
+// ======== GLOBAL FUNCTIONS ========
+// ----------------------------------------------------------------------------
+// ImplementationGroupProxy
+//
+// ----------------------------------------------------------------------------
+//
+EXPORT_C const TImplementationProxy* ImplementationGroupProxy(
+ TInt& aTableCount )
{
- aTableCount = sizeof(KImplementationTable) / sizeof(TImplementationProxy);
+ aTableCount = sizeof(KImplementationTable) / sizeof( TImplementationProxy );
+
return KImplementationTable;
}
+
+// End of file