--- a/contentcontrolsrv/ccclientsession/src/ccclientsession.cpp Wed Mar 03 15:38:34 2010 +0200
+++ b/contentcontrolsrv/ccclientsession/src/ccclientsession.cpp Wed May 12 13:36:47 2010 +0300
@@ -30,6 +30,7 @@
const TUint KCcSrvMajorVersionNumber = 1;
const TUint KCcSrvMinorVersionNumber = 0;
const TUint KCcSrvBuildVersionNumber = 0;
+const TInt KDefaultMessageSlots = 3;
// -----------------------------------------------------------------------------
@@ -78,7 +79,7 @@
TInt retry=2;
for (;;)
{
- TInt r = CreateSession( KCcSrvName, ver );
+ TInt r = CreateSession( KCcSrvName, ver, KDefaultMessageSlots );
if (r != KErrNotFound && r != KErrServerTerminated)
{
--- a/contentcontrolsrv/ccsrv/inc/ccsrv.h Wed Mar 03 15:38:34 2010 +0200
+++ b/contentcontrolsrv/ccsrv/inc/ccsrv.h Wed May 12 13:36:47 2010 +0300
@@ -114,13 +114,9 @@
/**
* Sends message to defined session
- * @param aSender Sender session
- * @param aReceiver Receiver session
* @param aMsgBuf Message buffer
*/
void SendMsgL(
- TUint32 aSender,
- TUint32 aReceiver,
CCcSrvMsg& aMessage );
private:
@@ -160,6 +156,16 @@
};
RArray<TCcProvider> iProviders;
+ /**
+ * Observer list
+ */
+ struct TCcObserver
+ {
+ TUint32 iProviderId;
+ TUint32 iObserver;
+ };
+ RArray<TCcObserver> iObservers;
+
};
--- a/contentcontrolsrv/ccsrv/inc/ccsrvsession.h Wed Mar 03 15:38:34 2010 +0200
+++ b/contentcontrolsrv/ccsrv/inc/ccsrvsession.h Wed May 12 13:36:47 2010 +0300
@@ -90,8 +90,6 @@
*
*/
void ReceiveMsgL(
- TUint32 aSender,
- TUint32 aReceiver,
CCcSrvMsg& aMessage );
private:
--- a/contentcontrolsrv/ccsrv/src/ccsrv.cpp Wed Mar 03 15:38:34 2010 +0200
+++ b/contentcontrolsrv/ccsrv/src/ccsrv.cpp Wed May 12 13:36:47 2010 +0300
@@ -138,6 +138,7 @@
{
iSessions.Close();
iProviders.Close();
+ iObservers.Close();
}
// -----------------------------------------------------------------------------
@@ -185,6 +186,37 @@
//
void CCcSrv::DropSession( CCcSrvSession* aSession )
{
+ // Remove possible provider
+ for ( TUint32 i = 0; i < iProviders.Count(); i++ )
+ {
+ if ( iProviders[ i ].iSession->Id() == aSession->Id() )
+ {
+ iProviders.Remove( i );
+ break;
+ }
+ }
+ // Unregister possible observations and remove observer
+ for ( TUint32 i = 0; i < iObservers.Count(); )
+ {
+ if ( iObservers[ i ].iObserver == aSession->Id() )
+ {
+ for ( TUint32 j = 0; j < iProviders.Count(); j++ )
+ {
+ if ( iObservers[ i ].iProviderId == iProviders[ j ].iId )
+ {
+ TRAP_IGNORE( iProviders[ j ].iSession->
+ UnregisterObserverSessionL( aSession->Id() ) );
+ }
+ }
+ iObservers.Remove( i );
+ }
+ else
+ {
+ // Get next observer
+ i++;
+ }
+ }
+ // Remove session
for ( TUint32 i = 0; i < iSessions.Count(); i++ )
{
if ( iSessions[ i ]->Id() == aSession->Id() )
@@ -193,22 +225,7 @@
break;
}
}
- // Unregister possible observations
- for ( TUint32 i = 0; i < iProviders.Count(); i++ )
- {
- TRAP_IGNORE( iProviders[ i ].iSession->
- UnregisterObserverSessionL( aSession->Id() ) );
- }
- // Remove possible provider
- for ( TUint32 i = 0; i < iProviders.Count(); i++ )
- {
- if ( iProviders[ i ].iId == aSession->Id() )
- {
- iProviders.Remove( i );
- break;
- }
- }
if ( iSessions.Count() == 0 )
{
// Last session dropped -> stop server
@@ -236,6 +253,15 @@
provider.iSession = aSession;
iProviders.Append( provider );
+ // Register possible active observers
+ for ( TUint32 i = 0; i < iObservers.Count(); i++ )
+ {
+ if ( iObservers[ i ].iProviderId == aProvider )
+ {
+ provider.iSession->RegisterObserverSessionL( iObservers[ i ].iObserver );
+ }
+ }
+
}
// -----------------------------------------------------------------------------
@@ -246,19 +272,18 @@
TUint32 aProvider,
CCcSrvSession* aSession )
{
- TBool found( EFalse );
- for ( TUint32 i = 0; i < iProviders.Count() && !found; i++ )
+ for ( TUint32 i = 0; i < iProviders.Count(); i++ )
{
if ( iProviders[ i ].iId == aProvider )
{
- iProviders[ i ].iSession->RegisterObserverSessionL( aSession->Id() );
- found = ETrue;
+ iProviders[ i ].iSession->RegisterObserverSessionL( aSession->Id() );
+ break;
}
}
- if ( !found )
- {
- User::Leave( KErrNotFound );
- }
+ CCcSrv::TCcObserver observer;
+ observer.iProviderId = aProvider;
+ observer.iObserver = aSession->Id();
+ iObservers.Append( observer );
}
// -----------------------------------------------------------------------------
@@ -299,16 +324,14 @@
// -----------------------------------------------------------------------------
//
void CCcSrv::SendMsgL(
- TUint32 aSender,
- TUint32 aReceiver,
CCcSrvMsg& aMessage )
{
TBool found( EFalse );
for ( TUint32 i = 0; i < iSessions.Count() && !found; i++ )
{
- if ( iSessions[ i ]->Id() == aReceiver )
+ if ( iSessions[ i ]->Id() == aMessage.Receiver() )
{
- iSessions[ i ]->ReceiveMsgL( aSender, aReceiver, aMessage );
+ iSessions[ i ]->ReceiveMsgL( aMessage );
found = ETrue;
}
}
--- a/contentcontrolsrv/ccsrv/src/ccsrvsession.cpp Wed Mar 03 15:38:34 2010 +0200
+++ b/contentcontrolsrv/ccsrv/src/ccsrvsession.cpp Wed May 12 13:36:47 2010 +0300
@@ -215,11 +215,35 @@
void CCcSrvSession::HandleWaitForApiReqL(
RMessage2& aMessage )
{
+ // Wait for the next API request or Observer notification
CCcSrvMsg* tr = CCcSrvMsg::NewL();
CleanupStack::PushL( tr );
tr->SetMessage( aMessage );
iRequests.AppendL( tr );
CleanupStack::Pop( tr );
+
+ // Check if there is outstanding requests
+ for ( TInt i = 0; i < iRequests.Count(); i++ )
+ {
+ CCcSrvMsg* req = iRequests[ i ];
+ if ( req->MsgId() == ECcRegisterObserverNtf ||
+ req->MsgId() == ECcUnregisterObserverNtf )
+ {
+ iRequests.Remove( i );
+ CleanupStack::PushL( req );
+ SendObserverNtfL( req->Sender(), req->MsgId() );
+ CleanupStack::PopAndDestroy( req );
+ break;
+ }
+ else if ( req->Function() == ECcApiReq )
+ {
+ iRequests.Remove( i );
+ CleanupStack::PushL( req );
+ ReceiveMsgL( *req );
+ CleanupStack::PopAndDestroy( req );
+ break;
+ }
+ }
}
// -----------------------------------------------------------------------
@@ -234,6 +258,20 @@
tr->SetMessage( aMessage );
iRequests.AppendL( tr );
CleanupStack::Pop( tr );
+
+ // Check if there is outstanding API notifications
+ for ( TInt i = 0; i < iRequests.Count(); i++ )
+ {
+ CCcSrvMsg* req = iRequests[ i ];
+ if ( req->Function() == ECcApiNtf )
+ {
+ iRequests.Remove( i );
+ CleanupStack::PushL( req );
+ ReceiveMsgL( *req );
+ CleanupStack::PopAndDestroy( req );
+ break;
+ }
+ }
}
// -----------------------------------------------------------------------
@@ -289,12 +327,14 @@
message->InternalizeL( stream );
message->SetTrId( Server().GetTrId() );
message->SetMessage( aMessage );
+ message->SetSender( iId );
+ message->SetReceiver( providerAddress );
- Server().SendMsgL( iId, providerAddress, *message );
+ iRequests.AppendL( message );
+ CleanupStack::Pop( message );
- iRequests.AppendL( message );
+ Server().SendMsgL( *message );
- CleanupStack::Pop( message );
CleanupStack::PopAndDestroy( msgBuf );
}
@@ -325,9 +365,11 @@
CleanupStack::PushL( message );
message->InternalizeL( stream );
message->SetMessage( aMessage );
+ message->SetSender( sender );
+ message->SetReceiver( receiver );
// Forward message to receiver
- Server().SendMsgL( sender, receiver, *message );
+ Server().SendMsgL( *message );
CleanupStack::PopAndDestroy( message );
CleanupStack::PopAndDestroy( msgBuf );
@@ -396,11 +438,13 @@
CleanupStack::PushL( message );
message->InternalizeL( stream );
message->SetMessage( aMessage );
+ message->SetSender( iId );
// Forward notification to observers
for ( TInt i = 0; i < iObservers.Count(); i++ )
{
- Server().SendMsgL( iId, iObservers[ i ], *message );
+ message->SetReceiver( iObservers[ i ] );
+ Server().SendMsgL( *message );
}
message->Message().Complete( KErrNone );
@@ -414,49 +458,48 @@
// -----------------------------------------------------------------------
//
void CCcSrvSession::ReceiveMsgL(
- TUint32 aSender,
- TUint32 aReceiver,
CCcSrvMsg& aMessage )
{
TBool found( EFalse );
CCcSrvMsg* req( NULL );
- TInt index( 0 );
for ( TInt i = 0; i < iRequests.Count() && !found; i++ )
{
req = iRequests[ i ];
- if ( aMessage.Message().Function() == ECcApiReq &&
- req->Message().Function() == ECcWaitForApiReq &&
+ if ( aMessage.Function() == ECcApiReq &&
+ req->Function() == ECcWaitForApiReq &&
!req->Message().IsNull() )
{
// Pending WaitForApiReq transaction found
- index = i;
+ iRequests.Remove( i );
found = ETrue;
}
- else if ( aMessage.Message().Function() == ECcApiResp &&
+ else if ( aMessage.Function() == ECcApiResp &&
req->TrId() == aMessage.TrId() )
{
// Pending ApiReq transaction found
- index = i;
+ iRequests.Remove( i );
found = ETrue;
}
- else if ( aMessage.Message().Function() == ECcApiNtf &&
- req->Message().Function() == ECcWaitForApiNtf &&
+ else if ( aMessage.Function() == ECcApiNtf &&
+ req->Function() == ECcWaitForApiNtf &&
!req->Message().IsNull() )
{
// Pending WaitForApiNtf transaction found
- index = i;
+ iRequests.Remove( i );
found = ETrue;
}
}
if ( found )
{
+ CleanupStack::PushL( req );
+
// Write sender of message
- TPckgBuf<TUint32> packagedSender( aSender );
+ TPckgBuf<TUint32> packagedSender( aMessage.Sender() );
req->Message().WriteL( 1, packagedSender, 0 );
// Write receiver of message
- TPckgBuf<TUint32> packagedReceiver( aReceiver );
+ TPckgBuf<TUint32> packagedReceiver( aMessage.Receiver() );
req->Message().WriteL( 2, packagedReceiver, 0 );
// Externalize message header
@@ -477,27 +520,43 @@
req->Message().WriteL( 3, ptr, 0);
CleanupStack::PopAndDestroy( des );
CleanupStack::PopAndDestroy( buf );
-
+
// Complete request
req->Message().Complete( KErrNone );
+
if ( aMessage.DataSize() )
{
// Store request data to be read later
// with GetMsgData()
req->SetTrId( aMessage.TrId() );
req->SetData( aMessage.Data() );
+ iRequests.AppendL( req );
+ CleanupStack::Pop( req );
}
else
{
- // Received request does not contain any data
- // -> remove it from request array
- iRequests.Remove( index );
- delete req;
+ CleanupStack::PopAndDestroy( req );
}
}
else
{
- User::Leave( KErrNotFound );
+ if ( aMessage.Function() == ECcApiReq ||
+ aMessage.Function() == ECcApiNtf )
+ {
+ // Store message to handled later
+ CCcSrvMsg* msg = CCcSrvMsg::NewL();
+ CleanupStack::PushL( msg );
+ msg->SetFunction( aMessage.Function() );
+ msg->SetSender( aMessage.Sender() );
+ msg->SetReceiver( aMessage.Receiver() );
+ msg->SetMsgId( aMessage.MsgId() );
+ msg->SetTrId( aMessage.TrId() );
+ msg->SetStatus( aMessage.Status() );
+ msg->SetData( aMessage.Data() );
+ iRequests.AppendL( msg );
+ CleanupStack::Pop( msg );
+ }
+ // ECcApiResp are ignored
}
}
@@ -509,25 +568,30 @@
TUint32 aSender,
TUint32 aNtf )
{
+ // Create notification
+ CCcSrvMsg* ntf = CCcSrvMsg::NewL();
+ CleanupStack::PushL( ntf );
+ ntf->SetMsgId( aNtf );
+ ntf->SetSender( aSender );
+
// Notify provider of registered observer
TBool found( EFalse );
CCcSrvMsg* req( NULL );
- TInt index( 0 );
for ( TInt i = 0; i < iRequests.Count() && !found; i++ )
{
req = iRequests[ i ];
- if ( req->Message().Function() == ECcWaitForApiReq &&
+ if ( req->Function() == ECcWaitForApiReq &&
!req->Message().IsNull() )
{
// Pending WaitForApiReq transaction found
- index = i;
+ iRequests.Remove( i );
found = ETrue;
}
}
if ( found )
{
// Write sender of message
- TPckgBuf<TUint32> packagedSender( aSender );
+ TPckgBuf<TUint32> packagedSender( ntf->Sender() );
req->Message().WriteL( 1, packagedSender, 0 );
// Write receiver of message
@@ -535,9 +599,6 @@
req->Message().WriteL( 2, packagedReceiver, 0 );
// Externalize notification
- CCcSrvMsg* ntf = CCcSrvMsg::NewL();
- CleanupStack::PushL( ntf );
- ntf->SetMsgId( aNtf );
HBufC8* ntfBuf = ntf->MarshalL();
CleanupStack::PushL( ntfBuf );
TPtr8 ntfPtr( NULL, 0);
@@ -550,13 +611,14 @@
// Complete request
req->Message().Complete( KErrNone );
- iRequests.Remove( index );
delete req;
-
+
}
else
{
- User::Leave( KErrNotFound );
+ // Store notification to be sent later
+ iRequests.AppendL( ntf );
+ CleanupStack::Pop( ntf );
}
}
--- a/contentcontrolsrv/ccsrvapi/bwins/ccsrvapiu.def Wed Mar 03 15:38:34 2010 +0200
+++ b/contentcontrolsrv/ccsrvapi/bwins/ccsrvapiu.def Wed May 12 13:36:47 2010 +0300
@@ -2,18 +2,24 @@
?SetStatus@CCcSrvMsg@@QAEXH@Z @ 1 NONAME ; void CCcSrvMsg::SetStatus(int)
?ExternalizeHeaderL@CCcSrvMsg@@QAEXAAVRWriteStream@@@Z @ 2 NONAME ; void CCcSrvMsg::ExternalizeHeaderL(class RWriteStream &)
?DataSize@CCcSrvMsg@@QAEHXZ @ 3 NONAME ; int CCcSrvMsg::DataSize(void)
- ?MsgId@CCcSrvMsg@@QAEKXZ @ 4 NONAME ; unsigned long CCcSrvMsg::MsgId(void)
- ?SetMsgId@CCcSrvMsg@@QAEXK@Z @ 5 NONAME ; void CCcSrvMsg::SetMsgId(unsigned long)
- ?Data@CCcSrvMsg@@QAE?AVTPtrC8@@XZ @ 6 NONAME ; class TPtrC8 CCcSrvMsg::Data(void)
- ?MarshalL@CCcSrvMsg@@QAEPAVHBufC8@@XZ @ 7 NONAME ; class HBufC8 * CCcSrvMsg::MarshalL(void)
- ?SetTrId@CCcSrvMsg@@QAEXK@Z @ 8 NONAME ; void CCcSrvMsg::SetTrId(unsigned long)
- ?InternalizeHeaderL@CCcSrvMsg@@QAEXAAVRReadStream@@@Z @ 9 NONAME ; void CCcSrvMsg::InternalizeHeaderL(class RReadStream &)
- ?NewL@CCcSrvMsg@@SAPAV1@XZ @ 10 NONAME ; class CCcSrvMsg * CCcSrvMsg::NewL(void)
- ?InternalizeL@CCcSrvMsg@@QAEXAAVRReadStream@@@Z @ 11 NONAME ; void CCcSrvMsg::InternalizeL(class RReadStream &)
- ?TrId@CCcSrvMsg@@QAEKXZ @ 12 NONAME ; unsigned long CCcSrvMsg::TrId(void)
- ?Message@CCcSrvMsg@@QAE?AVRMessage2@@XZ @ 13 NONAME ; class RMessage2 CCcSrvMsg::Message(void)
- ?SetData@CCcSrvMsg@@QAEXABVTDesC8@@@Z @ 14 NONAME ; void CCcSrvMsg::SetData(class TDesC8 const &)
- ?ExternalizeL@CCcSrvMsg@@QAEXAAVRWriteStream@@@Z @ 15 NONAME ; void CCcSrvMsg::ExternalizeL(class RWriteStream &)
- ?SetMessage@CCcSrvMsg@@QAEXAAVRMessage2@@@Z @ 16 NONAME ; void CCcSrvMsg::SetMessage(class RMessage2 &)
- ?Status@CCcSrvMsg@@QAEHXZ @ 17 NONAME ; int CCcSrvMsg::Status(void)
+ ?SetSender@CCcSrvMsg@@QAEXK@Z @ 4 NONAME ; void CCcSrvMsg::SetSender(unsigned long)
+ ?Sender@CCcSrvMsg@@QAEKXZ @ 5 NONAME ; unsigned long CCcSrvMsg::Sender(void)
+ ?MsgId@CCcSrvMsg@@QAEKXZ @ 6 NONAME ; unsigned long CCcSrvMsg::MsgId(void)
+ ?Receiver@CCcSrvMsg@@QAEKXZ @ 7 NONAME ; unsigned long CCcSrvMsg::Receiver(void)
+ ?SetFunction@CCcSrvMsg@@QAEXH@Z @ 8 NONAME ; void CCcSrvMsg::SetFunction(int)
+ ?SetMsgId@CCcSrvMsg@@QAEXK@Z @ 9 NONAME ; void CCcSrvMsg::SetMsgId(unsigned long)
+ ?Data@CCcSrvMsg@@QAE?AVTPtrC8@@XZ @ 10 NONAME ; class TPtrC8 CCcSrvMsg::Data(void)
+ ?MarshalL@CCcSrvMsg@@QAEPAVHBufC8@@XZ @ 11 NONAME ; class HBufC8 * CCcSrvMsg::MarshalL(void)
+ ?SetTrId@CCcSrvMsg@@QAEXK@Z @ 12 NONAME ; void CCcSrvMsg::SetTrId(unsigned long)
+ ?Function@CCcSrvMsg@@QAEHXZ @ 13 NONAME ; int CCcSrvMsg::Function(void)
+ ?InternalizeHeaderL@CCcSrvMsg@@QAEXAAVRReadStream@@@Z @ 14 NONAME ; void CCcSrvMsg::InternalizeHeaderL(class RReadStream &)
+ ?SetReceiver@CCcSrvMsg@@QAEXK@Z @ 15 NONAME ; void CCcSrvMsg::SetReceiver(unsigned long)
+ ?NewL@CCcSrvMsg@@SAPAV1@XZ @ 16 NONAME ; class CCcSrvMsg * CCcSrvMsg::NewL(void)
+ ?InternalizeL@CCcSrvMsg@@QAEXAAVRReadStream@@@Z @ 17 NONAME ; void CCcSrvMsg::InternalizeL(class RReadStream &)
+ ?TrId@CCcSrvMsg@@QAEKXZ @ 18 NONAME ; unsigned long CCcSrvMsg::TrId(void)
+ ?Message@CCcSrvMsg@@QAE?AVRMessage2@@XZ @ 19 NONAME ; class RMessage2 CCcSrvMsg::Message(void)
+ ?SetData@CCcSrvMsg@@QAEXABVTDesC8@@@Z @ 20 NONAME ; void CCcSrvMsg::SetData(class TDesC8 const &)
+ ?ExternalizeL@CCcSrvMsg@@QAEXAAVRWriteStream@@@Z @ 21 NONAME ; void CCcSrvMsg::ExternalizeL(class RWriteStream &)
+ ?SetMessage@CCcSrvMsg@@QAEXAAVRMessage2@@@Z @ 22 NONAME ; void CCcSrvMsg::SetMessage(class RMessage2 &)
+ ?Status@CCcSrvMsg@@QAEHXZ @ 23 NONAME ; int CCcSrvMsg::Status(void)
--- a/contentcontrolsrv/ccsrvapi/eabi/ccsrvapiu.def Wed Mar 03 15:38:34 2010 +0200
+++ b/contentcontrolsrv/ccsrvapi/eabi/ccsrvapiu.def Wed May 12 13:36:47 2010 +0300
@@ -1,21 +1,27 @@
EXPORTS
_ZN9CCcSrvMsg10SetMessageER9RMessage2 @ 1 NONAME
- _ZN9CCcSrvMsg12ExternalizeLER12RWriteStream @ 2 NONAME
- _ZN9CCcSrvMsg12InternalizeLER11RReadStream @ 3 NONAME
- _ZN9CCcSrvMsg18ExternalizeHeaderLER12RWriteStream @ 4 NONAME
- _ZN9CCcSrvMsg18InternalizeHeaderLER11RReadStream @ 5 NONAME
- _ZN9CCcSrvMsg4DataEv @ 6 NONAME
- _ZN9CCcSrvMsg4NewLEv @ 7 NONAME
- _ZN9CCcSrvMsg4TrIdEv @ 8 NONAME
- _ZN9CCcSrvMsg5MsgIdEv @ 9 NONAME
- _ZN9CCcSrvMsg6StatusEv @ 10 NONAME
- _ZN9CCcSrvMsg7MessageEv @ 11 NONAME
- _ZN9CCcSrvMsg7SetDataERK6TDesC8 @ 12 NONAME
- _ZN9CCcSrvMsg7SetTrIdEm @ 13 NONAME
- _ZN9CCcSrvMsg8DataSizeEv @ 14 NONAME
- _ZN9CCcSrvMsg8MarshalLEv @ 15 NONAME
- _ZN9CCcSrvMsg8SetMsgIdEm @ 16 NONAME
- _ZN9CCcSrvMsg9SetStatusEi @ 17 NONAME
- _ZTI9CCcSrvMsg @ 18 NONAME
- _ZTV9CCcSrvMsg @ 19 NONAME
+ _ZN9CCcSrvMsg11SetFunctionEi @ 2 NONAME
+ _ZN9CCcSrvMsg11SetReceiverEm @ 3 NONAME
+ _ZN9CCcSrvMsg12ExternalizeLER12RWriteStream @ 4 NONAME
+ _ZN9CCcSrvMsg12InternalizeLER11RReadStream @ 5 NONAME
+ _ZN9CCcSrvMsg18ExternalizeHeaderLER12RWriteStream @ 6 NONAME
+ _ZN9CCcSrvMsg18InternalizeHeaderLER11RReadStream @ 7 NONAME
+ _ZN9CCcSrvMsg4DataEv @ 8 NONAME
+ _ZN9CCcSrvMsg4NewLEv @ 9 NONAME
+ _ZN9CCcSrvMsg4TrIdEv @ 10 NONAME
+ _ZN9CCcSrvMsg5MsgIdEv @ 11 NONAME
+ _ZN9CCcSrvMsg6SenderEv @ 12 NONAME
+ _ZN9CCcSrvMsg6StatusEv @ 13 NONAME
+ _ZN9CCcSrvMsg7MessageEv @ 14 NONAME
+ _ZN9CCcSrvMsg7SetDataERK6TDesC8 @ 15 NONAME
+ _ZN9CCcSrvMsg7SetTrIdEm @ 16 NONAME
+ _ZN9CCcSrvMsg8DataSizeEv @ 17 NONAME
+ _ZN9CCcSrvMsg8FunctionEv @ 18 NONAME
+ _ZN9CCcSrvMsg8MarshalLEv @ 19 NONAME
+ _ZN9CCcSrvMsg8ReceiverEv @ 20 NONAME
+ _ZN9CCcSrvMsg8SetMsgIdEm @ 21 NONAME
+ _ZN9CCcSrvMsg9SetSenderEm @ 22 NONAME
+ _ZN9CCcSrvMsg9SetStatusEi @ 23 NONAME
+ _ZTI9CCcSrvMsg @ 24 NONAME
+ _ZTV9CCcSrvMsg @ 25 NONAME
--- a/contentcontrolsrv/ccsrvapi/inc/ccsrvapi.h Wed Mar 03 15:38:34 2010 +0200
+++ b/contentcontrolsrv/ccsrvapi/inc/ccsrvapi.h Wed May 12 13:36:47 2010 +0300
@@ -46,7 +46,7 @@
// - Arg[1]: Registered provider address (out), TUint32
// - Arg[2]: Not used
// - Arg[2]: Not used
- ECcReqisterProvider = ECcIPCFunctionBase,
+ ECcReqisterProvider,
// ----------------------------------------------------------------------------
// RegisterObserver
// ----------------------------------------------------------------------------
@@ -179,7 +179,7 @@
// ----------------------------------------------------------------------------
enum TCcSrvMessages
{
- ECcMessageBase = 0,
+ ECcMessageBase,
// ----------------------------------------------------------------------------
// RegisterObserverNtf
// ----------------------------------------------------------------------------
@@ -190,7 +190,7 @@
// - Message id: EHsCcRegisterObserverNtf
// - Transaction id: None
// - Message data: None
- ECcRegisterObserverNtf = ECcMessageBase,
+ ECcRegisterObserverNtf,
// ----------------------------------------------------------------------------
// UnregisterObserverNtf
// ----------------------------------------------------------------------------
@@ -258,6 +258,39 @@
IMPORT_C void SetMessage( RMessage2& aMessage );
/**
+ * Returns IPC function
+ */
+ IMPORT_C TInt Function();
+
+ /**
+ * Stores IPC function
+ * @param aFunction IPC function
+ */
+ IMPORT_C void SetFunction( TInt aFunction );
+
+ /**
+ * Returns sender of the message
+ */
+ IMPORT_C TUint32 Sender();
+
+ /**
+ * Stores sender of the message
+ * @param aSender Message sender
+ */
+ IMPORT_C void SetSender( TUint32 );
+
+ /**
+ * Returns receiver of the message
+ */
+ IMPORT_C TUint32 Receiver();
+
+ /**
+ * Stores receiver of the message
+ * @param aReceiver Message receiver
+ */
+ IMPORT_C void SetReceiver( TUint32 );
+
+ /**
* Returns message id
*/
IMPORT_C TUint32 MsgId();
@@ -343,6 +376,21 @@
RMessage2 iMessage;
/**
+ * IPC function
+ */
+ TInt iFunction;
+
+ /**
+ * Sender
+ */
+ TUint32 iSender;
+
+ /**
+ * Receiver
+ */
+ TUint32 iReceiver;
+
+ /**
* Message id
*/
TUint32 iMsgId;
--- a/contentcontrolsrv/ccsrvapi/src/ccsrvmsg.cpp Wed Mar 03 15:38:34 2010 +0200
+++ b/contentcontrolsrv/ccsrvapi/src/ccsrvmsg.cpp Wed May 12 13:36:47 2010 +0300
@@ -79,6 +79,55 @@
EXPORT_C void CCcSrvMsg::SetMessage( RMessage2& aMessage )
{
iMessage = aMessage;
+ SetFunction( aMessage.Function() );
+ }
+
+// -----------------------------------------------------------------------------
+// CCcSrvMsg::Sender()
+// -----------------------------------------------------------------------------
+EXPORT_C TInt CCcSrvMsg::Function()
+ {
+ return( iFunction ) ;
+ }
+
+// -----------------------------------------------------------------------------
+// CCcSrvMsg::SetSender()
+// -----------------------------------------------------------------------------
+EXPORT_C void CCcSrvMsg::SetFunction( TInt aFunction )
+ {
+ iFunction = aFunction;
+ }
+
+// -----------------------------------------------------------------------------
+// CCcSrvMsg::Sender()
+// -----------------------------------------------------------------------------
+EXPORT_C TUint32 CCcSrvMsg::Sender()
+ {
+ return( iSender ) ;
+ }
+
+// -----------------------------------------------------------------------------
+// CCcSrvMsg::SetSender()
+// -----------------------------------------------------------------------------
+EXPORT_C void CCcSrvMsg::SetSender( TUint32 aSender )
+ {
+ iSender = aSender;
+ }
+
+// -----------------------------------------------------------------------------
+// CCcSrvMsg::Receiver()
+// -----------------------------------------------------------------------------
+EXPORT_C TUint32 CCcSrvMsg::Receiver()
+ {
+ return( iReceiver ) ;
+ }
+
+// -----------------------------------------------------------------------------
+// CCcSrvMsg::SetReceiver()
+// -----------------------------------------------------------------------------
+EXPORT_C void CCcSrvMsg::SetReceiver( TUint32 aReceiver )
+ {
+ iReceiver = aReceiver;
}
// -----------------------------------------------------------------------------
--- a/contentcontrolsrv/hsccclient/hsccapiclient/inc/hsccapiclient.h Wed Mar 03 15:38:34 2010 +0200
+++ b/contentcontrolsrv/hsccclient/hsccapiclient/inc/hsccapiclient.h Wed May 12 13:36:47 2010 +0300
@@ -80,66 +80,91 @@
public: // From MHsContentController
/**
- *
+ * See from API documentation
*/
TInt WidgetListL( CHsContentInfoArray& aArray );
-
+
/**
- *
+ * See from API documentation
+ */
+ TInt WidgetListL( CHsContentInfo& aInfo, CHsContentInfoArray& aArray );
+
+ /**
+ * See from API documentation
*/
TInt ViewListL( CHsContentInfoArray& aArray );
-
+
/**
- *
+ * See from API documentation
+ */
+ TInt ViewListL( CHsContentInfo& aInfo, CHsContentInfoArray& aArray );
+
+ /**
+ * See from API documentation
*/
TInt AppListL( CHsContentInfoArray& aArray );
/**
- *
+ * See from API documentation
*/
TInt AddWidgetL( CHsContentInfo& aInfo );
/**
- *
+ * See from API documentation
*/
TInt RemoveWidgetL( CHsContentInfo& aInfo );
/**
- *
+ * See from API documentation
*/
TInt AddViewL( CHsContentInfo& aInfo );
/**
- *
+ * See from API documentation
*/
TInt RemoveViewL( CHsContentInfo& aInfo );
/**
- *
+ * See from API documentation
*/
TInt ActivateViewL( CHsContentInfo& aInfo );
/**
- *
+ * See from API documentation
*/
TInt ActivateAppL( CHsContentInfo& aInfo );
- /**
- *
- */
+ /**
+ * See from API documentation
+ */
TInt ActiveViewL( CHsContentInfo& aInfo );
/**
- *
+ * See from API documentation
*/
TInt ActiveAppL( CHsContentInfo& aInfo );
private: // Functions
/**
- *
+ * Requests receiving of content change notification
*/
void WaitForApiNtfL();
+ /**
+ * Internalize received response message
+ */
+ TInt InternalizeRespL( TPtr8& aResp, TUint32& aTrId, TUint32& aDataSize );
+
+ /**
+ * Internalize received CHsContentInfo type response message data
+ */
+ TInt InternalizeContentInfoL( CHsContentInfo& aInfo, TUint32 aTrId, TUint32 aDataSize );
+
+ /**
+ * Internalize received CHsContentInfoArray type response message data
+ */
+ TInt InternalizeContentInfoArrayL( CHsContentInfoArray& aInfo, TUint32 aTrId, TUint32 aDataSize );
+
private: // Data
/**
* Session to Homescreen content control server
--- a/contentcontrolsrv/hsccclient/hsccapiclient/src/hsccapiclient.cpp Wed Mar 03 15:38:34 2010 +0200
+++ b/contentcontrolsrv/hsccclient/hsccapiclient/src/hsccapiclient.cpp Wed May 12 13:36:47 2010 +0300
@@ -102,12 +102,27 @@
//
void CHsCcApiClient::RunL()
{
- if ( !iStatus.Int() )
+ TInt err( iStatus.Int() );
+ HBufC8* header( NULL );
+ TPtr8 headerPtr( NULL, 0 );
+
+ if ( !err )
+ {
+ // Read API request header
+ header = iApiHeader->AllocL();
+ CleanupStack::PushL( header );
+ headerPtr.Set( header->Des() );
+ }
+
+ // Receive next API notification
+ WaitForApiNtfL();
+
+ if ( !err )
{
// Get received message header
CCcSrvMsg* message = CCcSrvMsg::NewL();
CleanupStack::PushL( message );
- RDesReadStream stream( iApiHeaderPtr );
+ RDesReadStream stream( headerPtr );
CleanupClosePushL( stream );
message->InternalizeHeaderL( stream );
CleanupStack::PopAndDestroy( &stream );
@@ -138,10 +153,10 @@
}
CleanupStack::PopAndDestroy( message );
}
-
- // Receive next API notification
- WaitForApiNtfL();
-
+ if ( header )
+ {
+ CleanupStack::PopAndDestroy( header );
+ }
}
// -----------------------------------------------------------------------------
@@ -188,37 +203,73 @@
if ( !err )
{
- // Internalize WidgetListResp API response
- CCcSrvMsg* respMsg = CCcSrvMsg::NewL();
- CleanupStack::PushL( respMsg );
- RDesReadStream respStream( msgPtr );
- CleanupClosePushL( respStream );
- respMsg->InternalizeHeaderL( respStream );
- CleanupStack::PopAndDestroy( &respStream );
- err = respMsg->Status();
- if ( !err )
+ // Internalize response message
+ TUint32 trId;
+ TUint32 dataSize;
+ err = InternalizeRespL( msgPtr, trId, dataSize );
+ if ( !err && dataSize )
{
- if ( respMsg->DataSize() )
- {
- // Get API response data
- HBufC8* dataBuf = HBufC8::NewL( respMsg->DataSize() );
- CleanupStack::PushL( dataBuf );
- TPtr8 dataPtr( NULL, 0 );
- dataPtr.Set( dataBuf->Des() );
- TPckgBuf<TUint32> trId( respMsg->TrId() );
- err = iSession.GetMsgData( trId, dataPtr );
- if ( !err )
- {
- // Internalize API response data
- RDesReadStream dataStream( dataPtr );
- CleanupClosePushL( dataStream );
- aArray.InternalizeL( dataStream );
- CleanupStack::PopAndDestroy( &dataStream );
- }
- CleanupStack::PopAndDestroy( dataBuf );
- }
+ // Internalize API response data
+ err = InternalizeContentInfoArrayL( aArray, trId, dataSize );
}
- CleanupStack::PopAndDestroy( respMsg );
+ }
+
+ // Cleanup
+ CleanupStack::PopAndDestroy( msgBuf );
+ CleanupStack::PopAndDestroy( reqMsg );
+
+ return err;
+ }
+
+// -----------------------------------------------------------------------------
+// CHsCcApiClient::WidgetListL
+// -----------------------------------------------------------------------------
+//
+TInt CHsCcApiClient::WidgetListL(
+ CHsContentInfo& aInfo, CHsContentInfoArray& aArray )
+ {
+ TInt err( KErrNone );
+
+ // Create WidgetListReq API request
+ CCcSrvMsg* reqMsg = CCcSrvMsg::NewL();
+ CleanupStack::PushL( reqMsg );
+ reqMsg->SetMsgId( EHsCcWidgetListReq );
+ reqMsg->SetTrId( 0 );
+
+ // Marshal WidgetListReq data to a descriptor
+ HBufC8* dataBuf = aInfo.MarshalL();
+ TPtr8 dataPtr( NULL, 0 );
+ dataPtr.Set( dataBuf->Des() );
+ reqMsg->SetData( dataPtr );
+
+ delete dataBuf;
+ dataBuf = NULL;
+
+ // Marshal API request
+ HBufC8* msgBuf = reqMsg->MarshalL();
+ CleanupStack::PushL( msgBuf );
+ TPtr8 msgPtr( NULL, 0 );
+ msgPtr.Set( msgBuf->Des() );
+
+ // Send API request
+ // Sender and receiver address not defined -> message is routed
+ // according to the provider id
+ TPckgBuf<TUint32> provider( ECcHomescreen );
+ TPckgBuf<TUint32> sender;
+ TPckgBuf<TUint32> receiver;
+ err = iSession.Send( ECcApiReq, provider, sender, receiver, msgPtr );
+
+ if ( !err )
+ {
+ // Internalize response message
+ TUint32 trId;
+ TUint32 dataSize;
+ err = InternalizeRespL( msgPtr, trId, dataSize );
+ if ( !err && dataSize )
+ {
+ // Internalize API response data
+ err = InternalizeContentInfoArrayL( aArray, trId, dataSize );
+ }
}
// Cleanup
@@ -259,37 +310,73 @@
if ( !err )
{
- // Internalize ViewListResp API response
- CCcSrvMsg* respMsg = CCcSrvMsg::NewL();
- CleanupStack::PushL( respMsg );
- RDesReadStream respStream( msgPtr );
- CleanupClosePushL( respStream );
- respMsg->InternalizeHeaderL( respStream );
- CleanupStack::PopAndDestroy( &respStream );
- err = respMsg->Status();
- if ( !err )
+ // Internalize response message
+ TUint32 trId;
+ TUint32 dataSize;
+ err = InternalizeRespL( msgPtr, trId, dataSize );
+ if ( !err && dataSize )
{
- if ( respMsg->DataSize() )
- {
- // Get API response data
- HBufC8* dataBuf = HBufC8::NewL( respMsg->DataSize() );
- CleanupStack::PushL( dataBuf );
- TPtr8 dataPtr( NULL, 0 );
- dataPtr.Set( dataBuf->Des() );
- TPckgBuf<TUint32> trId( respMsg->TrId() );
- err = iSession.GetMsgData( trId, dataPtr );
- if ( !err )
- {
- // Internalize API response data
- RDesReadStream dataStream( dataPtr );
- CleanupClosePushL( dataStream );
- aArray.InternalizeL( dataStream );
- CleanupStack::PopAndDestroy( &dataStream );
- }
- CleanupStack::PopAndDestroy( dataBuf );
- }
+ // Internalize API response data
+ err = InternalizeContentInfoArrayL( aArray, trId, dataSize );
}
- CleanupStack::PopAndDestroy( respMsg );
+ }
+
+ // Cleanup
+ CleanupStack::PopAndDestroy( msgBuf );
+ CleanupStack::PopAndDestroy( reqMsg );
+
+ return err;
+ }
+
+// -----------------------------------------------------------------------------
+// CHsCcApiClient::ViewListL
+// -----------------------------------------------------------------------------
+//
+TInt CHsCcApiClient::ViewListL(
+ CHsContentInfo& aInfo, CHsContentInfoArray& aArray )
+ {
+ TInt err( KErrNone );
+
+ // Create ViewListReq API request
+ CCcSrvMsg* reqMsg = CCcSrvMsg::NewL();
+ CleanupStack::PushL( reqMsg );
+ reqMsg->SetMsgId( EHsCcViewListReq );
+ reqMsg->SetTrId( 0 );
+
+ // Marshal ViewListReq data to a descriptor
+ HBufC8* dataBuf = aInfo.MarshalL();
+ TPtr8 dataPtr( NULL, 0 );
+ dataPtr.Set( dataBuf->Des() );
+ reqMsg->SetData( dataPtr );
+
+ delete dataBuf;
+ dataBuf = NULL;
+
+ // Marshal API request
+ HBufC8* msgBuf = reqMsg->MarshalL();
+ CleanupStack::PushL( msgBuf );
+ TPtr8 msgPtr( NULL, 0 );
+ msgPtr.Set( msgBuf->Des() );
+
+ // Send API request
+ // Sender and receiver address not defined -> message is routed
+ // according to the provider id
+ TPckgBuf<TUint32> provider( ECcHomescreen );
+ TPckgBuf<TUint32> sender;
+ TPckgBuf<TUint32> receiver;
+ err = iSession.Send( ECcApiReq, provider, sender, receiver, msgPtr );
+
+ if ( !err )
+ {
+ // Internalize response message
+ TUint32 trId;
+ TUint32 dataSize;
+ err = InternalizeRespL( msgPtr, trId, dataSize );
+ if ( !err && dataSize )
+ {
+ // Internalize API response data
+ err = InternalizeContentInfoArrayL( aArray, trId, dataSize );
+ }
}
// Cleanup
@@ -330,37 +417,15 @@
if ( !err )
{
- // Internalize AppListResp API response
- CCcSrvMsg* respMsg = CCcSrvMsg::NewL();
- CleanupStack::PushL( respMsg );
- RDesReadStream respStream( msgPtr );
- CleanupClosePushL( respStream );
- respMsg->InternalizeHeaderL( respStream );
- CleanupStack::PopAndDestroy( &respStream );
- err = respMsg->Status();
- if ( !err )
+ // Internalize response message
+ TUint32 trId;
+ TUint32 dataSize;
+ err = InternalizeRespL( msgPtr, trId, dataSize );
+ if ( !err && dataSize )
{
- if ( respMsg->DataSize() )
- {
- // Get API response data
- HBufC8* dataBuf = HBufC8::NewL( respMsg->DataSize() );
- CleanupStack::PushL( dataBuf );
- TPtr8 dataPtr( NULL, 0 );
- dataPtr.Set( dataBuf->Des() );
- TPckgBuf<TUint32> trId( respMsg->TrId() );
- err = iSession.GetMsgData( trId, dataPtr );
- if ( !err )
- {
- // Internalize API response data
- RDesReadStream dataStream( dataPtr );
- CleanupClosePushL( dataStream );
- aArray.InternalizeL( dataStream );
- CleanupStack::PopAndDestroy( &dataStream );
- }
- CleanupStack::PopAndDestroy( dataBuf );
- }
+ // Internalize API response data
+ err = InternalizeContentInfoArrayL( aArray, trId, dataSize );
}
- CleanupStack::PopAndDestroy( respMsg );
}
// Cleanup
@@ -409,15 +474,10 @@
if ( !err )
{
- // Internalize AddWidgetResp API response
- CCcSrvMsg* respMsg = CCcSrvMsg::NewL();
- CleanupStack::PushL( respMsg );
- RDesReadStream respStream( msgPtr );
- CleanupClosePushL( respStream );
- respMsg->InternalizeHeaderL( respStream );
- CleanupStack::PopAndDestroy( &respStream );
- err = respMsg->Status();
- CleanupStack::PopAndDestroy( respMsg );
+ // Internalize response message
+ TUint32 trId;
+ TUint32 dataSize;
+ err = InternalizeRespL( msgPtr, trId, dataSize );
}
// Cleanup
@@ -466,15 +526,10 @@
if ( !err )
{
- // Internalize RemoveWidgetResp API response
- CCcSrvMsg* respMsg = CCcSrvMsg::NewL();
- CleanupStack::PushL( respMsg );
- RDesReadStream respStream( msgPtr );
- CleanupClosePushL( respStream );
- respMsg->InternalizeHeaderL( respStream );
- CleanupStack::PopAndDestroy( &respStream );
- err = respMsg->Status();
- CleanupStack::PopAndDestroy( respMsg );
+ // Internalize response message
+ TUint32 trId;
+ TUint32 dataSize;
+ err = InternalizeRespL( msgPtr, trId, dataSize );
}
// Cleanup
@@ -523,15 +578,10 @@
if ( !err )
{
- // Internalize AddViewResp API response
- CCcSrvMsg* respMsg = CCcSrvMsg::NewL();
- CleanupStack::PushL( respMsg );
- RDesReadStream respStream( msgPtr );
- CleanupClosePushL( respStream );
- respMsg->InternalizeHeaderL( respStream );
- CleanupStack::PopAndDestroy( &respStream );
- err = respMsg->Status();
- CleanupStack::PopAndDestroy( respMsg );
+ // Internalize response message
+ TUint32 trId;
+ TUint32 dataSize;
+ err = InternalizeRespL( msgPtr, trId, dataSize );
}
// Cleanup
@@ -580,15 +630,10 @@
if ( !err )
{
- // Internalize RemoveViewResp API response
- CCcSrvMsg* respMsg = CCcSrvMsg::NewL();
- CleanupStack::PushL( respMsg );
- RDesReadStream respStream( msgPtr );
- CleanupClosePushL( respStream );
- respMsg->InternalizeHeaderL( respStream );
- CleanupStack::PopAndDestroy( &respStream );
- err = respMsg->Status();
- CleanupStack::PopAndDestroy( respMsg );
+ // Internalize response message
+ TUint32 trId;
+ TUint32 dataSize;
+ err = InternalizeRespL( msgPtr, trId, dataSize );
}
// Cleanup
@@ -637,15 +682,10 @@
if ( !err )
{
- // Internalize ActivateViewResp API response
- CCcSrvMsg* respMsg = CCcSrvMsg::NewL();
- CleanupStack::PushL( respMsg );
- RDesReadStream respStream( msgPtr );
- CleanupClosePushL( respStream );
- respMsg->InternalizeHeaderL( respStream );
- CleanupStack::PopAndDestroy( &respStream );
- err = respMsg->Status();
- CleanupStack::PopAndDestroy( respMsg );
+ // Internalize response message
+ TUint32 trId;
+ TUint32 dataSize;
+ err = InternalizeRespL( msgPtr, trId, dataSize );
}
// Cleanup
@@ -694,15 +734,10 @@
if ( !err )
{
- // Internalize ActivateAppResp API response
- CCcSrvMsg* respMsg = CCcSrvMsg::NewL();
- CleanupStack::PushL( respMsg );
- RDesReadStream respStream( msgPtr );
- CleanupClosePushL( respStream );
- respMsg->InternalizeHeaderL( respStream );
- CleanupStack::PopAndDestroy( &respStream );
- err = respMsg->Status();
- CleanupStack::PopAndDestroy( respMsg );
+ // Internalize response message
+ TUint32 trId;
+ TUint32 dataSize;
+ err = InternalizeRespL( msgPtr, trId, dataSize );
}
// Cleanup
@@ -743,37 +778,15 @@
if ( !err )
{
- // Internalize AppListResp API response
- CCcSrvMsg* respMsg = CCcSrvMsg::NewL();
- CleanupStack::PushL( respMsg );
- RDesReadStream respStream( msgPtr );
- CleanupClosePushL( respStream );
- respMsg->InternalizeHeaderL( respStream );
- CleanupStack::PopAndDestroy( &respStream );
- err = respMsg->Status();
- if ( !err )
+ // Internalize response message
+ TUint32 trId;
+ TUint32 dataSize;
+ err = InternalizeRespL( msgPtr, trId, dataSize );
+ if ( !err && dataSize )
{
- if ( respMsg->DataSize() )
- {
- // Get API response data
- HBufC8* dataBuf = HBufC8::NewL( respMsg->DataSize() );
- CleanupStack::PushL( dataBuf );
- TPtr8 dataPtr( NULL, 0 );
- dataPtr.Set( dataBuf->Des() );
- TPckgBuf<TUint32> trId( respMsg->TrId() );
- err = iSession.GetMsgData( trId, dataPtr );
- if ( !err )
- {
- // Internalize API response data
- RDesReadStream dataStream( dataPtr );
- CleanupClosePushL( dataStream );
- aInfo.InternalizeL( dataStream );
- CleanupStack::PopAndDestroy( &dataStream );
- }
- CleanupStack::PopAndDestroy( dataBuf );
- }
+ // Internalize API response data
+ err = InternalizeContentInfoL( aInfo, trId, dataSize );
}
- CleanupStack::PopAndDestroy( respMsg );
}
// Cleanup
@@ -814,37 +827,15 @@
if ( !err )
{
- // Internalize AppListResp API response
- CCcSrvMsg* respMsg = CCcSrvMsg::NewL();
- CleanupStack::PushL( respMsg );
- RDesReadStream respStream( msgPtr );
- CleanupClosePushL( respStream );
- respMsg->InternalizeHeaderL( respStream );
- CleanupStack::PopAndDestroy( &respStream );
- err = respMsg->Status();
- if ( !err )
+ // Internalize response message
+ TUint32 trId;
+ TUint32 dataSize;
+ err = InternalizeRespL( msgPtr, trId, dataSize );
+ if ( !err && dataSize )
{
- if ( respMsg->DataSize() )
- {
- // Get API response data
- HBufC8* dataBuf = HBufC8::NewL( respMsg->DataSize() );
- CleanupStack::PushL( dataBuf );
- TPtr8 dataPtr( NULL, 0 );
- dataPtr.Set( dataBuf->Des() );
- TPckgBuf<TUint32> trId( respMsg->TrId() );
- err = iSession.GetMsgData( trId, dataPtr );
- if ( !err )
- {
- // Internalize API response data
- RDesReadStream dataStream( dataPtr );
- CleanupClosePushL( dataStream );
- aInfo.InternalizeL( dataStream );
- CleanupStack::PopAndDestroy( &dataStream );
- }
- CleanupStack::PopAndDestroy( dataBuf );
- }
+ // Internalize API response data
+ err = InternalizeContentInfoL( aInfo, trId, dataSize );
}
- CleanupStack::PopAndDestroy( respMsg );
}
// Cleanup
@@ -878,4 +869,83 @@
}
+// -----------------------------------------------------------------------------
+// CHsCcApiClient::InternalizeRespL()
+// -----------------------------------------------------------------------------
+//
+TInt CHsCcApiClient::InternalizeRespL(
+ TPtr8& aResp, TUint32& aTrId, TUint32& aDataSize )
+ {
+ TInt err( KErrNone );
+
+ CCcSrvMsg* respMsg = CCcSrvMsg::NewL();
+ CleanupStack::PushL( respMsg );
+ RDesReadStream respStream( aResp );
+ CleanupClosePushL( respStream );
+ respMsg->InternalizeHeaderL( respStream );
+ CleanupStack::PopAndDestroy( &respStream );
+ err = respMsg->Status();
+ aTrId = respMsg->TrId();
+ aDataSize = respMsg->DataSize();
+ CleanupStack::PopAndDestroy( respMsg );
+
+ return err;
+ }
+
+// -----------------------------------------------------------------------------
+// CHsCcApiClient::InternalizeContentInfoL()
+// -----------------------------------------------------------------------------
+//
+TInt CHsCcApiClient::InternalizeContentInfoL(
+ CHsContentInfo& aInfo, TUint32 aTrId, TUint32 aDataSize )
+ {
+ TInt err( KErrNone );
+
+ HBufC8* dataBuf = HBufC8::NewL( aDataSize );
+ CleanupStack::PushL( dataBuf );
+ TPtr8 dataPtr( NULL, 0 );
+ dataPtr.Set( dataBuf->Des() );
+ TPckgBuf<TUint32> trId( aTrId );
+ err = iSession.GetMsgData( trId, dataPtr );
+ if ( !err )
+ {
+ // Internalize API response data
+ RDesReadStream dataStream( dataPtr );
+ CleanupClosePushL( dataStream );
+ aInfo.InternalizeL( dataStream );
+ CleanupStack::PopAndDestroy( &dataStream );
+ }
+ CleanupStack::PopAndDestroy( dataBuf );
+
+ return err;
+ }
+
+// -----------------------------------------------------------------------------
+// CHsCcApiClient::InternalizeContentInfoArrayL()
+// -----------------------------------------------------------------------------
+//
+TInt CHsCcApiClient::InternalizeContentInfoArrayL(
+ CHsContentInfoArray& aInfo, TUint32 aTrId, TUint32 aDataSize )
+ {
+ TInt err( KErrNone );
+
+ HBufC8* dataBuf = HBufC8::NewL( aDataSize );
+ CleanupStack::PushL( dataBuf );
+ TPtr8 dataPtr( NULL, 0 );
+ dataPtr.Set( dataBuf->Des() );
+ TPckgBuf<TUint32> trId( aTrId );
+ err = iSession.GetMsgData( trId, dataPtr );
+ if ( !err )
+ {
+ // Internalize API response data
+ RDesReadStream dataStream( dataPtr );
+ CleanupClosePushL( dataStream );
+ aInfo.InternalizeL( dataStream );
+ CleanupStack::PopAndDestroy( &dataStream );
+ }
+ CleanupStack::PopAndDestroy( dataBuf );
+
+ return err;
+ }
+
// End of file
--- a/contentcontrolsrv/hsccclient/hsccproviderclient/inc/hsccproviderclient.h Wed Mar 03 15:38:34 2010 +0200
+++ b/contentcontrolsrv/hsccclient/hsccproviderclient/inc/hsccproviderclient.h Wed May 12 13:36:47 2010 +0300
@@ -106,84 +106,112 @@
*
*/
void HandleWidgetListReqL(
+ TUint32 aSender,
+ TUint32 aReceiver,
CCcSrvMsg& aMessage );
/**
*
*/
void HandleRegisterObserverNtfL(
+ TUint32 aSender,
+ TUint32 aReceiver,
CCcSrvMsg& aMessage );
/**
*
*/
void HandleUnregisterObserverNtfL(
+ TUint32 aSender,
+ TUint32 aReceiver,
CCcSrvMsg& aMessage );
/**
*
*/
void HandleAddWidgetReqL(
+ TUint32 aSender,
+ TUint32 aReceiver,
CCcSrvMsg& aMessage );
/**
*
*/
void HandleRemoveWidgetReqL(
+ TUint32 aSender,
+ TUint32 aReceiver,
CCcSrvMsg& aMessage );
/**
*
*/
void HandleViewListReqL(
+ TUint32 aSender,
+ TUint32 aReceiver,
CCcSrvMsg& aMessage );
/**
*
*/
void HandleAddViewReqL(
+ TUint32 aSender,
+ TUint32 aReceiver,
CCcSrvMsg& aMessage );
/**
*
*/
void HandleRemoveViewReqL(
+ TUint32 aSender,
+ TUint32 aReceiver,
CCcSrvMsg& aMessage );
/**
*
*/
void HandleActivateViewReqL(
+ TUint32 aSender,
+ TUint32 aReceiver,
CCcSrvMsg& aMessage );
/**
*
*/
void HandleActiveViewReqL(
+ TUint32 aSender,
+ TUint32 aReceiver,
CCcSrvMsg& aMessage );
/**
*
*/
void HandleAppListReqL(
+ TUint32 aSender,
+ TUint32 aReceiver,
CCcSrvMsg& aMessage );
/**
*
*/
void HandleActivateAppReqL(
+ TUint32 aSender,
+ TUint32 aReceiver,
CCcSrvMsg& aMessage );
/**
*
*/
void HandleActiveAppReqL(
+ TUint32 aSender,
+ TUint32 aReceiver,
CCcSrvMsg& aMessage );
/**
*
*/
void HandleNotSupportedReqL(
+ TUint32 aSender,
+ TUint32 aReceiver,
CCcSrvMsg& aMessage );
/**
@@ -196,6 +224,8 @@
*
*/
void SendRespL(
+ TUint32 aSender,
+ TUint32 aReceiver,
CCcSrvMsg& aMessage );
private: // Data
--- a/contentcontrolsrv/hsccclient/hsccproviderclient/src/hsccproviderclient.cpp Wed Mar 03 15:38:34 2010 +0200
+++ b/contentcontrolsrv/hsccclient/hsccproviderclient/src/hsccproviderclient.cpp Wed May 12 13:36:47 2010 +0300
@@ -102,12 +102,32 @@
void CHsCcProviderClient::RunL()
{
- if ( !iStatus.Int() )
+ TInt err( iStatus.Int() );
+ HBufC8* header( NULL );
+ TPtr8 headerPtr( NULL, 0 );
+ TUint32 sender( 0 );
+ TUint32 receiver( 0 );
+ if ( !err )
+ {
+ // Read API request header
+ header = iApiHeader->AllocL();
+ CleanupStack::PushL( header );
+ headerPtr.Set( header->Des() );
+ // Read sender
+ sender = iPckgSender();
+ // Read receiver
+ receiver = iPckgReceiver();
+ }
+
+ // Receive next API request
+ WaitForApiReqL();
+
+ if ( !err )
{
// Get received message header
CCcSrvMsg* message = CCcSrvMsg::NewL();
CleanupStack::PushL( message );
- RDesReadStream stream( iApiHeaderPtr );
+ RDesReadStream stream( headerPtr );
CleanupClosePushL( stream );
message->InternalizeHeaderL( stream );
CleanupStack::PopAndDestroy( &stream );
@@ -127,54 +147,54 @@
switch ( message->MsgId() )
{
case ECcRegisterObserverNtf:
- HandleRegisterObserverNtfL( *message );
+ HandleRegisterObserverNtfL( sender, receiver, *message );
break;
case ECcUnregisterObserverNtf:
- HandleUnregisterObserverNtfL( *message );
+ HandleUnregisterObserverNtfL( sender, receiver, *message );
break;
case EHsCcWidgetListReq:
- HandleWidgetListReqL( *message );
+ HandleWidgetListReqL( sender, receiver, *message );
break;
case EHsCcAddWidgetReq:
- HandleAddWidgetReqL( *message );
+ HandleAddWidgetReqL( sender, receiver, *message );
break;
case EHsCcRemoveWidgetReq:
- HandleRemoveWidgetReqL( *message );
+ HandleRemoveWidgetReqL( sender, receiver, *message );
break;
case EHsCcViewListReq:
- HandleViewListReqL( *message );
+ HandleViewListReqL( sender, receiver, *message );
break;
case EHsCcAddViewReq:
- HandleAddViewReqL( *message );
+ HandleAddViewReqL( sender, receiver, *message );
break;
case EHsCcRemoveViewReq:
- HandleRemoveViewReqL( *message );
+ HandleRemoveViewReqL( sender, receiver, *message );
break;
case EHsCcActivateViewReq:
- HandleActivateViewReqL( *message );
+ HandleActivateViewReqL( sender, receiver, *message );
break;
case EHsCcAppListReq:
- HandleAppListReqL( *message );
+ HandleAppListReqL( sender, receiver, *message );
break;
case EHsCcActivateAppReq:
- HandleActivateAppReqL( *message );
+ HandleActivateAppReqL( sender, receiver, *message );
break;
case EHsCcActiveAppReq:
- HandleActiveAppReqL( *message );
+ HandleActiveAppReqL( sender, receiver, *message );
break;
case EHsCcActiveViewReq:
- HandleActiveViewReqL( *message );
+ HandleActiveViewReqL( sender, receiver, *message );
break;
default:
- HandleNotSupportedReqL( *message );
+ HandleNotSupportedReqL( sender, receiver, *message );
break;
}
CleanupStack::PopAndDestroy( message );
}
-
- // Receive next API request
- WaitForApiReqL();
-
+ if ( header )
+ {
+ CleanupStack::PopAndDestroy( header );
+ }
}
// -----------------------------------------------------------------------------
@@ -255,10 +275,11 @@
// -----------------------------------------------------------------------------
//
void CHsCcProviderClient::HandleRegisterObserverNtfL(
+ TUint32 aSender,
+ TUint32 /* aReceiver */,
CCcSrvMsg& /* aMessage */ )
{
- TUint32 observer = iPckgSender();
- iObservers.AppendL( observer );
+ iObservers.AppendL( aSender );
}
// -----------------------------------------------------------------------------
@@ -266,12 +287,13 @@
// -----------------------------------------------------------------------------
//
void CHsCcProviderClient::HandleUnregisterObserverNtfL(
+ TUint32 aSender,
+ TUint32 /* aReceiver */,
CCcSrvMsg& /* aMessage */ )
{
- TUint32 observer = iPckgSender();
for ( TInt i = 0; i < iObservers.Count(); i++ )
{
- if ( iObservers[ i ] == observer )
+ if ( iObservers[ i ] == aSender )
{
iObservers.Remove( i );
break;
@@ -284,12 +306,36 @@
// -----------------------------------------------------------------------------
//
void CHsCcProviderClient::HandleWidgetListReqL(
+ TUint32 aSender,
+ TUint32 aReceiver,
CCcSrvMsg& aMessage )
{
+
+ TInt err( KErrNone );
// Get widget list
CHsContentInfoArray* widgets = CHsContentInfoArray::NewL();
CleanupStack::PushL( widgets );
- TInt err = iController.WidgetListL( *widgets );
+
+ if ( aMessage.DataSize() )
+ {
+ // Internalize message data
+ RDesReadStream dataStream( aMessage.Data() );
+ CleanupClosePushL( dataStream );
+ CHsContentInfo* info = CHsContentInfo::NewL( dataStream );
+ CleanupStack::PopAndDestroy( &dataStream );
+ CleanupStack::PushL( info );
+
+ // Get list of widgets included in the defined
+ // application configuration or view
+ err = iController.WidgetListL( *info, *widgets );
+
+ CleanupStack::PopAndDestroy( info );
+ }
+ else
+ {
+ // Get list of available widgets
+ err = iController.WidgetListL( *widgets );
+ }
// Create and send WidgetListResp
CCcSrvMsg* message = CCcSrvMsg::NewL();
@@ -309,7 +355,7 @@
CleanupStack::PopAndDestroy( dataBuf );
}
- SendRespL( *message );
+ SendRespL( aReceiver, aSender, *message );
CleanupStack::PopAndDestroy( message );
CleanupStack::PopAndDestroy( widgets );
@@ -321,6 +367,8 @@
// -----------------------------------------------------------------------------
//
void CHsCcProviderClient::HandleAddWidgetReqL(
+ TUint32 aSender,
+ TUint32 aReceiver,
CCcSrvMsg& aMessage )
{
TInt err( KErrNone );
@@ -352,7 +400,7 @@
message->SetStatus( err );
message->SetData( KNullDesC8() );
- SendRespL( *message );
+ SendRespL( aReceiver, aSender, *message );
CleanupStack::PopAndDestroy( message );
}
@@ -362,6 +410,8 @@
// -----------------------------------------------------------------------------
//
void CHsCcProviderClient::HandleRemoveWidgetReqL(
+ TUint32 aSender,
+ TUint32 aReceiver,
CCcSrvMsg& aMessage )
{
TInt err( KErrNone );
@@ -393,7 +443,7 @@
message->SetStatus( err );
message->SetData( KNullDesC8() );
- SendRespL( *message );
+ SendRespL( aReceiver, aSender, *message );
CleanupStack::PopAndDestroy( message );
}
@@ -403,13 +453,37 @@
// -----------------------------------------------------------------------------
//
void CHsCcProviderClient::HandleViewListReqL(
+ TUint32 aSender,
+ TUint32 aReceiver,
CCcSrvMsg& aMessage )
{
+ TInt err( KErrNone );
// Get view list
CHsContentInfoArray* views = CHsContentInfoArray::NewL();
CleanupStack::PushL( views );
- TInt err = iController.ViewListL( *views );
+
+ if ( aMessage.DataSize() )
+ {
+ // Internalize message data
+ RDesReadStream dataStream( aMessage.Data() );
+ CleanupClosePushL( dataStream );
+ CHsContentInfo* info = CHsContentInfo::NewL( dataStream );
+ CleanupStack::PopAndDestroy( &dataStream );
+ CleanupStack::PushL( info );
+ // Get list of views included in the defined
+ // application configuration
+ err = iController.ViewListL( *info, *views );
+
+ CleanupStack::PopAndDestroy( info );
+ }
+ else
+ {
+ // Get list of available views
+ err = iController.ViewListL( *views );
+ }
+
+
// Create and send ViewListResp
CCcSrvMsg* message = CCcSrvMsg::NewL();
CleanupStack::PushL( message );
@@ -428,7 +502,7 @@
CleanupStack::PopAndDestroy( dataBuf );
}
- SendRespL( *message );
+ SendRespL( aReceiver, aSender, *message );
CleanupStack::PopAndDestroy( message );
CleanupStack::PopAndDestroy( views );
@@ -440,6 +514,8 @@
// -----------------------------------------------------------------------------
//
void CHsCcProviderClient::HandleAddViewReqL(
+ TUint32 aSender,
+ TUint32 aReceiver,
CCcSrvMsg& aMessage )
{
TInt err( KErrNone );
@@ -471,7 +547,7 @@
message->SetStatus( err );
message->SetData( KNullDesC8() );
- SendRespL( *message );
+ SendRespL( aReceiver, aSender, *message );
CleanupStack::PopAndDestroy( message );
}
@@ -481,6 +557,8 @@
// -----------------------------------------------------------------------------
//
void CHsCcProviderClient::HandleRemoveViewReqL(
+ TUint32 aSender,
+ TUint32 aReceiver,
CCcSrvMsg& aMessage )
{
TInt err( KErrNone );
@@ -512,7 +590,7 @@
message->SetStatus( err );
message->SetData( KNullDesC8() );
- SendRespL( *message );
+ SendRespL( aReceiver, aSender, *message );
CleanupStack::PopAndDestroy( message );
}
@@ -522,6 +600,8 @@
// -----------------------------------------------------------------------------
//
void CHsCcProviderClient::HandleActivateViewReqL(
+ TUint32 aSender,
+ TUint32 aReceiver,
CCcSrvMsg& aMessage )
{
TInt err( KErrNone );
@@ -553,7 +633,7 @@
message->SetStatus( err );
message->SetData( KNullDesC8() );
- SendRespL( *message );
+ SendRespL( aReceiver, aSender, *message );
CleanupStack::PopAndDestroy( message );
}
@@ -563,6 +643,8 @@
// -----------------------------------------------------------------------------
//
void CHsCcProviderClient::HandleActiveViewReqL(
+ TUint32 aSender,
+ TUint32 aReceiver,
CCcSrvMsg& aMessage )
{
// Get active view
@@ -588,7 +670,7 @@
CleanupStack::PopAndDestroy( dataBuf );
}
- SendRespL( *message );
+ SendRespL( aReceiver, aSender, *message );
CleanupStack::PopAndDestroy( message );
CleanupStack::PopAndDestroy( view );
@@ -600,6 +682,8 @@
// -----------------------------------------------------------------------------
//
void CHsCcProviderClient::HandleAppListReqL(
+ TUint32 aSender,
+ TUint32 aReceiver,
CCcSrvMsg& aMessage )
{
// Get app list
@@ -624,7 +708,7 @@
CleanupStack::PopAndDestroy( dataBuf );
}
- SendRespL( *message );
+ SendRespL( aReceiver, aSender, *message );
CleanupStack::PopAndDestroy( message );
CleanupStack::PopAndDestroy( apps );
@@ -636,6 +720,8 @@
// -----------------------------------------------------------------------------
//
void CHsCcProviderClient::HandleActivateAppReqL(
+ TUint32 aSender,
+ TUint32 aReceiver,
CCcSrvMsg& aMessage )
{
TInt err( KErrNone );
@@ -667,7 +753,7 @@
message->SetStatus( err );
message->SetData( KNullDesC8() );
- SendRespL( *message );
+ SendRespL( aReceiver, aSender, *message );
CleanupStack::PopAndDestroy( message );
}
@@ -677,6 +763,8 @@
// -----------------------------------------------------------------------------
//
void CHsCcProviderClient::HandleActiveAppReqL(
+ TUint32 aSender,
+ TUint32 aReceiver,
CCcSrvMsg& aMessage )
{
// Get active application info
@@ -702,7 +790,7 @@
CleanupStack::PopAndDestroy( dataBuf );
}
- SendRespL( *message );
+ SendRespL( aReceiver, aSender, *message );
CleanupStack::PopAndDestroy( message );
CleanupStack::PopAndDestroy( app );
@@ -713,6 +801,8 @@
// -----------------------------------------------------------------------------
//
void CHsCcProviderClient::HandleNotSupportedReqL(
+ TUint32 aSender,
+ TUint32 aReceiver,
CCcSrvMsg& aMessage )
{
// Create and send NotSupportedResp
@@ -723,7 +813,7 @@
message->SetStatus( KErrNone );
message->SetData( KNullDesC8() );
- SendRespL( *message );
+ SendRespL( aReceiver, aSender, *message );
CleanupStack::PopAndDestroy( message );
@@ -759,6 +849,8 @@
// -----------------------------------------------------------------------------
//
void CHsCcProviderClient::SendRespL(
+ TUint32 aSender,
+ TUint32 aReceiver,
CCcSrvMsg& aMessage )
{
HBufC8* msgBuf = aMessage.MarshalL();
@@ -767,7 +859,9 @@
msgPtr.Set( msgBuf->Des() );
TPckgBuf<TUint32> provider( ECcHomescreen );
- iSession.Send( ECcApiResp, provider, iPckgReceiver, iPckgSender, msgPtr );
+ TPckgBuf<TUint32> sender( aSender );
+ TPckgBuf<TUint32> receiver( aReceiver );
+ iSession.Send( ECcApiResp, provider, sender, receiver, msgPtr );
CleanupStack::PopAndDestroy( msgBuf );
}
--- a/contentcontrolsrv/hscontentinfo/bwins/hscontentinfo.def Wed Mar 03 15:38:34 2010 +0200
+++ b/contentcontrolsrv/hscontentinfo/bwins/hscontentinfo.def Wed May 12 13:36:47 2010 +0300
@@ -14,33 +14,35 @@
?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 &)
+ ?SetIsFull@CHsContentInfo@@QAEXH@Z @ 16 NONAME ; void CHsContentInfo::SetIsFull(int)
+ ?PublisherId@CHsContentInfo@@QBEABVTDesC16@@XZ @ 17 NONAME ; class TDesC16 const & CHsContentInfo::PublisherId(void) const
+ ?IsFull@CHsContentInfo@@QBEHXZ @ 18 NONAME ; int CHsContentInfo::IsFull(void) const
+ ?SetInstallationTime@CHsContentInfo@@QAEXAAVTTime@@@Z @ 19 NONAME ; void CHsContentInfo::SetInstallationTime(class TTime &)
+ ?SetIsWrt@CHsContentInfo@@QAEXH@Z @ 20 NONAME ; void CHsContentInfo::SetIsWrt(int)
+ ?SetPublisherUidL@CHsContentInfo@@QAEXABVTDesC8@@@Z @ 21 NONAME ; void CHsContentInfo::SetPublisherUidL(class TDesC8 const &)
+ ?NewL@CHsContentInfoArray@@SAPAV1@XZ @ 22 NONAME ; class CHsContentInfoArray * CHsContentInfoArray::NewL(void)
+ ?SetNameL@CHsContentInfo@@QAEXABVTDesC8@@@Z @ 23 NONAME ; void CHsContentInfo::SetNameL(class TDesC8 const &)
+ ?Name@CHsContentInfo@@QBEABVTDesC16@@XZ @ 24 NONAME ; class TDesC16 const & CHsContentInfo::Name(void) const
+ ?Type@CHsContentInfo@@QBEABVTDesC8@@XZ @ 25 NONAME ; class TDesC8 const & CHsContentInfo::Type(void) const
+ ?NewLC@CHsContentInfo@@SAPAV1@XZ @ 26 NONAME ; class CHsContentInfo * CHsContentInfo::NewLC(void)
+ ?InstallationTime@CHsContentInfo@@QBE?AVTTime@@XZ @ 27 NONAME ; class TTime CHsContentInfo::InstallationTime(void) const
+ ?NewL@CHsContentInfo@@SAPAV1@AAVRReadStream@@@Z @ 28 NONAME ; class CHsContentInfo * CHsContentInfo::NewL(class RReadStream &)
+ ?CloneL@CHsContentInfo@@QAEPAV1@XZ @ 29 NONAME ; class CHsContentInfo * CHsContentInfo::CloneL(void)
+ ?SetCanBeAdded@CHsContentInfo@@QAEXH@Z @ 30 NONAME ; void CHsContentInfo::SetCanBeAdded(int)
+ ?ExternalizeL@CHsContentInfoArray@@QAEXAAVRWriteStream@@@Z @ 31 NONAME ; void CHsContentInfoArray::ExternalizeL(class RWriteStream &)
+ ?SetUidL@CHsContentInfo@@QAEXABVTDesC8@@@Z @ 32 NONAME ; void CHsContentInfo::SetUidL(class TDesC8 const &)
+ ?MaxWidgets@CHsContentInfo@@QBEHXZ @ 33 NONAME ; int CHsContentInfo::MaxWidgets(void) const
+ ?Uid@CHsContentInfo@@QBEABVTDesC8@@XZ @ 34 NONAME ; class TDesC8 const & CHsContentInfo::Uid(void) const
+ ?MarshalL@CHsContentInfoArray@@QAEPAVHBufC8@@XZ @ 35 NONAME ; class HBufC8 * CHsContentInfoArray::MarshalL(void)
+ ?SetPublisherIdL@CHsContentInfo@@QAEXABVTDesC16@@@Z @ 36 NONAME ; void CHsContentInfo::SetPublisherIdL(class TDesC16 const &)
+ ?InternalizeL@CHsContentInfo@@QAEXAAVRReadStream@@@Z @ 37 NONAME ; void CHsContentInfo::InternalizeL(class RReadStream &)
+ ?CanBeRemoved@CHsContentInfo@@QBEHXZ @ 38 NONAME ; int CHsContentInfo::CanBeRemoved(void) const
+ ?SetCanBeRemoved@CHsContentInfo@@QAEXH@Z @ 39 NONAME ; void CHsContentInfo::SetCanBeRemoved(int)
+ ?SetIconPathL@CHsContentInfo@@QAEXABVTDesC16@@@Z @ 40 NONAME ; void CHsContentInfo::SetIconPathL(class TDesC16 const &)
+ ?Description@CHsContentInfo@@QBEABVTDesC16@@XZ @ 41 NONAME ; class TDesC16 const & CHsContentInfo::Description(void) const
+ ?NewL@CHsContentInfo@@SAPAV1@XZ @ 42 NONAME ; class CHsContentInfo * CHsContentInfo::NewL(void)
+ ?PublisherUid@CHsContentInfo@@QBEABVTDesC8@@XZ @ 43 NONAME ; class TDesC8 const & CHsContentInfo::PublisherUid(void) const
+ ?NameAs8BitLC@CHsContentInfo@@QBEPAVHBufC8@@XZ @ 44 NONAME ; class HBufC8 * CHsContentInfo::NameAs8BitLC(void) const
+ ?PluginId@CHsContentInfo@@QBEABVTDesC8@@XZ @ 45 NONAME ; class TDesC8 const & CHsContentInfo::PluginId(void) const
+ ?NewL@CHsContentInfoArray@@SAPAV1@AAVRReadStream@@@Z @ 46 NONAME ; class CHsContentInfoArray * CHsContentInfoArray::NewL(class RReadStream &)
--- a/contentcontrolsrv/hscontentinfo/eabi/hscontentinfo.def Wed Mar 03 15:38:34 2010 +0200
+++ b/contentcontrolsrv/hscontentinfo/eabi/hscontentinfo.def Wed May 12 13:36:47 2010 +0300
@@ -22,27 +22,29 @@
_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
+ _ZN14CHsContentInfo9SetIsFullEi @ 24 NONAME
+ _ZN19CHsContentInfoArray12ExternalizeLER12RWriteStream @ 25 NONAME
+ _ZN19CHsContentInfoArray12InternalizeLER11RReadStream @ 26 NONAME
+ _ZN19CHsContentInfoArray4NewLER11RReadStream @ 27 NONAME
+ _ZN19CHsContentInfoArray4NewLEv @ 28 NONAME
+ _ZN19CHsContentInfoArray4SizeEv @ 29 NONAME
+ _ZN19CHsContentInfoArray5ArrayEv @ 30 NONAME
+ _ZN19CHsContentInfoArray8MarshalLEv @ 31 NONAME
+ _ZNK14CHsContentInfo10CanBeAddedEv @ 32 NONAME
+ _ZNK14CHsContentInfo10MaxWidgetsEv @ 33 NONAME
+ _ZNK14CHsContentInfo11DescriptionEv @ 34 NONAME
+ _ZNK14CHsContentInfo11PublisherIdEv @ 35 NONAME
+ _ZNK14CHsContentInfo12CanBeRemovedEv @ 36 NONAME
+ _ZNK14CHsContentInfo12NameAs8BitLCEv @ 37 NONAME
+ _ZNK14CHsContentInfo12PublisherUidEv @ 38 NONAME
+ _ZNK14CHsContentInfo16InstallationTimeEv @ 39 NONAME
+ _ZNK14CHsContentInfo3UidEv @ 40 NONAME
+ _ZNK14CHsContentInfo4NameEv @ 41 NONAME
+ _ZNK14CHsContentInfo4TypeEv @ 42 NONAME
+ _ZNK14CHsContentInfo5IsWrtEv @ 43 NONAME
+ _ZNK14CHsContentInfo6IsFullEv @ 44 NONAME
+ _ZNK14CHsContentInfo8IconPathEv @ 45 NONAME
+ _ZNK14CHsContentInfo8PluginIdEv @ 46 NONAME
+ _ZTI19CHsContentInfoArray @ 47 NONAME
+ _ZTV19CHsContentInfoArray @ 48 NONAME
--- a/contentcontrolsrv/hscontentinfo/src/hscontentinfo.cpp Wed Mar 03 15:38:34 2010 +0200
+++ b/contentcontrolsrv/hscontentinfo/src/hscontentinfo.cpp Wed May 12 13:36:47 2010 +0300
@@ -320,6 +320,9 @@
// externalise iIsWrt
aStream.WriteInt16L( iIsWrt );
+
+ // externalise iIsFull
+ aStream.WriteInt16L( iIsFull );
}
// -----------------------------------------------------------------------
@@ -498,6 +501,9 @@
// internalize iIsWrt
iIsWrt = aStream.ReadInt16L();
+
+ // internalize iIsFull
+ iIsFull = aStream.ReadInt16L();
}
// -----------------------------------------------------------------------
@@ -521,6 +527,7 @@
size = size + sizeof( TUint32 ); // installation time high
size = size + PublisherUid().Size();// publisher uid
size = size + sizeof( TInt16 ); // is wrt
+ size = size + sizeof( TInt16 ); // is full
return size;
}
@@ -556,6 +563,24 @@
}
// -----------------------------------------------------------------------
+// CHsContentInfo::IsFull()
+// -----------------------------------------------------------------------
+//
+EXPORT_C TBool CHsContentInfo::IsFull() const
+ {
+ return iIsFull;
+ }
+
+// -----------------------------------------------------------------------
+// CHsContentInfo::SetIsFull()
+// -----------------------------------------------------------------------
+//
+EXPORT_C void CHsContentInfo::SetIsFull( TBool aIsFull )
+ {
+ iIsFull = aIsFull;
+ }
+
+// -----------------------------------------------------------------------
// CHsContentInfo::IsWrt()
// -----------------------------------------------------------------------
//
--- a/contentcontrolsrv/hscontentinfo/src/hscontentinfoarray.cpp Wed Mar 03 15:38:34 2010 +0200
+++ b/contentcontrolsrv/hscontentinfo/src/hscontentinfoarray.cpp Wed May 12 13:36:47 2010 +0300
@@ -32,9 +32,9 @@
//
EXPORT_C CHsContentInfoArray* CHsContentInfoArray::NewL()
{
- CHsContentInfoArray* self = new ( ELeave ) CHsContentInfoArray();
- CleanupStack::PushL( self );
- self->ConstructL();
+ CHsContentInfoArray* self = new ( ELeave ) CHsContentInfoArray();
+ CleanupStack::PushL( self );
+ self->ConstructL();
CleanupStack::Pop( self );
return self;
}
@@ -44,13 +44,13 @@
// -----------------------------------------------------------------------
//
EXPORT_C CHsContentInfoArray* CHsContentInfoArray::NewL( RReadStream& aStream )
- {
- CHsContentInfoArray* self = new ( ELeave ) CHsContentInfoArray();
- CleanupStack::PushL( self );
- self->InternalizeL( aStream );
- CleanupStack::Pop( self );
- return self;
- }
+ {
+ CHsContentInfoArray* self = new ( ELeave ) CHsContentInfoArray();
+ CleanupStack::PushL( self );
+ self->InternalizeL( aStream );
+ CleanupStack::Pop( self );
+ return self;
+ }
// -----------------------------------------------------------------------
// CHsContentInfoArray::ConstructL()
@@ -74,7 +74,7 @@
//
CHsContentInfoArray::~CHsContentInfoArray()
{
- iArray.ResetAndDestroy();
+ iArray.ResetAndDestroy();
}
// -----------------------------------------------------------------------
@@ -91,15 +91,15 @@
// -----------------------------------------------------------------------
//
EXPORT_C void CHsContentInfoArray::ExternalizeL( RWriteStream& aStream )
- {
- aStream.WriteInt16L( iArray.Count() );
-
- for( int i = 0; i < iArray.Count(); i++ )
- {
- CHsContentInfo* info = iArray[i];
- info->ExternalizeL( aStream );
- }
- }
+ {
+ aStream.WriteInt16L( iArray.Count() );
+
+ for( int i = 0; i < iArray.Count(); i++ )
+ {
+ CHsContentInfo* info = iArray[i];
+ info->ExternalizeL( aStream );
+ }
+ }
// -----------------------------------------------------------------------
@@ -107,15 +107,15 @@
// -----------------------------------------------------------------------
//
EXPORT_C void CHsContentInfoArray::InternalizeL( RReadStream& aStream )
- {
- TInt count = aStream.ReadInt16L();
-
- for( int i = 0; i < count; i++ )
- {
- CHsContentInfo* info = CHsContentInfo::NewL( aStream );
- iArray.AppendL( info );
- }
- }
+ {
+ TInt count = aStream.ReadInt16L();
+
+ for( int i = 0; i < count; i++ )
+ {
+ CHsContentInfo* info = CHsContentInfo::NewL( aStream );
+ iArray.AppendL( info );
+ }
+ }
// -----------------------------------------------------------------------
// CHsContentInfoArray::Size()
@@ -123,7 +123,7 @@
//
EXPORT_C TInt CHsContentInfoArray::Size( )
{
- TInt size( 0 );
+ TInt size( sizeof( TInt16 ) );
for ( TInt i = 0; i < iArray.Count(); i++ )
{
size = size + iArray[ i ]->Size();
--- a/contentpublishingsrv/contentharvester/contentharvesterswiplugin/inc/chswiplugin.h Wed Mar 03 15:38:34 2010 +0200
+++ b/contentpublishingsrv/contentharvester/contentharvesterswiplugin/inc/chswiplugin.h Wed May 12 13:36:47 2010 +0300
@@ -94,10 +94,10 @@
/**
* Removes single widget.
* @param aType Widget type.
- * @param aContentId Widget UID.
+ * @param aPublisherId Widget UID.
*/
void RemoveWidgetL( const TDesC& aType,
- const TDesC& aContentId );
+ const TDesC& aPublisherId );
private:
--- a/contentpublishingsrv/contentharvester/contentharvesterswiplugin/src/chswiplugin.cpp Wed Mar 03 15:38:34 2010 +0200
+++ b/contentpublishingsrv/contentharvester/contentharvesterswiplugin/src/chswiplugin.cpp Wed May 12 13:36:47 2010 +0300
@@ -21,14 +21,13 @@
#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" );
+_LIT( KHSTemplate, "hstemplate" );
_LIT8( KWidgetUid, "widget_uid");
const TInt KWidgetArrayGran = 8;
@@ -162,8 +161,7 @@
inparam->AppendL( TLiwGenericParam( KType, TLiwVariant( KPublisher ) ) );
CLiwDefaultMap* filter = CLiwDefaultMap::NewLC();
- filter->InsertL( KPublisherId, TLiwVariant( KHsWidgetPublisher ));
- filter->InsertL( KContentType, TLiwVariant( KHsPublisher ));
+ filter->InsertL( KContentType, TLiwVariant( KHSTemplate ));
inparam->AppendL( TLiwGenericParam( KFilter, TLiwVariant( filter ) ) );
iCPSInterface->ExecuteCmdL( KGetList, *inparam, *outparam );
@@ -210,7 +208,7 @@
if( KErrNotFound == iApaLsSession.GetAppInfo(
appInfo, TUid::Uid( variant.AsTInt32() ) ) )
{
- if( map->FindL( KContentId, variant ) )
+ if( map->FindL( KPublisherId, variant ) )
{
notFoundWidgets->AppendL( variant.AsDes() );
}
@@ -248,16 +246,14 @@
// ----------------------------------------------------------------------------
//
void CCHSwiPlugin::RemoveWidgetL( const TDesC& aType,
- const TDesC& aContentId )
+ const TDesC& aPublisherId )
{
CLiwGenericParamList* inparam = CLiwGenericParamList::NewLC( );
CLiwGenericParamList* outparam = CLiwGenericParamList::NewLC( );
inparam->AppendL( TLiwGenericParam( KType, TLiwVariant( aType ) ) );
CLiwDefaultMap* filter = CLiwDefaultMap::NewLC();
- filter->InsertL( KPublisherId, TLiwVariant( KHsWidgetPublisher ));
- filter->InsertL( KContentType, TLiwVariant( KHsPublisher ));
- filter->InsertL( KContentId, TLiwVariant( aContentId ));
+ filter->InsertL( KPublisherId, TLiwVariant( aPublisherId ));
inparam->AppendL( TLiwGenericParam( KFilter, TLiwVariant( filter ) ) );
iCPSInterface->ExecuteCmdL( KDelete, *inparam, *outparam );
--- a/contentpublishingsrv/contentharvester/contentharvesterswiplugin/src/chswiusbhandler.cpp Wed Mar 03 15:38:34 2010 +0200
+++ b/contentpublishingsrv/contentharvester/contentharvesterswiplugin/src/chswiusbhandler.cpp Wed May 12 13:36:47 2010 +0300
@@ -21,7 +21,7 @@
#include "chswiusbhandler.h"
#include "chswiplugin.h"
#include "chswimassmodeobserver.h"
-#include <DriveInfo.h>
+#include <driveinfo.h>
// CONSTANTS
const TInt KCallBackDelay = 5000000;
--- a/contentpublishingsrv/contentpublishingserver/cpserver/group/cpserver.mmp Wed Mar 03 15:38:34 2010 +0200
+++ b/contentpublishingsrv/contentpublishingserver/cpserver/group/cpserver.mmp Wed May 12 13:36:47 2010 +0300
@@ -32,6 +32,7 @@
SOURCE cpnotificationhandler.cpp
SOURCE cpserverburlistener.cpp
SOURCE cpactionhandlerthread.cpp
+SOURCE cpactiondatacache.cpp
USERINCLUDE ../inc
USERINCLUDE ../../cpsqlitestorage/inc
@@ -51,6 +52,8 @@
LIBRARY cputils.lib
LIBRARY cpstorage.lib
LIBRARY inetprotutil.lib
+LIBRARY MemMan.lib
+
#ifdef CONTENT_PUBLISHER_DEBUG
LIBRARY cpdebug.lib
#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/contentpublishingsrv/contentpublishingserver/cpserver/inc/cpactiondatacache.h Wed May 12 13:36:47 2010 +0300
@@ -0,0 +1,166 @@
+/*
+* 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".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: Class used by session to handle asynchronous requests
+ *
+*/
+
+
+#ifndef C_CPACTIONDATACACHE_H
+#define C_CPACTIONDATACACHE_H
+
+#include <e32base.h>
+#include <e32hashtab.h>
+
+class CLiwDefaultList;
+
+/**
+ * Action Data Cache holds a list containing data needed to
+ * lauch an action fetched from SQL database
+ * @since S60 v5.0
+ */
+class CCPActionDataCache:public CBase
+ {
+public:
+
+ /**
+ * Creates new instance of CCPActionDataCache.
+ *
+ * @return new instance of CCPActionDataCache
+ */
+ static CCPActionDataCache* NewL( );
+
+ /**
+ * Creates new instance of CCPActionDataCache.
+ *
+ * @return new instance of CCPActionDataCache
+ */
+ static CCPActionDataCache* NewLC( );
+
+ /**
+ * Destructor.
+ */
+ virtual ~CCPActionDataCache();
+
+ /**
+ * Removes an item from the cache
+ *
+ * @param aMap a map containing item identifiers
+ */
+ void HandleCacheRemoveL( const CLiwMap* aMap );
+
+ /**
+ * Appends an item to the cache
+ *
+ * @param aParamList a list to be added to the cache
+ */
+ void AppendL( const CLiwGenericParamList* aParamList);
+
+ /**
+ * Checks if it is possible to cache the item.
+ * Only items that are specified, which means that id or
+ * all parameters ( publisher, content_type, content_id ) are provided
+ *
+ * @param aMap a map containing item identifiers
+ * @return ETrue if it is possible to cache an item, EFalse if not
+ */
+ TBool IsCacheableL( const CLiwMap* aMap );
+
+ /**
+ * Checks if it item exists in the cache.
+ *
+ * @param aMap a map containing item identifiers
+ * @return ETrue if the item exists in the cache, EFalse if not
+ */
+ TBool ExistL( const CLiwMap* aMap );
+
+ /**
+ * Gets an item from the cache
+ *
+ * @param aMap a map containing item identifiers
+ * @return aParamList item returned from the cache
+ */
+ void GetL( const CLiwMap* aMap,
+ CLiwGenericParamList* aParamList );
+
+private:
+
+ /*
+ * Constructor
+ */
+ CCPActionDataCache();
+
+ /**
+ * 2nd phase constructor.
+ */
+ void ConstructL( );
+
+ /**
+ * Checks if two items match
+ *
+ * @param aCachedMap a map from the cache containing item identifiers
+ * @param aInputMap an input map containing item identifiers
+ * @return ETrue if items match , EFalse if not
+ */
+ TBool MatchL(const CLiwMap* aCachedMap, const CLiwMap* aInputMap);
+
+ /**
+ * Checks if two strings contained in both maps match
+ *
+ * @param aLeft first map
+ * @param aRight second map
+ * @param aKey key
+ * @return ETrue if items match , EFalse if not
+ */
+ TBool MatchL(const CLiwMap* aLeft,
+ const CLiwMap* aRight, const TDesC8& aKey );
+
+ /**
+ * Checks if a string contained in map is specified
+ * (it has value different than "all")
+ *
+ * @param aMap map
+ * @param aKey key
+ * @return ETrue if item is specified , EFalse if not
+ */
+ TBool IsSpecifiedL(const CLiwMap* aMap,
+ const TDesC8& aKey );
+
+ /**
+ * Finds the item in the cache
+ *
+ * @param aKey map containing identifiers
+ * @return id of the item in a cache, KErrNotFound if does not
+ * exist in the cache
+ */
+ TInt FindL( const CLiwMap* aKey );
+
+ /**
+ * Copies variant from one map to another
+ *
+ * @param aKey key
+ * @param aInMap input map
+ * @param aOutMap output map
+ */
+ void CopyVariantL(const TDesC8& aKey,
+ const CLiwMap* aInMap, CLiwDefaultMap* aOutMap );
+
+private:
+
+ /*
+ * Internal list. Own
+ */
+ CLiwDefaultList* iInternalList;
+ };
+
+#endif // C_CPACTIONDATACACHE_H
--- a/contentpublishingsrv/contentpublishingserver/cpserver/inc/cpglobals.h Wed Mar 03 15:38:34 2010 +0200
+++ b/contentpublishingsrv/contentpublishingserver/cpserver/inc/cpglobals.h Wed May 12 13:36:47 2010 +0300
@@ -44,6 +44,7 @@
const TInt KNameArgumentsLimit = 5;
const TInt KThreadNameLimit = 64;
const TUint KDisablePersist = 0x1000;
+const TUint KDisableNotification = 0x2000;
_LIT( KService, "CP Service" );
@@ -58,6 +59,8 @@
_LIT8( KDelete, "Delete" );
_LIT8( KRequestNotification, "RequestNotification" );
_LIT8( KExecuteAction, "ExecuteAction" );
+_LIT8( KExecuteMultipleActions, "ExecuteMultipleActions" );
+
_LIT8( KCmdCancel, "Cancel" );
_LIT8( KActivate, "Activate" );
_LIT8( KActivateTrigger, "activate" );
@@ -68,6 +71,7 @@
_LIT8( KAction, "action" );
_LIT8( KItem, "item" );
_LIT8( KFilter, "filter" );
+_LIT8( KFilters, "filters" );
_LIT8( KData, "data" );
_LIT8( KSortOrder, "sort_order" );
_LIT8( KItemId, "item_id" );
--- a/contentpublishingsrv/contentpublishingserver/cpserver/inc/cpnotificationhandler.h Wed Mar 03 15:38:34 2010 +0200
+++ b/contentpublishingsrv/contentpublishingserver/cpserver/inc/cpnotificationhandler.h Wed May 12 13:36:47 2010 +0300
@@ -117,7 +117,7 @@
* @param aFilter filter to compare with
* @return ETrue if argument matches filter
*/
- TBool IsProperForFilterL( const CLiwDefaultMap& aMap,
+ TBool IsProperForFilterL( const CLiwMap& aMap,
const CCPLiwMap& aFilter );
/**
@@ -127,7 +127,7 @@
* @param aProperty Key of parameter to extract
* @param aResult Target for value
*/
- void GetPropertyL( const CLiwDefaultMap& aMap, const TDesC8& aProperty,
+ void GetPropertyL( const CLiwMap& aMap, const TDesC8& aProperty,
RBuf& aResult );
/**
@@ -137,7 +137,7 @@
* @param aFilter filter to compare with
* @return ETrue if ID are identical
*/
- TBool CheckIdL( const CLiwDefaultMap& aMap, const CCPLiwMap& aFilter );
+ TBool CheckIdL( const CLiwMap& aMap, const CCPLiwMap& aFilter );
/**
* Checks if Properties like publisher,content type
@@ -147,7 +147,7 @@
* @param aFilter filter to compare with
* @return ETrue if Parameters are identical
*/
- TBool CheckPropertiesL( const CLiwDefaultMap& aMap,
+ TBool CheckPropertiesL( const CLiwMap& aMap,
const CCPLiwMap& aFilter );
/**
@@ -157,7 +157,7 @@
* @param aFilter filter to compare with
* @return ETrue if operation types are the same
*/
- TBool CheckOperationTypeL( const CLiwDefaultMap& aMap,
+ TBool CheckOperationTypeL( const CLiwMap& aMap,
const CCPLiwMap& aFilter );
/**
@@ -167,7 +167,7 @@
* @param aFilter filter to compare with
* @return ETrue if registry types are the same
*/
- TBool CheckRegistryTypeL( const CLiwDefaultMap& aMap,
+ TBool CheckRegistryTypeL( const CLiwMap& aMap,
const CCPLiwMap& aFilter );
private:
--- a/contentpublishingsrv/contentpublishingserver/cpserver/inc/cpserver.h Wed Mar 03 15:38:34 2010 +0200
+++ b/contentpublishingsrv/contentpublishingserver/cpserver/inc/cpserver.h Wed May 12 13:36:47 2010 +0300
@@ -110,7 +110,7 @@
/**
* Returns notifications array
*/
- RPointerArray<CLiwDefaultList>& CCPServer::GetNotifications( );
+ RPointerArray<CLiwDefaultList>& GetNotifications( );
private:
// From CActive
--- a/contentpublishingsrv/contentpublishingserver/cpserver/inc/cpserveractionmanager.h Wed Mar 03 15:38:34 2010 +0200
+++ b/contentpublishingsrv/contentpublishingserver/cpserver/inc/cpserveractionmanager.h Wed May 12 13:36:47 2010 +0300
@@ -26,7 +26,7 @@
#endif
class CLiwServiceHandler;
class MLiwInterface;
-class CLiwDefaultMap;
+class CLiwMap;
/**
* Used to execute action using Action Handler Service
@@ -88,10 +88,10 @@
/**
* Extracts and adds attributes from aMap to aTarget.
* @since Series 60 3.2
- * @param aMap CLiwDefaultMap with action.
+ * @param aMap CLiwMap with action.
* @param aTarget CLiwGenericParamList with Uid and Map.
*/
- void ExtractUidAndMapL( const CLiwDefaultMap& aMap,
+ void ExtractUidAndMapL( const CLiwMap& aMap,
CLiwGenericParamList& aTarget );
private:
--- a/contentpublishingsrv/contentpublishingserver/cpserver/inc/cpserverdatamanager.h Wed Mar 03 15:38:34 2010 +0200
+++ b/contentpublishingsrv/contentpublishingserver/cpserver/inc/cpserverdatamanager.h Wed May 12 13:36:47 2010 +0300
@@ -21,6 +21,7 @@
#include <e32base.h>
#include "cpstorage.h"
+#include "cpactiondatacache.h"
// FORWARD DECLARATIONS
#ifdef CONTENT_PUBLISHER_DEBUG
@@ -84,12 +85,14 @@
/**
* Fetches action from database
* @param aInParamList filter and sorting criteria
+ * @param aEnableCache flag indicating if action data should be cached
* @param aOutParamList results
* @param aNotificationList change info list (for notifications)
* @return KErrNotFound if data was not found
*/
- TInt GetActionL( const CCPLiwMap& aMa,
- CLiwGenericParamList& aOutParamList,
+ TInt GetActionsL( const CCPLiwMap& aMap,
+ TBool aEnableCache,
+ CLiwGenericParamList& aOutParamList,
CLiwDefaultList* aNotificationList = NULL );
/**
@@ -183,7 +186,7 @@
void FillActionParamListL(
CLiwGenericParamList & aOutParamList,
const TLiwGenericParam* aParam,
- RBuf8 & aActionTrigger);
+ const CLiwDefaultList* aActionTriggers);
/**
* Creates map for GetList request - publisher, content_type
@@ -211,6 +214,7 @@
*/
void BuildChangeInfoL(
const CCPLiwMap* aMap,
+ const CLiwDefaultList* aActionTriggers,
const TLiwGenericParam* aParam,
CLiwDefaultList* aChangeInfoList );
/**
@@ -221,6 +225,7 @@
*/
void BuildDefaultChangeInfoL(
const CCPLiwMap* aMap,
+ const CLiwDefaultList* aActionTriggers,
CLiwDefaultList* aChangeInfoList );
/**
* Builds change info list when query to database returned nothing
@@ -250,6 +255,13 @@
void CopyActionTrigger16L( const CLiwMap* aInMap,
CLiwDefaultMap* aOutMap );
+ /**
+ * Converts variant type from TDesC8 to TDesC
+ * @param aVariant variant to convert
+ */
+ void CopyActionTrigger16L( const TLiwVariant& aVariant,
+ CLiwDefaultMap* aOutMap );
+
private:
// data
@@ -265,6 +277,13 @@
*/
RPointerArray<CCPNotificationHandler> iNotificationsArray;
+ /*
+ * Action data cache
+ * Own.
+ */
+ CCPActionDataCache* iActionDataCache;
+
+
#ifdef CONTENT_PUBLISHER_DEBUG
CCPDebug* iDebug;
#endif
--- a/contentpublishingsrv/contentpublishingserver/cpserver/inc/cpserverdef.h Wed Mar 03 15:38:34 2010 +0200
+++ b/contentpublishingsrv/contentpublishingserver/cpserver/inc/cpserverdef.h Wed May 12 13:36:47 2010 +0300
@@ -39,6 +39,7 @@
ECpServerAddObserver = 23,
ECpServerRemoveObserver = 24,
ECpServerExecuteAction = 30,
+ ECpServerExecuteMultipleActions = 31,
ECpServerInternal = 100
};
@@ -71,7 +72,7 @@
const TUint KDescriptorPosition( 0);
const TUint KReturnPosition( 1);
-const TUint KInfoPosition( 2);
+const TUint KOptionsPosition( 2);
const TUint KTransactionPosition( 3);
const TBool KActive( ETrue );
const TBool KInActive( EFalse );
--- a/contentpublishingsrv/contentpublishingserver/cpserver/inc/cpserversession.h Wed Mar 03 15:38:34 2010 +0200
+++ b/contentpublishingsrv/contentpublishingserver/cpserver/inc/cpserversession.h Wed May 12 13:36:47 2010 +0300
@@ -1,20 +1,19 @@
/*
-* 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".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: Server Session
+ * 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".
*
-*/
-
+ * Initial Contributors:
+ * Nokia Corporation - initial contribution.
+ *
+ * Contributors:
+ *
+ * Description: Server Session
+ *
+ */
#ifndef C_CCPSERVERSESSION_H
#define C_CCPSERVERSESSION_H
@@ -51,12 +50,12 @@
/**
* Two-phased constructor.
*/
- static CCPServerSession* NewL( TPointersForSession& aPasser );
+ static CCPServerSession* NewL(TPointersForSession& aPasser);
/**
* Two-phased constructor.
*/
- static CCPServerSession* NewLC( TPointersForSession& aPasser );
+ static CCPServerSession* NewLC(TPointersForSession& aPasser);
/**
* Destroy the object and release all memory objects
@@ -71,14 +70,14 @@
* @param aMessage message from client (containing requested operation
* and any data)
*/
- void ServiceL( const RMessage2& aMessage );
+ void ServiceL(const RMessage2& aMessage);
/**
* Selects correct function from message
* @param aMessage message from client (containing requested operation
* and any data)
*/
- void DispatchMessageL( const RMessage2& aMessage, TBool& aPanicedClient );
+ void DispatchMessageL(const RMessage2& aMessage, TBool& aPanicedClient);
private:
// New methods
@@ -91,69 +90,84 @@
/**
* Perform the second phase construction of a CCPServerSession object
*/
- void ConstructL( TPointersForSession& aPasser );
+ void ConstructL(TPointersForSession& aPasser);
/**
* Add Data request
* @param Message from client
*/
- void AddDataL( const RMessage2& aMessage );
+ void AddDataL(const RMessage2& aMessage);
/**
* Specific add data request - data is not actually added to database
* but notification is send.
* @param Message from client
*/
- void AddDataNonPersistentL( const RMessage2& aMessage );
+ void AddDataNonPersistentL(const RMessage2& aMessage);
/**
* Get data request - first phase
* @param Message from client
*/
- void GetListSizeL( const RMessage2& aMessage );
+ void GetListSizeL(const RMessage2& aMessage);
/**
* Get data request - second phase
* @param Message from client
*/
- void GetListDataL( const RMessage2& aMessage );
+ void GetListDataL(const RMessage2& aMessage);
/**
* Remove data request
* @param Message from client
*/
- void RemoveDataL( const RMessage2& aMessage );
+ void RemoveDataL(const RMessage2& aMessage);
/**
* Executes action request
* @param Message from client
*/
- void ExecuteActionL( const RMessage2& aMessage );
+ void ExecuteActionL(const RMessage2& aMessage);
+
+ /**
+ * Executes actions and sends notifications
+ * @param aMap input map from client
+ * @param aEnableCache indicates if action data should be cached
+ * @param aOptions command options
+ */
+ void ExecuteActionL(const CCPLiwMap* aMap,
+ TBool aEnableCache, TUint aOptions);
+
+ /**
+ * Executes multiple actions request
+ * @param Message from client
+ */
+ void ExecuteMultipleActionsL(const RMessage2& aMessage);
/**
* Executes action request
* @param aActionParams list with actions
*/
- void ExecuteL( const CLiwGenericParamList& aActionParams );
+ void ExecuteL(const CLiwGenericParamList& aActionParams);
/**
* Register for notification request
* @param Message from client
*/
- void RegisterObserverL( const RMessage2& aMessage );
+ void RegisterObserverL(const RMessage2& aMessage);
/**
* Adds new observer
* @param Message from client
*/
- void AddObserverL( const RMessage2& aMessage );
+ void AddObserverL(const RMessage2& aMessage);
/**
* Removes observer
* @param Message from client
*/
- void RemoveObserverL( const RMessage2& aMessage );
-
+ void RemoveObserverL(const RMessage2& aMessage);
+
/**
* Unregister from notification request
* @param Message from client
@@ -164,7 +178,7 @@
* Send information about change in database to client
* @param Message from client
*/
- void GetChangeInfoDataL( const RMessage2& aMessage );
+ void GetChangeInfoDataL(const RMessage2& aMessage);
/**
* Converts CLiwGenericParamList to descriptor and
@@ -172,22 +186,22 @@
* @param Message to complete
* @param Parameters for message
*/
- void ExternalizeAndWriteToClientL( const RMessage2& aMessage,
- const CLiwGenericParamList* outParamList );
-
- /**
- * Unpacks message from client to map
- * @param Message to complete
- * @return CCPLiwMap with data from client
- */
- CCPLiwMap* UnpackFromClientLC( const RMessage2& aMessage );
+ void ExternalizeAndWriteToClientL(const RMessage2& aMessage,
+ const CLiwGenericParamList* outParamList);
- /**
- * Send notification
- * @param aNotificationList
- */
- void SendNotificationL( CCPLiwMap* aMap,
- CLiwDefaultList* aNotificationList );
+ /**
+ * Unpacks message from client to map
+ * @param Message to complete
+ * @return CCPLiwMap with data from client
+ */
+ CCPLiwMap* UnpackFromClientLC(const RMessage2& aMessage);
+
+ /**
+ * Send notification
+ * @param aNotificationList
+ */
+ void SendNotificationL(CCPLiwMap* aMap,
+ CLiwDefaultList* aNotificationList);
/**
* Get and Execute Activate or Deactivate action from the DB
@@ -195,14 +209,29 @@
*/
void GetAndExecuteActionL( CCPLiwMap* aMap, CLiwDefaultList* aNotificationList,
TBool aInsertTrigger = EFalse );
-
+
/**
* Get Server Lock
* @return ETrue if aMessege cannot be processed
* because Backup or Restore is running
**/
- TBool GetServerLock( const RMessage2& aMessage );
-
+ TBool GetServerLock(const RMessage2& aMessage);
+
+ /**
+ * Unpacks data for ExecuteMultipleActions from client
+ * @param Message from client
+ * @return list containing input data from the client
+ **/
+ CLiwGenericParamList* UnpackForMultiExecuteLC(const RMessage2& aMessage);
+
+ /**
+ * Checks map validity of input data and returns list
+ * that can be used to call execute
+ * @param aMaps input data
+ * @return list containing input maps for Execute
+ **/
+ CLiwDefaultList* CheckValidityLC(const CLiwList* aMaps);
+
private:
/*
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/contentpublishingsrv/contentpublishingserver/cpserver/src/cpactiondatacache.cpp Wed May 12 13:36:47 2010 +0300
@@ -0,0 +1,303 @@
+/*
+* 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".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: ?Description
+
+ *
+*/
+
+
+#include <liwcommon.h>
+#include <liwvariant.h>
+#include <s32mem.h>
+
+#include "cpactiondatacache.h"
+#include "cpglobals.h"
+
+using namespace LIW;
+
+_LIT8(KCachedMap, "cached_map");
+
+static const int KMaxCacheItems = 6;
+
+
+// ======== MEMBER FUNCTIONS ========
+
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+CCPActionDataCache* CCPActionDataCache::NewL()
+ {
+ CCPActionDataCache* self = CCPActionDataCache::NewLC();
+ CleanupStack::Pop(self);
+ return self;
+ }
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+CCPActionDataCache* CCPActionDataCache::NewLC()
+ {
+ CCPActionDataCache* self = new (ELeave) CCPActionDataCache;
+ CleanupStack::PushL(self);
+ self->ConstructL();
+ return self;
+ }
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+void CCPActionDataCache::ConstructL( )
+ {
+ iInternalList = CLiwDefaultList::NewL();
+ }
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+CCPActionDataCache::CCPActionDataCache()
+ {
+ }
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+CCPActionDataCache::~CCPActionDataCache()
+ {
+ if (iInternalList)
+ {
+ iInternalList->Close();
+ }
+ }
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+void CCPActionDataCache::HandleCacheRemoveL(const CLiwMap* aMap)
+ {
+ TInt id = FindL(aMap);
+ if (id != KErrNotFound)
+ {
+ iInternalList->Remove(id);
+ }
+ }
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+void CCPActionDataCache::AppendL( const CLiwGenericParamList* aParamList)
+ {
+ const TLiwGenericParam* param;
+ TInt pos( 0);
+ param = aParamList->FindFirst( pos, KListMap );
+
+ if (param && param->Value().TypeId() == EVariantTypeMap)
+ {
+ const CLiwMap* inputMap = param->Value().AsMap();
+ CLiwDefaultMap* map = CLiwDefaultMap::NewLC();
+ CopyVariantL(KId, inputMap, map);
+ CopyVariantL(KPublisherId, inputMap, map);
+ CopyVariantL(KContentType, inputMap, map);
+ CopyVariantL(KContentId, inputMap, map);
+ map->InsertL(KCachedMap, TLiwVariant(inputMap));
+ iInternalList->AppendL(TLiwVariant(map));
+ CleanupStack::PopAndDestroy(map);
+
+ if (iInternalList->Count() > KMaxCacheItems)
+ {
+ iInternalList->Remove(0);
+ }
+ }
+ }
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+TBool CCPActionDataCache::IsCacheableL(const CLiwMap* aMap)
+ {
+ TBool result(EFalse);
+ TLiwVariant value;
+ value.PushL();
+
+ if (aMap->FindL(KId, value) && value.AsTInt32() > 0)
+ {
+ result = ETrue;
+ }
+ else if (IsSpecifiedL(aMap, KPublisherId) && IsSpecifiedL(aMap,
+ KContentType) && IsSpecifiedL(aMap, KContentId))
+ {
+ result = ETrue;
+ }
+
+ CleanupStack::PopAndDestroy(&value);
+ return result;
+ }
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+TBool CCPActionDataCache::ExistL(const CLiwMap* aMap)
+ {
+ TBool result(EFalse);
+ if (FindL(aMap) != KErrNotFound)
+ {
+ result = ETrue;
+ }
+ return result;
+ }
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+void CCPActionDataCache::GetL(const CLiwMap* aMap,
+ CLiwGenericParamList* aParamList)
+ {
+ TInt id = FindL(aMap);
+ if (id != KErrNotFound)
+ {
+ TLiwVariant value;
+ value.PushL();
+ iInternalList->AtL(id, value);
+ const CLiwMap* map = value.AsMap();
+ if (map->FindL(KCachedMap, value))
+ {
+ CLiwDefaultMap* outMap = CLiwDefaultMap::NewLC();
+ value.Get(*outMap);
+ TLiwGenericParam genericParam(KListMap, TLiwVariant(outMap));
+ aParamList->AppendL(genericParam);
+ CleanupStack::PopAndDestroy(outMap);
+ }
+ CleanupStack::PopAndDestroy(&value);
+ }
+ }
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+TBool CCPActionDataCache::MatchL(const CLiwMap* aCachedMap,
+ const CLiwMap* aInputMap)
+ {
+ TBool idMatch(EFalse);
+ TLiwVariant l, r;
+ l.PushL();
+ r.PushL();
+ if (aCachedMap->FindL(KId, l) && aInputMap->FindL(KId, r) && l.AsTInt32()
+ == r.AsTInt32())
+ {
+ idMatch = ETrue;
+ }
+ if (!idMatch)
+ {
+ if (MatchL(aCachedMap, aInputMap, KPublisherId) && MatchL(aCachedMap,
+ aInputMap, KContentType) && MatchL(aCachedMap, aInputMap,
+ KContentId))
+ {
+ idMatch = ETrue;
+ }
+ }
+
+ CleanupStack::PopAndDestroy(&r);
+ CleanupStack::PopAndDestroy(&l);
+ return idMatch;
+ }
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+TBool CCPActionDataCache::MatchL(const CLiwMap* aLeft, const CLiwMap* aRight,
+ const TDesC8& aKey)
+ {
+ TBool match(EFalse);
+ TLiwVariant l, r;
+ l.PushL();
+ r.PushL();
+ if (aLeft->FindL(aKey, l) && aRight->FindL(aKey, r)
+ && !l.AsDes().Compare(r.AsDes()))
+ {
+ match = ETrue;
+ }
+ CleanupStack::PopAndDestroy(&r);
+ CleanupStack::PopAndDestroy(&l);
+ return match;
+ }
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+TBool CCPActionDataCache::IsSpecifiedL(const CLiwMap* aMap,
+ const TDesC8& aKey)
+ {
+ TBool result(EFalse);
+ TLiwVariant value;
+ value.PushL();
+ if (aMap->FindL(aKey, value) && value.AsDes().Compare(KNullDesC) != 0
+ && value.AsDes().Compare(KAll) != 0)
+ {
+ result = ETrue;
+ }
+ CleanupStack::PopAndDestroy(&value);
+ return result;
+ }
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+TInt CCPActionDataCache::FindL(const CLiwMap* aKey)
+ {
+ TInt result(KErrNotFound);
+ TLiwVariant value;
+ value.PushL();
+ for (TInt i = 0; i < iInternalList->Count(); i++)
+ {
+ iInternalList->AtL(i, value);
+ if (MatchL(value.AsMap(), aKey))
+ {
+ result = i;
+ break;
+ }
+ }
+ CleanupStack::PopAndDestroy(&value);
+ return result;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CCPActionDataCache::CopyVariantL(const TDesC8& aKey,
+ const CLiwMap* aInMap, CLiwDefaultMap* aOutMap)
+ {
+ //TODO: method exist also in data manager - should be refactored
+ TLiwVariant variant;
+ variant.PushL();
+ if (aInMap->FindL(aKey, variant))
+ {
+ aOutMap->InsertL(aKey, variant);
+ }
+ CleanupStack::PopAndDestroy(&variant);
+ }
--- a/contentpublishingsrv/contentpublishingserver/cpserver/src/cpnotificationhandler.cpp Wed Mar 03 15:38:34 2010 +0200
+++ b/contentpublishingsrv/contentpublishingserver/cpserver/src/cpnotificationhandler.cpp Wed May 12 13:36:47 2010 +0300
@@ -26,6 +26,7 @@
#include "cpglobals.h"
#include "cpserverdef.h"
+using namespace LIW;
// ======== MEMBER FUNCTIONS ========
// ---------------------------------------------------------------------------
@@ -182,7 +183,7 @@
//
// -----------------------------------------------------------------------------
//
-TBool CCPNotificationHandler::IsProperForFilterL( const CLiwDefaultMap& aMap,
+TBool CCPNotificationHandler::IsProperForFilterL( const CLiwMap& aMap,
const CCPLiwMap& aFilter )
{
CP_DEBUG( _L8("CCPNotificationHandler::IsProperForFilter()") );
@@ -298,21 +299,21 @@
{
CLiwDefaultList* listOfMatchingMaps = CLiwDefaultList::NewLC( );
-
+ TInt count = aListOfMaps->Count( );
//for every item in the input list
- for ( TInt j = 0; j < aListOfMaps->Count( ); j++ )
+ for ( TInt j = 0; j < count; j++ )
{
- CLiwDefaultMap* map = CLiwDefaultMap::NewLC( );
TLiwVariant variant;
variant.PushL( );
aListOfMaps->AtL( j, variant );
- variant.Get( *map );
- if ( IsProperForFilterL( *map, **filter ) )
- {
- listOfMatchingMaps->AppendL( TLiwVariant( map ) );
- }
- CleanupStack::PopAndDestroy( &variant );
- CleanupStack::PopAndDestroy( map );
+ if ( variant.TypeId() == EVariantTypeMap )
+ {
+ if ( IsProperForFilterL( *variant.AsMap(), **filter ) )
+ {
+ listOfMatchingMaps->AppendL( variant );
+ }
+ }
+ CleanupStack::PopAndDestroy( &variant );
}
if ( listOfMatchingMaps->Count( ) )
{
@@ -339,7 +340,7 @@
//
// ----------------------------------------------------------------------------
//
-void CCPNotificationHandler::GetPropertyL( const CLiwDefaultMap& aMap,
+void CCPNotificationHandler::GetPropertyL( const CLiwMap& aMap,
const TDesC8& aProperty, RBuf& aResult )
{
TLiwVariant value;
@@ -357,7 +358,7 @@
//
// ----------------------------------------------------------------------------
//
-TBool CCPNotificationHandler::CheckIdL( const CLiwDefaultMap& aMap,
+TBool CCPNotificationHandler::CheckIdL( const CLiwMap& aMap,
const CCPLiwMap& aFilter )
{
TBool result = EFalse;
@@ -386,7 +387,7 @@
//
// ----------------------------------------------------------------------------
//
-TBool CCPNotificationHandler::CheckPropertiesL( const CLiwDefaultMap& aMap,
+TBool CCPNotificationHandler::CheckPropertiesL( const CLiwMap& aMap,
const CCPLiwMap& aFilter )
{
TBool result( EFalse );
@@ -459,7 +460,7 @@
//
// ----------------------------------------------------------------------------
//
-TBool CCPNotificationHandler::CheckOperationTypeL( const CLiwDefaultMap& aMap,
+TBool CCPNotificationHandler::CheckOperationTypeL( const CLiwMap& aMap,
const CCPLiwMap& aFilter )
{
TBool result = ETrue;
@@ -491,7 +492,7 @@
//
// ----------------------------------------------------------------------------
//
-TBool CCPNotificationHandler::CheckRegistryTypeL( const CLiwDefaultMap& aMap,
+TBool CCPNotificationHandler::CheckRegistryTypeL( const CLiwMap& aMap,
const CCPLiwMap& aFilter )
{
TBool result = ETrue;
--- a/contentpublishingsrv/contentpublishingserver/cpserver/src/cpserver.cpp Wed Mar 03 15:38:34 2010 +0200
+++ b/contentpublishingsrv/contentpublishingserver/cpserver/src/cpserver.cpp Wed May 12 13:36:47 2010 +0300
@@ -15,7 +15,7 @@
*
*/
-
+#include <mw/MemoryManager.h>
#include <liwcommon.h>
#include <ecom/ecom.h>
#include <fbs.h>
@@ -387,7 +387,12 @@
//
TInt E32Main()
{
- return CCPServer::ThreadStart( );
+ RAllocator* iAllocator = MemoryManager::SwitchToFastAllocator();
+
+ //Get the return value (needs to call CloseFastAllocator() before return)
+ TInt iReturnValue = CCPServer::ThreadStart( );
+ MemoryManager::CloseFastAllocator(iAllocator);
+ return iReturnValue;
}
// End of File
--- a/contentpublishingsrv/contentpublishingserver/cpserver/src/cpserveractionmanager.cpp Wed Mar 03 15:38:34 2010 +0200
+++ b/contentpublishingsrv/contentpublishingserver/cpserver/src/cpserveractionmanager.cpp Wed May 12 13:36:47 2010 +0300
@@ -155,10 +155,7 @@
param = aList.FindFirst( pos, KListMap, EVariantTypeMap );
if ( param && pos !=KErrNotFound )
{
- CLiwDefaultMap* map = CLiwDefaultMap::NewLC( );
- param->Value().Get( *map );
- ExtractUidAndMapL( *map, aTarget );
- CleanupStack::PopAndDestroy( map );
+ ExtractUidAndMapL( *param->Value().AsMap(), aTarget );
}
else
{
@@ -170,7 +167,7 @@
// CCPActionManager::ExtractUidAndMapL
// --------------- --------------------------------------------------------------
//
-void CCPActionManager::ExtractUidAndMapL( const CLiwDefaultMap& aMap,
+void CCPActionManager::ExtractUidAndMapL( const CLiwMap& aMap,
CLiwGenericParamList& aTarget )
{
CP_DEBUG( _L8("CCPActionManager::ExtractUidAndMapL()") );
@@ -178,21 +175,23 @@
variant.PushL( );
if ( aMap.FindL( KActionMap, variant ) )
{
- CLiwDefaultMap* map = CLiwDefaultMap::NewLC( );
- variant.Get( *map );
- if ( map->FindL( KDataForActionHandler, variant ) )
- {
- TLiwGenericParam param( KDataForActionHandler, variant);
- aTarget.AppendL( param );
- }
- if ( map->FindL( KPluginUid, variant ) )
- {
- TLiwGenericParam param( KPluginUid, variant);
- aTarget.AppendL( param );
- }
- CleanupStack::PopAndDestroy( map );
+ TLiwVariant valueVariant;
+ valueVariant.PushL( );
+ if ( variant.TypeId() == EVariantTypeMap )
+ {
+ if ( variant.AsMap()->FindL( KDataForActionHandler, valueVariant ) )
+ {
+ TLiwGenericParam param( KDataForActionHandler, valueVariant);
+ aTarget.AppendL( param );
+ }
+ if ( variant.AsMap()->FindL( KPluginUid, valueVariant ) )
+ {
+ TLiwGenericParam param( KPluginUid, valueVariant);
+ aTarget.AppendL( param );
+ }
+ }
+ CleanupStack::PopAndDestroy( &valueVariant );
}
-
CleanupStack::PopAndDestroy( &variant );
}
--- a/contentpublishingsrv/contentpublishingserver/cpserver/src/cpserverdatamanager.cpp Wed Mar 03 15:38:34 2010 +0200
+++ b/contentpublishingsrv/contentpublishingserver/cpserver/src/cpserverdatamanager.cpp Wed May 12 13:36:47 2010 +0300
@@ -38,6 +38,7 @@
//
CCPDataManager::~CCPDataManager()
{
+ delete iActionDataCache;
iNotificationsArray.Close( );
delete iStorage;
}
@@ -85,6 +86,7 @@
{
iStorage = StorageFactory::NewDatabaseL( );
}
+ iActionDataCache = CCPActionDataCache::NewL();
}
// ---------------------------------------------------------------------------
@@ -98,6 +100,8 @@
CCPLiwMap* getlistmap = CreateMapForGetlistLC( aMap );
+ iActionDataCache->HandleCacheRemoveL( &aMap );
+
TBool activateMap = aMap.GetActivateInfo();
TBool activateDB ( EFalse );
TBool activateSupport =aMap.ActivateActionSupport( );
@@ -158,7 +162,7 @@
//
// ---------------------------------------------------------------------------
//
-TInt CCPDataManager::GetActionL( const CCPLiwMap& aMap,
+TInt CCPDataManager::GetActionsL( const CCPLiwMap& aMap, TBool aEnableCache,
CLiwGenericParamList& aOutParamList, CLiwDefaultList* aNotificationList )
{
CP_DEBUG( _L8("CCPDataManager::GetActionL()") );
@@ -166,12 +170,25 @@
CLiwGenericParamList* paramList = CLiwGenericParamList::NewLC( );
TInt result( KErrNone );
- TRAP( result, iStorage->GetListL( &aMap, *paramList ) );
- RBuf8 actionTrigger;
- actionTrigger.CleanupClosePushL();
+
+ CLiwDefaultList* actionTriggers = aMap.GetActionTriggersLC();
- if ( aMap.GetPropertyL( KActionTrigger, actionTrigger ) )
+ if ( actionTriggers )
{
+ TBool cacheable = iActionDataCache->IsCacheableL( &aMap );
+ if (aEnableCache && cacheable && iActionDataCache->ExistL( &aMap ))
+ {
+ iActionDataCache->GetL( &aMap, paramList );
+ }
+ else
+ {
+ TRAP( result, iStorage->GetListL( &aMap, *paramList ) );
+ if ( aEnableCache && cacheable && result == KErrNone )
+ {
+ iActionDataCache->AppendL(paramList);
+ }
+ }
+
const TLiwGenericParam* param;
TInt pos( 0);
@@ -179,14 +196,15 @@
//at least one param should be valid to preceed
if ( !param || pos == KErrNotFound )
{
- BuildDefaultChangeInfoL(&aMap, aNotificationList);
+ BuildDefaultChangeInfoL(&aMap, actionTriggers, aNotificationList);
}
//iteration through paramList items
while ( param && pos != KErrNotFound )
{
- BuildChangeInfoL( &aMap, param, aNotificationList );
- FillActionParamListL( aOutParamList, param, actionTrigger );
+ BuildChangeInfoL( &aMap, actionTriggers, param,
+ aNotificationList );
+ FillActionParamListL( aOutParamList, param, actionTriggers );
param = paramList->FindNext( pos, KListMap );
}
}
@@ -194,7 +212,8 @@
{
User::Leave( KErrNotFound );
}
- CleanupStack::PopAndDestroy( &actionTrigger );
+
+ CleanupStack::PopAndDestroy( actionTriggers );
CleanupStack::PopAndDestroy( paramList );
return result;
}
@@ -207,7 +226,7 @@
void CCPDataManager::FillActionParamListL(
CLiwGenericParamList& aOutParamList,
const TLiwGenericParam* aParam,
- RBuf8 & aActionTrigger)
+ const CLiwDefaultList* aActionTriggers)
{
CP_DEBUG( _L8("CCPDataManager::FillActionParamListL()") );
__ASSERT_DEBUG( iStorage , User::Panic( _L("cpserver"), 0 ) );
@@ -219,7 +238,17 @@
RDesReadStream str(actionBinaries);
CleanupClosePushL( str );
CLiwDefaultMap* actionMap = CLiwDefaultMap::NewLC( str );
- ExtractTriggerL( aOutParamList, actionMap, aActionTrigger );
+
+ TLiwVariant trigger;
+ trigger.PushL();
+ TInt count = aActionTriggers->Count();
+ for ( TInt i = 0; i<count; i++ )
+ {
+ trigger.Reset();
+ aActionTriggers->AtL( i,trigger );
+ ExtractTriggerL( aOutParamList, actionMap, trigger.AsData());
+ }
+ CleanupStack::PopAndDestroy(&trigger);
CleanupStack::PopAndDestroy( actionMap );
CleanupStack::PopAndDestroy( &str );
@@ -273,6 +302,7 @@
{
CP_DEBUG( _L8("CCPDataManager::RemoveData()") );
__ASSERT_DEBUG( iStorage , User::Panic( _L("cpserver"), 0 ) );
+ iActionDataCache->HandleCacheRemoveL( &aMap );
iStorage->RemoveL( &aMap );
}
@@ -301,11 +331,13 @@
{
CP_DEBUG( _L8("CCPDataManager::RemoveObserver()") );
TInt index = iNotificationsArray.Find( aNotificationHandler );
- __ASSERT_DEBUG( index >= 0 , User::Panic( _L("cpserver"), 0 ) );
- iNotificationsArray.Remove( index );
- if ( iNotificationsArray.Count( ) == 0 )
+ if (index != KErrNotFound)
{
- iStorage->SetCallback( 0 );
+ iNotificationsArray.Remove( index );
+ if ( iNotificationsArray.Count( ) == 0 )
+ {
+ iStorage->SetCallback( 0 );
+ }
}
}
@@ -374,15 +406,14 @@
void CCPDataManager::ExtractActionL( const TLiwGenericParam* aParam, RBuf8& aAction )
{
CP_DEBUG( _L8("CCPDataManager::ExtractActionL()") );
- CLiwDefaultMap* map = CLiwDefaultMap::NewLC( );
- if ( !aParam->Value().Get( *map ) )
+ if ( aParam->Value().TypeId() != EVariantTypeMap )
{
User::Leave( KErrArgument );
}
TLiwVariant variant; variant.PushL( );
TPtrC8 tempBuf( KNullDesC8 );
- if ( map->FindL( KActionMap, variant )
+ if ( aParam->Value().AsMap()->FindL( KActionMap, variant )
&& variant.Get( tempBuf ) )
{
aAction.CreateL( tempBuf );
@@ -393,7 +424,6 @@
}
CleanupStack::PopAndDestroy( &variant );
- CleanupStack::PopAndDestroy( map );
}
// -----------------------------------------------------------------------------
@@ -437,15 +467,15 @@
if( pos != KErrNotFound )
{
TLiwVariant variant = (*outList)[pos].Value();
- CLiwDefaultMap *map = CLiwDefaultMap::NewLC();
- variant.Get( *map );
- if (map->FindL( KFlag, variant ))
- {
- TUint flag;
- variant.Get( flag );
- result = flag & EActivate;
- }
- CleanupStack::PopAndDestroy( map );
+ if ( variant.TypeId() == EVariantTypeMap )
+ {
+ if (variant.AsMap()->FindL( KFlag, variant ))
+ {
+ TUint flag;
+ variant.Get( flag );
+ result = flag & EActivate;
+ }
+ }
variant.Reset();
}
}
@@ -458,30 +488,39 @@
// -----------------------------------------------------------------------------
//
void CCPDataManager::BuildChangeInfoL( const CCPLiwMap* aMap,
+ const CLiwDefaultList* aActionTriggers,
const TLiwGenericParam* aParam,
CLiwDefaultList* aChangeInfoList )
{
TLiwVariant resultVar = aParam->Value();
- resultVar.PushL();
- CLiwDefaultMap* changeInfoMap = CLiwDefaultMap::NewLC();
- CLiwDefaultMap* resultMap = CLiwDefaultMap::NewLC();
- resultVar.Get( *resultMap );
-
- CopyVariantL(KId, resultMap, changeInfoMap );
- CopyVariantL(KPublisherId, resultMap, changeInfoMap );
- CopyVariantL(KContentType, resultMap, changeInfoMap );
- CopyVariantL(KContentId, resultMap, changeInfoMap );
- CopyVariantL(KFlag, resultMap, changeInfoMap );
- CopyVariantL(KType, aMap, changeInfoMap );
- CopyVariantL(KActionTrigger, aMap, changeInfoMap );
- CopyActionTrigger16L( aMap, changeInfoMap );
-
- changeInfoMap->InsertL( KOperation, TLiwVariant( KOperationExecute ) );
-
- aChangeInfoList->AppendL( TLiwVariant( changeInfoMap ) );
- CleanupStack::PopAndDestroy( resultMap );
- CleanupStack::PopAndDestroy( changeInfoMap );
- CleanupStack::PopAndDestroy( &resultVar );
+ resultVar.PushL();
+ if ( resultVar.TypeId() == EVariantTypeMap )
+ {
+ for ( TInt i = 0; i<aActionTriggers->Count(); i++ )
+ {
+ CLiwDefaultMap* changeInfoMap = CLiwDefaultMap::NewLC();
+
+ CopyVariantL(KId, resultVar.AsMap(), changeInfoMap );
+ CopyVariantL(KPublisherId, resultVar.AsMap(), changeInfoMap );
+ CopyVariantL(KContentType, resultVar.AsMap(), changeInfoMap );
+ CopyVariantL(KContentId, resultVar.AsMap(), changeInfoMap );
+ CopyVariantL(KFlag, resultVar.AsMap(), changeInfoMap );
+ CopyVariantL(KType, aMap, changeInfoMap );
+
+ TLiwVariant trigger;
+ trigger.PushL();
+ aActionTriggers->AtL(i,trigger);
+ changeInfoMap->InsertL(KActionTrigger, trigger);
+ CopyActionTrigger16L(trigger,changeInfoMap);
+ CleanupStack::PopAndDestroy(&trigger);
+
+ changeInfoMap->InsertL( KOperation, TLiwVariant( KOperationExecute ) );
+
+ aChangeInfoList->AppendL( TLiwVariant( changeInfoMap ) );
+ CleanupStack::PopAndDestroy( changeInfoMap );
+ }
+ }
+ CleanupStack::PopAndDestroy( &resultVar );
}
@@ -490,23 +529,32 @@
// -----------------------------------------------------------------------------
//
void CCPDataManager::BuildDefaultChangeInfoL( const CCPLiwMap* aMap,
+ const CLiwDefaultList* aActionTriggers,
CLiwDefaultList* aChangeInfoList )
{
- CLiwDefaultMap* changeInfoMap = CLiwDefaultMap::NewLC();
+ for ( TInt i = 0; i<aActionTriggers->Count(); i++ )
+ {
+ CLiwDefaultMap* changeInfoMap = CLiwDefaultMap::NewLC();
- CopyVariantL(KId, aMap, changeInfoMap );
- CopyVariantL(KPublisherId, aMap, changeInfoMap );
- CopyVariantL(KContentType, aMap, changeInfoMap );
- CopyVariantL(KContentId, aMap, changeInfoMap );
- CopyVariantL(KFlag, aMap, changeInfoMap );
- CopyVariantL(KType, aMap, changeInfoMap );
- CopyVariantL(KActionTrigger, aMap, changeInfoMap );
- CopyActionTrigger16L( aMap, changeInfoMap );
-
- changeInfoMap->InsertL( KOperation, TLiwVariant( KOperationExecute ) );
-
- aChangeInfoList->AppendL( TLiwVariant( changeInfoMap ) );
- CleanupStack::PopAndDestroy( changeInfoMap );
+ CopyVariantL(KId, aMap, changeInfoMap );
+ CopyVariantL(KPublisherId, aMap, changeInfoMap );
+ CopyVariantL(KContentType, aMap, changeInfoMap );
+ CopyVariantL(KContentId, aMap, changeInfoMap );
+ CopyVariantL(KFlag, aMap, changeInfoMap );
+ CopyVariantL(KType, aMap, changeInfoMap );
+
+ TLiwVariant trigger;
+ trigger.PushL();
+ aActionTriggers->AtL(i,trigger);
+ changeInfoMap->InsertL(KActionTrigger, trigger);
+ CopyActionTrigger16L(trigger,changeInfoMap);
+ CleanupStack::PopAndDestroy(&trigger);
+
+ changeInfoMap->InsertL( KOperation, TLiwVariant( KOperationExecute ) );
+
+ aChangeInfoList->AppendL( TLiwVariant( changeInfoMap ) );
+ CleanupStack::PopAndDestroy( changeInfoMap );
+ }
}
// -----------------------------------------------------------------------------
@@ -561,22 +609,30 @@
variant.PushL();
if ( aInMap->FindL( KActionTrigger(), variant ) )
{
-
- TPtrC8 result8( KNullDesC8 );
- if( variant.Get( result8 ) )
- {
- RBuf actionTrigger;
- actionTrigger.CleanupClosePushL();
- actionTrigger.Assign(
- EscapeUtils::ConvertToUnicodeFromUtf8L( result8 ) );
-
- variant.Reset();
- variant.Set( actionTrigger );
- CleanupStack::PopAndDestroy( &actionTrigger );
- }
-
- aOutMap->InsertL( KActionTrigger16(), variant );
+ CopyActionTrigger16L(variant,aOutMap);
}
CleanupStack::PopAndDestroy( &variant );
}
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CCPDataManager::CopyActionTrigger16L( const TLiwVariant& aVariant,
+ CLiwDefaultMap* aOutMap )
+ {
+ if( aVariant.TypeId() == EVariantTypeDesC8 )
+ {
+ TLiwVariant variant;
+ variant.PushL();
+ RBuf desc16;
+ desc16.CleanupClosePushL();
+ desc16.Assign(
+ EscapeUtils::ConvertToUnicodeFromUtf8L( aVariant.AsData()) );
+ variant.Set( desc16 );
+ aOutMap->InsertL(KActionTrigger16(),variant);
+ CleanupStack::PopAndDestroy( &desc16 );
+ CleanupStack::PopAndDestroy( &variant );
+ }
+ }
+
--- a/contentpublishingsrv/contentpublishingserver/cpserver/src/cpserversession.cpp Wed Mar 03 15:38:34 2010 +0200
+++ b/contentpublishingsrv/contentpublishingserver/cpserver/src/cpserversession.cpp Wed May 12 13:36:47 2010 +0300
@@ -33,7 +33,6 @@
#include "cpactionhandlerthread.h"
#include "cpnotificationhandler.h"
-
using namespace LIW;
// ================= MEMBER FUNCTIONS =======================
@@ -183,6 +182,9 @@
case ECpServerExecuteAction:
ExecuteActionL( aMessage );
break;
+ case ECpServerExecuteMultipleActions:
+ ExecuteMultipleActionsL( aMessage );
+ break;
default:
iServer->PanicClient( aMessage, ECPServerBadRequest );
aPanicedClient = ETrue;
@@ -282,20 +284,68 @@
//
void CCPServerSession::ExecuteActionL( const RMessage2& aMessage )
{
- TInt error(KErrNone);
CP_DEBUG( _L8("CCPServerSession::ExecuteActionSizeL()" ) );
+ TUint options = static_cast<TUint>( aMessage.Int2() ); // 2 == KOptionsPosition
CCPLiwMap* map = UnpackFromClientLC( aMessage );
- CLiwGenericParamList* paramList = CLiwGenericParamList::NewLC( );
+ ExecuteActionL( map, EFalse, options );
+ CleanupStack::PopAndDestroy( map );
+ }
+
+// -----------------------------------------------------------------------------
+//
+// --------------- --------------------------------------------------------------
+//
+void CCPServerSession::ExecuteActionL(const CCPLiwMap* aMap,
+ TBool aEnableCache, TUint aOptions)
+ {
+ CP_DEBUG( _L8("CCPServerSession::ExecuteActionSizeL()" ) );
+ TInt error(KErrNone);
+ CLiwGenericParamList* paramList = CLiwGenericParamList::NewLC();
CLiwDefaultList* list = CLiwDefaultList::NewLC();
- error = iDataManager->GetActionL( *map, *paramList, list );
+ error = iDataManager->GetActionsL(*aMap, aEnableCache, *paramList, list );
//we notify apart from action execution result. So in fact
- //notification means there was an attempt to execute action
- iDataManager->HandleChangeL( list );
- User::LeaveIfError( error );
- ExecuteL( *paramList );
- CleanupStack::PopAndDestroy( list );
- CleanupStack::PopAndDestroy( paramList );
- CleanupStack::PopAndDestroy( map );
+ //notification means there was an attempt to execute action
+ if (!(aOptions & KDisableNotification))
+ {
+ iDataManager->HandleChangeL(list);
+ }
+ User::LeaveIfError(error);
+ ExecuteL(*paramList);
+ CleanupStack::PopAndDestroy(list);
+ CleanupStack::PopAndDestroy(paramList);
+ }
+
+// -----------------------------------------------------------------------------
+// CCPServerSession::ExecuteMultipleActionsL
+// --------------- --------------------------------------------------------------
+//
+void CCPServerSession::ExecuteMultipleActionsL(const RMessage2& aMessage)
+ {
+ CP_DEBUG( _L8("CCPServerSession::ExecuteMultipleActionsL()" ) );
+
+ CLiwGenericParamList* genericList = UnpackForMultiExecuteLC(aMessage);
+ TUint options = static_cast<TUint> (aMessage.Int2()); // 2 == KOptionsPosition
+
+ const TLiwGenericParam* param = NULL;
+ TInt pos(0);
+ param = genericList->FindFirst(pos, KFilters);
+ const CLiwList* maps = param->Value().AsList();
+ CLiwDefaultList* cpMaps = CheckValidityLC(maps);
+
+ //execute actions
+ for (TInt i = 0; i < cpMaps->Count(); i++)
+ {
+ TLiwVariant mapVariant;
+ mapVariant.PushL();
+ cpMaps->AtL(i, mapVariant);
+ const CCPLiwMap* map =
+ static_cast<const CCPLiwMap*> (mapVariant.AsMap());
+ TRAP_IGNORE(ExecuteActionL(map, ETrue, options));
+ CleanupStack::PopAndDestroy(&mapVariant);
+ }
+
+ CleanupStack::PopAndDestroy(cpMaps);
+ CleanupStack::PopAndDestroy(genericList);
}
// -----------------------------------------------------------------------------
@@ -333,6 +383,7 @@
iServer->PanicClient( aMessage, ECPServerBadRequest );
User::Leave( KErrGeneral );
}
+ isRegister = ETrue;
if ( !iNotificationHandler )
{
iNotificationHandler = CCPNotificationHandler::NewL(
@@ -340,7 +391,6 @@
iDataManager->AddObserverL( iNotificationHandler );
}
iNotificationHandler->SaveMessageL( aMessage );
- isRegister = ETrue;
}
else
{
@@ -382,7 +432,7 @@
void CCPServerSession::UnregisterObserverL()
{
CP_DEBUG( _L8("CCPServerSession::UnregisterObserverL()" ) );
- if ( isRegister )
+ if ( isRegister && iNotificationHandler )
{
//remove notification handler from an array of sessions in data manager
iDataManager->RemoveObserver( iNotificationHandler );
@@ -407,10 +457,10 @@
CP_DEBUG( _L8("CCPServerSession::GetChangeInfoData()" ) );
if( iNotificationHandler )
{
- isRegister = EFalse;
ExternalizeAndWriteToClientL( aMessage,
iNotificationHandler->GetPointerToChangeInfoList( ) );
iNotificationHandler->Reset( );
+ isRegister = EFalse;
}
}
@@ -482,7 +532,7 @@
aMap->InsertL( KActionTrigger, TLiwVariant( KActivateTrigger ) );
}
CLiwGenericParamList* paramList = CLiwGenericParamList::NewLC();
- iDataManager->GetActionL( *aMap, *paramList, aNotificationList );
+ iDataManager->GetActionsL( *aMap, EFalse, *paramList, aNotificationList );
iActionHandlerThread->ExecuteL( *paramList );
CleanupStack::PopAndDestroy( paramList );
}
@@ -498,4 +548,51 @@
&& iServer->GetLock() );
}
+
+// -----------------------------------------------------------------------------
+//
+// --------------- --------------------------------------------------------------
+//
+CLiwGenericParamList* CCPServerSession::UnpackForMultiExecuteLC(
+ const RMessage2& aMessage)
+ {
+ TInt deslen = aMessage.GetDesLengthL(KDescriptorPosition);
+ HBufC8* buffer = HBufC8::NewLC(deslen);
+ TPtr8 tempDes = buffer->Des();
+ aMessage.Read(KDescriptorPosition, tempDes);
+ RDesReadStream datastrm(*buffer);
+ CleanupClosePushL(datastrm);
+ CLiwGenericParamList* genericList = CLiwGenericParamList::NewL(datastrm);
+ CleanupStack::PopAndDestroy(&datastrm);
+ CleanupStack::PopAndDestroy(buffer);
+ CleanupStack::PushL(genericList);
+ return genericList;
+ }
+
+// -----------------------------------------------------------------------------
+//
+// --------------- --------------------------------------------------------------
+//
+CLiwDefaultList* CCPServerSession::CheckValidityLC(const CLiwList* aMaps)
+ {
+ CLiwDefaultList* cpMaps = CLiwDefaultList::NewLC();
+ for (TInt i = 0; i < aMaps->Count(); i++)
+ {
+ TLiwVariant mapVariant;
+ mapVariant.PushL();
+ aMaps->AtL(i, mapVariant);
+ if (mapVariant.TypeId() != LIW::EVariantTypeMap)
+ {
+ User::Leave(KErrBadName);
+ }
+ CCPLiwMap* map = CCPLiwMap::NewL(*mapVariant.AsMap());
+ map->PushL();
+ map->IsValidForActionL();
+ cpMaps->AppendL(TLiwVariant(map));
+ CleanupStack::PopAndDestroy(map);
+ CleanupStack::PopAndDestroy(&mapVariant);
+ }
+ return cpMaps;
+ }
+
// End of File
--- a/contentpublishingsrv/contentpublishingserver/cpsqlitestorage/src/cpstorageengine.cpp Wed Mar 03 15:38:34 2010 +0200
+++ b/contentpublishingsrv/contentpublishingserver/cpsqlitestorage/src/cpstorageengine.cpp Wed May 12 13:36:47 2010 +0300
@@ -241,13 +241,10 @@
void CCpStorageEngine::CreateNewDbL()
{
TSecureId id( KServerUid ); // Uid of CP Server - only this process has access rights
- TSecurityPolicy defaultPolicy;
- TSecurityPolicy securityPolicy(id);
+ TSecurityPolicy defaultPolicy( id );
RSqlSecurityPolicy sqlSecurityPolicy;
CleanupClosePushL( sqlSecurityPolicy );
User::LeaveIfError( sqlSecurityPolicy.Create( defaultPolicy ) );
- User::LeaveIfError( sqlSecurityPolicy.SetDbPolicy(
- RSqlSecurityPolicy::ESchemaPolicy, securityPolicy ) );
#ifdef CONTENT_PUBLISHER_STORAGE_MT
iSqlDb.CreateL( KCPpathdatabase, &KMdsSqlDbaConfig );
#else
--- a/contentpublishingsrv/contentpublishingutils/contentpublishingdebug/bwins/cpdebugu.def Wed Mar 03 15:38:34 2010 +0200
+++ b/contentpublishingsrv/contentpublishingutils/contentpublishingdebug/bwins/cpdebugu.def Wed May 12 13:36:47 2010 +0300
@@ -1,8 +1,9 @@
EXPORTS
- ?Data@CCPDebug@@CAPAUDebugData@@XZ @ 1 NONAME ; struct DebugData * CCPDebug::Data(void)
- ?Enable@CCPDebug@@SAHXZ @ 2 NONAME ; int CCPDebug::Enable(void)
- ?EnableLogging@CCPDebug@@SAXH@Z @ 3 NONAME ; void CCPDebug::EnableLogging(int)
- ?NewL@CCPDebug@@SAPAV1@ABVTDesC16@@@Z @ 4 NONAME ; class CCPDebug * CCPDebug::NewL(class TDesC16 const &)
+ ?EnableLogging@CCPDebug@@SAXH@Z @ 1 NONAME ; void CCPDebug::EnableLogging(int)
+ ?Printf@CCPDebug@@SAXV?$TRefByValue@$$CBVTDesC8@@@@ZZ @ 2 NONAME ; void CCPDebug::Printf(class TRefByValue<class TDesC8 const >, ...)
+ ?NewL@CCPDebug@@SAPAV1@ABVTDesC16@@@Z @ 3 NONAME ; class CCPDebug * CCPDebug::NewL(class TDesC16 const &)
+ ?Data@CCPDebug@@CAPAUDebugData@@XZ @ 4 NONAME ; struct DebugData * CCPDebug::Data(void)
?NewLC@CCPDebug@@SAPAV1@ABVTDesC16@@@Z @ 5 NONAME ; class CCPDebug * CCPDebug::NewLC(class TDesC16 const &)
- ?Printf@CCPDebug@@SAXV?$TRefByValue@$$CBVTDesC8@@@@ZZ @ 6 NONAME ; void CCPDebug::Printf(class TRefByValue<class TDesC8 const >, ...)
+ ?ExtendedPrint@CCPDebug@@SAXPBDABVCLiwGenericParamList@@@Z @ 6 NONAME ; void CCPDebug::ExtendedPrint(char const *, class CLiwGenericParamList const &)
+ ?Enable@CCPDebug@@SAHXZ @ 7 NONAME ; int CCPDebug::Enable(void)
--- a/contentpublishingsrv/contentpublishingutils/contentpublishingdebug/eabi/cpdebugu.def Wed Mar 03 15:38:34 2010 +0200
+++ b/contentpublishingsrv/contentpublishingutils/contentpublishingdebug/eabi/cpdebugu.def Wed May 12 13:36:47 2010 +0300
@@ -1,8 +1,9 @@
EXPORTS
_ZN8CCPDebug13EnableLoggingEi @ 1 NONAME
- _ZN8CCPDebug4DataEv @ 2 NONAME
- _ZN8CCPDebug4NewLERK7TDesC16 @ 3 NONAME
- _ZN8CCPDebug5NewLCERK7TDesC16 @ 4 NONAME
- _ZN8CCPDebug6EnableEv @ 5 NONAME
- _ZN8CCPDebug6PrintfE11TRefByValueIK6TDesC8Ez @ 6 NONAME
+ _ZN8CCPDebug13ExtendedPrintEPKcRK20CLiwGenericParamList @ 2 NONAME
+ _ZN8CCPDebug4DataEv @ 3 NONAME
+ _ZN8CCPDebug4NewLERK7TDesC16 @ 4 NONAME
+ _ZN8CCPDebug5NewLCERK7TDesC16 @ 5 NONAME
+ _ZN8CCPDebug6EnableEv @ 6 NONAME
+ _ZN8CCPDebug6PrintfE11TRefByValueIK6TDesC8Ez @ 7 NONAME
--- a/contentpublishingsrv/contentpublishingutils/contentpublishingdebug/group/cpdebug.mmp Wed Mar 03 15:38:34 2010 +0200
+++ b/contentpublishingsrv/contentpublishingutils/contentpublishingdebug/group/cpdebug.mmp Wed May 12 13:36:47 2010 +0300
@@ -39,5 +39,7 @@
LIBRARY euser.lib
LIBRARY estor.lib
LIBRARY efsrv.lib
+LIBRARY liwservicehandler.lib
+
//end of file
--- a/contentpublishingsrv/contentpublishingutils/contentpublishingdebug/inc/cpdebug.h Wed Mar 03 15:38:34 2010 +0200
+++ b/contentpublishingsrv/contentpublishingutils/contentpublishingdebug/inc/cpdebug.h Wed May 12 13:36:47 2010 +0300
@@ -23,6 +23,7 @@
#include <e32base.h>
#ifdef CONTENT_PUBLISHER_DEBUG
#include <f32file.h>
+#include <liwgenericparam.h>
_LIT(KCPDebugDirName, "contentpublisher" );
_LIT(KCPDebugFileName, "c:\\contentpublisher.txt" );
@@ -62,6 +63,14 @@
*/
IMPORT_C static void Printf(TRefByValue<const TDesC8> aFormat, ...);
+ /**
+ * Print debug text to RDebug
+ *
+ */
+ IMPORT_C static void ExtendedPrint( const char* aStringParam,
+ const CLiwGenericParamList& aInParamList );
+
+
private:
CCPDebug();
@@ -84,7 +93,7 @@
};
#define CP_DEBUG(s) CCPDebug::Printf(s)
-
+#define CP_EXTENDED_DEBUG(s,p) CCPDebug::ExtendedPrint(s,p)
/**
* Thread local storage space. Writable static data is not supported in
* Symbian, so static data is stored in this struct.
@@ -100,7 +109,8 @@
#else
-#define CP_DEBUG(s)
+#define CP_DEBUG(s)
+#define CP_EXTENDED_DEBUG(s,p)
#endif
--- a/contentpublishingsrv/contentpublishingutils/contentpublishingdebug/src/cpdebug.cpp Wed Mar 03 15:38:34 2010 +0200
+++ b/contentpublishingsrv/contentpublishingutils/contentpublishingdebug/src/cpdebug.cpp Wed May 12 13:36:47 2010 +0300
@@ -37,7 +37,7 @@
iData->iFileName = aFile;
Dll::SetTls( iData );
User::LeaveIfError( iData->iFs.Connect( ) );
- EnableLogging( ETrue );
+ EnableLogging( EFalse );
}
// ---------------------------------------------------------------------------
@@ -161,6 +161,25 @@
//
// ---------------------------------------------------------------------------
//
+EXPORT_C void CCPDebug::ExtendedPrint( const char* aStringParam,
+ const CLiwGenericParamList& aInParamList )
+ {
+ RDebug::Printf( "CPS Client::Request %s Parameters: \n", aStringParam );
+ for ( TInt i = 0; i < aInParamList.Count( ); i++ )
+ {
+ TLiwGenericParam tempParam;
+ tempParam.PushL();
+ TRAP_IGNORE( aInParamList.AtL(i ,tempParam) );
+ Dump( tempParam.Value() );
+ CleanupStack::Pop(&tempParam);
+ tempParam.Reset();
+ }
+ }
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
EXPORT_C DebugData* CCPDebug::Data()
{
return static_cast<DebugData*>(Dll::Tls());
--- a/contentpublishingsrv/contentpublishingutils/contentpublishingmap/bwins/cputilsu.def Wed Mar 03 15:38:34 2010 +0200
+++ b/contentpublishingsrv/contentpublishingutils/contentpublishingmap/bwins/cputilsu.def Wed May 12 13:36:47 2010 +0300
@@ -1,16 +1,18 @@
EXPORTS
- ?GetProperty@CCPLiwMap@@QBEHABVTDesC8@@AAJ@Z @ 1 NONAME ; int CCPLiwMap::GetProperty(class TDesC8 const &, long &) const
- ?GetPropertyL@CCPLiwMap@@QBEHABVTDesC8@@AAVRBuf16@@@Z @ 2 NONAME ; int CCPLiwMap::GetPropertyL(class TDesC8 const &, class RBuf16 &) const
- ?GetPropertyL@CCPLiwMap@@QBEHABVTDesC8@@AAVRBuf8@@@Z @ 3 NONAME ; int CCPLiwMap::GetPropertyL(class TDesC8 const &, class RBuf8 &) const
- ?IsValidForActionL@CCPLiwMap@@QBEXXZ @ 4 NONAME ; void CCPLiwMap::IsValidForActionL(void) const
- ?IsValidForNotificationL@CCPLiwMap@@QBEXXZ @ 5 NONAME ; void CCPLiwMap::IsValidForNotificationL(void) const
- ?NewL@CCPLiwMap@@SAPAV1@AAVRDesReadStream@@@Z @ 6 NONAME ; class CCPLiwMap * CCPLiwMap::NewL(class RDesReadStream &)
+ ?PackForServerLC@CCPLiwMap@@QBEPAVHBufC8@@XZ @ 1 NONAME ; class HBufC8 * CCPLiwMap::PackForServerLC(void) const
+ ?NewL@CCPLiwMap@@SAPAV1@ABVCLiwMap@@@Z @ 2 NONAME ; class CCPLiwMap * CCPLiwMap::NewL(class CLiwMap const &)
+ ?IsValidForActionL@CCPLiwMap@@QBEXXZ @ 3 NONAME ; void CCPLiwMap::IsValidForActionL(void) const
+ ?NewL@CCPLiwMap@@SAPAV1@AAVRDesReadStream@@@Z @ 4 NONAME ; class CCPLiwMap * CCPLiwMap::NewL(class RDesReadStream &)
+ ?GetPropertyL@CCPLiwMap@@QBEHABVTDesC8@@AAVRBuf8@@@Z @ 5 NONAME ; int CCPLiwMap::GetPropertyL(class TDesC8 const &, class RBuf8 &) const
+ ?GetProperty@CCPLiwMap@@QBEHABVTDesC8@@AAJ@Z @ 6 NONAME ; int CCPLiwMap::GetProperty(class TDesC8 const &, long &) const
?NewL@CCPLiwMap@@SAPAV1@ABVCLiwGenericParamList@@@Z @ 7 NONAME ; class CCPLiwMap * CCPLiwMap::NewL(class CLiwGenericParamList const &)
- ?NewL@CContentMap@@SAPAV1@XZ @ 8 NONAME ; class CContentMap * CContentMap::NewL(void)
- ?NewL@CPublisherRegistryMap@@SAPAV1@XZ @ 9 NONAME ; class CPublisherRegistryMap * CPublisherRegistryMap::NewL(void)
- ?NewLC@CContentMap@@SAPAV1@XZ @ 10 NONAME ; class CContentMap * CContentMap::NewLC(void)
- ?NewLC@CPublisherRegistryMap@@SAPAV1@XZ @ 11 NONAME ; class CPublisherRegistryMap * CPublisherRegistryMap::NewLC(void)
- ?PackForServerLC@CCPLiwMap@@QBEPAVHBufC8@@XZ @ 12 NONAME ; class HBufC8 * CCPLiwMap::PackForServerLC(void) const
- ?Reset@CCPLiwMap@@QBEXXZ @ 13 NONAME ; void CCPLiwMap::Reset(void) const
- ?SetSecurityL@CCPLiwMap@@QAEXABVRMessage2@@@Z @ 14 NONAME ; void CCPLiwMap::SetSecurityL(class RMessage2 const &)
+ ?GetPropertyL@CCPLiwMap@@QBEHABVTDesC8@@AAVRBuf16@@@Z @ 8 NONAME ; int CCPLiwMap::GetPropertyL(class TDesC8 const &, class RBuf16 &) const
+ ?Reset@CCPLiwMap@@QBEXXZ @ 9 NONAME ; void CCPLiwMap::Reset(void) const
+ ?IsValidForNotificationL@CCPLiwMap@@QBEXXZ @ 10 NONAME ; void CCPLiwMap::IsValidForNotificationL(void) const
+ ?SetSecurityL@CCPLiwMap@@QAEXABVRMessage2@@@Z @ 11 NONAME ; void CCPLiwMap::SetSecurityL(class RMessage2 const &)
+ ?NewLC@CPublisherRegistryMap@@SAPAV1@XZ @ 12 NONAME ; class CPublisherRegistryMap * CPublisherRegistryMap::NewLC(void)
+ ?NewL@CPublisherRegistryMap@@SAPAV1@XZ @ 13 NONAME ; class CPublisherRegistryMap * CPublisherRegistryMap::NewL(void)
+ ?GetActionTriggersLC@CCPLiwMap@@QBEPAVCLiwDefaultList@@XZ @ 14 NONAME ; class CLiwDefaultList * CCPLiwMap::GetActionTriggersLC(void) const
+ ?NewLC@CContentMap@@SAPAV1@XZ @ 15 NONAME ; class CContentMap * CContentMap::NewLC(void)
+ ?NewL@CContentMap@@SAPAV1@XZ @ 16 NONAME ; class CContentMap * CContentMap::NewL(void)
--- a/contentpublishingsrv/contentpublishingutils/contentpublishingmap/eabi/cputilsu.def Wed Mar 03 15:38:34 2010 +0200
+++ b/contentpublishingsrv/contentpublishingutils/contentpublishingmap/eabi/cputilsu.def Wed May 12 13:36:47 2010 +0300
@@ -6,13 +6,15 @@
_ZN9CCPLiwMap12SetSecurityLERK9RMessage2 @ 5 NONAME
_ZN9CCPLiwMap4NewLER14RDesReadStream @ 6 NONAME
_ZN9CCPLiwMap4NewLERK20CLiwGenericParamList @ 7 NONAME
- _ZNK9CCPLiwMap11GetPropertyERK6TDesC8Rl @ 8 NONAME
- _ZNK9CCPLiwMap12GetPropertyLERK6TDesC8R5RBuf8 @ 9 NONAME
- _ZNK9CCPLiwMap12GetPropertyLERK6TDesC8R6RBuf16 @ 10 NONAME
- _ZNK9CCPLiwMap15PackForServerLCEv @ 11 NONAME
- _ZNK9CCPLiwMap17IsValidForActionLEv @ 12 NONAME
- _ZNK9CCPLiwMap23IsValidForNotificationLEv @ 13 NONAME
- _ZNK9CCPLiwMap5ResetEv @ 14 NONAME
- _ZTI9CCPLiwMap @ 15 NONAME ; #<TI>#
- _ZTV9CCPLiwMap @ 16 NONAME ; #<VT>#
+ _ZN9CCPLiwMap4NewLERK7CLiwMap @ 8 NONAME
+ _ZNK9CCPLiwMap11GetPropertyERK6TDesC8Rl @ 9 NONAME
+ _ZNK9CCPLiwMap12GetPropertyLERK6TDesC8R5RBuf8 @ 10 NONAME
+ _ZNK9CCPLiwMap12GetPropertyLERK6TDesC8R6RBuf16 @ 11 NONAME
+ _ZNK9CCPLiwMap15PackForServerLCEv @ 12 NONAME
+ _ZNK9CCPLiwMap17IsValidForActionLEv @ 13 NONAME
+ _ZNK9CCPLiwMap19GetActionTriggersLCEv @ 14 NONAME
+ _ZNK9CCPLiwMap23IsValidForNotificationLEv @ 15 NONAME
+ _ZNK9CCPLiwMap5ResetEv @ 16 NONAME
+ _ZTI9CCPLiwMap @ 17 NONAME
+ _ZTV9CCPLiwMap @ 18 NONAME
--- a/contentpublishingsrv/contentpublishingutils/contentpublishingmap/inc/cpliwmap.h Wed Mar 03 15:38:34 2010 +0200
+++ b/contentpublishingsrv/contentpublishingutils/contentpublishingmap/inc/cpliwmap.h Wed May 12 13:36:47 2010 +0300
@@ -24,6 +24,7 @@
class RDesReadStream;
class CCPSecurityPolicy;
+class TLiwGenericParam;
// CLASS DECLARATION
/**
@@ -74,6 +75,11 @@
IMPORT_C static CCPLiwMap* NewL( const CLiwGenericParamList& aList );
/**
+ * Two-phased constructor.
+ */
+ IMPORT_C static CCPLiwMap* NewL( const CLiwMap& aMap );
+
+ /**
* Used by client to serialize this object
*
* @return object serialized to binary
@@ -112,7 +118,7 @@
*/
IMPORT_C TBool GetPropertyL( const TDesC8& aProperty,
RBuf& aResult ) const;
-
+
/**
* Fetches value for property(key) from internal map
*
@@ -133,7 +139,16 @@
IMPORT_C TBool GetProperty( const TDesC8& aProperty,
TInt32& aResult ) const;
-
+
+ /**
+ * Return list of action triggers from main map
+ * Note that these are not triggers from action map
+ *
+ * @return list of action triggers, NULL if main map
+ * doesn't have action trigger
+ */
+ IMPORT_C CLiwDefaultList* GetActionTriggersLC( ) const;
+
/**
* Setter for security policy
*
@@ -379,6 +394,18 @@
void SetL( const CLiwGenericParamList& aInParamList );
/**
+ * Sets all parameters according to provided list
+ * @param aMap map with parameters
+ */
+ void SetL( const CLiwMap& aMap );
+
+ /**
+ * Extracts a param and appends it to the internal list
+ * @param aParam a param to extract
+ */
+ void ExtractParamL(const TLiwGenericParam& aParam);
+
+ /**
* Check Get properties
*
* @return logical sum of TCPProperties of the object
@@ -438,7 +465,6 @@
*
*/
TBool PropertyExists( const TDesC8& aProperty ) const;
-
/**
* Fetches entries from database
@@ -588,6 +614,14 @@
* @return result of RSqlStatement::ColumnIndex
*/
TInt ColumnIndexL( RSqlStatement& aStmt, const TDesC& aColumnName ) const;
+
+ /**
+ * Returns ETrue if a property has valid name and type
+ * @param aProperty property name
+ * @return ETrue if property is valid, EFalse if not
+ */
+ TBool IsPropertyValidL( const TDesC8& aProperty ) const;
+
protected:
/**
@@ -599,6 +633,14 @@
* Perform the second phase construction of a CCPLiwMap object.
*/
void ConstructL();
+
+ /**
+ * Checks a type a map
+ * @param aVariant variant containing a map type
+ * @return ETrue if a type is Publisher and EFalse if Content
+ * in other cases method leaves
+ */
+ static TBool IsTypePublisherL(const TLiwVariant& aVariant);
protected:
// data
--- a/contentpublishingsrv/contentpublishingutils/contentpublishingmap/src/cpliwmap.cpp Wed Mar 03 15:38:34 2010 +0200
+++ b/contentpublishingsrv/contentpublishingutils/contentpublishingmap/src/cpliwmap.cpp Wed May 12 13:36:47 2010 +0300
@@ -28,6 +28,8 @@
#include "cpublisherregistrymap.h"
#include "cpsecuritypolicy.h"
+using namespace LIW;
+
// ======== MEMBER FUNCTIONS ========
// ---------------------------------------------------------------------------
@@ -55,34 +57,16 @@
CCPLiwMap* map( NULL );
if( param && pos !=KErrNotFound )
{
- RBuf typeBuf;
- typeBuf.CleanupClosePushL();
- TPtrC type( KNullDesC );
- if( !param->Value().Get( type ) )
+ if( IsTypePublisherL(param->Value()) )
{
- TPtrC8 type8( KNullDesC8 );
- if( !param->Value().Get( type8 ) )
- {
- User::Leave( KErrBadName );
- }
- typeBuf.Assign( EscapeUtils::ConvertToUnicodeFromUtf8L( type8 ) );
+ map = CPublisherRegistryMap::NewLC();
}
- else
- {
- typeBuf.CreateL( type );
- }
- if( typeBuf.Find( KCpData () ) != KErrNotFound )
+ else
{
map = CContentMap::NewLC();
}
- else if ( typeBuf.Find( KPublisher () ) != KErrNotFound )
- {
- map = CPublisherRegistryMap::NewLC();
- }
- else User::Leave( KErrArgument );
- map->SetL( aList );
- CleanupStack::Pop( map );
- CleanupStack::PopAndDestroy( &typeBuf );
+ map->SetL(aList);
+ CleanupStack::Pop(map);
}
else
{
@@ -94,6 +78,38 @@
// ---------------------------------------------------------------------------
//
// ---------------------------------------------------------------------------
+//
+EXPORT_C CCPLiwMap* CCPLiwMap::NewL( const CLiwMap& aMap )
+ {
+ CP_DEBUG( _L8("CCPLiwMap::NewL") );
+ TLiwVariant typeVariant;
+ typeVariant.PushL();
+ CCPLiwMap* map( NULL );
+
+ if (aMap.FindL(KType, typeVariant))
+ {
+ if( IsTypePublisherL(typeVariant) )
+ {
+ map = CPublisherRegistryMap::NewLC();
+ }
+ else
+ {
+ map = CContentMap::NewLC();
+ }
+ map->SetL(aMap);
+ CleanupStack::Pop(map);
+ }
+ else
+ {
+ User::Leave( KErrPathNotFound );
+ }
+ CleanupStack::PopAndDestroy(&typeVariant);
+ return map;
+ }
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
//
EXPORT_C HBufC8* CCPLiwMap::PackForServerLC() const
{
@@ -281,6 +297,63 @@
return result;
}
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+EXPORT_C CLiwDefaultList* CCPLiwMap::GetActionTriggersLC( ) const
+ {
+ CP_DEBUG( _L8("CCPLiwMap::GetActionTriggers") );
+ TInt pos( 0 );
+ CLiwDefaultList* list(NULL);
+ const TLiwGenericParam* paramForValue = iMap->FindFirst( pos,
+ KActionTrigger );
+ if ( paramForValue )
+ {
+ if ( paramForValue->Value().TypeId() == EVariantTypeDesC8 )
+ {
+ list = CLiwDefaultList::NewLC();
+ list->AppendL(paramForValue->Value());
+ }
+ if ( paramForValue->Value().TypeId() == EVariantTypeDesC )
+ {
+ list = CLiwDefaultList::NewLC();
+ RBuf8 desc8;
+ desc8.CleanupClosePushL();
+ desc8.Assign( EscapeUtils::ConvertFromUnicodeToUtf8L(
+ paramForValue->Value().AsDes() ) );
+ list->AppendL(TLiwVariant(desc8));
+ CleanupStack::PopAndDestroy( &desc8 );
+ }
+ else if ( paramForValue->Value().TypeId() == EVariantTypeList )
+ {
+ list = CLiwDefaultList::NewLC();
+ const CLiwList* sourceList = paramForValue->Value().AsList();
+ TInt count = sourceList->Count();
+ for (TInt i = 0; i < count; i++)
+ {
+ TLiwVariant trigger;
+ trigger.PushL();
+ sourceList->AtL(i,trigger);
+ if (trigger.TypeId() == EVariantTypeDesC8)
+ {
+ list->AppendL(trigger);
+ }
+ else if (trigger.TypeId() == EVariantTypeDesC)
+ {
+ RBuf8 desc8;
+ desc8.CleanupClosePushL();
+ desc8.Assign( EscapeUtils::ConvertFromUnicodeToUtf8L(
+ trigger.AsDes() ) );
+ list->AppendL(TLiwVariant(desc8));
+ CleanupStack::PopAndDestroy( &desc8 );
+ }
+ CleanupStack::PopAndDestroy(&trigger);
+ }
+ }
+ }
+ return list;
+ }
// ---------------------------------------------------------------------------
//
@@ -444,49 +517,78 @@
//
void CCPLiwMap::SetL( const CLiwGenericParamList& aInParamList )
{
-
CP_DEBUG( _L8("CCPLiwMap::SetL") );
for ( TInt i = 0; i < aInParamList.Count( ); i++ )
{
const TLiwGenericParam& param = aInParamList[i];
- if ( param.Value().TypeId( ) == LIW::EVariantTypeMap )
+ ExtractParamL(param);
+ }
+ }
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+void CCPLiwMap::SetL( const CLiwMap& aMap )
+ {
+ CP_DEBUG( _L8("CCPLiwMap::SetL") );
+ for ( TInt i = 0; i < aMap.Count( ); i++ )
+ {
+ TBuf8<128> key;
+ aMap.AtL(i, key);
+ TLiwVariant value;
+ value.PushL();
+ aMap.FindL(key, value);
+ TLiwGenericParam param(key,value);
+ ExtractParamL(param);
+ CleanupStack::PopAndDestroy(&value);
+ }
+ }
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+void CCPLiwMap::ExtractParamL(const TLiwGenericParam& aParam)
+ {
+ CP_DEBUG( _L8("CCPLiwMap::ExtractVariantL") );
+ if (aParam.Value().TypeId() == LIW::EVariantTypeMap)
+ {
+ const CLiwMap* map = aParam.Value().AsMap();
+ for (TInt i = 0; i < map->Count(); i++)
{
- const CLiwMap* map = param.Value().AsMap( );
- for ( TInt i = 0; i <map->Count( ); i++ )
+ TBuf8<128> key;
+ map->AtL(i, key);
+ TLiwVariant value;
+ value.PushL();
+ map->FindL(key, value);
+ if (key == KOperation)
{
- TBuf8<128> key;
- map->AtL( i, key );
- TLiwVariant value;
- value.PushL( );
- map->FindL( key, value );
- if ( key == KOperation )
- {
- IsProperOperationL( value );
- }
- RBuf8 datadesc;
- datadesc.CleanupClosePushL();
- if ( value.TypeId( ) == LIW::EVariantTypeMap )
- {
- const CLiwMap* internalMap = value.AsMap( );
- datadesc.CreateL( internalMap->Size( ) );
- RDesWriteStream datastrm(datadesc);
- CleanupClosePushL( datastrm );
- internalMap->ExternalizeL( datastrm );
- datastrm.CommitL( );
- CleanupStack::PopAndDestroy( &datastrm );
- value.Reset( );
- value.Set( datadesc );
- }
- TLiwGenericParam data( key, value);
- iMap->AppendL( data );
- CleanupStack::PopAndDestroy( &datadesc );
- CleanupStack::PopAndDestroy( &value );
+ IsProperOperationL(value);
}
+ RBuf8 datadesc;
+ datadesc.CleanupClosePushL();
+ if (value.TypeId() == LIW::EVariantTypeMap)
+ {
+ const CLiwMap* internalMap = value.AsMap();
+ datadesc.CreateL(internalMap->Size());
+ RDesWriteStream datastrm(datadesc);
+ CleanupClosePushL(datastrm);
+ internalMap->ExternalizeL(datastrm);
+ datastrm.CommitL();
+ CleanupStack::PopAndDestroy(&datastrm);
+ value.Reset();
+ value.Set(datadesc);
+ }
+ TLiwGenericParam data(key, value);
+ iMap->AppendL(data);
+ CleanupStack::PopAndDestroy(&datadesc);
+ CleanupStack::PopAndDestroy(&value);
}
- else
- {
- iMap->AppendL( param );
- }
+ }
+ else
+ {
+ iMap->AppendL(aParam);
}
}
@@ -737,16 +839,7 @@
//
TBool CCPLiwMap::IsPublisherNameL() const
{
- TBool result( EFalse );
- RBuf buffer;
- buffer.CleanupClosePushL();
- result = GetPropertyL( KPublisherId, buffer );
- if( result && buffer.Length() == KErrNone )
- {
- User::Leave( KErrArgument );
- }
- CleanupStack::PopAndDestroy( &buffer );
- return result;
+ return IsPropertyValidL( KPublisherId );
}
// ---------------------------------------------------------------------------
@@ -755,16 +848,7 @@
//
TBool CCPLiwMap::IsContentTypeL() const
{
- TBool result( EFalse );
- RBuf buffer;
- buffer.CleanupClosePushL();
- result = GetPropertyL( KContentType, buffer );
- if( result && buffer.Length() == KErrNone )
- {
- User::Leave( KErrArgument );
- }
- CleanupStack::PopAndDestroy( &buffer );
- return result;
+ return IsPropertyValidL( KContentType );
}
// ---------------------------------------------------------------------------
@@ -773,16 +857,7 @@
//
TBool CCPLiwMap::IsContentIdL() const
{
- TBool result( EFalse );
- RBuf buffer;
- buffer.CleanupClosePushL();
- result = GetPropertyL( KContentId, buffer );
- if( result && buffer.Length() == KErrNone )
- {
- User::Leave( KErrArgument );
- }
- CleanupStack::PopAndDestroy( &buffer );
- return result;
+ return IsPropertyValidL( KContentId );
}
// ---------------------------------------------------------------------------
@@ -791,11 +866,21 @@
//
TBool CCPLiwMap::IsTriggerL( ) const
{
- TBool result( EFalse );
- RBuf8 buffer;
- buffer.CleanupClosePushL();
- result = GetPropertyL( KActionTrigger, buffer );
- CleanupStack::PopAndDestroy( &buffer );
+ TBool result(EFalse);
+ TInt pos( 0 );
+ const TLiwGenericParam* paramForValue = iMap->FindFirst( pos,
+ KActionTrigger );
+ if ( pos != KErrNotFound )
+ {
+ result = ETrue;
+ LIW::TVariantTypeId variantType = paramForValue->Value().TypeId();
+ if ( variantType != EVariantTypeDesC &&
+ variantType != EVariantTypeDesC8 &&
+ variantType != EVariantTypeList )
+ {
+ User::Leave( KErrBadName );
+ }
+ }
return result;
}
@@ -1203,6 +1288,46 @@
//
// ---------------------------------------------------------------------------
//
+TBool CCPLiwMap::IsTypePublisherL( const TLiwVariant& aVariant )
+ {
+ TBool result (EFalse);
+ RBuf typeBuf;
+ typeBuf.CleanupClosePushL();
+ TPtrC type( KNullDesC );
+ if( !aVariant.Get( type ) )
+ {
+ TPtrC8 type8( KNullDesC8 );
+ if( !aVariant.Get( type8 ) )
+ {
+ User::Leave( KErrBadName );
+ }
+ typeBuf.Assign( EscapeUtils::ConvertToUnicodeFromUtf8L( type8 ) );
+ }
+ else
+ {
+ typeBuf.CreateL( type );
+ }
+ if( typeBuf.Find( KCpData () ) != KErrNotFound )
+ {
+ result = EFalse;
+ }
+ else if ( typeBuf.Find( KPublisher () ) != KErrNotFound )
+ {
+ result = ETrue;
+ }
+ else
+ {
+ User::Leave( KErrArgument );
+ }
+ CleanupStack::PopAndDestroy( &typeBuf );
+ return result;
+ }
+
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
void CCPLiwMap::CheckIdentifiersL() const
{
IsPublisherNameL();
@@ -1266,5 +1391,38 @@
return ret;
}
-
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+TBool CCPLiwMap::IsPropertyValidL( const TDesC8& aProperty ) const
+ {
+ CP_DEBUG( _L8("CCPLiwMap::IsPropertyValidL") );
+ TBool found( EFalse );
+ TInt pos( 0 );
+ const TLiwGenericParam* paramForValue = iMap->FindFirst( pos, aProperty );
+ if ( pos != KErrNotFound )
+ {
+ found = ETrue;
+ TInt length(0);
+ if( paramForValue->Value().TypeId() == EVariantTypeDesC )
+ {
+ length = paramForValue->Value().AsDes().Length();
+ }
+ else if ( paramForValue->Value().TypeId() == EVariantTypeDesC8 )
+ {
+ length = paramForValue->Value().AsData().Length();
+ }
+ else
+ {
+ User::Leave( KErrBadName );
+ }
+
+ if ( length == 0 )
+ {
+ User::Leave( KErrArgument );
+ }
+ }
+ return found;
+ }
--- a/contentpublishingsrv/contentpublishingutils/pluginvalidator/inc/charvesterpluginvalidator.h Wed Mar 03 15:38:34 2010 +0200
+++ b/contentpublishingsrv/contentpublishingutils/pluginvalidator/inc/charvesterpluginvalidator.h Wed May 12 13:36:47 2010 +0300
@@ -11,7 +11,7 @@
*
* Contributors:
*
-* Description:
+* Description:
*
*/
@@ -22,7 +22,7 @@
// INCLUDES
#include <e32base.h>
#include <e32hashtab.h>
-#include "cpluginvalidator.h"
+#include "cpluginvalidator.h"
// FORWARD DECLARATIONS
class CBlacklistHandler;
@@ -41,7 +41,7 @@
/**
* Class used to maintain required ECOM plugins implementations
*
- *
+ *
* @lib cpclient.dll
* @since S60 v 5.0
*/
@@ -51,21 +51,21 @@
/**
* Two-phased constructor.
- *
- */
- IMPORT_C static CHarvesterPluginValidator* NewL( TUid aUid,
+ *
+ */
+ IMPORT_C static CHarvesterPluginValidator* NewL( TUid aUid,
TAny *aParameter = NULL );
/**
* Two-phased constructor.
- *
- */
+ *
+ */
IMPORT_C static CHarvesterPluginValidator* NewLC( TUid aUid,
TAny *aParameter = NULL );
-
+
/**
* Desctructor.
- */
+ */
~CHarvesterPluginValidator();
@@ -73,39 +73,33 @@
/**
* C++ default constructor.
- */
- CHarvesterPluginValidator( TUid aUid, TAny *aParameter );
+ */
+ CHarvesterPluginValidator( TUid aUid, TAny *aParameter );
/**
* Perform the second phase construction of a CPluginValidator object.
- */
+ */
void ConstructL();
/**
* Loads or destroys plugins
- */
+ */
void ManagePluginsL();
-
+
/**
* Loads ECOM plugins
- */
+ */
void LoadPluginL( TPluginInfo& aPluginInfo );
private:
-
+
/**
* Blacklist Handler
* Own
*/
CBlacklistHandler* iBlacklist;
-
- /*
- * Startup flag
- *
- */
- TBool iStartup;
-
+
/*
* Property indicating the status of load operation
* Own
--- a/contentpublishingsrv/contentpublishingutils/pluginvalidator/src/charvesterpluginvalidator.cpp Wed Mar 03 15:38:34 2010 +0200
+++ b/contentpublishingsrv/contentpublishingutils/pluginvalidator/src/charvesterpluginvalidator.cpp Wed May 12 13:36:47 2010 +0300
@@ -11,7 +11,7 @@
*
* Contributors:
*
-* Description:
+* Description:
*
*/
@@ -32,11 +32,11 @@
//
// ----------------------------------------------------------------------------
//
-EXPORT_C CHarvesterPluginValidator* CHarvesterPluginValidator::NewL( TUid aUid,
+EXPORT_C CHarvesterPluginValidator* CHarvesterPluginValidator::NewL( TUid aUid,
TAny *aParameter )
{
- CHarvesterPluginValidator* self =
- CHarvesterPluginValidator::NewLC( aUid , aParameter );
+ CHarvesterPluginValidator* self =
+ CHarvesterPluginValidator::NewLC( aUid , aParameter );
CleanupStack::Pop( self );
return self;
}
@@ -48,8 +48,8 @@
EXPORT_C CHarvesterPluginValidator* CHarvesterPluginValidator::NewLC( TUid aUid,
TAny *aParameter )
{
- CHarvesterPluginValidator* self = new( ELeave )
- CHarvesterPluginValidator( aUid, aParameter );
+ CHarvesterPluginValidator* self = new( ELeave )
+ CHarvesterPluginValidator( aUid, aParameter );
CleanupStack::PushL( self );
self->ConstructL();
return self;
@@ -70,12 +70,12 @@
//
// ----------------------------------------------------------------------------
//
-CHarvesterPluginValidator::CHarvesterPluginValidator( TUid aUid, TAny* aParameter ):
- CPluginValidator(aUid, aParameter),
- iStartup( ETrue )
- {
-
- }
+CHarvesterPluginValidator::CHarvesterPluginValidator(TUid aUid,
+ TAny* aParameter) :
+ CPluginValidator(aUid, aParameter)
+{
+
+}
// ----------------------------------------------------------------------------
//
@@ -83,7 +83,7 @@
//
void CHarvesterPluginValidator::ConstructL()
{
- iBlacklist = CBlacklistHandler::NewL( );
+ iBlacklist = CBlacklistHandler::NewL();
CPluginValidator::ConstructL();
}
@@ -92,76 +92,70 @@
//
// ----------------------------------------------------------------------------
//
-void CHarvesterPluginValidator::ManagePluginsL()
+void CHarvesterPluginValidator::ManagePluginsL()
{
- TInt errorCode = iInProgressProperty.Define( TUid::Uid( KHarvesterUid ),
- KInProgressPropertyKey, RProperty::EInt );
-
+ TInt errorCode = iInProgressProperty.Define( TUid::Uid( KHarvesterUid ),
+ KInProgressPropertyKey, RProperty::EInt );
+
if ( KErrAlreadyExists == errorCode )
- {
- TInt value(-1);
- iInProgressProperty.Get( TUid::Uid( KHarvesterUid ),
- KInProgressPropertyKey, value);
- if ( value == 1 )
- {
- // property value == inprogress
- // there was a panic in the previous startup
- // so we make unofficial blacklist official
- iBlacklist->CopyBlacklistL( EFalse );
- }
- }
+ {
+ TInt value(-1);
+ iInProgressProperty.Get( TUid::Uid( KHarvesterUid ),
+ KInProgressPropertyKey, value);
+ if ( value == 1 )
+ {
+ // property value == inprogress
+ // there was a panic in the previous startup
+ // so we make unofficial blacklist official
+ iBlacklist->CopyBlacklistL( EFalse );
+ }
+ }
else
- {
- User::LeaveIfError( errorCode );
- }
+ {
+ User::LeaveIfError( errorCode );
+ }
// copy blacklisted plugins to unoffical blacklist at startup
iBlacklist->CopyBlacklistL( ETrue );
-
+
// set property value to 1 (which means "in progress")
- iInProgressProperty.Set( TUid::Uid( KHarvesterUid ),
- KInProgressPropertyKey, 1 );
-
+ iInProgressProperty.Set( TUid::Uid( KHarvesterUid ),
+ KInProgressPropertyKey, 1 );
+
CPluginValidator::ManagePluginsL();
-
- if ( iStartup )
- {
- RProperty::Set( KPSUidActiveIdle2,
- KActiveIdleCpsPluginsUpdated , EPSAiPluginsUpdated );
- iStartup = EFalse;
- }
+
// set property value to 0 (which means "finished")
- iInProgressProperty.Set( TUid::Uid( KHarvesterUid ),
- KInProgressPropertyKey, 0 );
+ iInProgressProperty.Set( TUid::Uid( KHarvesterUid ),
+ KInProgressPropertyKey, 0 );
}
// ----------------------------------------------------------------------------
//
// ----------------------------------------------------------------------------
//
-void CHarvesterPluginValidator::LoadPluginL( TPluginInfo& aPluginInfo )
+void CHarvesterPluginValidator::LoadPluginL( TPluginInfo& aPluginInfo )
{
if ( !iBlacklist->IsPresentL( aPluginInfo.iImplementationUid ) )
- {
- //first we append UID to the blacklist
- iBlacklist->AppendL( aPluginInfo.iImplementationUid );
- TAny* plug ( NULL );
- TInt err( KErrNone );
- TRAP( err, plug = REComSession::CreateImplementationL(
- aPluginInfo.iImplementationUid,
- aPluginInfo.iDtor_ID_Key, iParameter ) );
- if( err==KErrNone && plug )
- {
- TRAP_IGNORE(
- CleanupStack::PushL( plug );
- aPluginInfo.iPlugin = plug;
- iPluginArray.AppendL( aPluginInfo );
- CleanupStack::Pop( plug );
- static_cast<CContentHarvesterPlugin*>( plug )->UpdateL()
- );
- }
- //no panic during load so we can remove UID from blacklist
- iBlacklist->RemoveL( aPluginInfo.iImplementationUid );
- }
+ {
+ //first we append UID to the blacklist
+ iBlacklist->AppendL( aPluginInfo.iImplementationUid );
+ TAny* plug ( NULL );
+ TInt err( KErrNone );
+ TRAP( err, plug = REComSession::CreateImplementationL(
+ aPluginInfo.iImplementationUid,
+ aPluginInfo.iDtor_ID_Key, iParameter ) );
+ if( err==KErrNone && plug )
+ {
+ TRAP_IGNORE(
+ CleanupStack::PushL( plug );
+ aPluginInfo.iPlugin = plug;
+ iPluginArray.AppendL( aPluginInfo );
+ CleanupStack::Pop( plug );
+ static_cast<CContentHarvesterPlugin*>( plug )->UpdateL()
+ );
+ }
+ //no panic during load so we can remove UID from blacklist
+ iBlacklist->RemoveL( aPluginInfo.iImplementationUid );
+ }
}
--- a/contextutility/bwins/hgcontextutilityu.def Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,31 +0,0 @@
-EXPORTS
- ?PublishServiceIdL@CHgContextUtility@@QAEXABVTDesC16@@0ABVTTimeIntervalMicroSeconds32@@@Z @ 1 NONAME ; void CHgContextUtility::PublishServiceIdL(class TDesC16 const &, class TDesC16 const &, class TTimeIntervalMicroSeconds32 const &)
- ?PublishMusicContextL@CHgContextUtility@@QAEXABVTTimeIntervalMicroSeconds32@@@Z @ 2 NONAME ; void CHgContextUtility::PublishMusicContextL(class TTimeIntervalMicroSeconds32 const &)
- ?PublishContactContextL@CHgContextUtility@@QAEXABV?$RPointerArray@VMVPbkStoreContact@@@@ABVTTimeIntervalMicroSeconds32@@@Z @ 3 NONAME ; void CHgContextUtility::PublishContactContextL(class RPointerArray<class MVPbkStoreContact> const &, class TTimeIntervalMicroSeconds32 const &)
- ?SplitCombinedStringL@CHgContextUtility@@SAXABVTDesC16@@AAVCDesC16Array@@@Z @ 4 NONAME ; void CHgContextUtility::SplitCombinedStringL(class TDesC16 const &, class CDesC16Array &)
- ?PublishContactContextL@CHgContextUtility@@QAEXABVTDesC16@@ABVTTimeIntervalMicroSeconds32@@@Z @ 5 NONAME ; void CHgContextUtility::PublishContactContextL(class TDesC16 const &, class TTimeIntervalMicroSeconds32 const &)
- ??1CHgContextUtility@@UAE@XZ @ 6 NONAME ; CHgContextUtility::~CHgContextUtility(void)
- ?NewLC@CHgContextUtility@@SAPAV1@XZ @ 7 NONAME ; class CHgContextUtility * CHgContextUtility::NewLC(void)
- ?RePublishWhenFgL@CHgContextUtility@@QAEXH@Z @ 8 NONAME ; void CHgContextUtility::RePublishWhenFgL(int)
- ?PublishPhotoContextL@CHgContextUtility@@QAEXABVTDesC16@@ABVTTimeIntervalMicroSeconds32@@@Z @ 9 NONAME ; void CHgContextUtility::PublishPhotoContextL(class TDesC16 const &, class TTimeIntervalMicroSeconds32 const &)
- ?BuildCombinedStringL@CHgContextUtility@@SAPAVHBufC16@@ABVMDesC16Array@@@Z @ 10 NONAME ; class HBufC16 * CHgContextUtility::BuildCombinedStringL(class MDesC16Array const &)
- ?PublishContextDelayedL@CHgContextUtilityBase@@QAEXABVTDesC16@@ABVMDesC16Array@@ABVTTimeIntervalMicroSeconds32@@@Z @ 11 NONAME ; void CHgContextUtilityBase::PublishContextDelayedL(class TDesC16 const &, class MDesC16Array const &, class TTimeIntervalMicroSeconds32 const &)
- ?PublishContactContextL@CHgContextUtility@@QAEXABVMVPbkContactLink@@ABVTTimeIntervalMicroSeconds32@@@Z @ 12 NONAME ; void CHgContextUtility::PublishContactContextL(class MVPbkContactLink const &, class TTimeIntervalMicroSeconds32 const &)
- ?PublishUrlContextL@CHgContextUtility@@QAEXABVTDesC16@@ABVTTimeIntervalMicroSeconds32@@@Z @ 13 NONAME ; void CHgContextUtility::PublishUrlContextL(class TDesC16 const &, class TTimeIntervalMicroSeconds32 const &)
- ?PublishTvContextL@CHgContextUtility@@QAEXABVTDesC16@@000@Z @ 14 NONAME ; void CHgContextUtility::PublishTvContextL(class TDesC16 const &, class TDesC16 const &, class TDesC16 const &, class TDesC16 const &)
- ?PublishContextL@CHgContextUtilityBase@@QAEXABVTDesC16@@ABVMDesC16Array@@@Z @ 15 NONAME ; void CHgContextUtilityBase::PublishContextL(class TDesC16 const &, class MDesC16Array const &)
- ?AllowPublishFromBackground@CHgContextUtility@@QAEXH@Z @ 16 NONAME ; void CHgContextUtility::AllowPublishFromBackground(int)
- ?PublishContactContextL@CHgContextUtility@@QAEXABVMVPbkStoreContact@@ABVTTimeIntervalMicroSeconds32@@@Z @ 17 NONAME ; void CHgContextUtility::PublishContactContextL(class MVPbkStoreContact const &, class TTimeIntervalMicroSeconds32 const &)
- ?AddMusicContextInfoL@CHgContextUtility@@QAEXABVTDesC16@@0@Z @ 18 NONAME ; void CHgContextUtility::AddMusicContextInfoL(class TDesC16 const &, class TDesC16 const &)
- ?GetContextL@CHgContextUtilityBase@@QAEPAVHBufC16@@ABVTDesC16@@@Z @ 19 NONAME ; class HBufC16 * CHgContextUtilityBase::GetContextL(class TDesC16 const &)
- ?NewL@CHgContextUtility@@SAPAV1@XZ @ 20 NONAME ; class CHgContextUtility * CHgContextUtility::NewL(void)
- ?PublishContextDelayedL@CHgContextUtilityBase@@QAEXABVTDesC16@@0ABVTTimeIntervalMicroSeconds32@@@Z @ 21 NONAME ; void CHgContextUtilityBase::PublishContextDelayedL(class TDesC16 const &, class TDesC16 const &, class TTimeIntervalMicroSeconds32 const &)
- ?PublishTextContextL@CHgContextUtility@@QAEXABVTDesC16@@ABVTTimeIntervalMicroSeconds32@@@Z @ 22 NONAME ; void CHgContextUtility::PublishTextContextL(class TDesC16 const &, class TTimeIntervalMicroSeconds32 const &)
- ?PublishContextL@CHgContextUtilityBase@@QAEXABVTDesC16@@0@Z @ 23 NONAME ; void CHgContextUtilityBase::PublishContextL(class TDesC16 const &, class TDesC16 const &)
- ?GetContextL@CHgContextUtilityBase@@QAEPAVHBufC16@@ABVTDesC16@@0@Z @ 24 NONAME ; class HBufC16 * CHgContextUtilityBase::GetContextL(class TDesC16 const &, class TDesC16 const &)
- ?PublishRadioContextL@CHgContextUtility@@QAEXABVTDesC16@@000@Z @ 25 NONAME ; void CHgContextUtility::PublishRadioContextL(class TDesC16 const &, class TDesC16 const &, class TDesC16 const &, class TDesC16 const &)
- ?PublishPhotoContextL@CHgContextUtility@@QAEXKAAVCMdESession@@ABVTTimeIntervalMicroSeconds32@@@Z @ 26 NONAME ; void CHgContextUtility::PublishPhotoContextL(unsigned long, class CMdESession &, class TTimeIntervalMicroSeconds32 const &)
- ?PublishContactContextL@CHgContextUtility@@QAEXABVCVPbkContactLinkArray@@ABVTTimeIntervalMicroSeconds32@@@Z @ 27 NONAME ; void CHgContextUtility::PublishContactContextL(class CVPbkContactLinkArray const &, class TTimeIntervalMicroSeconds32 const &)
- ?PublishTimeContextL@CHgContextUtility@@QAEXABVTTime@@ABVTTimeIntervalMicroSeconds32@@@Z @ 28 NONAME ; void CHgContextUtility::PublishTimeContextL(class TTime const &, class TTimeIntervalMicroSeconds32 const &)
- ?PublishContactContextL@CHgContextUtility@@QAEXABVMDesC16Array@@ABVTTimeIntervalMicroSeconds32@@@Z @ 29 NONAME ; void CHgContextUtility::PublishContactContextL(class MDesC16Array const &, class TTimeIntervalMicroSeconds32 const &)
-
--- a/contextutility/eabi/hgcontextutilityu.def Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,35 +0,0 @@
-EXPORTS
- _ZN17CHgContextUtility16RePublishWhenFgLEi @ 1 NONAME
- _ZN17CHgContextUtility17PublishServiceIdLERK7TDesC16S2_RK27TTimeIntervalMicroSeconds32 @ 2 NONAME
- _ZN17CHgContextUtility17PublishTvContextLERK7TDesC16S2_S2_S2_ @ 3 NONAME
- _ZN17CHgContextUtility18PublishUrlContextLERK7TDesC16RK27TTimeIntervalMicroSeconds32 @ 4 NONAME
- _ZN17CHgContextUtility19PublishTextContextLERK7TDesC16RK27TTimeIntervalMicroSeconds32 @ 5 NONAME
- _ZN17CHgContextUtility19PublishTimeContextLERK5TTimeRK27TTimeIntervalMicroSeconds32 @ 6 NONAME
- _ZN17CHgContextUtility20AddMusicContextInfoLERK7TDesC16S2_ @ 7 NONAME
- _ZN17CHgContextUtility20BuildCombinedStringLERK12MDesC16Array @ 8 NONAME
- _ZN17CHgContextUtility20PublishMusicContextLERK27TTimeIntervalMicroSeconds32 @ 9 NONAME
- _ZN17CHgContextUtility20PublishPhotoContextLERK7TDesC16RK27TTimeIntervalMicroSeconds32 @ 10 NONAME
- _ZN17CHgContextUtility20PublishPhotoContextLEmR11CMdESessionRK27TTimeIntervalMicroSeconds32 @ 11 NONAME
- _ZN17CHgContextUtility20PublishRadioContextLERK7TDesC16S2_S2_S2_ @ 12 NONAME
- _ZN17CHgContextUtility20SplitCombinedStringLERK7TDesC16R12CDesC16Array @ 13 NONAME
- _ZN17CHgContextUtility22PublishContactContextLERK12MDesC16ArrayRK27TTimeIntervalMicroSeconds32 @ 14 NONAME
- _ZN17CHgContextUtility22PublishContactContextLERK13RPointerArrayI17MVPbkStoreContactERK27TTimeIntervalMicroSeconds32 @ 15 NONAME
- _ZN17CHgContextUtility22PublishContactContextLERK16MVPbkContactLinkRK27TTimeIntervalMicroSeconds32 @ 16 NONAME
- _ZN17CHgContextUtility22PublishContactContextLERK17MVPbkStoreContactRK27TTimeIntervalMicroSeconds32 @ 17 NONAME
- _ZN17CHgContextUtility22PublishContactContextLERK21CVPbkContactLinkArrayRK27TTimeIntervalMicroSeconds32 @ 18 NONAME
- _ZN17CHgContextUtility22PublishContactContextLERK7TDesC16RK27TTimeIntervalMicroSeconds32 @ 19 NONAME
- _ZN17CHgContextUtility26AllowPublishFromBackgroundEi @ 20 NONAME
- _ZN17CHgContextUtility4NewLEv @ 21 NONAME
- _ZN17CHgContextUtility5NewLCEv @ 22 NONAME
- _ZN17CHgContextUtilityD0Ev @ 23 NONAME
- _ZN17CHgContextUtilityD1Ev @ 24 NONAME
- _ZN17CHgContextUtilityD2Ev @ 25 NONAME
- _ZN21CHgContextUtilityBase11GetContextLERK7TDesC16 @ 26 NONAME
- _ZN21CHgContextUtilityBase11GetContextLERK7TDesC16S2_ @ 27 NONAME
- _ZN21CHgContextUtilityBase15PublishContextLERK7TDesC16RK12MDesC16Array @ 28 NONAME
- _ZN21CHgContextUtilityBase15PublishContextLERK7TDesC16S2_ @ 29 NONAME
- _ZN21CHgContextUtilityBase22PublishContextDelayedLERK7TDesC16RK12MDesC16ArrayRK27TTimeIntervalMicroSeconds32 @ 30 NONAME
- _ZN21CHgContextUtilityBase22PublishContextDelayedLERK7TDesC16S2_RK27TTimeIntervalMicroSeconds32 @ 31 NONAME
- _ZTI21CHgContextUtilityBase @ 32 NONAME
- _ZTV21CHgContextUtilityBase @ 33 NONAME
-
--- a/contextutility/group/bld.inf Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,30 +0,0 @@
-/*
-* 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".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: Build info file for Context publishing helper DLL.
-*
-*/
-
-
-#include <platform_paths.hrh>
-
-PRJ_EXPORTS
-../rom/hgcontextutility.iby CORE_MW_LAYER_IBY_EXPORT_PATH(hgcontextutility.iby)
-
-
-PRJ_MMPFILES
-hgcontextutility.mmp
-
-PRJ_TESTMMPFILES
-
-
--- a/contextutility/group/hgcontextutility.mmp Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,46 +0,0 @@
-/*
-* 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".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: Context publishing helper dll
-*
-*/
-
-
-#include <platform_paths.hrh>
-#include <defaultcaps.hrh>
-
-TARGETTYPE DLL
-TARGET hgcontextutility.dll
-UID 0x1000008d
-CAPABILITY CAP_GENERAL_DLL
-
-SOURCEPATH ../src
-SOURCE hgcontextutilitybase.cpp
-SOURCE hgcontextutility.cpp
-SOURCE hgcontextutilityimpl.cpp
-
-USERINCLUDE ../inc
-USERINCLUDE ../../inc
-
-APP_LAYER_SYSTEMINCLUDE
-
-LIBRARY euser.lib
-LIBRARY estor.lib
-LIBRARY bafl.lib
-LIBRARY cfclient.lib
-LIBRARY cfservices.lib
-LIBRARY cone.lib
-LIBRARY ws32.lib
-LIBRARY mdeclient.lib
-LIBRARY vpbkeng.lib
-
--- a/contextutility/inc/hgcontexttypes.h Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,39 +0,0 @@
-/*
-* 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".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: CFW source and type names
-*
-*/
-
-#ifndef HGCONTEXTTYPES_H
-#define HGCONTEXTTYPES_H
-
-#include <e32base.h>
-#include <hg/hgcontextdef.h> // pull in the public part
-
-_LIT( KHgCFTypeFgApp, "FgApp" ); // published by fswserver
-
-_LIT( KHgCFTypeUpdateAvail, "UpdateAvail" ); // for iad source plug-in
-
-_LIT( KHgCFTypeMdsObjChanged, "MdsObjChanged" );
-_LIT( KHgCFTypeMdsRelChanged, "MdsRelChanged" );
-
-_LIT( KHgCFValueDuplicateMarker, "<dupl>" ); // may be used in PbkContactMulti
-
-const TInt KHgCFValueLinkMarker = 2; // prefix when Contact holds a vpbk contact link
-
-_LIT( KHgCFTypeCallState, "CallState" );
-_LIT( KHgCFTypeCallSusp, "CallSusp" ); // see hgcfcallsourceplugin
-_LIT( KHgCFTypeContactFromCall, "ContactFromCall" ); // contains "1" if contact is coming from a voice/video call
-
-#endif // HGCONTEXTTYPES_H
--- a/contextutility/inc/hgcontextutilityimpl.h Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,434 +0,0 @@
-/*
-* 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".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: Context publishing helper dll
-*
-*/
-
-
-#ifndef HGCONTEXTUTILITYIMPL_H
-#define HGCONTEXTUTILITYIMPL_H
-
-#include <e32base.h>
-#include <cflistener.h>
-#include <bamdesca.h>
-#include <badesca.h>
-#include <mdccommon.h>
-#include <coemain.h>
-#include <e32hashtab.h>
-
-class CCFClient;
-class MVPbkContactLink;
-class MVPbkStoreContact;
-class CVPbkContactLinkArray;
-class CMdESession;
-
-/**
- * Utility class offering static and non-static functions for
- * publishing and accessing context through the Context Framework.
- */
-NONSHARABLE_CLASS( CHgContextUtilityImpl ) :
- public CTimer,
- public MCFListener,
- public MCoeForegroundObserver
- {
-public:
- static CHgContextUtilityImpl* NewL();
- static CHgContextUtilityImpl* NewLC();
- virtual ~CHgContextUtilityImpl();
-
- /**
- * Publishes context.
- * Also defines the context if it has not been defined.
- * Publishing empty value is not allowed, however such errors are ignored
- * here so the function will not leave when CFW responds with KErrArgument.
- * The security policy for the context will be set to require
- * LocalServices capability.
- * @param aContextType context type, source is always KHgCFSource
- * @param aContextData value for the context
- */
- void PublishContextL( const TDesC& aContextType,
- const TDesC& aContextData );
-
- /**
- * Publishes context, the value will contain all the strings
- * from the given array, typically by using some separator character.
- * @see PublishContextL
- * @param aContextType context type, source is always KHgCFSource
- * @param aContextData value for the context will be a combined
- * version of all the strings from this array
- */
- void PublishContextL( const TDesC& aContextType,
- const MDesCArray& aContextData );
-
- /**
- * Static version that uses the given CCFClient instance.
- * @param aCFClient a CCFClient instance
- * @param aContextType context type, source is always KHgCFSource
- * @param aContextData value for the context
- */
- static void PublishContextL( CCFClient& aCFClient,
- const TDesC& aContextType, const TDesC& aContextData );
-
- /**
- * Publishes context but only after a short interval, using a timer.
- * If it is called again before the timer expires then the timer
- * is restarted (and so the previous pending value is never published).
- * @param aContextType context type, source is always KHgCFSource
- * @param aContextData value for the context
- * @param aDelay delay for the timer
- */
- void PublishContextDelayedL( const TDesC& aContextType,
- const TDesC& aContextData, TTimeIntervalMicroSeconds32 aDelay );
-
- /**
- * Overload for delayed publishing of a value combined from multiple strings.
- * @param aContextType context type
- * @param aContextData string array
- * @param aDelay delay for the timer, in microseconds
- */
- void PublishContextDelayedL( const TDesC& aContextType,
- const MDesCArray& aContextData, TTimeIntervalMicroSeconds32 aDelay );
-
- /**
- * Requests the given context and returns the value for the
- * first result. Returns NULL if not found.
- * @param aContextType context type, the source is always KHgCFSource
- */
- HBufC* GetContextL( const TDesC& aContextType );
-
- /**
- * Requests the given context and returns the value for the
- * first result. Returns NULL if not found.
- * @param aContextSource context source
- * @param aContextType context type
- */
- HBufC* GetContextL( const TDesC& aContextSource,
- const TDesC& aContextType );
-
- /**
- * Creates a combined string from the elements of the given array.
- * Returns NULL if the array has less than 2 elements.
- * @param aArray string array
- * @return combined string or NULL, ownership transferred to caller
- */
- static HBufC* BuildCombinedStringL( const MDesCArray& aArray );
-
- /**
- * Splits the given combined string and appends the components to
- * the given array. The initial content of the array is not modified.
- * If aString does not seem to be a string combined from multiple entries
- * then aString is appended to aArray without any changes.
- * @param aString combined string, input
- * @param aArray array, output
- */
- static void SplitCombinedStringL( const TDesC& aString,
- CDesCArray& aArray );
-
- /**
- * Gets a string that can be published straight via PublishContextL.
- * The pointer is left on the cleanup stack.
- * Returned & pushed pointer may also be NULL is something goes wrong.
- */
- HBufC* MakeLinkPublishableLC( const MVPbkContactLink& aLink );
-
- /**
- * Publishes contact context.
- * @param aContact contact
- * @param aDelay if non-zero then context is published only after
- * a short delay. If a new publish call is made before the timer fires the
- * pending value will not be published.
- */
- void PublishContactContextL( const MVPbkStoreContact& aContact,
- const TTimeIntervalMicroSeconds32& aDelay );
-
- /**
- * Publishes contact context.
- * This may include async operations and therefore the actual publishing may happen
- * only after this function returns.
- * @param aContactLink contact link
- * @param aDelay if non-zero then context is published only after
- * a short delay. If a new publish call is made before the timer fires the
- * pending value will not be published.
- */
- void PublishContactContextL( const MVPbkContactLink& aContactLink,
- const TTimeIntervalMicroSeconds32& aDelay );
-
- /**
- * Publishes contact context.
- * Attempts to publish an empty value will be ignored.
- *
- * Prefer using the overloads taking vpbk contact or link, whenever possible.
- * Use this in case of unknown contacts only, that is, a name, phone number,
- * or email address that does not belong to a phonebook contact.
- *
- * @param aContactName formatted name, phone number, or email address,
- * or a combination of them, e.g. "firstname lastname", "+12345678",
- * "lastname firstname <abcd@efg.com>", "firstname, lastname <0501234567>".
- * @param aDelay if non-zero then context is published only after
- * a short delay. If a new publish call is made before the timer fires the
- * pending value will not be published.
- */
- void PublishContactContextL( const TDesC& aContactName,
- const TTimeIntervalMicroSeconds32& aDelay );
-
- /**
- * Overload for publishing multiple contacts.
- * @param aContacts contact array
- * @param aDelay if non-zero then context is published only after
- * a short delay. If a new publish call is made before the timer fires the
- * pending value will not be published.
- */
- void PublishContactContextL(
- const RPointerArray<MVPbkStoreContact>& aContacts,
- const TTimeIntervalMicroSeconds32& aDelay );
-
- /**
- * Overload for publishing multiple contacts.
- * This may include async operations and therefore the actual publishing may happen
- * only after this function returns.
- * @param aContactLinks contact link array
- * @param aDelay if non-zero then context is published only after
- * a short delay. If a new publish call is made before the timer fires the
- * pending value will not be published.
- */
- void PublishContactContextL(
- const CVPbkContactLinkArray& aContactLinks,
- const TTimeIntervalMicroSeconds32& aDelay );
-
- /**
- * Overload for publishing multiple contacts.
- * @param aContactNames string array, for element format
- * see PublishContactContextL(const TDesC&)
- * @param aDelay if non-zero then context is published only after
- * a short delay. If a new publish call is made before the timer fires the
- * pending value will not be published.
- */
- void PublishContactContextL( const MDesCArray& aContactNames,
- const TTimeIntervalMicroSeconds32& aDelay );
-
- /**
- * Publishes freetext context.
- * Not to be used for bulk text (e.g. full content of some text viewer component).
- * @param aText some text, typically the highlighted substring
- * from a viewer or editor control
- * @param aDelay if non-zero then context is published only after
- * a short delay. If a new publish call is made before the timer fires the
- * pending value will not be published.
- */
- void PublishTextContextL( const TDesC& aText,
- const TTimeIntervalMicroSeconds32& aDelay );
-
- /**
- * Publishes URL context.
- * @param aUrl URL
- * @param aDelay if non-zero then context is published only after
- * a short delay. If a new publish call is made before the timer fires the
- * pending value will not be published.
- */
- void PublishUrlContextL( const TDesC& aUrl,
- const TTimeIntervalMicroSeconds32& aDelay );
-
- /**
- * Publishes date/time context.
- * @param aTime time
- * @param aDelay if non-zero then context is published only after
- * a short delay. If a new publish call is made before the timer fires the
- * pending value will not be published.
- */
- void PublishTimeContextL( const TTime& aTime,
- const TTimeIntervalMicroSeconds32& aDelay );
-
- /**
- * Publishes photo context.
- * @param aFilename name of image file, with full path
- * @param aDelay if non-zero then context is published only after
- * a short delay. If a new publish call is made before the timer fires the
- * pending value will not be published.
- */
- void PublishPhotoContextL( const TDesC& aFilename,
- const TTimeIntervalMicroSeconds32& aDelay );
-
- /**
- * Publishes photo context.
- * @param aMdeItemId item id for the Image object in MDS
- * @param aMdeSession opened metadata engine session
- * @param aDelay if non-zero then context is published only after
- * a short delay. If a new publish call is made before the timer fires the
- * pending value will not be published.
- */
- void PublishPhotoContextL( TItemId aMdeItemId,
- CMdESession& aMdeSession,
- const TTimeIntervalMicroSeconds32& aDelay );
-
- /**
- * Publishes TV context.
- * Pass KNullDesC if some of the needed data is not available.
- * @param aChannelName channel name
- * @param aProgramName program name
- * @param aProgramDescription program description
- * @param aGenre genre
- */
- void PublishTvContextL( const TDesC& aChannelName,
- const TDesC& aProgramName, const TDesC& aProgramDescription,
- const TDesC& aGenre );
-
- /**
- * Publishes an account id as contact context.
- *
- * @param aServiceId the service prefix, e.g. "Ovi"
- * @param aAccountId the account id
- * @param aDelay if non-zero then context is published only after
- * a short delay. If a new publish call is made before the timer fires the
- * pending value will not be published.
- */
- void PublishServiceIdL( const TDesC& aServiceId,
- const TDesC& aAccountId,
- const TTimeIntervalMicroSeconds32& aDelay = 0 );
-
- /**
- * Enables or disables automatic re-publishing of the latest
- * context (published via this context utility instance) whenever
- * the application comes to foreground.
- *
- * It is DISABLED by default.
- *
- * By enabling this the applications do not have to care about
- * context publishing in HandleForegroundEventL etc.
- *
- * The feature needs CCoeEnv and calls will be ignored if the
- * environment is not available.
- *
- * @param aEnable flag to turn the feature on/off
- */
- void RePublishWhenFgL( TBool aEnable );
-
- /**
- * Enables or disables context publishing when being in background.
- * Applies to all PublishContextL variants.
- * If disabled then no context will be published if it seems that the
- * caller application is not in foreground.
- * Has no effect if there is no CCoeEnv available, publishing is always
- * allowed in that case.
- *
- * It is DISABLED by default, that is, publishing is not allowed
- * from applications that are not in foreground.
- *
- * @param aAllow flag to turn the feature on/off
- */
- void AllowPublishFromBackground( TBool aAllow );
-
- /**
- * @see CHgContextUtility::AddMusicContextInfo
- */
- void AddMusicContextInfoL( const TDesC& aKey, const TDesC& aData );
-
- /**
- * @see CHgContextUtility::AddMusicContextInfo
- */
- void PublishMusicContextL(
- const TTimeIntervalMicroSeconds32& aDelay = 0 );
-
- /**
- * @see CHgContextUtility::PublishRadioContextL
- */
- void PublishRadioContextL(
- const TDesC& aRadioName,
- const TDesC& aRadioUrl,
- const TDesC& aRadioFrequency,
- const TDesC& aRadioRDSPI );
-
-private: // from MCFListener
- void ContextIndicationL( const CCFContextIndication& aChangedContext );
- void ActionIndicationL( const CCFActionIndication& aActionToExecute );
- void HandleContextFrameworkError( TCFError aError,
- const TDesC& aSource, const TDesC& aType );
- TAny* Extension( const TUid& aExtensionUid ) const;
-
-private: // from MCoeForegroundObserver
- void HandleGainingForeground();
- void HandleLosingForeground();
-
-private: // from CTimer
- void RunL();
- TInt RunError( TInt aError );
-
-private:
- /**
- * Constructor.
- */
- CHgContextUtilityImpl();
-
- /**
- * 2nd phase constructor.
- */
- void ConstructL();
-
- /**
- * Creates CCFClient instance if not yet done.
- * Does not leave if creation fails.
- * Returns ETrue if iCFClient is usable.
- */
- TBool CFReady();
-
- /**
- * Returns ETrue if the root window's wgid is same as
- * the focused window group's wgid.
- * Always returns ETrue if CCoeEnv is not available.
- */
- TBool IsForeground();
-
- /**
- * Returns ETrue if publishing context is allowed at the moment.
- * Uses IsForeground and the allow-publish-from-background setting.
- */
- TBool AllowedToPublish();
-
- /**
- * Makes sure the specific key contains valid data and publishes it.
- *
- * @param aKey Key to be checked and published.
- * @param aDelay Delay for publishing the context data.
- */
- void VerifyAndPublishMusicContextL(
- const TDesC& aKey,
- const TTimeIntervalMicroSeconds32& aDelay );
-
- /**
- * Simple wrapper to handle between delayed and instant publish.
- * @see PublishContextL
- * @see PublishContextDelayedL
- */
- void PublishContextL(
- const TDesC& aContextType,
- const TDesC& aContextData,
- const TTimeIntervalMicroSeconds32& aDelay );
-
- CCFClient* iCFClient;
- HBufC* iPendingContextType;
- HBufC* iPendingContextData;
- CDesCArray* iPendingContextDataArray;
-
- HBufC* iLastContextType;
- HBufC* iLastContextData;
- TBool iFgWatchEnabled;
- CCoeEnv* iEnv; // not own
- TBool iAllowPublishFromBackground;
-
- /**
- * List of parameters to be published. Owns pointers.
- */
- RPtrHashMap<TDesC, TDesC> iMusicContextInfo;
- };
-
-#endif /* HGCONTEXTUTILITYIMPL_H */
--- a/contextutility/inc/hgctxutilslogging.h Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,25 +0,0 @@
-/*
-* 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".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: Logging utils
-*
-*/
-
-
-#ifdef _DEBUG
-_LIT( KHgLogFile, "hgctxutils.txt" );
-_LIT( KHgLogPath, "teleport" );
-#define _HGLOG_LOG_COMPONENT_ID 0x1000008d
-
-#endif
-#include "hglogging.h"
--- a/contextutility/inc/hglogging.h Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,218 +0,0 @@
-/*
-* 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".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: Logging utils
-*
-*/
-
-
-#ifndef HGLOGLOGUTILS_H
-#define HGLOGLOGUTILS_H
-
-/**
- * @file
- *
- * TAKING LOGGING INTO USE:
- *
- * This step is needed to do once per component.
- *
- * For each component that uses these common logging macros should specify
- * their own logging configuration file, which includes this file. In that
- * configuration file, following constants and macros must be defined.
- * For example:
- * @code
- *
- * _LIT( KHgLogFile, "text_file_for_logging.txt" );
- * _LIT( KHgLogPath, "folder_for_text_file" );
- * #define _HGLOG_LOG_COMPONENT_ID <some unique number here>
- *
- * #include "hglogging.h"
- *
- * @/code
- *
- * KHgLogFile : This is the name of the file, where all the logs for
- * this components are being written.
- *
- * KHgLogPath : This is the folder name under c:\logs, where the file
- * is to be stored. For example, if KHgLogPath is "test",
- * log file is created into folder c:\logs\test.
- *
- * _HGLOG_LOG_COMPONENT_ID : Unique number id of the component. This is
- * for filtering purposes.
- *
- * _HGLOG_RDEBUG : When defined tracing instead of file logging.
- * Default is for file logging.
- *
- * --------------------------------------------------------------------------
- *
- * USING LOGGING:
- *
- * Basically the use is simple, register function use with HGLOG_CONTEXT,
- * then log function enter by any HGLOG_IN -macro, then possibly use HGLOG
- * -macros for function logging and finally HGLOG_OUT -macros for returning
- * from the function.
- *
- * @code
- * TInt CGood::Example( TInt aSomething )
- * {
- * // Create log context class, which is maintained for lifetime of the
- * // method.
- * HGLOG_CONTEXT( Example, HGLOG_LOCAL );
- *
- * // Indicate we are entering the function.
- * HGLOG_IN1( "aSomething contains value %d", aSomething );
- *
- * // Your buggy code...
- *
- * // Before leaving, indicate function execution has ended.
- * HGLOG_OUT();
- *
- * return 0;
- * }
- * @/code
- */
-
-#include <e32def.h>
-#include <e32std.h>
-
-#include "hglogutils.h"
-
-#define HGLOG_API 0
-#define HGLOG_LOCAL 1
-
-#define HGLOG_INFO 0
-#define HGLOG_WARNING 1
-#define HGLOG_ERROR 2
-
-#define HGLOG_ASSERT(_assertion) __HGLOG_ASSERT_DBG(_assertion)
-#define HGLOG_TRACE_ASSERT(_assertion) __ASSERT_DEBUG((_assertion), User::Invariant() )
-
-#ifdef _DEBUG
-
-/*****************************************************************************
- LOGGING MACROS - LOGGING ON
-*****************************************************************************/
-
- /**
- * Context initialization
- * NOTE: HGLOG_STATIC_CONTEXT is meant for static methods.
- *
- * @param _fn Name of the function.
- * @param _vis Visibility for the client, use values HGLOG_API or HGLOG_LOCAL
- * @param _thdId For static functions, thread id can be given here.
- */
- #define HGLOG_CONTEXT(_fn, _vis ) _THgLogContext _dc((TText*)L ## #_fn, _HGLOG_LOG_COMPONENT_ID, _vis, (TUint)this, RProcess().SecureId().iId )
- #define HGLOG_STATIC_CONTEXT(_fn, _vis, _thdId) _THgLogContext _dc((TText*)L ## #_fn, _HGLOG_LOG_COMPONENT_ID, _vis, _thdId, RProcess().SecureId().iId )
-
- /**
- * Entering function
- *
- * @param string Custom text. Example: HGLOG_IN0( "Yeah!!!" );
- * @param p1 - p5 For multiple variables in same string.
- */
- #define HGLOG_IN() do { _CHK_MULTIIN(); _HGLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]>%s "), _dc.iVis, _dc.iCategory, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn); _MARK_ENTRY(); } while(0)
- #define HGLOG0_IN(string) do { _CHK_MULTIIN(); _HGLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]>%s " L ## string), _dc.iVis, _dc.iCategory, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn); _MARK_ENTRY(); } while(0)
- #define HGLOG1_IN(string, p1) do { _CHK_MULTIIN(); _HGLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]>%s " L ## string), _dc.iVis, _dc.iCategory, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, p1); _MARK_ENTRY(); } while(0)
- #define HGLOG2_IN(string, p1, p2) do { _CHK_MULTIIN(); _HGLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]>%s " L ## string), _dc.iVis, _dc.iCategory, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, p1, p2); _MARK_ENTRY(); } while(0)
- #define HGLOG3_IN(string, p1, p2, p3) do { _CHK_MULTIIN(); _HGLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]>%s " L ## string), _dc.iVis, _dc.iCategory, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, p1, p2, p3); _MARK_ENTRY(); } while(0)
- #define HGLOG4_IN(string, p1, p2, p3, p4) do { _CHK_MULTIIN(); _HGLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]>%s " L ## string), _dc.iVis, _dc.iCategory, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, p1, p2, p3, p4); _MARK_ENTRY(); } while(0)
- #define HGLOG5_IN(string, p1, p2, p3, p4, p5) do { _CHK_MULTIIN(); _HGLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]>%s " L ## string), _dc.iVis, _dc.iCategory, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, p1, p2, p3, p4, p5); _MARK_ENTRY(); } while(0)
-
- /** Leaving function */
- #define HGLOG_OUT() do { _DOINCHK(); _CHK_MULTIOUT(); _HGLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]<%s "), _dc.iVis, _dc.iCategory, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn); _MARK_EXIT(); } while(0)
- #define HGLOG0_OUT(string) do { _DOINCHK(); _CHK_MULTIOUT(); _HGLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]<%s " L ## string), _dc.iVis, _dc.iCategory, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn); _MARK_EXIT(); } while(0)
- #define HGLOG1_OUT(string, p1) do { _DOINCHK(); _CHK_MULTIOUT(); _HGLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]<%s " L ## string), _dc.iVis, _dc.iCategory, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, p1); _MARK_EXIT(); } while(0)
- #define HGLOG2_OUT(string, p1, p2) do { _DOINCHK(); _CHK_MULTIOUT(); _HGLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]<%s " L ## string), _dc.iVis, _dc.iCategory, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, p1, p2); _MARK_EXIT(); } while(0)
- #define HGLOG3_OUT(string, p1, p2, p3) do { _DOINCHK(); _CHK_MULTIOUT(); _HGLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]<%s " L ## string), _dc.iVis, _dc.iCategory, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, p1, p2, p3); _MARK_EXIT(); } while(0)
- #define HGLOG4_OUT(string, p1, p2, p3, p4) do { _DOINCHK(); _CHK_MULTIOUT(); _HGLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]<%s " L ## string), _dc.iVis, _dc.iCategory, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, p1, p2, p3, p4); _MARK_EXIT(); } while(0)
- #define HGLOG5_OUT(string, p1, p2, p3, p4, p5) do { _DOINCHK(); _CHK_MULTIOUT(); _HGLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]<%s " L ## string), _dc.iVis, _dc.iCategory, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, p1, p2, p3, p4, p5); _MARK_EXIT(); } while(0)
-
- /** Leaving function with return value */
- #define HGLOG0_RET(val, fmtstr) do { do { _DOINCHK(); _CHK_MULTIOUT(); _HGLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]<%s " L ## fmtstr), _dc.iVis, _dc.iCategory, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, val); _MARK_EXIT(); } while(0); return val;} while(0)
- #define HGLOG1_RET(val, fmtstr, p1) do { do { _DOINCHK(); _CHK_MULTIOUT(); _HGLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]<%s " L ## fmtstr), _dc.iVis, _dc.iCategory, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, val, p1); _MARK_EXIT(); } while(0); return val;} while(0)
- #define HGLOG2_RET(val, fmtstr, p1, p2) do { do { _DOINCHK(); _CHK_MULTIOUT(); _HGLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]<%s " L ## fmtstr), _dc.iVis, _dc.iCategory, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, val, p1, p2); _MARK_EXIT(); } while(0); return val;} while(0)
- #define HGLOG3_RET(val, fmtstr, p1, p2, p3) do { do { _DOINCHK(); _CHK_MULTIOUT(); _HGLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]<%s " L ## fmtstr), _dc.iVis, _dc.iCategory, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, val, p1, p2, p3); _MARK_EXIT(); } while(0); return val;} while(0)
- #define HGLOG4_RET(val, fmtstr, p1, p2, p3, p4) do { do { _DOINCHK(); _CHK_MULTIOUT(); _HGLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]<%s " L ## fmtstr), _dc.iVis, _dc.iCategory, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, val, p1, p2, p3, p4); _MARK_EXIT(); } while(0); return val;} while(0)
- #define HGLOG5_RET(val, fmtstr, p1, p2, p3, p4, p5) do { do { _DOINCHK(); _CHK_MULTIOUT(); _HGLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]<%s " L ## fmtstr), _dc.iVis, _dc.iCategory, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, val, p1, p2, p3, p4, p5); _MARK_EXIT(); } while(0); return val;} while(0)
-
- /**
- * General log lines
- *
- * @param level This can be used as internal information
- * field, such as info, error, warning etc.
- * @param string Custom string
- * @param p1 - p5 For multiple variables in same string.
- */
- #define HGLOG0(level, string) do { _DOINCHK(); _HGLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]%s " L ## string), _dc.iVis, level, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn); } while(0)
- #define HGLOG1(level, string, p1) do { _DOINCHK(); _HGLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]%s " L ## string), _dc.iVis, level, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, p1); } while(0)
- #define HGLOG2(level, string, p1, p2) do { _DOINCHK(); _HGLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]%s " L ## string), _dc.iVis, level, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, p1, p2); } while(0)
- #define HGLOG3(level, string, p1, p2, p3) do { _DOINCHK(); _HGLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]%s " L ## string), _dc.iVis, level, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, p1, p2, p3); } while(0)
- #define HGLOG4(level, string, p1, p2, p3, p4) do { _DOINCHK(); _HGLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]%s " L ## string), _dc.iVis, level, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, p1, p2, p3, p4); } while(0)
- #define HGLOG5(level, string, p1, p2, p3, p4, p5) do { _DOINCHK(); _HGLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]%s " L ## string), _dc.iVis, level, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, p1, p2, p3, p4, p5); } while(0)
-
- /** Error logging */
- #define __HGLOG_ASSERT_DBG( _assertion ) do { if( _assertion ) { break; } TFileName file; file.Copy( _L8( __FILE__ ) ); _HGLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]<%s Assert:%S:%d:" L ## #_assertion) , _dc.iVis, _dc.iCategory, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, &file, __LINE__ ); User::Invariant(); } while( 0 )
- #define __HGLOG_TRACE_ASSERT_DBG(_assertion, _textToPrint, _panicCode) do { if (_assertion) { break; } _HGLOGPRINTER(_IT(L ## "%s%d[%x:%x:%x]<%s ASSERTION FAILED!!! %s file: %s, line: %s"), _dc.iVis, _dc.iCategory, _dc.iId, _dc.iThdId, _dc.iAddr, _dc.iFn, _textToPrint, __FILE__, __LINE__); User::Panic(_L("AssertionFailed"), _panicCode} while(0)
- #define HGLOG_TRAPHANDLER() _THgLogTrapHandler _traceTrapHandler; _traceTrapHandler.oldHandler = User::SetTrapHandler(&_traceTrapHandler)
-
-/*****************************************************************************
- LOGGING MACROS - NO LOGGING
-*****************************************************************************/
-#else // _DEBUG
-
- #define HGLOG_CONTEXT(_fn, _vis )
- #define HGLOG_STATIC_CONTEXT(_fn, _vis, _thdId)
-
- #define HGLOG_IN()
- #define HGLOG0_IN(string)
- #define HGLOG1_IN(string, p1)
- #define HGLOG2_IN(string, p1, p2)
- #define HGLOG3_IN(string, p1, p2, p3)
- #define HGLOG4_IN(string, p1, p2, p3, p4)
- #define HGLOG5_IN(string, p1, p2, p3, p4, p5)
-
- #define HGLOG_OUT()
- #define HGLOG0_OUT(string)
- #define HGLOG1_OUT(string, p1)
- #define HGLOG2_OUT(string, p1, p2)
- #define HGLOG3_OUT(string, p1, p2, p3)
- #define HGLOG4_OUT(string, p1, p2, p3, p4)
- #define HGLOG5_OUT(string, p1, p2, p3, p4, p5)
-
- #define HGLOG0_RET(val, fmtstr) return val
- #define HGLOG1_RET(val, fmtstr, p1) return val
- #define HGLOG2_RET(val, fmtstr, p1, p2) return val
- #define HGLOG3_RET(val, fmtstr, p1, p2, p3) return val
- #define HGLOG4_RET(val, fmtstr, p1, p2, p3, p4) return val
- #define HGLOG5_RET(val, fmtstr, p1, p2, p3, p4, p5) return val
-
- #define HGLOG0(level, string)
- #define HGLOG1(level, string, p1)
- #define HGLOG2(level, string, p1, p2)
- #define HGLOG3(level, string, p1, p2, p3)
- #define HGLOG4(level, string, p1, p2, p3, p4)
- #define HGLOG5(level, string, p1, p2, p3, p4, p5)
-
- #define BIND_TRACE_TRAPHANDLER()
- #define TRACE_DECL() TInt _iTraceThreadId
- #define TRACE_FAST_CREATE(_thdId) _thdId++;
- #define TRACE_CREATE()
-
- #define __HGLOG_ASSERT_DBG(_assertion)
- #define __TRACE_ASSERT_DBG(_assertion, _message, _panicCode )
-
-#endif // _DEBUG
-
-#endif // HGLOGLOGUTILS_H
-
-// End of File
--- a/contextutility/inc/hglogutils.h Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,211 +0,0 @@
-/*
-* 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".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: Logging utils
-*
-*/
-
-
-#ifndef HGLOGUTILS_H
-#define HGLOGUTILS_H
-
-/**
- * NOTE: This file contains the logic related to logging. Change only if you
- * know what you're doing.
- */
-
-
-
-
-
-
-
-
-
-
-#ifdef _DEBUG
-
-#include <e32debug.h>
-#include <e32std.h>
-
-static const TUint HGLOGERR = 2; /**< Used to create an error message */
-
-// These macros are real macros, that should be used. For temporary purposes, these
-// are left out and the logging is done by simple entry logging
-#define _HGLOG_UNCONTROLLED_INPUT_MSG L"%s%d[%x:%x:%x]>%s UNCONTROLLED ENTRY!"
-#define _HGLOG_MULTIPLE_ENTRY_MSG L"%s%d[%x:%x:%x]%s ADDITIONAL ENTRY!"
-#define _HGLOG_UNCONTROLLER_EXIT_MSG L"%s%d[%x:%x:%x]<%s UNCONTROLLED EXIT!"
-#define _HGLOG_MULTIPLE_EXIT_MSG L"%s%d[%x:%x:%x]%s ADDITIONAL EXIT!"
-#define _HGLOG_TRAP_HARNESS_ENTRY L"_D%d[%x:%x:%x]TraceFramework: Entering trap harness"
-#define _HGLOG_TRAP_HARNESS_EXIT L"_D%d[%x:%x:%x]TraceFramework: Exiting trap harness"
-#define _HGLOG_TRAP_HARNESS_LEAVE L"_D%d[%x:%x:%x]TraceFramework: ---------- LEAVE OCCURRED !!! ---------- "
-#define _HGLOG_API_PREFIX L"_A"
-#define _HGLOG_LOCAL_PREFIX L"_L"
-
-/**
-* @file
-* trace_utils.h contains definitions needed for advanced tracing features.
-* Tracing can be customized using the following compile time flags:
-* - <b>_DEBUG</b>
-* - With this flag undefined, all traces are disabled
-* - <b>__KERNEL_MODE__</b>
-* - if kernel mode flag is defined, kernel macro variants are used (no unicode or shared heap related stuff, faster)
-* - <b>DISABLE_SYNTAX_CHECK</b>
-* - If this flag is defined, runtime syntax checking features are disabled from traces
-*/
-#ifndef DISABLE_SYNTAX_CHECK
- #define _MARK_ENTRY() _dc.inOk=ETrue
- #define _DOINCHK() _dc.DoInChk()
- #define _CHK_MULTIIN() _dc.ChkMultiIn()
- #define _CHK_MULTIOUT() _dc.ChkMultiOut()
- #define _MARK_EXIT() _dc.outOk=ETrue
-#else
- #define _MARK_ENTRY()
- #define _DOINCHK()
- #define _CHK_MULTIIN()
- #define _CHK_MULTIOUT()
- #define _MARK_EXIT()
-#endif // DISABLE_SYNTAX_CHECK
-
-/** For tracing */
-#ifdef _HGLOG_RDEBUG
- #define _IT(a) (TPtrC((const TText *)(a)))
- #define _HGLOGPRINTER RDebug::Print
-
-/** For filedebug */
-#else // _HGLOG_RDEBUG
-
- /** Includes */
- #include <e32base.h>
- #include <e32std.h>
- #include <e32def.h>
- #include <e32svr.h>
-
-// both of headers defines KLogBufferSize
-#ifndef __COMMSDEBUGUTILITY_H__
- #include <flogger.h>
-#endif
-
- #define _IT(a) KHgLogPath, KHgLogFile, EFileLoggingModeAppend, (TPtrC((const TText *)(a)))
- #define _HGLOGPRINTER RFileLogger::WriteFormat
-#endif // _HGLOG_RDEBUG
-
-class _THgLogContext
- {
- public:
- _THgLogContext(
- const TText* _fn,
- const TUint _id,
- const TUint _vis,
- const TUint _addr,
- const TUint _thdId,
- const TUint _category=0 )
- :
- iFn(_fn),
- iId(_id),
- iApi((TBool)_vis),
- iAddr(_addr),
- iThdId(_thdId),
- iVis((_vis == 0 ? (TText*)_HGLOG_API_PREFIX : (TText*)_HGLOG_LOCAL_PREFIX)),
- iCategory(_category)
- #ifndef DISABLE_SYNTAX_CHECK
- ,outOk(EFalse), inOk(EFalse)
- #endif
- {
- }
- ~_THgLogContext()
- {
- #ifndef DISABLE_SYNTAX_CHECK
- do
- {
- DoInChk();
- if (!outOk)
- {
- _HGLOGPRINTER(_IT(_HGLOG_UNCONTROLLER_EXIT_MSG), iVis, iCategory, iId, iThdId, iAddr, iFn);
- }
- } while (0);
- #endif // DISABLE_SYNTAX_CHECK
- }
-
- const TText* iFn;
- const TUint iId;
- const TText* iVis;
- const TUint iAddr;
- const TInt iThdId;
- const TBool iApi;
- const TUint iCategory;
-
- #ifndef DISABLE_SYNTAX_CHECK
- inline void DoInChk()
- {
- if (!inOk)
- {
- _HGLOGPRINTER(_IT(_HGLOG_UNCONTROLLED_INPUT_MSG), iVis, iCategory, iId, iThdId, iAddr, iFn);
- inOk = ETrue;
- }
- }
-
- inline void ChkMultiIn()
- {
- if (inOk)
- {
- _HGLOGPRINTER(_IT(_HGLOG_MULTIPLE_ENTRY_MSG), iVis, iCategory, iId, iThdId, iAddr, iFn);
- }
- }
-
- inline void ChkMultiOut()
- {
- if (outOk)
- {
- _HGLOGPRINTER(_IT(_HGLOG_MULTIPLE_EXIT_MSG), iVis, iCategory, iId, iThdId, iAddr, iFn);
- }
- }
-
- TBool inOk;
- TBool outOk;
- #endif // DISABLE_SYNTAX_CHECK
- };
-
-class _THgLogTrapHandler: public TTrapHandler
- {
- public:
-
- _THgLogTrapHandler(_THgLogContext& _context) : _dc( _context )
- {
- RThread me;
- iThdId = (TInt)me.Id();
- }
- void Trap()
- {
- _HGLOGPRINTER(_IT(_HGLOG_TRAP_HARNESS_ENTRY), 0, HGLOGERR, iThdId, this);
- oldHandler->Trap();
- }
- void UnTrap()
- {
- _HGLOGPRINTER(_IT(_HGLOG_TRAP_HARNESS_EXIT), 0, HGLOGERR, iThdId, this);
- oldHandler->UnTrap();
- }
- void Leave(TInt aValue)
- {
- _HGLOGPRINTER(_IT(_HGLOG_TRAP_HARNESS_LEAVE), 0, HGLOGERR, iThdId, this);
- oldHandler->Leave(aValue);
- }
- TTrapHandler* oldHandler;
- private:
- _THgLogContext& _dc;
- TInt iThdId;
- };
-
-#endif // _DEBUG
-
-#endif // HGLOGUTILS_H
\ No newline at end of file
--- a/contextutility/rom/hgcontextutility.iby Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,26 +0,0 @@
-/*
-* 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".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: Iby file
-*
-*/
-
-
-#ifndef HGCONTEXTUTILITY_IBY
-#define HGCONTEXTUTILITY_IBY
-
-#include <data_caging_paths_for_iby.hrh>
-
-file=ABI_DIR\BUILD_DIR\hgcontextutility.dll SHARED_LIB_DIR\hgcontextutility.dll
-
-#endif // HGCONTEXTUTILITY_IBY
--- a/contextutility/src/hgcontextutility.cpp Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,281 +0,0 @@
-/*
-* 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".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: Context publishing helper dll
-*
-*/
-
-
-#include <hg/hgcontextutility.h>
-#include "hgcontextutilityimpl.h"
-
-// -----------------------------------------------------------------------------
-// CHgContextUtility::NewL
-// -----------------------------------------------------------------------------
-//
-EXPORT_C CHgContextUtility* CHgContextUtility::NewL()
- {
- CHgContextUtility* self = NewLC();
- CleanupStack::Pop( self );
- return self;
- }
-
-// -----------------------------------------------------------------------------
-// CHgContextUtility::NewLC
-// -----------------------------------------------------------------------------
-//
-EXPORT_C CHgContextUtility* CHgContextUtility::NewLC()
- {
- CHgContextUtility* self = new ( ELeave ) CHgContextUtility;
- CleanupStack::PushL( self );
- self->ConstructL();
- return self;
- }
-
-// -----------------------------------------------------------------------------
-// CHgContextUtility::CHgContextUtility
-// -----------------------------------------------------------------------------
-//
-CHgContextUtility::CHgContextUtility()
- {
- }
-
-// -----------------------------------------------------------------------------
-// CHgContextUtility::ConstructL
-// -----------------------------------------------------------------------------
-//
-void CHgContextUtility::ConstructL()
- {
- BaseConstructL();
- }
-
-// -----------------------------------------------------------------------------
-// CHgContextUtility::~CHgContextUtility
-// -----------------------------------------------------------------------------
-//
-EXPORT_C CHgContextUtility::~CHgContextUtility()
- {
- }
-
-// -----------------------------------------------------------------------------
-// CHgContextUtility::PublishContactContextL
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void CHgContextUtility::PublishContactContextL(
- const MVPbkStoreContact& aContact,
- const TTimeIntervalMicroSeconds32& aDelay )
- {
- iImpl->PublishContactContextL( aContact, aDelay );
- }
-
-// -----------------------------------------------------------------------------
-// CHgContextUtility::PublishContactContextL
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void CHgContextUtility::PublishContactContextL(
- const MVPbkContactLink& aContactLink,
- const TTimeIntervalMicroSeconds32& aDelay )
- {
- iImpl->PublishContactContextL( aContactLink, aDelay );
- }
-
-// -----------------------------------------------------------------------------
-// CHgContextUtility::PublishContactContextL
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void CHgContextUtility::PublishContactContextL(
- const TDesC& aContactName,
- const TTimeIntervalMicroSeconds32& aDelay )
- {
- iImpl->PublishContactContextL( aContactName, aDelay );
- }
-
-// -----------------------------------------------------------------------------
-// CHgContextUtility::PublishContactContextL
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void CHgContextUtility::PublishContactContextL(
- const RPointerArray<MVPbkStoreContact>& aContacts,
- const TTimeIntervalMicroSeconds32& aDelay )
- {
- iImpl->PublishContactContextL( aContacts, aDelay );
- }
-
-// -----------------------------------------------------------------------------
-// CHgContextUtility::PublishContactContextL
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void CHgContextUtility::PublishContactContextL(
- const CVPbkContactLinkArray& aContactLinks,
- const TTimeIntervalMicroSeconds32& aDelay )
- {
- iImpl->PublishContactContextL( aContactLinks, aDelay );
- }
-
-// -----------------------------------------------------------------------------
-// CHgContextUtility::PublishContactContextL
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void CHgContextUtility::PublishContactContextL(
- const MDesCArray& aContactNames,
- const TTimeIntervalMicroSeconds32& aDelay )
- {
- iImpl->PublishContactContextL( aContactNames, aDelay );
- }
-
-// -----------------------------------------------------------------------------
-// CHgContextUtility::PublishTextContextL
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void CHgContextUtility::PublishTextContextL( const TDesC& aText,
- const TTimeIntervalMicroSeconds32& aDelay )
- {
- iImpl->PublishTextContextL( aText, aDelay );
- }
-
-// -----------------------------------------------------------------------------
-// CHgContextUtility::PublishUrlContextL
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void CHgContextUtility::PublishUrlContextL( const TDesC& aUrl,
- const TTimeIntervalMicroSeconds32& aDelay )
- {
- iImpl->PublishUrlContextL( aUrl, aDelay );
- }
-
-// -----------------------------------------------------------------------------
-// CHgContextUtility::PublishTimeContextL
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void CHgContextUtility::PublishTimeContextL( const TTime& aTime,
- const TTimeIntervalMicroSeconds32& aDelay )
- {
- iImpl->PublishTimeContextL( aTime, aDelay );
- }
-
-// -----------------------------------------------------------------------------
-// CHgContextUtility::PublishPhotoContextL
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void CHgContextUtility::PublishPhotoContextL(
- const TDesC& aFilename,
- const TTimeIntervalMicroSeconds32& aDelay )
- {
- iImpl->PublishPhotoContextL( aFilename, aDelay );
- }
-
-// -----------------------------------------------------------------------------
-// CHgContextUtility::PublishPhotoContextL
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void CHgContextUtility::PublishPhotoContextL(
- TItemId aMdeItemId,
- CMdESession& aMdeSession,
- const TTimeIntervalMicroSeconds32& aDelay )
- {
- iImpl->PublishPhotoContextL( aMdeItemId, aMdeSession, aDelay );
- }
-
-// -----------------------------------------------------------------------------
-// CHgContextUtility::PublishTvContextL
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void CHgContextUtility::PublishTvContextL( const TDesC& aChannelName,
- const TDesC& aProgramName, const TDesC& aProgramDescription,
- const TDesC& aGenre )
- {
- iImpl->PublishTvContextL( aChannelName, aProgramName,
- aProgramDescription, aGenre );
- }
-
-// -----------------------------------------------------------------------------
-// CHgContextUtility::PublishServiceIdL
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void CHgContextUtility::PublishServiceIdL( const TDesC& aServiceId,
- const TDesC& aAccountId,
- const TTimeIntervalMicroSeconds32& aDelay )
- {
- iImpl->PublishServiceIdL( aServiceId, aAccountId, aDelay );
- }
-
-// -----------------------------------------------------------------------------
-// CHgContextUtility::RePublishWhenFgL
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void CHgContextUtility::RePublishWhenFgL( TBool aEnable )
- {
- iImpl->RePublishWhenFgL( aEnable );
- }
-
-// -----------------------------------------------------------------------------
-// CHgContextUtility::AllowPublishFromBackground
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void CHgContextUtility::AllowPublishFromBackground( TBool aAllow )
- {
- iImpl->AllowPublishFromBackground( aAllow );
- }
-
-// -----------------------------------------------------------------------------
-// CHgContextUtility::AddMusicContextInfoL
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void CHgContextUtility::AddMusicContextInfoL(
- const TDesC& aKey, const TDesC& aData )
- {
- iImpl->AddMusicContextInfoL( aKey, aData );
- }
-
-// -----------------------------------------------------------------------------
-// CHgContextUtility::PublishMusicContextL
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void CHgContextUtility::PublishMusicContextL(
- const TTimeIntervalMicroSeconds32& aDelay )
- {
- iImpl->PublishMusicContextL( aDelay );
- }
-
-// -----------------------------------------------------------------------------
-// CHgContextUtility::PublishRadioContextL
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void CHgContextUtility::PublishRadioContextL(
- const TDesC& aRadioName,
- const TDesC& aRadioUrl,
- const TDesC& aRadioFrequency,
- const TDesC& aRadioRDSPI )
- {
- iImpl->PublishRadioContextL( aRadioName, aRadioUrl,
- aRadioFrequency, aRadioRDSPI );
- }
-
-// -----------------------------------------------------------------------------
-// CHgContextUtility::BuildCombinedStringL
-// -----------------------------------------------------------------------------
-EXPORT_C HBufC* CHgContextUtility::BuildCombinedStringL( const MDesCArray& aArray )
-{
- return CHgContextUtilityImpl::BuildCombinedStringL(aArray);
-}
-
-// -----------------------------------------------------------------------------
-// CHgContextUtility::SplitCombinedStringL
-// -----------------------------------------------------------------------------
-EXPORT_C void CHgContextUtility::SplitCombinedStringL( const TDesC& aString,
- CDesCArray& aArray )
-{
- CHgContextUtilityImpl::SplitCombinedStringL(aString, aArray);
-}
-//
-// end of file
--- a/contextutility/src/hgcontextutilitybase.cpp Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,114 +0,0 @@
-/*
-* 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".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: Context publishing helper dll
-*
-*/
-
-
-#include <hg/hgcontextutilitybase.h>
-#include "hgcontextutilityimpl.h"
-
-// -----------------------------------------------------------------------------
-// CHgContextUtilityBase::CHgContextUtilityBase
-// -----------------------------------------------------------------------------
-//
-CHgContextUtilityBase::CHgContextUtilityBase()
- {
- }
-
-// -----------------------------------------------------------------------------
-// CHgContextUtilityBase::BaseConstructL
-// -----------------------------------------------------------------------------
-//
-void CHgContextUtilityBase::BaseConstructL()
- {
- iImpl = CHgContextUtilityImpl::NewL();
- }
-
-// -----------------------------------------------------------------------------
-// CHgContextUtilityBase::~CHgContextUtilityBase
-// -----------------------------------------------------------------------------
-//
-CHgContextUtilityBase::~CHgContextUtilityBase()
- {
- delete iImpl;
- }
-
-// -----------------------------------------------------------------------------
-// CHgContextUtilityBase::PublishContextL
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void CHgContextUtilityBase::PublishContextL( const TDesC& aContextType,
- const TDesC& aContextData )
- {
- iImpl->PublishContextL( aContextType, aContextData );
- }
-
-// -----------------------------------------------------------------------------
-// CHgContextUtilityBase::PublishContextL
-// Array version
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void CHgContextUtilityBase::PublishContextL( const TDesC& aContextType,
- const MDesCArray& aContextData )
- {
- iImpl->PublishContextL( aContextType, aContextData );
- }
-
-// -----------------------------------------------------------------------------
-// CHgContextUtilityBase::GetContextL
-// -----------------------------------------------------------------------------
-//
-EXPORT_C HBufC* CHgContextUtilityBase::GetContextL( const TDesC& aContextSource,
- const TDesC& aContextType )
- {
- return iImpl->GetContextL( aContextSource, aContextType );
- }
-
-// -----------------------------------------------------------------------------
-// CHgContextUtilityBase::GetContextL
-// Version using a fixed context source
-// -----------------------------------------------------------------------------
-//
-EXPORT_C HBufC* CHgContextUtilityBase::GetContextL( const TDesC& aContextType )
- {
- return iImpl->GetContextL( aContextType );
- }
-
-// -----------------------------------------------------------------------------
-// CHgContextUtilityBase::PublishContextDelayedL
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void CHgContextUtilityBase::PublishContextDelayedL(
- const TDesC& aContextType,
- const TDesC& aContextData,
- const TTimeIntervalMicroSeconds32& aDelay )
- {
- iImpl->PublishContextDelayedL( aContextType, aContextData, aDelay );
- }
-
-// -----------------------------------------------------------------------------
-// CHgContextUtilityBase::PublishContextDelayedL
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void CHgContextUtilityBase::PublishContextDelayedL(
- const TDesC& aContextType,
- const MDesCArray& aContextData,
- const TTimeIntervalMicroSeconds32& aDelay )
- {
- iImpl->PublishContextDelayedL( aContextType, aContextData, aDelay );
- }
-
-
-// end of file
--- a/contextutility/src/hgcontextutilityimpl.cpp Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,972 +0,0 @@
-/*
-* 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".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: Context publishing helper dll
-*
-*/
-
-
-#include <cfcontextobject.h>
-#include <cfclient.h>
-#include <mdesession.h>
-#include <mdeobject.h>
-#include <s32mem.h>
-#include <MVPbkContactLink.h>
-#include <MVPbkStoreContact.h>
-#include <MVPbkStreamable.h>
-#include <CVPbkContactLinkArray.h>
-#include <e32debug.h>
-#include <w32std.h>
-#include "hgcontextutilityimpl.h"
-#include "hgcontexttypes.h"
-
-// max number of entries processed when aContextData is an array in PublishContextL
-const TInt KMaxEntriesInMulti = 20;
-
-// separator character in combined string for multiple entries
-const TInt KMultiSepChar = 0x0001;
-
-// granularity for string array
-const TInt KArrayGranularity = 4;
-
-// argument for CBufFlat ctor when serializing contact links
-const TInt KBufGranularity = 64;
-
-// default security policy (use LocalServices cap) for contexts
-_LIT_SECURITY_POLICY_C1( KContextSecurity, ECapabilityLocalServices );
-
-// -----------------------------------------------------------------------------
-// CHgContextUtilityImpl::NewL
-// -----------------------------------------------------------------------------
-//
-CHgContextUtilityImpl* CHgContextUtilityImpl::NewL()
- {
- CHgContextUtilityImpl* self = NewLC();
- CleanupStack::Pop( self );
- return self;
- }
-
-// -----------------------------------------------------------------------------
-// CHgContextUtilityImpl::NewLC
-// -----------------------------------------------------------------------------
-//
-CHgContextUtilityImpl* CHgContextUtilityImpl::NewLC()
- {
- CHgContextUtilityImpl* self = new ( ELeave ) CHgContextUtilityImpl;
- CleanupStack::PushL( self );
- self->ConstructL();
- return self;
- }
-
-// -----------------------------------------------------------------------------
-// CHgContextUtilityImpl::CHgContextUtilityImpl
-// -----------------------------------------------------------------------------
-//
-CHgContextUtilityImpl::CHgContextUtilityImpl()
- : CTimer( CActive::EPriorityStandard )
- {
- CActiveScheduler::Add( this );
- }
-
-// -----------------------------------------------------------------------------
-// CHgContextUtilityImpl::ConstructL
-// -----------------------------------------------------------------------------
-//
-void CHgContextUtilityImpl::ConstructL()
- {
- CTimer::ConstructL();
-
- iEnv = CCoeEnv::Static(); // may be NULL
-
- // Do not create iCFClient here as cf server may not be available yet
- // if we are early in the boot phase.
-
- // set defaults
- RePublishWhenFgL( EFalse );
- AllowPublishFromBackground( EFalse );
- }
-
-// -----------------------------------------------------------------------------
-// CHgContextUtilityImpl::~CHgContextUtilityImpl
-// -----------------------------------------------------------------------------
-//
-CHgContextUtilityImpl::~CHgContextUtilityImpl()
- {
- Cancel();
- delete iPendingContextType;
- delete iPendingContextData;
- delete iPendingContextDataArray;
- delete iCFClient;
- delete iLastContextType;
- delete iLastContextData;
- if ( iFgWatchEnabled && iEnv )
- {
- iEnv->RemoveForegroundObserver( *this );
- }
-
- iMusicContextInfo.ResetAndDestroy();
- }
-
-// -----------------------------------------------------------------------------
-// CHgContextUtilityImpl::CFReady
-// -----------------------------------------------------------------------------
-//
-TBool CHgContextUtilityImpl::CFReady()
- {
- if ( !iCFClient )
- {
- TRAPD( err, iCFClient = CCFClient::NewL( *this ) );
- if ( err != KErrNone )
- {
- RDebug::Printf( "[hgctxutil] cfw not ready" );
- return EFalse;
- }
- }
- return ETrue;
- }
-
-// -----------------------------------------------------------------------------
-// CHgContextUtilityImpl::PublishContextL
-// All other non-static versions of this function will fall back to this one.
-// -----------------------------------------------------------------------------
-//
-void CHgContextUtilityImpl::PublishContextL( const TDesC& aContextType,
- const TDesC& aContextData )
- {
- RDebug::Print( _L("[hgctxutil] PublishContextL [%S] [%S]"),
- &aContextType, &aContextData );
- // create cf client instance if not yet done
- // and check foreground status if needed
- if ( CFReady() && AllowedToPublish() )
- {
- // call static version with our cf client instance
- PublishContextL( *iCFClient, aContextType, aContextData );
- }
- // store type and value for later use
- // (even when cfserver is not available yet, the data may still be
- // used later when the app comes to foreground, for example)
- if ( iLastContextType != &aContextType )
- {
- delete iLastContextType; iLastContextType = 0;
- iLastContextType = aContextType.AllocL();
- }
- if ( iLastContextData != &aContextData )
- {
- delete iLastContextData; iLastContextData = 0;
- iLastContextData = aContextData.AllocL();
- }
- }
-
-// -----------------------------------------------------------------------------
-// AppendCharL
-// Appends a char to aDst, calls ReAllocL when needed, assumes that aDst
-// is also on cleanupstack (at top position) so it updates that pointer too.
-// -----------------------------------------------------------------------------
-//
-LOCAL_C void AppendCharL( HBufC*& aDst, TChar aChar )
- {
- TPtr des( aDst->Des() );
- if ( des.Length() == des.MaxLength() )
- {
- HBufC* oldDst = aDst;
- aDst = aDst->ReAllocL( des.MaxLength() * 2 );
- CleanupStack::Pop( oldDst ); // pop the old pointer
- CleanupStack::PushL( aDst ); // and push the new (possibly different) one
- des.Set( aDst->Des() );
- }
- des.Append( aChar );
- }
-
-// -----------------------------------------------------------------------------
-// CHgContextUtilityImpl::BuildCombinedStringL
-// -----------------------------------------------------------------------------
-//
-HBufC* CHgContextUtilityImpl::BuildCombinedStringL(
- const MDesCArray& aArray )
- {
- TInt arrayCount = aArray.MdcaCount();
- if ( arrayCount >= 2 )
- {
- // Rules:
- // 1. escape all separator chars in the input with a preceeding \
- // 2. escape all \ chars in the input with \\
- // 3. take only the first KMaxEntriesInMulti elements from the array
- // 4. append a separator also after last entry
- // 5. prepend two separators to the combined string
- TInt processedEntryCount = Min( arrayCount, KMaxEntriesInMulti );
- // calculate a big enough size so we can avoid ReAllocL calls later
- TInt sz = 0;
- for ( TInt i = 0; i < processedEntryCount; ++i )
- {
- sz += aArray.MdcaPoint( i ).Length() + 1;
- }
- sz += 2; // for the magic prefix
- HBufC* value = HBufC::NewLC( sz );
- AppendCharL( value, KMultiSepChar );
- AppendCharL( value, KMultiSepChar );
- for ( TInt i = 0; i < processedEntryCount; ++i )
- {
- TPtrC entry( aArray.MdcaPoint( i ) );
- // append, also do the escaping
- for ( TInt j = 0, je = entry.Length(); j != je; ++j )
- {
- TChar c = entry[j];
- if ( c == KMultiSepChar || c == '\\' )
- {
- AppendCharL( value, '\\' );
- }
- AppendCharL( value, c );
- }
- AppendCharL( value, KMultiSepChar );
- }
- CleanupStack::Pop( value );
- return value;
- }
- return 0;
- }
-
-// -----------------------------------------------------------------------------
-// CHgContextUtilityImpl::SplitCombinedStringL
-// -----------------------------------------------------------------------------
-//
-void CHgContextUtilityImpl::SplitCombinedStringL(
- const TDesC& aString, CDesCArray& aArray )
- {
- TInt inputLength = aString.Length();
- TBool isMulti = inputLength > 2
- && aString[0] == KMultiSepChar && aString[1] == KMultiSepChar;
- if ( isMulti )
- {
- // allocate a work buffer that is big enough for sure
- HBufC* buf = HBufC::NewLC( inputLength );
- TPtr des( buf->Des() );
- TBool esc = EFalse;
- // go through the string, find entries, and add them to output array
- for ( TInt i = 2; i < inputLength; ++i ) // start from 2 because of the magic prefix
- {
- TChar c = aString[i];
- if ( c == '\\' && !esc )
- {
- esc = ETrue;
- }
- else if ( c == KMultiSepChar && !esc )
- {
- // found separator: append to output array, clear buffer, and continue
- aArray.AppendL( des );
- des.Zero();
- }
- else
- {
- esc = EFalse;
- des.Append( c );
- }
- }
- CleanupStack::PopAndDestroy( buf );
- }
- else
- {
- // not a combined string: append to array as it is
- aArray.AppendL( aString );
- }
- }
-
-// -----------------------------------------------------------------------------
-// CHgContextUtilityImpl::PublishContextL
-// -----------------------------------------------------------------------------
-//
-void CHgContextUtilityImpl::PublishContextL( const TDesC& aContextType,
- const MDesCArray& aContextData )
- {
- TInt entryCount = aContextData.MdcaCount();
- // do nothing if array is empty
- if ( !entryCount )
- {
- return;
- }
- // nothing special when having only 1 item
- if ( entryCount == 1 )
- {
- PublishContextL( aContextType, aContextData.MdcaPoint( 0 ) );
- return;
- }
- // at least two items: create the special combined string
- HBufC* value = BuildCombinedStringL( aContextData );
- CleanupStack::PushL( value );
- // publish the combined string
- PublishContextL( aContextType, *value );
- CleanupStack::PopAndDestroy( value );
- }
-
-// -----------------------------------------------------------------------------
-// CHgContextUtilityImpl::PublishContextL
-// This is the version of the function where the real work is performed.
-// -----------------------------------------------------------------------------
-//
-void CHgContextUtilityImpl::PublishContextL( CCFClient& aCFClient,
- const TDesC& aContextType, const TDesC& aContextData )
- {
- CCFContextObject* context = CCFContextObject::NewLC();
- context->SetSourceL( KHgCFSource );
- context->SetTypeL( aContextType );
- context->SetValueL( aContextData );
- TInt err = aCFClient.PublishContext( *context );
- if ( err == KErrNotFound )
- {
- User::LeaveIfError( aCFClient.DefineContext( KHgCFSource,
- aContextType, KContextSecurity ) );
- err = aCFClient.PublishContext( *context );
- if ( err != KErrArgument ) // ignore -6 which comes e.g. when trying to publish an empty value
- {
- User::LeaveIfError( err );
- }
- }
- else if ( err != KErrArgument )
- {
- User::LeaveIfError( err );
- }
- CleanupStack::PopAndDestroy( context );
- }
-
-// -----------------------------------------------------------------------------
-// CHgContextUtilityImpl::GetContextL
-// -----------------------------------------------------------------------------
-//
-HBufC* CHgContextUtilityImpl::GetContextL( const TDesC& aContextSource,
- const TDesC& aContextType )
- {
- HBufC* ret = 0;
- if ( CFReady() )
- {
- CCFContextQuery* query = CCFContextQuery::NewLC();
- query->SetSourceL( aContextSource );
- query->SetTypeL( aContextType );
- RContextObjectArray result;
- TInt err = iCFClient->RequestContext( *query, result );
- if ( err == KErrNone && result.Count() )
- {
- ret = result[0]->Value().Alloc();
- }
- result.ResetAndDestroy();
- CleanupStack::PopAndDestroy( query );
- }
- return ret;
- }
-
-// -----------------------------------------------------------------------------
-// CHgContextUtilityImpl::GetContextL
-// -----------------------------------------------------------------------------
-//
-HBufC* CHgContextUtilityImpl::GetContextL( const TDesC& aContextType )
- {
- return GetContextL( KHgCFSource, aContextType );
- }
-
-// -----------------------------------------------------------------------------
-// CHgContextUtilityImpl::PublishContextDelayedL
-// -----------------------------------------------------------------------------
-//
-void CHgContextUtilityImpl::PublishContextDelayedL( const TDesC& aContextType,
- const TDesC& aContextData, TTimeIntervalMicroSeconds32 aDelay )
- {
- Cancel();
- delete iPendingContextType; iPendingContextType = 0;
- iPendingContextType = aContextType.AllocL();
- delete iPendingContextData; iPendingContextData = 0;
- iPendingContextData = aContextData.AllocL();
- delete iPendingContextDataArray; iPendingContextDataArray = 0;
- After( aDelay );
- }
-
-// -----------------------------------------------------------------------------
-// CHgContextUtilityImpl::PublishContextDelayedL
-// -----------------------------------------------------------------------------
-//
-void CHgContextUtilityImpl::PublishContextDelayedL( const TDesC& aContextType,
- const MDesCArray& aContextData, TTimeIntervalMicroSeconds32 aDelay )
- {
- Cancel();
- delete iPendingContextType; iPendingContextType = 0;
- iPendingContextType = aContextType.AllocL();
- delete iPendingContextData; iPendingContextData = 0;
- if ( iPendingContextDataArray )
- {
- iPendingContextDataArray->Reset();
- }
- else
- {
- iPendingContextDataArray = new ( ELeave ) CDesC16ArrayFlat( KArrayGranularity );
- }
- for ( TInt i = 0, ie = aContextData.MdcaCount(); i != ie; ++i )
- {
- iPendingContextDataArray->AppendL( aContextData.MdcaPoint( i ) );
- }
- After( aDelay );
- }
-
-// -----------------------------------------------------------------------------
-// CHgContextUtilityImpl::RunL
-// -----------------------------------------------------------------------------
-//
-void CHgContextUtilityImpl::RunL()
- {
- if ( iPendingContextType )
- {
- if ( iPendingContextData )
- {
- PublishContextL( *iPendingContextType, *iPendingContextData );
- }
- else if ( iPendingContextDataArray )
- {
- PublishContextL( *iPendingContextType, *iPendingContextDataArray );
- }
- }
- }
-
-// -----------------------------------------------------------------------------
-// CHgContextUtilityImpl::RunError
-// -----------------------------------------------------------------------------
-//
-TInt CHgContextUtilityImpl::RunError( TInt /*aError*/ )
- {
- return KErrNone;
- }
-
-// empty implementations for cfw
-
-// -----------------------------------------------------------------------------
-// CHgContextUtilityImpl::ContextIndicationL
-// -----------------------------------------------------------------------------
-//
-void CHgContextUtilityImpl::ContextIndicationL(
- const CCFContextIndication& /*aChangedContext*/ )
- {
- // empty
- }
-
-// -----------------------------------------------------------------------------
-// CHgContextUtilityImpl::ActionIndicationL
-// -----------------------------------------------------------------------------
-//
-void CHgContextUtilityImpl::ActionIndicationL(
- const CCFActionIndication& /*aActionToExecute*/ )
- {
- // empty
- }
-
-// -----------------------------------------------------------------------------
-// CHgContextUtilityImpl::HandleContextFrameworkError
-// -----------------------------------------------------------------------------
-//
-void CHgContextUtilityImpl::HandleContextFrameworkError( TCFError /*aError*/,
- const TDesC& /*aSource*/,
- const TDesC& /*aType*/ )
- {
- // empty
- }
-
-// -----------------------------------------------------------------------------
-// CHgContextUtilityImpl::Extension
-// -----------------------------------------------------------------------------
-//
-TAny* CHgContextUtilityImpl::Extension( const TUid& /*aExtensionUid*/ ) const
- {
- return 0;
- }
-
-// -----------------------------------------------------------------------------
-// CHgContextUtilityImpl::MakeLinkPublishableLC
-// -----------------------------------------------------------------------------
-//
-HBufC* CHgContextUtilityImpl::MakeLinkPublishableLC(
- const MVPbkContactLink& aLink )
- {
- HBufC* ret = 0;
- // serialize the link and place it into a 16-bit descriptor
- // prefixed with one special mark character
- const MVPbkStreamable* strm = aLink.Streamable();
- User::LeaveIfNull(strm);
- CBufFlat* buf = CBufFlat::NewL( KBufGranularity );
- CleanupStack::PushL( buf );
- RBufWriteStream ws;
- CleanupClosePushL( ws );
- ws.Open( *buf );
- strm->ExternalizeL( ws );
- CleanupStack::PopAndDestroy( &ws );
- TPtr8 p( buf->Ptr( 0 ) );
- ret = HBufC::NewLC( p.Length() + 1 );
- TPtr des( ret->Des() );
- des.Copy( p );
- _LIT( KTemp, " " );
- des.Insert( 0, KTemp );
- des[0] = KHgCFValueLinkMarker; // codescanner::accessArrayElementWithoutCheck2
- CleanupStack::Pop( ret );
- CleanupStack::PopAndDestroy( buf );
- CleanupStack::PushL( ret );
- return ret;
- }
-
-// -----------------------------------------------------------------------------
-// CHgContextUtilityImpl::PublishContactContextL
-// -----------------------------------------------------------------------------
-//
-void CHgContextUtilityImpl::PublishContactContextL(
- const MVPbkStoreContact& aContact,
- const TTimeIntervalMicroSeconds32& aDelay )
- {
- MVPbkContactLink* link = aContact.CreateLinkLC();
- if ( link )
- {
- HBufC* pubstr = MakeLinkPublishableLC( *link );
- PublishContactContextL( *pubstr, aDelay );
- CleanupStack::PopAndDestroy( pubstr );
- }
- CleanupStack::PopAndDestroy( );//link
- }
-
-// -----------------------------------------------------------------------------
-// CHgContextUtilityImpl::PublishContactContextL
-// -----------------------------------------------------------------------------
-//
-void CHgContextUtilityImpl::PublishContactContextL(
- const MVPbkContactLink& aContactLink,
- const TTimeIntervalMicroSeconds32& aDelay )
- {
- HBufC* pubstr = MakeLinkPublishableLC( aContactLink );
- PublishContactContextL( *pubstr, aDelay );
- CleanupStack::PopAndDestroy( pubstr );
- }
-
-// -----------------------------------------------------------------------------
-// CHgContextUtilityImpl::PublishContactContextL
-// -----------------------------------------------------------------------------
-//
-void CHgContextUtilityImpl::PublishContactContextL(
- const TDesC& aContactName,
- const TTimeIntervalMicroSeconds32& aDelay )
- {
- if ( !aDelay.Int() )
- {
- PublishContextL( KHgCFTypeContact, aContactName );
- }
- else
- {
- PublishContextDelayedL( KHgCFTypeContact, aContactName, aDelay );
- }
- }
-
-// -----------------------------------------------------------------------------
-// CHgContextUtilityImpl::PublishContactContextL
-// -----------------------------------------------------------------------------
-//
-void CHgContextUtilityImpl::PublishContactContextL(
- const RPointerArray<MVPbkStoreContact>& aContacts,
- const TTimeIntervalMicroSeconds32& aDelay )
- {
- CDesCArray* arr = new ( ELeave ) CDesCArrayFlat( KArrayGranularity );
- CleanupStack::PushL( arr );
- for ( TInt i = 0, ie = aContacts.Count(); i != ie; ++i )
- {
- MVPbkContactLink* link = aContacts[i]->CreateLinkLC();
- if ( link )
- {
- HBufC* pubstr = MakeLinkPublishableLC( *link );
- arr->AppendL( *pubstr );
- CleanupStack::PopAndDestroy( pubstr );
- }
- CleanupStack::PopAndDestroy( );//link
- }
- PublishContactContextL( *arr, aDelay );
- CleanupStack::PopAndDestroy( arr );
- }
-
-// -----------------------------------------------------------------------------
-// CHgContextUtilityImpl::PublishContactContextL
-// -----------------------------------------------------------------------------
-//
-void CHgContextUtilityImpl::PublishContactContextL(
- const CVPbkContactLinkArray& aContactLinks,
- const TTimeIntervalMicroSeconds32& aDelay )
- {
- CDesCArray* arr = new ( ELeave ) CDesCArrayFlat( KArrayGranularity );
- CleanupStack::PushL( arr );
- for ( TInt i = 0, ie = aContactLinks.Count(); i != ie; ++i )
- {
- HBufC* pubstr = MakeLinkPublishableLC( aContactLinks.At( i ) );
- arr->AppendL( *pubstr );
- CleanupStack::PopAndDestroy( pubstr );
- }
- PublishContactContextL( *arr, aDelay );
- CleanupStack::PopAndDestroy( arr );
- }
-
-// -----------------------------------------------------------------------------
-// CHgContextUtilityImpl::PublishContactContextL
-// -----------------------------------------------------------------------------
-//
-void CHgContextUtilityImpl::PublishContactContextL(
- const MDesCArray& aContactNames,
- const TTimeIntervalMicroSeconds32& aDelay )
- {
- if ( !aDelay.Int() )
- {
- PublishContextL( KHgCFTypeContact, aContactNames );
- }
- else
- {
- PublishContextDelayedL( KHgCFTypeContact, aContactNames, aDelay );
- }
- }
-
-// -----------------------------------------------------------------------------
-// CHgContextUtilityImpl::PublishTextContextL
-// -----------------------------------------------------------------------------
-//
-void CHgContextUtilityImpl::PublishTextContextL( const TDesC& aText,
- const TTimeIntervalMicroSeconds32& aDelay )
- {
- if ( !aDelay.Int() )
- {
- PublishContextL( KHgCFTypeText, aText );
- }
- else
- {
- PublishContextDelayedL( KHgCFTypeText, aText, aDelay );
- }
- }
-
-// -----------------------------------------------------------------------------
-// CHgContextUtilityImpl::PublishUrlContextL
-// -----------------------------------------------------------------------------
-//
-void CHgContextUtilityImpl::PublishUrlContextL( const TDesC& aUrl,
- const TTimeIntervalMicroSeconds32& aDelay )
- {
- if ( !aDelay.Int() )
- {
- PublishContextL( KHgCFTypeUrl, aUrl );
- }
- else
- {
- PublishContextDelayedL( KHgCFTypeUrl, aUrl, aDelay );
- }
- }
-
-// -----------------------------------------------------------------------------
-// CHgContextUtilityImpl::PublishTimeContextL
-// -----------------------------------------------------------------------------
-//
-void CHgContextUtilityImpl::PublishTimeContextL( const TTime& aTime,
- const TTimeIntervalMicroSeconds32& aDelay )
- {
- // YYYYMMDD:HHMMSS.MMMMMM
- const TInt KDateTimeLength = 22;
- const TInt KYearLength = 4;
- const TInt KMonthLength = 2;
- const TInt KDayLength = 2;
- _LIT( KTimeZero, ":010101.000000");
-
- TDateTime dt = aTime.DateTime();
- TBuf<KDateTimeLength> buf;
- buf.AppendNumFixedWidth( dt.Year(), EDecimal, KYearLength );
- buf.AppendNumFixedWidth( dt.Month(), EDecimal, KMonthLength );
- buf.AppendNumFixedWidth( dt.Day(), EDecimal, KDayLength );
- buf.Append( KTimeZero );
- if ( !aDelay.Int() )
- {
- PublishContextL( KHgCFTypeActiveDate, buf );
- }
- else
- {
- PublishContextDelayedL( KHgCFTypeActiveDate, buf, aDelay );
- }
- }
-
-// -----------------------------------------------------------------------------
-// CHgContextUtilityImpl::PublishPhotoContextL
-// -----------------------------------------------------------------------------
-//
-void CHgContextUtilityImpl::PublishPhotoContextL(
- const TDesC& aFilename,
- const TTimeIntervalMicroSeconds32& aDelay )
- {
- if ( !aDelay.Int() )
- {
- PublishContextL( KHgCFTypePhoto, aFilename );
- }
- else
- {
- PublishContextDelayedL( KHgCFTypePhoto, aFilename, aDelay );
- }
- }
-
-// -----------------------------------------------------------------------------
-// CHgContextUtilityImpl::PublishPhotoContextL
-// -----------------------------------------------------------------------------
-//
-void CHgContextUtilityImpl::PublishPhotoContextL(
- TItemId aMdeItemId,
- CMdESession& aMdeSession,
- const TTimeIntervalMicroSeconds32& aDelay )
- {
- CMdEObject* obj = aMdeSession.GetObjectL( aMdeItemId );
- if ( obj )
- {
- CleanupStack::PushL( obj );
- PublishPhotoContextL( obj->Uri(), aDelay );
- CleanupStack::PopAndDestroy( obj );
- }
- else
- {
- User::Leave( KErrNotFound );
- }
- }
-
-// -----------------------------------------------------------------------------
-// CHgContextUtilityImpl::PublishTvContextL
-// -----------------------------------------------------------------------------
-//
-void CHgContextUtilityImpl::PublishTvContextL( const TDesC& aChannelName,
- const TDesC& aProgramName, const TDesC& aProgramDescription,
- const TDesC& aGenre )
- {
- TPtrC channelName( aChannelName.Length() ? aChannelName
- : KHgCFValueUnknownInfo );
- TPtrC programName( aProgramName.Length() ? aProgramName
- : KHgCFValueUnknownInfo );
- TPtrC programDesc( aProgramDescription.Length() ? aProgramDescription
- : KHgCFValueUnknownInfo );
- TPtrC programGenre( aGenre.Length() ? aGenre : KHgCFValueUnknownInfo );
-
- // Publish description/genre first because it is unlikely to have those
- // in rules so their content will be available for sure when an action
- // is triggered.
- PublishContextL( KHgCFTypeTvProgramDesc, programDesc );
- PublishContextL( KHgCFTypeTvProgramGenre, programGenre );
- PublishContextL( KHgCFTypeTvChannelName, channelName );
- PublishContextL( KHgCFTypeTvProgramName, programName );
- }
-
-// -----------------------------------------------------------------------------
-// CHgContextUtilityImpl::PublishServiceIdL
-// -----------------------------------------------------------------------------
-//
-void CHgContextUtilityImpl::PublishServiceIdL( const TDesC& aServiceId,
- const TDesC& aAccountId,
- const TTimeIntervalMicroSeconds32& aDelay )
- {
- HBufC* combinedIdBuf = HBufC::NewLC( aServiceId.Length()
- + aAccountId.Length() + 1 );
- TPtr combinedId( combinedIdBuf->Des() );
- _LIT( KCombinedFormat, "%S:%S" );
- combinedId.Format( KCombinedFormat, &aServiceId, &aAccountId );
- PublishContactContextL( combinedId, aDelay );
- CleanupStack::PopAndDestroy( combinedIdBuf );
- }
-
-// -----------------------------------------------------------------------------
-// CHgContextUtilityImpl::RePublishWhenFgL
-// -----------------------------------------------------------------------------
-//
-void CHgContextUtilityImpl::RePublishWhenFgL( TBool aEnable )
- {
- if ( iEnv )
- {
- if ( iFgWatchEnabled )
- {
- iEnv->RemoveForegroundObserver( *this );
- }
- iFgWatchEnabled = aEnable;
- if ( iFgWatchEnabled )
- {
- iEnv->AddForegroundObserverL( *this );
- }
- }
- }
-
-// callbacks from CCoeEnv
-
-// -----------------------------------------------------------------------------
-// CHgContextUtilityImpl::HandleGainingForeground
-// -----------------------------------------------------------------------------
-//
-void CHgContextUtilityImpl::HandleGainingForeground()
- {
- if ( iLastContextType && iLastContextData )
- {
- TRAP_IGNORE( PublishContextL( *iLastContextType, *iLastContextData ) );
- }
- }
-
-// -----------------------------------------------------------------------------
-// CHgContextUtilityImpl::HandleLosingForeground
-// -----------------------------------------------------------------------------
-//
-void CHgContextUtilityImpl::HandleLosingForeground()
- {
- // nothing to do here
- }
-
-// -----------------------------------------------------------------------------
-// CHgContextUtilityImpl::IsForeground
-// -----------------------------------------------------------------------------
-//
-TBool CHgContextUtilityImpl::IsForeground()
- {
- if ( iEnv )
- {
- TInt rootWgId = iEnv->RootWin().WindowGroupId();
- TInt focusWgId = iEnv->WsSession().GetFocusWindowGroup();
- return rootWgId == focusWgId;
- }
- else
- {
- return ETrue;
- }
- }
-
-// -----------------------------------------------------------------------------
-// CHgContextUtilityImpl::AllowedToPublish
-// -----------------------------------------------------------------------------
-//
-TBool CHgContextUtilityImpl::AllowedToPublish()
- {
- TBool result = !iEnv || iAllowPublishFromBackground || IsForeground();
- RDebug::Printf( "[hgctxutil] AllowedToPublish = %d", result );
- return result;
- }
-
-// -----------------------------------------------------------------------------
-// CHgContextUtilityImpl::AllowPublishFromBackground
-// -----------------------------------------------------------------------------
-//
-void CHgContextUtilityImpl::AllowPublishFromBackground( TBool aAllow )
- {
- iAllowPublishFromBackground = aAllow;
- }
-
-// -----------------------------------------------------------------------------
-// CHgContextUtilityImpl::AddMusicContextInfoL
-// -----------------------------------------------------------------------------
-//
-void CHgContextUtilityImpl::AddMusicContextInfoL(
- const TDesC& aKey, const TDesC& aData )
- {
- // Key needs to be provided and also it shouldn't exist in the table.
- // Latter case is simple safe measure, as RPtrHasMap won't delete existing
- // objects in InsertL, so adding same key twice would cause memory leak.
- // The use case of adding same key twice is not 'real world' case, so
- // this method can simply leave, when same key is offered again.
- __ASSERT_ALWAYS( aKey.Length(), User::Leave( KErrNotFound ) );
- __ASSERT_ALWAYS(
- !iMusicContextInfo.Find( aKey ), User::Leave( KErrAlreadyExists ) );
-
- // Hash table needs pointers and it should own the pointers, so allocate
- // key and data, and add them to table. In case the data is empty, add
- // unknown information, since some data needs to be in the action field.
- HBufC* key = aKey.AllocLC();
- HBufC* data = aData.Length() ?
- aData.AllocLC() : KHgCFValueUnknownInfo().AllocLC();
- iMusicContextInfo.InsertL( key, data );
- CleanupStack::Pop( 2, key );
- }
-
-// -----------------------------------------------------------------------------
-// CHgContextUtilityImpl::PublishMusicContextL
-// -----------------------------------------------------------------------------
-//
-void CHgContextUtilityImpl::PublishMusicContextL(
- const TTimeIntervalMicroSeconds32& aDelay )
- {
- // If nothing has been done, just leave. No point of publishing entirely
- // empty music context.
- __ASSERT_ALWAYS( iMusicContextInfo.Count(), User::Leave( KErrNotReady ) );
-
- // Before publishing anything, make sure all keys contain at least some
- // data.
- VerifyAndPublishMusicContextL( KHgCFTypeMusicState, aDelay );
- VerifyAndPublishMusicContextL( KHgCFTypeMusicArtist, aDelay );
- VerifyAndPublishMusicContextL( KHgCFTypeMusicTitle, aDelay );
- VerifyAndPublishMusicContextL( KHgCFTypeMusicAlbum, aDelay );
- VerifyAndPublishMusicContextL( KHgCFTypeMusicAlbumArt, aDelay );
- VerifyAndPublishMusicContextL( KHgCFTypeMusicUri, aDelay );
- VerifyAndPublishMusicContextL( KHgCFTypeMusicGenre, aDelay );
- VerifyAndPublishMusicContextL( KHgCFTypeMusicType, aDelay );
-
- // Clear all data from hash table, so new music context can be published.
- iMusicContextInfo.ResetAndDestroy();
- }
-
-// -----------------------------------------------------------------------------
-// CHgContextUtilityImpl::VerifyAndPublishMusicContextL
-// -----------------------------------------------------------------------------
-//
-void CHgContextUtilityImpl::VerifyAndPublishMusicContextL(
- const TDesC& aKey,
- const TTimeIntervalMicroSeconds32& aDelay )
- {
- TDesC* data = iMusicContextInfo.Find( aKey );
- if ( !data )
- {
- // Key didn't contain any data, just create the key with empty info.
- AddMusicContextInfoL( aKey, KNullDesC );
- data = iMusicContextInfo.Find( aKey );
- }
-
- PublishContextL( aKey, *data, aDelay );
- }
-
-// -----------------------------------------------------------------------------
-// CHgContextUtilityImpl::PublishContextL
-// -----------------------------------------------------------------------------
-//
-void CHgContextUtilityImpl::PublishContextL(
- const TDesC & aContextType,
- const TDesC & aContextData,
- const TTimeIntervalMicroSeconds32& aDelay )
- {
- if ( !aDelay.Int() )
- {
- PublishContextL( aContextType, aContextData );
- }
- else
- {
- PublishContextDelayedL( aContextType, aContextData, aDelay );
- }
- }
-
-// -----------------------------------------------------------------------------
-// CHgContextUtilityImpl::PublishRadioContextL
-// -----------------------------------------------------------------------------
-//
-void CHgContextUtilityImpl::PublishRadioContextL(
- const TDesC& aRadioName,
- const TDesC& aRadioUrl,
- const TDesC& aRadioFrequency,
- const TDesC& aRadioRDSPI )
- {
- TPtrC radioName( aRadioName.Length() ? aRadioName
- : KHgCFValueUnknownInfo );
- TPtrC radioUrl( aRadioUrl.Length() ? aRadioUrl
- : KHgCFValueUnknownInfo );
- TPtrC radioFrequency( aRadioFrequency.Length() ? aRadioFrequency
- : KHgCFValueUnknownInfo );
- TPtrC radioRDSPI( aRadioRDSPI.Length() ? aRadioRDSPI
- : KHgCFValueUnknownInfo );
-
- PublishContextL( KHgCFTypeMusicRadioRDSPI, radioRDSPI );
- PublishContextL( KHgCFTypeMusicRadioFrequency, radioFrequency );
- PublishContextL( KHgCFTypeMusicRadioUrl, radioUrl );
- PublishContextL( KHgCFTypeMusicRadioName, radioName );
- }
-
-// end of file
--- a/group/bld.inf Wed Mar 03 15:38:34 2010 +0200
+++ b/group/bld.inf Wed May 12 13:36:47 2010 +0300
@@ -27,7 +27,6 @@
#include "../backsteppingsrv/group/bld.inf"
#include "../contentpublishingsrv/group/bld.inf"
#include "../homescreensrv_plat/group/bld.inf"
-#include "../contextutility/group/bld.inf"
#include "../contentcontrolsrv/group/bld.inf"
Binary file homescreenpluginsrv/conf/hsps.confml has changed
Binary file homescreenpluginsrv/conf/hsps_200159c9.crml has changed
--- a/homescreenpluginsrv/homescreen_settings_api/bwins/hspluginsettings.def Wed Mar 03 15:38:34 2010 +0200
+++ b/homescreenpluginsrv/homescreen_settings_api/bwins/hspluginsettings.def Wed May 12 13:36:47 2010 +0300
@@ -3,10 +3,10 @@
?NewLC@CPluginMap@HSPluginSettingsIf@@SAPAV12@XZ @ 2 NONAME ; class HSPluginSettingsIf::CPluginMap * HSPluginSettingsIf::CPluginMap::NewLC(void)
?SetPluginUidL@CPluginMap@HSPluginSettingsIf@@QAEAAV12@ABVTDesC8@@@Z @ 3 NONAME ; class HSPluginSettingsIf::CPluginMap & HSPluginSettingsIf::CPluginMap::SetPluginUidL(class TDesC8 const &)
?NewL@CItemMap@HSPluginSettingsIf@@SAPAV12@XZ @ 4 NONAME ; class HSPluginSettingsIf::CItemMap * HSPluginSettingsIf::CItemMap::NewL(void)
- ?NewLC@CHomescreenSettings@HSPluginSettingsIf@@SAPAV12@ABVTDesC8@@0PAVMHomeScreenSettingsObserver@2@@Z @ 5 NONAME ; class HSPluginSettingsIf::CHomescreenSettings * HSPluginSettingsIf::CHomescreenSettings::NewLC(class TDesC8 const &, class TDesC8 const &, class HSPluginSettingsIf::MHomeScreenSettingsObserver *)
- ?Name@CPluginInfo@HSPluginSettingsIf@@QBEABVTDesC8@@XZ @ 6 NONAME ; class TDesC8 const & HSPluginSettingsIf::CPluginInfo::Name(void) const
- ??1CItemMap@HSPluginSettingsIf@@UAE@XZ @ 7 NONAME ; HSPluginSettingsIf::CItemMap::~CItemMap(void)
- ?NewLC@CHspsConfiguration@HSPluginSettingsIf@@SAPAV12@XZ @ 8 NONAME ; class HSPluginSettingsIf::CHspsConfiguration * HSPluginSettingsIf::CHspsConfiguration::NewLC(void)
+ ?Name@CPluginInfo@HSPluginSettingsIf@@QBEABVTDesC8@@XZ @ 5 NONAME ; class TDesC8 const & HSPluginSettingsIf::CPluginInfo::Name(void) const
+ ??1CItemMap@HSPluginSettingsIf@@UAE@XZ @ 6 NONAME ; HSPluginSettingsIf::CItemMap::~CItemMap(void)
+ ?NewLC@CHspsConfiguration@HSPluginSettingsIf@@SAPAV12@XZ @ 7 NONAME ; class HSPluginSettingsIf::CHspsConfiguration * HSPluginSettingsIf::CHspsConfiguration::NewLC(void)
+ ?InitializeL@CHomescreenSettings@HSPluginSettingsIf@@SAXABVTDesC8@@@Z @ 8 NONAME ; void HSPluginSettingsIf::CHomescreenSettings::InitializeL(class TDesC8 const &)
?AddObjectMapL@CHspsConfiguration@HSPluginSettingsIf@@QAEAAV12@PAVCObjectMap@2@@Z @ 9 NONAME ; class HSPluginSettingsIf::CHspsConfiguration & HSPluginSettingsIf::CHspsConfiguration::AddObjectMapL(class HSPluginSettingsIf::CObjectMap *)
?Value@CPropertyMap@HSPluginSettingsIf@@QBEABVTDesC8@@XZ @ 10 NONAME ; class TDesC8 const & HSPluginSettingsIf::CPropertyMap::Value(void) const
?PluginInfo@CHspsConfiguration@HSPluginSettingsIf@@QAEAAVCPluginInfo@2@XZ @ 11 NONAME ; class HSPluginSettingsIf::CPluginInfo & HSPluginSettingsIf::CHspsConfiguration::PluginInfo(void)
@@ -22,43 +22,45 @@
?PluginUid@CPluginMap@HSPluginSettingsIf@@QBEABVTDesC8@@XZ @ 21 NONAME ; class TDesC8 const & HSPluginSettingsIf::CPluginMap::PluginUid(void) const
?PluginId@CPluginMap@HSPluginSettingsIf@@QBEABVTDesC8@@XZ @ 22 NONAME ; class TDesC8 const & HSPluginSettingsIf::CPluginMap::PluginId(void) const
?SetMediaTypeL@CObjectMap@HSPluginSettingsIf@@QAEAAV12@ABVTDesC8@@@Z @ 23 NONAME ; class HSPluginSettingsIf::CObjectMap & HSPluginSettingsIf::CObjectMap::SetMediaTypeL(class TDesC8 const &)
- ?NewL@CHspsConfiguration@HSPluginSettingsIf@@SAPAV12@XZ @ 24 NONAME ; class HSPluginSettingsIf::CHspsConfiguration * HSPluginSettingsIf::CHspsConfiguration::NewL(void)
- ?GetSettingsL@CHomescreenSettings@HSPluginSettingsIf@@UAEHABVTDesC8@@AAV?$RPointerArray@VCItemMap@HSPluginSettingsIf@@@@@Z @ 25 NONAME ; int HSPluginSettingsIf::CHomescreenSettings::GetSettingsL(class TDesC8 const &, class RPointerArray<class HSPluginSettingsIf::CItemMap> &)
- ?NewLC@CPropertyMap@HSPluginSettingsIf@@SAPAV12@XZ @ 26 NONAME ; class HSPluginSettingsIf::CPropertyMap * HSPluginSettingsIf::CPropertyMap::NewLC(void)
- ?NameL@CObjectMap@HSPluginSettingsIf@@QBEABVTDesC8@@XZ @ 27 NONAME ; class TDesC8 const & HSPluginSettingsIf::CObjectMap::NameL(void) const
- ?SetItemNameL@CItemMap@HSPluginSettingsIf@@QAEAAV12@ABVTDesC8@@@Z @ 28 NONAME ; class HSPluginSettingsIf::CItemMap & HSPluginSettingsIf::CItemMap::SetItemNameL(class TDesC8 const &)
- ?SetUidL@CPluginInfo@HSPluginSettingsIf@@QAEAAV12@ABVTDesC8@@@Z @ 29 NONAME ; class HSPluginSettingsIf::CPluginInfo & HSPluginSettingsIf::CPluginInfo::SetUidL(class TDesC8 const &)
- ?Properties@CItemMap@HSPluginSettingsIf@@QBEAAV?$RPointerArray@VCPropertyMap@HSPluginSettingsIf@@@@XZ @ 30 NONAME ; class RPointerArray<class HSPluginSettingsIf::CPropertyMap> & HSPluginSettingsIf::CItemMap::Properties(void) const
- ?NewL@CPropertyMap@HSPluginSettingsIf@@SAPAV12@XZ @ 31 NONAME ; class HSPluginSettingsIf::CPropertyMap * HSPluginSettingsIf::CPropertyMap::NewL(void)
- ?Type@CPluginInfo@HSPluginSettingsIf@@QBEABVTDesC8@@XZ @ 32 NONAME ; class TDesC8 const & HSPluginSettingsIf::CPluginInfo::Type(void) const
- ??1CPluginMap@HSPluginSettingsIf@@UAE@XZ @ 33 NONAME ; HSPluginSettingsIf::CPluginMap::~CPluginMap(void)
+ ?Instance@CHomescreenSettings@HSPluginSettingsIf@@SAPAV12@XZ @ 24 NONAME ; class HSPluginSettingsIf::CHomescreenSettings * HSPluginSettingsIf::CHomescreenSettings::Instance(void)
+ ?NewL@CHspsConfiguration@HSPluginSettingsIf@@SAPAV12@XZ @ 25 NONAME ; class HSPluginSettingsIf::CHspsConfiguration * HSPluginSettingsIf::CHspsConfiguration::NewL(void)
+ ?GetSettingsL@CHomescreenSettings@HSPluginSettingsIf@@UAEHABVTDesC8@@AAV?$RPointerArray@VCItemMap@HSPluginSettingsIf@@@@@Z @ 26 NONAME ; int HSPluginSettingsIf::CHomescreenSettings::GetSettingsL(class TDesC8 const &, class RPointerArray<class HSPluginSettingsIf::CItemMap> &)
+ ?NewLC@CPropertyMap@HSPluginSettingsIf@@SAPAV12@XZ @ 27 NONAME ; class HSPluginSettingsIf::CPropertyMap * HSPluginSettingsIf::CPropertyMap::NewLC(void)
+ ?NameL@CObjectMap@HSPluginSettingsIf@@QBEABVTDesC8@@XZ @ 28 NONAME ; class TDesC8 const & HSPluginSettingsIf::CObjectMap::NameL(void) const
+ ?SetItemNameL@CItemMap@HSPluginSettingsIf@@QAEAAV12@ABVTDesC8@@@Z @ 29 NONAME ; class HSPluginSettingsIf::CItemMap & HSPluginSettingsIf::CItemMap::SetItemNameL(class TDesC8 const &)
+ ?SetUidL@CPluginInfo@HSPluginSettingsIf@@QAEAAV12@ABVTDesC8@@@Z @ 30 NONAME ; class HSPluginSettingsIf::CPluginInfo & HSPluginSettingsIf::CPluginInfo::SetUidL(class TDesC8 const &)
+ ?Properties@CItemMap@HSPluginSettingsIf@@QBEAAV?$RPointerArray@VCPropertyMap@HSPluginSettingsIf@@@@XZ @ 31 NONAME ; class RPointerArray<class HSPluginSettingsIf::CPropertyMap> & HSPluginSettingsIf::CItemMap::Properties(void) const
+ ?NewL@CPropertyMap@HSPluginSettingsIf@@SAPAV12@XZ @ 32 NONAME ; class HSPluginSettingsIf::CPropertyMap * HSPluginSettingsIf::CPropertyMap::NewL(void)
+ ?Type@CPluginInfo@HSPluginSettingsIf@@QBEABVTDesC8@@XZ @ 33 NONAME ; class TDesC8 const & HSPluginSettingsIf::CPluginInfo::Type(void) const
?MediaType@CObjectMap@HSPluginSettingsIf@@QBEABVTDesC8@@XZ @ 34 NONAME ; class TDesC8 const & HSPluginSettingsIf::CObjectMap::MediaType(void) const
- ?SetPluginIdL@CPluginMap@HSPluginSettingsIf@@QAEAAV12@ABVTDesC8@@@Z @ 35 NONAME ; class HSPluginSettingsIf::CPluginMap & HSPluginSettingsIf::CPluginMap::SetPluginIdL(class TDesC8 const &)
- ?Resources@CHspsConfiguration@HSPluginSettingsIf@@QAEAAV?$RPointerArray@VCObjectMap@HSPluginSettingsIf@@@@XZ @ 36 NONAME ; class RPointerArray<class HSPluginSettingsIf::CObjectMap> & HSPluginSettingsIf::CHspsConfiguration::Resources(void)
- ?Path@CObjectMap@HSPluginSettingsIf@@QBEABVTDesC8@@XZ @ 37 NONAME ; class TDesC8 const & HSPluginSettingsIf::CObjectMap::Path(void) const
- ?SetSettingsL@CHomescreenSettings@HSPluginSettingsIf@@UAEHABVTDesC8@@ABV?$RPointerArray@VCItemMap@HSPluginSettingsIf@@@@H@Z @ 38 NONAME ; int HSPluginSettingsIf::CHomescreenSettings::SetSettingsL(class TDesC8 const &, class RPointerArray<class HSPluginSettingsIf::CItemMap> const &, int)
- ?Name@CPropertyMap@HSPluginSettingsIf@@QBEABVTDesC8@@XZ @ 39 NONAME ; class TDesC8 const & HSPluginSettingsIf::CPropertyMap::Name(void) const
- ?NewL@CObjectMap@HSPluginSettingsIf@@SAPAV12@XZ @ 40 NONAME ; class HSPluginSettingsIf::CObjectMap * HSPluginSettingsIf::CObjectMap::NewL(void)
- ?NewL@CPluginMap@HSPluginSettingsIf@@SAPAV12@XZ @ 41 NONAME ; class HSPluginSettingsIf::CPluginMap * HSPluginSettingsIf::CPluginMap::NewL(void)
- ?SetPathL@CObjectMap@HSPluginSettingsIf@@QAEAAV12@ABVTDesC8@@@Z @ 42 NONAME ; class HSPluginSettingsIf::CObjectMap & HSPluginSettingsIf::CObjectMap::SetPathL(class TDesC8 const &)
- ?PluginMaps@CHspsConfiguration@HSPluginSettingsIf@@QAEAAV?$RPointerArray@VCPluginMap@HSPluginSettingsIf@@@@XZ @ 43 NONAME ; class RPointerArray<class HSPluginSettingsIf::CPluginMap> & HSPluginSettingsIf::CHspsConfiguration::PluginMaps(void)
- ?NewL@CHomescreenSettings@HSPluginSettingsIf@@SAPAV12@ABVTDesC8@@0PAVMHomeScreenSettingsObserver@2@@Z @ 44 NONAME ; class HSPluginSettingsIf::CHomescreenSettings * HSPluginSettingsIf::CHomescreenSettings::NewL(class TDesC8 const &, class TDesC8 const &, class HSPluginSettingsIf::MHomeScreenSettingsObserver *)
+ ??1CPluginMap@HSPluginSettingsIf@@UAE@XZ @ 35 NONAME ; HSPluginSettingsIf::CPluginMap::~CPluginMap(void)
+ ?SetPluginIdL@CPluginMap@HSPluginSettingsIf@@QAEAAV12@ABVTDesC8@@@Z @ 36 NONAME ; class HSPluginSettingsIf::CPluginMap & HSPluginSettingsIf::CPluginMap::SetPluginIdL(class TDesC8 const &)
+ ?Resources@CHspsConfiguration@HSPluginSettingsIf@@QAEAAV?$RPointerArray@VCObjectMap@HSPluginSettingsIf@@@@XZ @ 37 NONAME ; class RPointerArray<class HSPluginSettingsIf::CObjectMap> & HSPluginSettingsIf::CHspsConfiguration::Resources(void)
+ ?Path@CObjectMap@HSPluginSettingsIf@@QBEABVTDesC8@@XZ @ 38 NONAME ; class TDesC8 const & HSPluginSettingsIf::CObjectMap::Path(void) const
+ ?SetSettingsL@CHomescreenSettings@HSPluginSettingsIf@@UAEHABVTDesC8@@ABV?$RPointerArray@VCItemMap@HSPluginSettingsIf@@@@H@Z @ 39 NONAME ; int HSPluginSettingsIf::CHomescreenSettings::SetSettingsL(class TDesC8 const &, class RPointerArray<class HSPluginSettingsIf::CItemMap> const &, int)
+ ?Name@CPropertyMap@HSPluginSettingsIf@@QBEABVTDesC8@@XZ @ 40 NONAME ; class TDesC8 const & HSPluginSettingsIf::CPropertyMap::Name(void) const
+ ?NewL@CObjectMap@HSPluginSettingsIf@@SAPAV12@XZ @ 41 NONAME ; class HSPluginSettingsIf::CObjectMap * HSPluginSettingsIf::CObjectMap::NewL(void)
+ ?NewL@CPluginMap@HSPluginSettingsIf@@SAPAV12@XZ @ 42 NONAME ; class HSPluginSettingsIf::CPluginMap * HSPluginSettingsIf::CPluginMap::NewL(void)
+ ?SetPathL@CObjectMap@HSPluginSettingsIf@@QAEAAV12@ABVTDesC8@@@Z @ 43 NONAME ; class HSPluginSettingsIf::CObjectMap & HSPluginSettingsIf::CObjectMap::SetPathL(class TDesC8 const &)
+ ?PluginMaps@CHspsConfiguration@HSPluginSettingsIf@@QAEAAV?$RPointerArray@VCPluginMap@HSPluginSettingsIf@@@@XZ @ 44 NONAME ; class RPointerArray<class HSPluginSettingsIf::CPluginMap> & HSPluginSettingsIf::CHspsConfiguration::PluginMaps(void)
??1CPropertyMap@HSPluginSettingsIf@@UAE@XZ @ 45 NONAME ; HSPluginSettingsIf::CPropertyMap::~CPropertyMap(void)
?SetInterfaceL@CPluginInfo@HSPluginSettingsIf@@QAEAAV12@ABVTDesC8@@@Z @ 46 NONAME ; class HSPluginSettingsIf::CPluginInfo & HSPluginSettingsIf::CPluginInfo::SetInterfaceL(class TDesC8 const &)
?ConfId@CHspsConfiguration@HSPluginSettingsIf@@QBEABVTDesC8@@XZ @ 47 NONAME ; class TDesC8 const & HSPluginSettingsIf::CHspsConfiguration::ConfId(void) const
?Uid@CPluginInfo@HSPluginSettingsIf@@QBEABVTDesC8@@XZ @ 48 NONAME ; class TDesC8 const & HSPluginSettingsIf::CPluginInfo::Uid(void) const
- ?SetValueL@CPropertyMap@HSPluginSettingsIf@@QAEAAV12@ABVTDesC8@@@Z @ 49 NONAME ; class HSPluginSettingsIf::CPropertyMap & HSPluginSettingsIf::CPropertyMap::SetValueL(class TDesC8 const &)
- ?Interface@CPluginInfo@HSPluginSettingsIf@@QBEABVTDesC8@@XZ @ 50 NONAME ; class TDesC8 const & HSPluginSettingsIf::CPluginInfo::Interface(void) const
- ?SetTypeL@CPluginInfo@HSPluginSettingsIf@@QAEAAV12@ABVTDesC8@@@Z @ 51 NONAME ; class HSPluginSettingsIf::CPluginInfo & HSPluginSettingsIf::CPluginInfo::SetTypeL(class TDesC8 const &)
- ??1CHomescreenSettings@HSPluginSettingsIf@@UAE@XZ @ 52 NONAME ; HSPluginSettingsIf::CHomescreenSettings::~CHomescreenSettings(void)
- ?SetNameL@CPluginInfo@HSPluginSettingsIf@@QAEAAV12@ABVTDesC8@@@Z @ 53 NONAME ; class HSPluginSettingsIf::CPluginInfo & HSPluginSettingsIf::CPluginInfo::SetNameL(class TDesC8 const &)
- ?NewL@CPluginInfo@HSPluginSettingsIf@@SAPAV12@XZ @ 54 NONAME ; class HSPluginSettingsIf::CPluginInfo * HSPluginSettingsIf::CPluginInfo::NewL(void)
- ?SetItemIdL@CItemMap@HSPluginSettingsIf@@QAEAAV12@ABVTDesC8@@@Z @ 55 NONAME ; class HSPluginSettingsIf::CItemMap & HSPluginSettingsIf::CItemMap::SetItemIdL(class TDesC8 const &)
- ?NewLC@CItemMap@HSPluginSettingsIf@@SAPAV12@XZ @ 56 NONAME ; class HSPluginSettingsIf::CItemMap * HSPluginSettingsIf::CItemMap::NewLC(void)
- ?AddItemMapL@CHspsConfiguration@HSPluginSettingsIf@@QAEAAV12@PAVCItemMap@2@@Z @ 57 NONAME ; class HSPluginSettingsIf::CHspsConfiguration & HSPluginSettingsIf::CHspsConfiguration::AddItemMapL(class HSPluginSettingsIf::CItemMap *)
- ??1CHspsConfiguration@HSPluginSettingsIf@@UAE@XZ @ 58 NONAME ; HSPluginSettingsIf::CHspsConfiguration::~CHspsConfiguration(void)
- ?SetConfIdL@CHspsConfiguration@HSPluginSettingsIf@@QAEAAV12@ABVTDesC8@@@Z @ 59 NONAME ; class HSPluginSettingsIf::CHspsConfiguration & HSPluginSettingsIf::CHspsConfiguration::SetConfIdL(class TDesC8 const &)
- ?SetNameL@CPropertyMap@HSPluginSettingsIf@@QAEAAV12@ABVTDesC8@@@Z @ 60 NONAME ; class HSPluginSettingsIf::CPropertyMap & HSPluginSettingsIf::CPropertyMap::SetNameL(class TDesC8 const &)
- ?SetNameL@CObjectMap@HSPluginSettingsIf@@QAEAAV12@ABVTDesC8@@@Z @ 61 NONAME ; class HSPluginSettingsIf::CObjectMap & HSPluginSettingsIf::CObjectMap::SetNameL(class TDesC8 const &)
- ??1CObjectMap@HSPluginSettingsIf@@UAE@XZ @ 62 NONAME ; HSPluginSettingsIf::CObjectMap::~CObjectMap(void)
+ ?AddObserverL@CHomescreenSettings@HSPluginSettingsIf@@QAEXPAVMHomeScreenSettingsObserver@2@@Z @ 49 NONAME ; void HSPluginSettingsIf::CHomescreenSettings::AddObserverL(class HSPluginSettingsIf::MHomeScreenSettingsObserver *)
+ ?UnInitialize@CHomescreenSettings@HSPluginSettingsIf@@SAXXZ @ 50 NONAME ; void HSPluginSettingsIf::CHomescreenSettings::UnInitialize(void)
+ ?SetValueL@CPropertyMap@HSPluginSettingsIf@@QAEAAV12@ABVTDesC8@@@Z @ 51 NONAME ; class HSPluginSettingsIf::CPropertyMap & HSPluginSettingsIf::CPropertyMap::SetValueL(class TDesC8 const &)
+ ?Interface@CPluginInfo@HSPluginSettingsIf@@QBEABVTDesC8@@XZ @ 52 NONAME ; class TDesC8 const & HSPluginSettingsIf::CPluginInfo::Interface(void) const
+ ?SetTypeL@CPluginInfo@HSPluginSettingsIf@@QAEAAV12@ABVTDesC8@@@Z @ 53 NONAME ; class HSPluginSettingsIf::CPluginInfo & HSPluginSettingsIf::CPluginInfo::SetTypeL(class TDesC8 const &)
+ ?SetNameL@CPluginInfo@HSPluginSettingsIf@@QAEAAV12@ABVTDesC8@@@Z @ 54 NONAME ; class HSPluginSettingsIf::CPluginInfo & HSPluginSettingsIf::CPluginInfo::SetNameL(class TDesC8 const &)
+ ?NewL@CPluginInfo@HSPluginSettingsIf@@SAPAV12@XZ @ 55 NONAME ; class HSPluginSettingsIf::CPluginInfo * HSPluginSettingsIf::CPluginInfo::NewL(void)
+ ?SetItemIdL@CItemMap@HSPluginSettingsIf@@QAEAAV12@ABVTDesC8@@@Z @ 56 NONAME ; class HSPluginSettingsIf::CItemMap & HSPluginSettingsIf::CItemMap::SetItemIdL(class TDesC8 const &)
+ ?NewLC@CItemMap@HSPluginSettingsIf@@SAPAV12@XZ @ 57 NONAME ; class HSPluginSettingsIf::CItemMap * HSPluginSettingsIf::CItemMap::NewLC(void)
+ ?AddItemMapL@CHspsConfiguration@HSPluginSettingsIf@@QAEAAV12@PAVCItemMap@2@@Z @ 58 NONAME ; class HSPluginSettingsIf::CHspsConfiguration & HSPluginSettingsIf::CHspsConfiguration::AddItemMapL(class HSPluginSettingsIf::CItemMap *)
+ ??1CHspsConfiguration@HSPluginSettingsIf@@UAE@XZ @ 59 NONAME ; HSPluginSettingsIf::CHspsConfiguration::~CHspsConfiguration(void)
+ ?RemoveObserver@CHomescreenSettings@HSPluginSettingsIf@@QAEXPAVMHomeScreenSettingsObserver@2@@Z @ 60 NONAME ; void HSPluginSettingsIf::CHomescreenSettings::RemoveObserver(class HSPluginSettingsIf::MHomeScreenSettingsObserver *)
+ ?SetConfIdL@CHspsConfiguration@HSPluginSettingsIf@@QAEAAV12@ABVTDesC8@@@Z @ 61 NONAME ; class HSPluginSettingsIf::CHspsConfiguration & HSPluginSettingsIf::CHspsConfiguration::SetConfIdL(class TDesC8 const &)
+ ?SetNameL@CPropertyMap@HSPluginSettingsIf@@QAEAAV12@ABVTDesC8@@@Z @ 62 NONAME ; class HSPluginSettingsIf::CPropertyMap & HSPluginSettingsIf::CPropertyMap::SetNameL(class TDesC8 const &)
+ ?SetNameL@CObjectMap@HSPluginSettingsIf@@QAEAAV12@ABVTDesC8@@@Z @ 63 NONAME ; class HSPluginSettingsIf::CObjectMap & HSPluginSettingsIf::CObjectMap::SetNameL(class TDesC8 const &)
+ ??1CObjectMap@HSPluginSettingsIf@@UAE@XZ @ 64 NONAME ; HSPluginSettingsIf::CObjectMap::~CObjectMap(void)
--- a/homescreenpluginsrv/homescreen_settings_api/eabi/hspluginsettings.def Wed Mar 03 15:38:34 2010 +0200
+++ b/homescreenpluginsrv/homescreen_settings_api/eabi/hspluginsettings.def Wed May 12 13:36:47 2010 +0300
@@ -44,13 +44,13 @@
_ZN18HSPluginSettingsIf18CHspsConfigurationD0Ev @ 43 NONAME
_ZN18HSPluginSettingsIf18CHspsConfigurationD1Ev @ 44 NONAME
_ZN18HSPluginSettingsIf18CHspsConfigurationD2Ev @ 45 NONAME
- _ZN18HSPluginSettingsIf19CHomescreenSettings12GetSettingsLERK6TDesC8R13RPointerArrayINS_8CItemMapEE @ 46 NONAME
- _ZN18HSPluginSettingsIf19CHomescreenSettings12SetSettingsLERK6TDesC8RK13RPointerArrayINS_8CItemMapEEi @ 47 NONAME
- _ZN18HSPluginSettingsIf19CHomescreenSettings4NewLERK6TDesC8S3_PNS_27MHomeScreenSettingsObserverE @ 48 NONAME
- _ZN18HSPluginSettingsIf19CHomescreenSettings5NewLCERK6TDesC8S3_PNS_27MHomeScreenSettingsObserverE @ 49 NONAME
- _ZN18HSPluginSettingsIf19CHomescreenSettingsD0Ev @ 50 NONAME
- _ZN18HSPluginSettingsIf19CHomescreenSettingsD1Ev @ 51 NONAME
- _ZN18HSPluginSettingsIf19CHomescreenSettingsD2Ev @ 52 NONAME
+ _ZN18HSPluginSettingsIf19CHomescreenSettings11InitializeLERK6TDesC8 @ 46 NONAME
+ _ZN18HSPluginSettingsIf19CHomescreenSettings12AddObserverLEPNS_27MHomeScreenSettingsObserverE @ 47 NONAME
+ _ZN18HSPluginSettingsIf19CHomescreenSettings12GetSettingsLERK6TDesC8R13RPointerArrayINS_8CItemMapEE @ 48 NONAME
+ _ZN18HSPluginSettingsIf19CHomescreenSettings12SetSettingsLERK6TDesC8RK13RPointerArrayINS_8CItemMapEEi @ 49 NONAME
+ _ZN18HSPluginSettingsIf19CHomescreenSettings12UnInitializeEv @ 50 NONAME
+ _ZN18HSPluginSettingsIf19CHomescreenSettings14RemoveObserverEPNS_27MHomeScreenSettingsObserverE @ 51 NONAME
+ _ZN18HSPluginSettingsIf19CHomescreenSettings8InstanceEv @ 52 NONAME
_ZN18HSPluginSettingsIf8CItemMap10SetItemIdLERK6TDesC8 @ 53 NONAME
_ZN18HSPluginSettingsIf8CItemMap12SetItemNameLERK6TDesC8 @ 54 NONAME
_ZN18HSPluginSettingsIf8CItemMap15AddPropertyMapLEPNS_12CPropertyMapE @ 55 NONAME
@@ -80,15 +80,13 @@
_ZTIN18HSPluginSettingsIf11CPluginInfoE @ 79 NONAME
_ZTIN18HSPluginSettingsIf12CPropertyMapE @ 80 NONAME
_ZTIN18HSPluginSettingsIf18CHspsConfigurationE @ 81 NONAME
- _ZTIN18HSPluginSettingsIf19CHomescreenSettingsE @ 82 NONAME
- _ZTIN18HSPluginSettingsIf8CItemMapE @ 83 NONAME
- _ZTVN18HSPluginSettingsIf10CObjectMapE @ 84 NONAME
- _ZTVN18HSPluginSettingsIf10CPluginMapE @ 85 NONAME
- _ZTVN18HSPluginSettingsIf11CPluginInfoE @ 86 NONAME
- _ZTVN18HSPluginSettingsIf12CPropertyMapE @ 87 NONAME
- _ZTVN18HSPluginSettingsIf18CHspsConfigurationE @ 88 NONAME
- _ZTVN18HSPluginSettingsIf19CHomescreenSettingsE @ 89 NONAME
- _ZTVN18HSPluginSettingsIf8CItemMapE @ 90 NONAME
- _ZThn8_N18HSPluginSettingsIf19CHomescreenSettings12GetSettingsLERK6TDesC8R13RPointerArrayINS_8CItemMapEE @ 91 NONAME
- _ZThn8_N18HSPluginSettingsIf19CHomescreenSettings12SetSettingsLERK6TDesC8RK13RPointerArrayINS_8CItemMapEEi @ 92 NONAME
+ _ZTIN18HSPluginSettingsIf8CItemMapE @ 82 NONAME
+ _ZTVN18HSPluginSettingsIf10CObjectMapE @ 83 NONAME
+ _ZTVN18HSPluginSettingsIf10CPluginMapE @ 84 NONAME
+ _ZTVN18HSPluginSettingsIf11CPluginInfoE @ 85 NONAME
+ _ZTVN18HSPluginSettingsIf12CPropertyMapE @ 86 NONAME
+ _ZTVN18HSPluginSettingsIf18CHspsConfigurationE @ 87 NONAME
+ _ZTVN18HSPluginSettingsIf8CItemMapE @ 88 NONAME
+ _ZThn8_N18HSPluginSettingsIf19CHomescreenSettings12GetSettingsLERK6TDesC8R13RPointerArrayINS_8CItemMapEE @ 89 NONAME
+ _ZThn8_N18HSPluginSettingsIf19CHomescreenSettings12SetSettingsLERK6TDesC8RK13RPointerArrayINS_8CItemMapEEi @ 90 NONAME
--- a/homescreenpluginsrv/homescreen_settings_api/src/hspluginsettings.cpp Wed Mar 03 15:38:34 2010 +0200
+++ b/homescreenpluginsrv/homescreen_settings_api/src/hspluginsettings.cpp Wed May 12 13:36:47 2010 +0300
@@ -23,19 +23,14 @@
#include <hspluginsettings.h>
#include "hspsconfiguration.h"
-//#include "pluginmap.h"
#include "itemmap.h"
#include "propertymap.h"
-//#include "objectmap.h"
-//#include "plugininfo.h"
#include <mhomescreensettingsif.h>
#include <mhomescreensettingsobserver.h>
_LIT8( KHSPS, "Service.HSPS" );
_LIT8( KHSPSConfigurationIf, "IConfiguration" );
-
-
_LIT8( KHSPSCommandGetPluginConf, "GetPluginConf" );
_LIT8( KHSPSSetPluginSettings, "SetPluginSettings" );
_LIT8( KPluginConfKey, "pluginConf" );
@@ -46,7 +41,6 @@
_LIT8( KKeyStoringParams, "storingParams" );
-
_LIT8( KKeyStorePluginRefence, "storePluginConf" );
_LIT8( KKeyStoreAppConf, "storeAppConf" );
@@ -58,17 +52,115 @@
_LIT8( KRequestNotification, "RequestNotification" );
+_LIT8( KSettingsChanged, "PluginSettingsChanged" );
-_LIT8( KSettingsChanged, "PluginSettingsChanged" );
namespace HSPluginSettingsIf{
+NONSHARABLE_CLASS( CTlsEntry ): public CBase
+ {
+public:
+ /**
+ * Instance to home screen settings.
+ */
+ CHomescreenSettings* iInstance;
+
+ /**
+ * Reference count.
+ */
+ TInt iRefCount;
+ };
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+EXPORT_C CHomescreenSettings* CHomescreenSettings::Instance()
+ {
+ CHomescreenSettings* instance = NULL;
+
+ CTlsEntry* entry = static_cast<CTlsEntry*>( Dll::Tls() );
+ if( entry )
+ {
+ instance = entry->iInstance;
+ }
+
+ return instance;
+ }
// ---------------------------------------------------------------------------
// ---------------------------------------------------------------------------
//
-CHomescreenSettings::CHomescreenSettings(MHomeScreenSettingsObserver* aObserver, const TDesC8& aPluginId )
- : iObserver( aObserver ), iPluginId( aPluginId )
+EXPORT_C void CHomescreenSettings::InitializeL( const TDesC8& aAppUid )
+ {
+ CTlsEntry* entry = static_cast<CTlsEntry*>( Dll::Tls() );
+
+ if( !entry )
+ {
+ entry = new (ELeave) CTlsEntry();
+ entry->iInstance = NULL;
+ entry->iRefCount = 1;
+
+ CleanupStack::PushL( entry );
+ entry->iInstance = CHomescreenSettings::NewL( aAppUid );
+ CleanupStack::Pop( entry );
+
+ Dll::SetTls( entry );
+ }
+ else
+ {
+ entry->iRefCount++;
+ }
+ }
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CHomescreenSettings::UnInitialize()
+ {
+ CTlsEntry* entry = static_cast<CTlsEntry*>( Dll::Tls() );
+
+ if( !entry )
+ {
+ return;
+ }
+
+ entry->iRefCount--;
+
+ if( entry->iRefCount == 0 )
+ {
+ delete entry->iInstance;
+ entry->iInstance = NULL;
+ delete entry;
+ Dll::SetTls( NULL );
+ }
+ }
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CHomescreenSettings::AddObserverL( MHomeScreenSettingsObserver* aObserver )
+ {
+ if( iObservers.Find( aObserver ) == KErrNotFound )
+ {
+ iObservers.AppendL( aObserver );
+ }
+ }
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+EXPORT_C void CHomescreenSettings::RemoveObserver( MHomeScreenSettingsObserver* aObserver )
+ {
+ const TInt index = iObservers.Find( aObserver );
+ if( index != KErrNotFound )
+ {
+ iObservers.Remove( index );
+ }
+ }
+
+// ---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+//
+CHomescreenSettings::CHomescreenSettings()
{
}
@@ -118,48 +210,42 @@
inParamList.Reset();
outParamList.Reset();
- if( iObserver )
- {
- iTransactionId = -1;
- iHspsInterface->ExecuteCmdL( KRequestNotification,
- inParamList,
- outParamList,
- KLiwOptASyncronous,
- this );
- const TLiwGenericParam* outParam( NULL );
-
- TInt pos( 0 );
- outParam = outParamList.FindFirst( pos, _L8("status") );
-
- if ( outParam )
- {
- TInt retval;
- retval = outParam->Value().AsTInt32();
- if(retval == KErrNone )
- {
- pos = 0;
- outParam = outParamList.FindFirst( pos, _L8("TransactionID") );
- if( outParam )
- {
- retval = outParam->Value().AsTInt32();
- iTransactionId = retval;
- }
- }
-
- }
-
+ iTransactionId = -1;
+ iHspsInterface->ExecuteCmdL( KRequestNotification,
+ inParamList,
+ outParamList,
+ KLiwOptASyncronous,
+ this );
+
+ const TLiwGenericParam* outParam( NULL );
+
+ pos = 0;
+ outParam = outParamList.FindFirst( pos, _L8("status") );
+
+ if( outParam )
+ {
+ TInt retval;
+ retval = outParam->Value().AsTInt32();
+ if( retval == KErrNone )
+ {
+ pos = 0;
+ outParam = outParamList.FindFirst( pos, _L8( "TransactionID" ) );
+ if( outParam )
+ {
+ retval = outParam->Value().AsTInt32();
+ iTransactionId = retval;
+ }
+ }
}
}
// ---------------------------------------------------------------------------
// ---------------------------------------------------------------------------
//
-EXPORT_C CHomescreenSettings* CHomescreenSettings::NewL(
- const TDesC8& aAppUid,
- const TDesC8& aPluginId,
- MHomeScreenSettingsObserver* aObserver)
+CHomescreenSettings* CHomescreenSettings::NewL(
+ const TDesC8& aAppUid )
{
- CHomescreenSettings* self = CHomescreenSettings::NewLC(aAppUid, aPluginId, aObserver);
+ CHomescreenSettings* self = CHomescreenSettings::NewLC( aAppUid );
CleanupStack::Pop( self );
return self;
}
@@ -167,22 +253,23 @@
// ---------------------------------------------------------------------------
// ---------------------------------------------------------------------------
//
-EXPORT_C CHomescreenSettings* CHomescreenSettings::NewLC(
- const TDesC8& aAppUid,
- const TDesC8& aPluginId,
- MHomeScreenSettingsObserver* aObserver)
- {
- CHomescreenSettings* self = new( ELeave ) CHomescreenSettings( aObserver, aPluginId );
+CHomescreenSettings* CHomescreenSettings::NewLC(
+ const TDesC8& aAppUid )
+ {
+ CHomescreenSettings* self = new( ELeave ) CHomescreenSettings();
CleanupStack::PushL( self );
- self->ConstructL(aAppUid);
+ self->ConstructL( aAppUid );
+
return self;
}
// ---------------------------------------------------------------------------
// ---------------------------------------------------------------------------
//
-EXPORT_C CHomescreenSettings::~CHomescreenSettings()
+CHomescreenSettings::~CHomescreenSettings()
{
+ iObservers.Reset();
+
if( iHspsInterface )
{
// Close interface
@@ -202,10 +289,6 @@
delete iServiceHandler;
}
-
-
-
-
// ---------------------------------------------------------------------------
// ---------------------------------------------------------------------------
//
@@ -529,7 +612,7 @@
{
TInt retval( KErrNone );
- if( iObserver && iTransactionId == aCmdId )
+ if( iTransactionId == aCmdId && iObservers.Count() > 0 )
{
const TLiwGenericParam* outParam( NULL );
@@ -566,16 +649,16 @@
variant = outParam->Value();
const CLiwMap* notifMap( variant.AsMap() );
-
+
if ( notifMap->FindL( _L8("event"), variant ) )
{
event = variant.AsData().AllocLC();
pushCount++;
}
-
+
variant.Reset();
- if ( event->Des().Compare( KSettingsChanged ) == 0 )
+ if ( event && event->Des().Compare( KSettingsChanged ) == 0 )
{
if( notifMap->FindL( _L8("name"), variant ) )
{
@@ -610,20 +693,19 @@
HBufC8* pluginId( NULL );
pluginId = variant.AsData().AllocLC();
- if( pluginId->Des().Compare(iPluginId)== 0 )
+ for( TInt i = 0; i < iObservers.Count(); i++ )
{
- retval = iObserver->SettingsChangedL(
+ iObservers[i]->SettingsChangedL(
( event ) ? *event : KNullDesC8(),
( pluginName ) ? *pluginName : KNullDesC8(),
( pluginUid ) ? *pluginUid : KNullDesC8(),
- ( pluginId ) ? * pluginId : KNullDesC8() );
- }
+ ( pluginId ) ? *pluginId : KNullDesC8() );
+ }
+
CleanupStack::PopAndDestroy( pluginId );
- variant.Reset();
-
- }
-
+ variant.Reset();
+ }
}
}
@@ -679,11 +761,10 @@
}
}
- }
-
+ }
return retval;
- }
+ }
}
//End of file
--- a/homescreenpluginsrv/hspsdom/bwins/hspsdomdocumentu.def Wed Mar 03 15:38:34 2010 +0200
+++ b/homescreenpluginsrv/hspsdom/bwins/hspsdomdocumentu.def Wed May 12 13:36:47 2010 +0300
@@ -1,74 +1,75 @@
EXPORTS
- ??1ChspsDomAttribute@@UAE@XZ @ 1 NONAME ; ChspsDomAttribute::~ChspsDomAttribute(void)
- ??1ChspsDomDepthIterator@@UAE@XZ @ 2 NONAME ; ChspsDomDepthIterator::~ChspsDomDepthIterator(void)
- ??1ChspsDomDocument@@UAE@XZ @ 3 NONAME ; ChspsDomDocument::~ChspsDomDocument(void)
- ?AddChildL@ChspsDomNode@@QAEXPAV1@@Z @ 4 NONAME ; void ChspsDomNode::AddChildL(class ChspsDomNode *)
- ?AddChildL@ChspsDomNode@@QAEXPAV1@H@Z @ 5 NONAME ; void ChspsDomNode::AddChildL(class ChspsDomNode *, int)
- ?AddItemL@ChspsDomList@@QAEXPAVMhspsDomListItem@@@Z @ 6 NONAME ; void ChspsDomList::AddItemL(class MhspsDomListItem *)
- ?AddItemL@ChspsDomList@@QAEXPAVMhspsDomListItem@@H@Z @ 7 NONAME ; void ChspsDomList::AddItemL(class MhspsDomListItem *, int)
- ?AddStringL@ChspsDomStringPool@@QAEHABVTDesC8@@@Z @ 8 NONAME ; int ChspsDomStringPool::AddStringL(class TDesC8 const &)
- ?AppendPCDataL@ChspsDomNode@@QAEXABVTDesC8@@@Z @ 9 NONAME ; void ChspsDomNode::AppendPCDataL(class TDesC8 const &)
- ?AttributeList@ChspsDomNode@@QBEAAVChspsDomList@@XZ @ 10 NONAME ; class ChspsDomList & ChspsDomNode::AttributeList(void) const
- ?AttributeValue@ChspsDomNode@@QBEABVTDesC8@@ABV2@@Z @ 11 NONAME ; class TDesC8 const & ChspsDomNode::AttributeValue(class TDesC8 const &) const
- ?ChildNodes@ChspsDomNode@@QAEAAVChspsDomList@@XZ @ 12 NONAME ; class ChspsDomList & ChspsDomNode::ChildNodes(void)
- ?CloneL@ChspsDomAttribute@@QAEPAV1@XZ @ 13 NONAME ; class ChspsDomAttribute * ChspsDomAttribute::CloneL(void)
- ?CloneL@ChspsDomDocument@@QAEPAV1@XZ @ 14 NONAME ; class ChspsDomDocument * ChspsDomDocument::CloneL(void)
- ?CloneL@ChspsDomNode@@QAEPAV1@AAVChspsDomStringPool@@@Z @ 15 NONAME ; class ChspsDomNode * ChspsDomNode::CloneL(class ChspsDomStringPool &)
- ?CloneWithoutKidsL@ChspsDomNode@@QAEPAV1@AAVChspsDomStringPool@@@Z @ 16 NONAME ; class ChspsDomNode * ChspsDomNode::CloneWithoutKidsL(class ChspsDomStringPool &)
- ?ContentType@ChspsDomNode@@QAEABW4TContentType@@XZ @ 17 NONAME ; enum TContentType const & ChspsDomNode::ContentType(void)
- ?CreateElementNSL@ChspsDomDocument@@QAEPAVChspsDomNode@@ABVTDesC8@@0@Z @ 18 NONAME ; class ChspsDomNode * ChspsDomDocument::CreateElementNSL(class TDesC8 const &, class TDesC8 const &)
- ?CreateRefNodeL@ChspsDomNode@@QAEPAV1@XZ @ 19 NONAME ; class ChspsDomNode * ChspsDomNode::CreateRefNodeL(void)
- ?DeleteAttributeList@ChspsDomNode@@QAEXXZ @ 20 NONAME ; void ChspsDomNode::DeleteAttributeList(void)
- ?DeleteChild@ChspsDomNode@@QAEXPAV1@@Z @ 21 NONAME ; void ChspsDomNode::DeleteChild(class ChspsDomNode *)
- ?DeleteItem@ChspsDomList@@QAEXH@Z @ 22 NONAME ; void ChspsDomList::DeleteItem(int)
- ?DeleteItem@ChspsDomList@@QAEXPAVMhspsDomListItem@@@Z @ 23 NONAME ; void ChspsDomList::DeleteItem(class MhspsDomListItem *)
- ?DescendantCount@ChspsDomNode@@QBEHXZ @ 24 NONAME ; int ChspsDomNode::DescendantCount(void) const
- ?DomNodeCount@ChspsDomDocument@@QBEHXZ @ 25 NONAME ; int ChspsDomDocument::DomNodeCount(void) const
- ?ExternalizeL@ChspsDomDocument@@QBEXAAVRWriteStream@@@Z @ 26 NONAME ; void ChspsDomDocument::ExternalizeL(class RWriteStream &) const
- ?FindByName@ChspsDomList@@QAEPAVMhspsDomListItem@@ABVTDesC8@@@Z @ 27 NONAME ; class MhspsDomListItem * ChspsDomList::FindByName(class TDesC8 const &)
- ?First@ChspsDomDepthIterator@@UAEPAVChspsDomNode@@XZ @ 28 NONAME ; class ChspsDomNode * ChspsDomDepthIterator::First(void)
- ?First@ChspsDomList@@QAEPAVMhspsDomListItem@@XZ @ 29 NONAME ; class MhspsDomListItem * ChspsDomList::First(void)
- ?InternalizeL@ChspsDomDocument@@QAEXAAVRReadStream@@@Z @ 30 NONAME ; void ChspsDomDocument::InternalizeL(class RReadStream &)
- ?IsRefNode@ChspsDomNode@@QBEHXZ @ 31 NONAME ; int ChspsDomNode::IsRefNode(void) const
- ?Item@ChspsDomList@@QBEPAVMhspsDomListItem@@H@Z @ 32 NONAME ; class MhspsDomListItem * ChspsDomList::Item(int) const
- ?ItemIndex@ChspsDomList@@QBEHABVMhspsDomListItem@@@Z @ 33 NONAME ; int ChspsDomList::ItemIndex(class MhspsDomListItem const &) const
- ?ItemIndex@ChspsDomNode@@QBEHABVMhspsDomListItem@@@Z @ 34 NONAME ; int ChspsDomNode::ItemIndex(class MhspsDomListItem const &) const
- ?Last@ChspsDomList@@QAEPAVMhspsDomListItem@@XZ @ 35 NONAME ; class MhspsDomListItem * ChspsDomList::Last(void)
- ?LastNode@ChspsDomDocument@@QBEPAVChspsDomNode@@XZ @ 36 NONAME ; class ChspsDomNode * ChspsDomDocument::LastNode(void) const
- ?LayoutNode@ChspsDomNode@@QAEPAVChspsNode@@XZ @ 37 NONAME ; class ChspsNode * ChspsDomNode::LayoutNode(void)
- ?Length@ChspsDomList@@QBEHXZ @ 38 NONAME ; int ChspsDomList::Length(void) const
- ?MarshallL@ChspsDomDocument@@QAEPAVHBufC8@@XZ @ 39 NONAME ; class HBufC8 * ChspsDomDocument::MarshallL(void)
- ?Name@ChspsDomAttribute@@UAEABVTDesC8@@XZ @ 40 NONAME ; class TDesC8 const & ChspsDomAttribute::Name(void)
- ?Name@ChspsDomNode@@UAEABVTDesC8@@XZ @ 41 NONAME ; class TDesC8 const & ChspsDomNode::Name(void)
- ?NameStringPoolIndex@ChspsDomAttribute@@QBEFXZ @ 42 NONAME ; short ChspsDomAttribute::NameStringPoolIndex(void) const
- ?Namespace@ChspsDomNode@@QAEABVTDesC8@@XZ @ 43 NONAME ; class TDesC8 const & ChspsDomNode::Namespace(void)
- ?NewL@ChspsDomAttribute@@SAPAV1@ABVTDesC8@@AAVChspsDomStringPool@@@Z @ 44 NONAME ; class ChspsDomAttribute * ChspsDomAttribute::NewL(class TDesC8 const &, class ChspsDomStringPool &)
- ?NewL@ChspsDomDepthIterator@@SAPAV1@AAVChspsDomNode@@@Z @ 45 NONAME ; class ChspsDomDepthIterator * ChspsDomDepthIterator::NewL(class ChspsDomNode &)
- ?NewL@ChspsDomDocument@@SAPAV1@AAVRReadStream@@@Z @ 46 NONAME ; class ChspsDomDocument * ChspsDomDocument::NewL(class RReadStream &)
- ?NewL@ChspsDomDocument@@SAPAV1@PBVHBufC8@@@Z @ 47 NONAME ; class ChspsDomDocument * ChspsDomDocument::NewL(class HBufC8 const *)
- ?NewL@ChspsDomDocument@@SAPAV1@XZ @ 48 NONAME ; class ChspsDomDocument * ChspsDomDocument::NewL(void)
- ?NextL@ChspsDomDepthIterator@@UAEPAVChspsDomNode@@XZ @ 49 NONAME ; class ChspsDomNode * ChspsDomDepthIterator::NextL(void)
- ?NextSibling@ChspsDomDepthIterator@@UAEPAVChspsDomNode@@AAV2@@Z @ 50 NONAME ; class ChspsDomNode * ChspsDomDepthIterator::NextSibling(class ChspsDomNode &)
- ?NodeId@ChspsDomNode@@QBEHXZ @ 51 NONAME ; int ChspsDomNode::NodeId(void) const
- ?PCData@ChspsDomNode@@QAEABVTDesC8@@XZ @ 52 NONAME ; class TDesC8 const & ChspsDomNode::PCData(void)
- ?Parent@ChspsDomNode@@QBEPAV1@XZ @ 53 NONAME ; class ChspsDomNode * ChspsDomNode::Parent(void) const
- ?RemoveItem@ChspsDomList@@QAEXH@Z @ 54 NONAME ; void ChspsDomList::RemoveItem(int)
- ?RemoveItem@ChspsDomList@@QAEXPAVMhspsDomListItem@@@Z @ 55 NONAME ; void ChspsDomList::RemoveItem(class MhspsDomListItem *)
- ?ReplaceChildL@ChspsDomNode@@QAEXPAV1@0@Z @ 56 NONAME ; void ChspsDomNode::ReplaceChildL(class ChspsDomNode *, class ChspsDomNode *)
- ?Reset@ChspsDomList@@QAEXXZ @ 57 NONAME ; void ChspsDomList::Reset(void)
- ?RootNode@ChspsDomDocument@@QBEPAVChspsDomNode@@XZ @ 58 NONAME ; class ChspsDomNode * ChspsDomDocument::RootNode(void) const
- ?SetContentType@ChspsDomNode@@QAEXABW4TContentType@@@Z @ 59 NONAME ; void ChspsDomNode::SetContentType(enum TContentType const &)
- ?SetLayoutNode@ChspsDomNode@@QAEXPAVChspsNode@@@Z @ 60 NONAME ; void ChspsDomNode::SetLayoutNode(class ChspsNode *)
- ?SetNodeId@ChspsDomNode@@QAEXH@Z @ 61 NONAME ; void ChspsDomNode::SetNodeId(int)
- ?SetPCDataL@ChspsDomNode@@QAEXABVTDesC8@@@Z @ 62 NONAME ; void ChspsDomNode::SetPCDataL(class TDesC8 const &)
- ?SetParent@ChspsDomNode@@QAEXPAV1@@Z @ 63 NONAME ; void ChspsDomNode::SetParent(class ChspsDomNode *)
- ?SetRefNode@ChspsDomNode@@QAEXH@Z @ 64 NONAME ; void ChspsDomNode::SetRefNode(int)
- ?SetRootNode@ChspsDomDocument@@QAEXPAVChspsDomNode@@@Z @ 65 NONAME ; void ChspsDomDocument::SetRootNode(class ChspsDomNode *)
- ?SetValueL@ChspsDomAttribute@@QAEXABVTDesC8@@@Z @ 66 NONAME ; void ChspsDomAttribute::SetValueL(class TDesC8 const &)
- ?Size@ChspsDomDocument@@QBEHXZ @ 67 NONAME ; int ChspsDomDocument::Size(void) const
- ?StringPool@ChspsDomDocument@@QBEAAVChspsDomStringPool@@XZ @ 68 NONAME ; class ChspsDomStringPool & ChspsDomDocument::StringPool(void) const
- ?StringPool@ChspsDomList@@QBEAAVChspsDomStringPool@@XZ @ 69 NONAME ; class ChspsDomStringPool & ChspsDomList::StringPool(void) const
- ?StringPool@ChspsDomNode@@QBEAAVChspsDomStringPool@@XZ @ 70 NONAME ; class ChspsDomStringPool & ChspsDomNode::StringPool(void) const
- ?Value@ChspsDomAttribute@@QAEABVTDesC8@@XZ @ 71 NONAME ; class TDesC8 const & ChspsDomAttribute::Value(void)
- ?ValueStringPoolIndex@ChspsDomAttribute@@QBEFXZ @ 72 NONAME ; short ChspsDomAttribute::ValueStringPoolIndex(void) const
+ ?MarshallL@ChspsDomDocument@@QAEPAVHBufC8@@XZ @ 1 NONAME ; class HBufC8 * ChspsDomDocument::MarshallL(void)
+ ?NewL@ChspsDomDepthIterator@@SAPAV1@AAVChspsDomNode@@@Z @ 2 NONAME ; class ChspsDomDepthIterator * ChspsDomDepthIterator::NewL(class ChspsDomNode &)
+ ?RemoveItem@ChspsDomList@@QAEXPAVMhspsDomListItem@@@Z @ 3 NONAME ; void ChspsDomList::RemoveItem(class MhspsDomListItem *)
+ ?LayoutNode@ChspsDomNode@@QAEPAVChspsNode@@XZ @ 4 NONAME ; class ChspsNode * ChspsDomNode::LayoutNode(void)
+ ?First@ChspsDomDepthIterator@@UAEPAVChspsDomNode@@XZ @ 5 NONAME ; class ChspsDomNode * ChspsDomDepthIterator::First(void)
+ ?Length@ChspsDomList@@QBEHXZ @ 6 NONAME ; int ChspsDomList::Length(void) const
+ ?ExternalizeL@ChspsDomDocument@@QBEXAAVRWriteStream@@@Z @ 7 NONAME ; void ChspsDomDocument::ExternalizeL(class RWriteStream &) const
+ ?SetLayoutNode@ChspsDomNode@@QAEXPAVChspsNode@@@Z @ 8 NONAME ; void ChspsDomNode::SetLayoutNode(class ChspsNode *)
+ ?ChildNodes@ChspsDomNode@@QAEAAVChspsDomList@@XZ @ 9 NONAME ; class ChspsDomList & ChspsDomNode::ChildNodes(void)
+ ?FindByName@ChspsDomList@@QAEPAVMhspsDomListItem@@ABVTDesC8@@@Z @ 10 NONAME ; class MhspsDomListItem * ChspsDomList::FindByName(class TDesC8 const &)
+ ?Last@ChspsDomList@@QAEPAVMhspsDomListItem@@XZ @ 11 NONAME ; class MhspsDomListItem * ChspsDomList::Last(void)
+ ?RemoveItem@ChspsDomList@@QAEXH@Z @ 12 NONAME ; void ChspsDomList::RemoveItem(int)
+ ?InternalizeL@ChspsDomDocument@@QAEXAAVRReadStream@@@Z @ 13 NONAME ; void ChspsDomDocument::InternalizeL(class RReadStream &)
+ ?PCData@ChspsDomNode@@QAEABVTDesC8@@XZ @ 14 NONAME ; class TDesC8 const & ChspsDomNode::PCData(void)
+ ?CloneWithoutKidsL@ChspsDomNode@@QAEPAV1@AAVChspsDomStringPool@@@Z @ 15 NONAME ; class ChspsDomNode * ChspsDomNode::CloneWithoutKidsL(class ChspsDomStringPool &)
+ ?AddStringL@ChspsDomStringPool@@QAEHABVTDesC8@@@Z @ 16 NONAME ; int ChspsDomStringPool::AddStringL(class TDesC8 const &)
+ ?DeleteItem@ChspsDomList@@QAEXPAVMhspsDomListItem@@@Z @ 17 NONAME ; void ChspsDomList::DeleteItem(class MhspsDomListItem *)
+ ?Size@ChspsDomDocument@@QBEHXZ @ 18 NONAME ; int ChspsDomDocument::Size(void) const
+ ?StringPool@ChspsDomList@@QBEAAVChspsDomStringPool@@XZ @ 19 NONAME ; class ChspsDomStringPool & ChspsDomList::StringPool(void) const
+ ?SetValueL@ChspsDomAttribute@@QAEXABVTDesC8@@@Z @ 20 NONAME ; void ChspsDomAttribute::SetValueL(class TDesC8 const &)
+ ?NewL@ChspsDomAttribute@@SAPAV1@ABVTDesC8@@AAVChspsDomStringPool@@@Z @ 21 NONAME ; class ChspsDomAttribute * ChspsDomAttribute::NewL(class TDesC8 const &, class ChspsDomStringPool &)
+ ?ItemIndex@ChspsDomNode@@QBEHABVMhspsDomListItem@@@Z @ 22 NONAME ; int ChspsDomNode::ItemIndex(class MhspsDomListItem const &) const
+ ?AddChildL@ChspsDomNode@@QAEXPAV1@H@Z @ 23 NONAME ; void ChspsDomNode::AddChildL(class ChspsDomNode *, int)
+ ?NodeId@ChspsDomNode@@QBEHXZ @ 24 NONAME ; int ChspsDomNode::NodeId(void) const
+ ?SetNodeId@ChspsDomNode@@QAEXH@Z @ 25 NONAME ; void ChspsDomNode::SetNodeId(int)
+ ?Item@ChspsDomList@@QBEPAVMhspsDomListItem@@H@Z @ 26 NONAME ; class MhspsDomListItem * ChspsDomList::Item(int) const
+ ?ItemIndex@ChspsDomList@@QBEHABVMhspsDomListItem@@@Z @ 27 NONAME ; int ChspsDomList::ItemIndex(class MhspsDomListItem const &) const
+ ?SetValueL@ChspsDomAttribute@@QAEXH@Z @ 28 NONAME ; void ChspsDomAttribute::SetValueL(int)
+ ?NextSibling@ChspsDomDepthIterator@@UAEPAVChspsDomNode@@AAV2@@Z @ 29 NONAME ; class ChspsDomNode * ChspsDomDepthIterator::NextSibling(class ChspsDomNode &)
+ ?ValueStringPoolIndex@ChspsDomAttribute@@QBEFXZ @ 30 NONAME ; short ChspsDomAttribute::ValueStringPoolIndex(void) const
+ ?CreateElementNSL@ChspsDomDocument@@QAEPAVChspsDomNode@@ABVTDesC8@@0@Z @ 31 NONAME ; class ChspsDomNode * ChspsDomDocument::CreateElementNSL(class TDesC8 const &, class TDesC8 const &)
+ ?DeleteChild@ChspsDomNode@@QAEXPAV1@@Z @ 32 NONAME ; void ChspsDomNode::DeleteChild(class ChspsDomNode *)
+ ?SetRootNode@ChspsDomDocument@@QAEXPAVChspsDomNode@@@Z @ 33 NONAME ; void ChspsDomDocument::SetRootNode(class ChspsDomNode *)
+ ?ContentType@ChspsDomNode@@QAEABW4TContentType@@XZ @ 34 NONAME ; enum TContentType const & ChspsDomNode::ContentType(void)
+ ?Namespace@ChspsDomNode@@QAEABVTDesC8@@XZ @ 35 NONAME ; class TDesC8 const & ChspsDomNode::Namespace(void)
+ ?CloneL@ChspsDomAttribute@@QAEPAV1@XZ @ 36 NONAME ; class ChspsDomAttribute * ChspsDomAttribute::CloneL(void)
+ ?AddChildL@ChspsDomNode@@QAEXPAV1@@Z @ 37 NONAME ; void ChspsDomNode::AddChildL(class ChspsDomNode *)
+ ?NewL@ChspsDomDocument@@SAPAV1@XZ @ 38 NONAME ; class ChspsDomDocument * ChspsDomDocument::NewL(void)
+ ?IsRefNode@ChspsDomNode@@QBEHXZ @ 39 NONAME ; int ChspsDomNode::IsRefNode(void) const
+ ?SetPCDataL@ChspsDomNode@@QAEXABVTDesC8@@@Z @ 40 NONAME ; void ChspsDomNode::SetPCDataL(class TDesC8 const &)
+ ?Value@ChspsDomAttribute@@QAEABVTDesC8@@XZ @ 41 NONAME ; class TDesC8 const & ChspsDomAttribute::Value(void)
+ ??1ChspsDomDepthIterator@@UAE@XZ @ 42 NONAME ; ChspsDomDepthIterator::~ChspsDomDepthIterator(void)
+ ?CreateRefNodeL@ChspsDomNode@@QAEPAV1@XZ @ 43 NONAME ; class ChspsDomNode * ChspsDomNode::CreateRefNodeL(void)
+ ?Reset@ChspsDomList@@QAEXXZ @ 44 NONAME ; void ChspsDomList::Reset(void)
+ ?StringPool@ChspsDomNode@@QBEAAVChspsDomStringPool@@XZ @ 45 NONAME ; class ChspsDomStringPool & ChspsDomNode::StringPool(void) const
+ ?AttributeValue@ChspsDomNode@@QBEABVTDesC8@@ABV2@@Z @ 46 NONAME ; class TDesC8 const & ChspsDomNode::AttributeValue(class TDesC8 const &) const
+ ?SetContentType@ChspsDomNode@@QAEXABW4TContentType@@@Z @ 47 NONAME ; void ChspsDomNode::SetContentType(enum TContentType const &)
+ ?NextL@ChspsDomDepthIterator@@UAEPAVChspsDomNode@@XZ @ 48 NONAME ; class ChspsDomNode * ChspsDomDepthIterator::NextL(void)
+ ?CloneL@ChspsDomDocument@@QAEPAV1@XZ @ 49 NONAME ; class ChspsDomDocument * ChspsDomDocument::CloneL(void)
+ ?AttributeList@ChspsDomNode@@QBEAAVChspsDomList@@XZ @ 50 NONAME ; class ChspsDomList & ChspsDomNode::AttributeList(void) const
+ ?LastNode@ChspsDomDocument@@QBEPAVChspsDomNode@@XZ @ 51 NONAME ; class ChspsDomNode * ChspsDomDocument::LastNode(void) const
+ ??1ChspsDomAttribute@@UAE@XZ @ 52 NONAME ; ChspsDomAttribute::~ChspsDomAttribute(void)
+ ?NewL@ChspsDomDocument@@SAPAV1@AAVRReadStream@@@Z @ 53 NONAME ; class ChspsDomDocument * ChspsDomDocument::NewL(class RReadStream &)
+ ?NewL@ChspsDomAttribute@@SAPAV1@HAAVChspsDomStringPool@@@Z @ 54 NONAME ; class ChspsDomAttribute * ChspsDomAttribute::NewL(int, class ChspsDomStringPool &)
+ ?SetParent@ChspsDomNode@@QAEXPAV1@@Z @ 55 NONAME ; void ChspsDomNode::SetParent(class ChspsDomNode *)
+ ?RootNode@ChspsDomDocument@@QBEPAVChspsDomNode@@XZ @ 56 NONAME ; class ChspsDomNode * ChspsDomDocument::RootNode(void) const
+ ?Name@ChspsDomNode@@UAEABVTDesC8@@XZ @ 57 NONAME ; class TDesC8 const & ChspsDomNode::Name(void)
+ ?First@ChspsDomList@@QAEPAVMhspsDomListItem@@XZ @ 58 NONAME ; class MhspsDomListItem * ChspsDomList::First(void)
+ ?NameStringPoolIndex@ChspsDomAttribute@@QBEFXZ @ 59 NONAME ; short ChspsDomAttribute::NameStringPoolIndex(void) const
+ ?CloneL@ChspsDomNode@@QAEPAV1@AAVChspsDomStringPool@@H@Z @ 60 NONAME ; class ChspsDomNode * ChspsDomNode::CloneL(class ChspsDomStringPool &, int)
+ ?Name@ChspsDomAttribute@@UAEABVTDesC8@@XZ @ 61 NONAME ; class TDesC8 const & ChspsDomAttribute::Name(void)
+ ?NewL@ChspsDomDocument@@SAPAV1@PBVHBufC8@@@Z @ 62 NONAME ; class ChspsDomDocument * ChspsDomDocument::NewL(class HBufC8 const *)
+ ?ReplaceChildL@ChspsDomNode@@QAEXPAV1@0@Z @ 63 NONAME ; void ChspsDomNode::ReplaceChildL(class ChspsDomNode *, class ChspsDomNode *)
+ ?AddItemL@ChspsDomList@@QAEXPAVMhspsDomListItem@@@Z @ 64 NONAME ; void ChspsDomList::AddItemL(class MhspsDomListItem *)
+ ?AppendPCDataL@ChspsDomNode@@QAEXABVTDesC8@@@Z @ 65 NONAME ; void ChspsDomNode::AppendPCDataL(class TDesC8 const &)
+ ?SetRefNode@ChspsDomNode@@QAEXH@Z @ 66 NONAME ; void ChspsDomNode::SetRefNode(int)
+ ?AddItemL@ChspsDomList@@QAEXPAVMhspsDomListItem@@H@Z @ 67 NONAME ; void ChspsDomList::AddItemL(class MhspsDomListItem *, int)
+ ?Parent@ChspsDomNode@@QBEPAV1@XZ @ 68 NONAME ; class ChspsDomNode * ChspsDomNode::Parent(void) const
+ ?StringPool@ChspsDomDocument@@QBEAAVChspsDomStringPool@@XZ @ 69 NONAME ; class ChspsDomStringPool & ChspsDomDocument::StringPool(void) const
+ ??1ChspsDomDocument@@UAE@XZ @ 70 NONAME ; ChspsDomDocument::~ChspsDomDocument(void)
+ ?DeleteItem@ChspsDomList@@QAEXH@Z @ 71 NONAME ; void ChspsDomList::DeleteItem(int)
+ ?DescendantCount@ChspsDomNode@@QBEHXZ @ 72 NONAME ; int ChspsDomNode::DescendantCount(void) const
+ ?DomNodeCount@ChspsDomDocument@@QBEHXZ @ 73 NONAME ; int ChspsDomDocument::DomNodeCount(void) const
--- a/homescreenpluginsrv/hspsdom/eabi/hspsdomdocumentu.def Wed Mar 03 15:38:34 2010 +0200
+++ b/homescreenpluginsrv/hspsdom/eabi/hspsdomdocumentu.def Wed May 12 13:36:47 2010 +0300
@@ -21,81 +21,82 @@
_ZN12ChspsDomNode14CreateRefNodeLEv @ 20 NONAME
_ZN12ChspsDomNode14SetContentTypeERK12TContentType @ 21 NONAME
_ZN12ChspsDomNode17CloneWithoutKidsLER18ChspsDomStringPool @ 22 NONAME
- _ZN12ChspsDomNode19DeleteAttributeListEv @ 23 NONAME
- _ZN12ChspsDomNode4NameEv @ 24 NONAME
- _ZN12ChspsDomNode6CloneLER18ChspsDomStringPool @ 25 NONAME
- _ZN12ChspsDomNode6PCDataEv @ 26 NONAME
- _ZN12ChspsDomNode9AddChildLEPS_ @ 27 NONAME
- _ZN12ChspsDomNode9AddChildLEPS_i @ 28 NONAME
- _ZN12ChspsDomNode9NamespaceEv @ 29 NONAME
- _ZN12ChspsDomNode9SetNodeIdEi @ 30 NONAME
- _ZN12ChspsDomNode9SetParentEPS_ @ 31 NONAME
- _ZN16ChspsDomDocument11SetRootNodeEP12ChspsDomNode @ 32 NONAME
- _ZN16ChspsDomDocument12InternalizeLER11RReadStream @ 33 NONAME
- _ZN16ChspsDomDocument16CreateElementNSLERK6TDesC8S2_ @ 34 NONAME
- _ZN16ChspsDomDocument4NewLEPK6HBufC8 @ 35 NONAME
- _ZN16ChspsDomDocument4NewLER11RReadStream @ 36 NONAME
- _ZN16ChspsDomDocument4NewLEv @ 37 NONAME
- _ZN16ChspsDomDocument6CloneLEv @ 38 NONAME
- _ZN16ChspsDomDocument9MarshallLEv @ 39 NONAME
- _ZN16ChspsDomDocumentD0Ev @ 40 NONAME
- _ZN16ChspsDomDocumentD1Ev @ 41 NONAME
- _ZN16ChspsDomDocumentD2Ev @ 42 NONAME
- _ZN17ChspsDomAttribute4NameEv @ 43 NONAME
- _ZN17ChspsDomAttribute4NewLERK6TDesC8R18ChspsDomStringPool @ 44 NONAME
+ _ZN12ChspsDomNode4NameEv @ 23 NONAME
+ _ZN12ChspsDomNode6CloneLER18ChspsDomStringPooli @ 24 NONAME
+ _ZN12ChspsDomNode6PCDataEv @ 25 NONAME
+ _ZN12ChspsDomNode9AddChildLEPS_ @ 26 NONAME
+ _ZN12ChspsDomNode9AddChildLEPS_i @ 27 NONAME
+ _ZN12ChspsDomNode9NamespaceEv @ 28 NONAME
+ _ZN12ChspsDomNode9SetNodeIdEi @ 29 NONAME
+ _ZN12ChspsDomNode9SetParentEPS_ @ 30 NONAME
+ _ZN16ChspsDomDocument11SetRootNodeEP12ChspsDomNode @ 31 NONAME
+ _ZN16ChspsDomDocument12InternalizeLER11RReadStream @ 32 NONAME
+ _ZN16ChspsDomDocument16CreateElementNSLERK6TDesC8S2_ @ 33 NONAME
+ _ZN16ChspsDomDocument4NewLEPK6HBufC8 @ 34 NONAME
+ _ZN16ChspsDomDocument4NewLER11RReadStream @ 35 NONAME
+ _ZN16ChspsDomDocument4NewLEv @ 36 NONAME
+ _ZN16ChspsDomDocument6CloneLEv @ 37 NONAME
+ _ZN16ChspsDomDocument9MarshallLEv @ 38 NONAME
+ _ZN16ChspsDomDocumentD0Ev @ 39 NONAME
+ _ZN16ChspsDomDocumentD1Ev @ 40 NONAME
+ _ZN16ChspsDomDocumentD2Ev @ 41 NONAME
+ _ZN17ChspsDomAttribute4NameEv @ 42 NONAME
+ _ZN17ChspsDomAttribute4NewLERK6TDesC8R18ChspsDomStringPool @ 43 NONAME
+ _ZN17ChspsDomAttribute4NewLEiR18ChspsDomStringPool @ 44 NONAME
_ZN17ChspsDomAttribute5ValueEv @ 45 NONAME
_ZN17ChspsDomAttribute6CloneLEv @ 46 NONAME
_ZN17ChspsDomAttribute9SetValueLERK6TDesC8 @ 47 NONAME
- _ZN17ChspsDomAttributeD0Ev @ 48 NONAME
- _ZN17ChspsDomAttributeD1Ev @ 49 NONAME
- _ZN17ChspsDomAttributeD2Ev @ 50 NONAME
- _ZN18ChspsDomStringPool10AddStringLERK6TDesC8 @ 51 NONAME
- _ZN21ChspsDomDepthIterator11NextSiblingER12ChspsDomNode @ 52 NONAME
- _ZN21ChspsDomDepthIterator4NewLER12ChspsDomNode @ 53 NONAME
- _ZN21ChspsDomDepthIterator5FirstEv @ 54 NONAME
- _ZN21ChspsDomDepthIterator5NextLEv @ 55 NONAME
- _ZN21ChspsDomDepthIteratorD0Ev @ 56 NONAME
- _ZN21ChspsDomDepthIteratorD1Ev @ 57 NONAME
- _ZN21ChspsDomDepthIteratorD2Ev @ 58 NONAME
- _ZNK12ChspsDomList10StringPoolEv @ 59 NONAME
- _ZNK12ChspsDomList4ItemEi @ 60 NONAME
- _ZNK12ChspsDomList6LengthEv @ 61 NONAME
- _ZNK12ChspsDomList9ItemIndexERK16MhspsDomListItem @ 62 NONAME
- _ZNK12ChspsDomNode10StringPoolEv @ 63 NONAME
- _ZNK12ChspsDomNode13AttributeListEv @ 64 NONAME
- _ZNK12ChspsDomNode14AttributeValueERK6TDesC8 @ 65 NONAME
- _ZNK12ChspsDomNode15DescendantCountEv @ 66 NONAME
- _ZNK12ChspsDomNode6NodeIdEv @ 67 NONAME
- _ZNK12ChspsDomNode6ParentEv @ 68 NONAME
- _ZNK12ChspsDomNode9IsRefNodeEv @ 69 NONAME
- _ZNK12ChspsDomNode9ItemIndexERK16MhspsDomListItem @ 70 NONAME
- _ZNK16ChspsDomDocument10StringPoolEv @ 71 NONAME
- _ZNK16ChspsDomDocument12DomNodeCountEv @ 72 NONAME
- _ZNK16ChspsDomDocument12ExternalizeLER12RWriteStream @ 73 NONAME
- _ZNK16ChspsDomDocument4SizeEv @ 74 NONAME
- _ZNK16ChspsDomDocument8LastNodeEv @ 75 NONAME
- _ZNK16ChspsDomDocument8RootNodeEv @ 76 NONAME
- _ZNK17ChspsDomAttribute19NameStringPoolIndexEv @ 77 NONAME
- _ZNK17ChspsDomAttribute20ValueStringPoolIndexEv @ 78 NONAME
- _ZTI12ChspsDomList @ 79 NONAME ; #<TI>#
- _ZTI12ChspsDomNode @ 80 NONAME ; #<TI>#
- _ZTI16ChspsDomDocument @ 81 NONAME ; #<TI>#
- _ZTI17ChspsDomAttribute @ 82 NONAME ; #<TI>#
- _ZTI18ChspsDomStringPool @ 83 NONAME ; #<TI>#
- _ZTI21ChspsDomDepthIterator @ 84 NONAME ; #<TI>#
- _ZTV12ChspsDomList @ 85 NONAME ; #<VT>#
- _ZTV12ChspsDomNode @ 86 NONAME ; #<VT>#
- _ZTV16ChspsDomDocument @ 87 NONAME ; #<VT>#
- _ZTV17ChspsDomAttribute @ 88 NONAME ; #<VT>#
- _ZTV18ChspsDomStringPool @ 89 NONAME ; #<VT>#
- _ZTV21ChspsDomDepthIterator @ 90 NONAME ; #<VT>#
- _ZThn4_N12ChspsDomNode4NameEv @ 91 NONAME ; #<thunk>#
- _ZThn4_N17ChspsDomAttribute4NameEv @ 92 NONAME ; #<thunk>#
- _ZThn4_N17ChspsDomAttributeD0Ev @ 93 NONAME ; #<thunk>#
- _ZThn4_N17ChspsDomAttributeD1Ev @ 94 NONAME ; #<thunk>#
- _ZThn4_N21ChspsDomDepthIterator11NextSiblingER12ChspsDomNode @ 95 NONAME ; #<thunk>#
- _ZThn4_N21ChspsDomDepthIterator5FirstEv @ 96 NONAME ; #<thunk>#
- _ZThn4_N21ChspsDomDepthIterator5NextLEv @ 97 NONAME ; #<thunk>#
- _ZThn4_N21ChspsDomDepthIteratorD0Ev @ 98 NONAME ; #<thunk>#
- _ZThn4_N21ChspsDomDepthIteratorD1Ev @ 99 NONAME ; #<thunk>#
+ _ZN17ChspsDomAttribute9SetValueLEi @ 48 NONAME
+ _ZN17ChspsDomAttributeD0Ev @ 49 NONAME
+ _ZN17ChspsDomAttributeD1Ev @ 50 NONAME
+ _ZN17ChspsDomAttributeD2Ev @ 51 NONAME
+ _ZN18ChspsDomStringPool10AddStringLERK6TDesC8 @ 52 NONAME
+ _ZN21ChspsDomDepthIterator11NextSiblingER12ChspsDomNode @ 53 NONAME
+ _ZN21ChspsDomDepthIterator4NewLER12ChspsDomNode @ 54 NONAME
+ _ZN21ChspsDomDepthIterator5FirstEv @ 55 NONAME
+ _ZN21ChspsDomDepthIterator5NextLEv @ 56 NONAME
+ _ZN21ChspsDomDepthIteratorD0Ev @ 57 NONAME
+ _ZN21ChspsDomDepthIteratorD1Ev @ 58 NONAME
+ _ZN21ChspsDomDepthIteratorD2Ev @ 59 NONAME
+ _ZNK12ChspsDomList10StringPoolEv @ 60 NONAME
+ _ZNK12ChspsDomList4ItemEi @ 61 NONAME
+ _ZNK12ChspsDomList6LengthEv @ 62 NONAME
+ _ZNK12ChspsDomList9ItemIndexERK16MhspsDomListItem @ 63 NONAME
+ _ZNK12ChspsDomNode10StringPoolEv @ 64 NONAME
+ _ZNK12ChspsDomNode13AttributeListEv @ 65 NONAME
+ _ZNK12ChspsDomNode14AttributeValueERK6TDesC8 @ 66 NONAME
+ _ZNK12ChspsDomNode15DescendantCountEv @ 67 NONAME
+ _ZNK12ChspsDomNode6NodeIdEv @ 68 NONAME
+ _ZNK12ChspsDomNode6ParentEv @ 69 NONAME
+ _ZNK12ChspsDomNode9IsRefNodeEv @ 70 NONAME
+ _ZNK12ChspsDomNode9ItemIndexERK16MhspsDomListItem @ 71 NONAME
+ _ZNK16ChspsDomDocument10StringPoolEv @ 72 NONAME
+ _ZNK16ChspsDomDocument12DomNodeCountEv @ 73 NONAME
+ _ZNK16ChspsDomDocument12ExternalizeLER12RWriteStream @ 74 NONAME
+ _ZNK16ChspsDomDocument4SizeEv @ 75 NONAME
+ _ZNK16ChspsDomDocument8LastNodeEv @ 76 NONAME
+ _ZNK16ChspsDomDocument8RootNodeEv @ 77 NONAME
+ _ZNK17ChspsDomAttribute19NameStringPoolIndexEv @ 78 NONAME
+ _ZNK17ChspsDomAttribute20ValueStringPoolIndexEv @ 79 NONAME
+ _ZTI12ChspsDomList @ 80 NONAME
+ _ZTI12ChspsDomNode @ 81 NONAME
+ _ZTI16ChspsDomDocument @ 82 NONAME
+ _ZTI17ChspsDomAttribute @ 83 NONAME
+ _ZTI18ChspsDomStringPool @ 84 NONAME
+ _ZTI21ChspsDomDepthIterator @ 85 NONAME
+ _ZTV12ChspsDomList @ 86 NONAME
+ _ZTV12ChspsDomNode @ 87 NONAME
+ _ZTV16ChspsDomDocument @ 88 NONAME
+ _ZTV17ChspsDomAttribute @ 89 NONAME
+ _ZTV18ChspsDomStringPool @ 90 NONAME
+ _ZTV21ChspsDomDepthIterator @ 91 NONAME
+ _ZThn4_N12ChspsDomNode4NameEv @ 92 NONAME
+ _ZThn4_N17ChspsDomAttribute4NameEv @ 93 NONAME
+ _ZThn4_N17ChspsDomAttributeD0Ev @ 94 NONAME
+ _ZThn4_N17ChspsDomAttributeD1Ev @ 95 NONAME
+ _ZThn4_N21ChspsDomDepthIterator11NextSiblingER12ChspsDomNode @ 96 NONAME
+ _ZThn4_N21ChspsDomDepthIterator5FirstEv @ 97 NONAME
+ _ZThn4_N21ChspsDomDepthIterator5NextLEv @ 98 NONAME
+ _ZThn4_N21ChspsDomDepthIteratorD0Ev @ 99 NONAME
+ _ZThn4_N21ChspsDomDepthIteratorD1Ev @ 100 NONAME
--- a/homescreenpluginsrv/hspsdom/group/hspsdomdocument.mmp Wed Mar 03 15:38:34 2010 +0200
+++ b/homescreenpluginsrv/hspsdom/group/hspsdomdocument.mmp Wed May 12 13:36:47 2010 +0300
@@ -32,6 +32,7 @@
SOURCE hspsdomlist.cpp
SOURCE hspsdomdepthiterator.cpp
SOURCE hspsdomstringpool.cpp
+SOURCE hspsdomstringpooloptimizer.cpp
USERINCLUDE .
USERINCLUDE ../inc
--- a/homescreenpluginsrv/hspsdom/src/hspsdomattribute.cpp Wed Mar 03 15:38:34 2010 +0200
+++ b/homescreenpluginsrv/hspsdom/src/hspsdomattribute.cpp Wed May 12 13:36:47 2010 +0300
@@ -35,7 +35,6 @@
{
}
-
// -----------------------------------------------------------------------------
// ChspsDomAttribute::ConstructL
// Symbian 2nd phase constructor can leave.
@@ -45,6 +44,17 @@
{
iNameRef = iStringPool.AddStringL( aName );
}
+
+// -----------------------------------------------------------------------------
+// ChspsDomAttribute::ConstructL
+// Symbian 2nd phase constructor can leave.
+// -----------------------------------------------------------------------------
+//
+void ChspsDomAttribute::ConstructL( const TInt aName )
+ {
+ iNameRef = aName;
+ }
+
// -----------------------------------------------------------------------------
// ChspsDomAttribute::NewL
// Two-phased constructor.
@@ -63,6 +73,23 @@
return self;
}
+// -----------------------------------------------------------------------------
+// ChspsDomAttribute::NewL
+// Two-phased constructor.
+// -----------------------------------------------------------------------------
+//
+EXPORT_C ChspsDomAttribute* ChspsDomAttribute::NewL(
+ const TInt aName,
+ ChspsDomStringPool& aStringPool )
+ {
+ ChspsDomAttribute* self = new( ELeave ) ChspsDomAttribute( aStringPool );
+
+ CleanupStack::PushL( self );
+ self->ConstructL( aName );
+ CleanupStack::Pop( self );
+
+ return self;
+ }
// -----------------------------------------------------------------------------
// ChspsDomAttribute::NewL
@@ -106,18 +133,38 @@
// ChspsDomAttribute::CloneL
// -----------------------------------------------------------------------------
//
-ChspsDomAttribute* ChspsDomAttribute::CloneL( ChspsDomStringPool& aStringPool )
- {
- const TDesC8& name = iStringPool.String( iNameRef );
+ChspsDomAttribute* ChspsDomAttribute::CloneL( ChspsDomStringPool& aStringPool,
+ const TBool aFastClone )
+ {
+ ChspsDomAttribute* clone = NULL;
- ChspsDomAttribute* clone = ChspsDomAttribute::NewL( name, aStringPool );
+ if( aFastClone )
+ {
+ clone = ChspsDomAttribute::NewL( iNameRef, aStringPool );
+ }
+ else
+ {
+ const TDesC8& name = iStringPool.String( iNameRef );
+ clone = ChspsDomAttribute::NewL( name, aStringPool );
+ }
+
CleanupStack::PushL( clone );
+
if ( iValueRef > KErrNotFound )
{
- const TDesC8& value = iStringPool.String( iValueRef );
- clone->SetValueL( value );
+ if( aFastClone )
+ {
+ clone->SetValueL( iValueRef );
+ }
+ else
+ {
+ const TDesC8& value = iStringPool.String( iValueRef );
+ clone->SetValueL( value );
+ }
}
+
CleanupStack::Pop( clone );
+
return clone;
}
@@ -169,6 +216,14 @@
iValueRef = iStringPool.AddStringL( aValue );
}
+// -----------------------------------------------------------------------------
+// ChspsDomAttribute::SetValueL
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void ChspsDomAttribute::SetValueL( const TInt aValue )
+ {
+ iValueRef = aValue;
+ }
// -----------------------------------------------------------------------------
// ChspsDomAttribute::Size
--- a/homescreenpluginsrv/hspsdom/src/hspsdomdocument.cpp Wed Mar 03 15:38:34 2010 +0200
+++ b/homescreenpluginsrv/hspsdom/src/hspsdomdocument.cpp Wed May 12 13:36:47 2010 +0300
@@ -38,7 +38,7 @@
clone->iDomStringPool = iDomStringPool->CloneL();
if ( iRootNode )
{
- clone->iRootNode = iRootNode->CloneL( *clone->iDomStringPool );
+ clone->iRootNode = iRootNode->CloneL( *clone->iDomStringPool, ETrue );
}
CleanupStack::Pop( clone );
@@ -101,6 +101,7 @@
ChspsDomDocument* self = new( ELeave ) ChspsDomDocument;
CleanupStack::PushL( self );
+ self->ConstructL();
aStream >> *self;
CleanupStack::Pop(self);
@@ -174,13 +175,9 @@
//
EXPORT_C void ChspsDomDocument::InternalizeL( RReadStream& aStream )
{
- if(iDomStringPool)
- {
- delete iDomStringPool;
- iDomStringPool = NULL;
- }
- iDomStringPool = ChspsDomStringPool::NewL( aStream );
-
+ iDomStringPool->Reset();
+ iDomStringPool->InternalizeL( aStream );
+
if ( iRootNode )
{
delete iRootNode;
--- a/homescreenpluginsrv/hspsdom/src/hspsdomnode.cpp Wed Mar 03 15:38:34 2010 +0200
+++ b/homescreenpluginsrv/hspsdom/src/hspsdomnode.cpp Wed May 12 13:36:47 2010 +0300
@@ -54,7 +54,29 @@
{
iNameRef = iStringPool.AddStringL( aName );
iNSRef = iStringPool.AddStringL( aNS );
-
+ Construct2L();
+ }
+
+// -----------------------------------------------------------------------------
+// ChspsDomNode::ConstructL
+// Symbian 2nd phase constructor can leave.
+// -----------------------------------------------------------------------------
+//
+void ChspsDomNode::ConstructL(
+ const TInt aName,
+ const TInt aNS )
+ {
+ iNameRef = aName;
+ iNSRef = aNS;
+ Construct2L();
+ }
+
+// -----------------------------------------------------------------------------
+// ChspsDomNode::Construct2L
+// -----------------------------------------------------------------------------
+//
+void ChspsDomNode::Construct2L()
+ {
iChildList = ChspsDomList::NewL( ChspsDomList::ENodeList, iStringPool );
iAttributeList = ChspsDomList::NewL( ChspsDomList::EAttributeList, iStringPool );
}
@@ -80,6 +102,25 @@
// -----------------------------------------------------------------------------
// ChspsDomNode::NewL
+// Two-phased constructor.
+// -----------------------------------------------------------------------------
+//
+ChspsDomNode* ChspsDomNode::NewL(
+ const TInt aName,
+ const TInt aNS,
+ ChspsDomStringPool& aStringPool )
+ {
+ ChspsDomNode* self = new( ELeave ) ChspsDomNode( aStringPool );
+
+ CleanupStack::PushL( self );
+ self->ConstructL( aName, aNS );
+ CleanupStack::Pop( self );
+
+ return self;
+ }
+
+// -----------------------------------------------------------------------------
+// ChspsDomNode::NewL
// Two-phased stream constructor.
// -----------------------------------------------------------------------------
//
@@ -109,26 +150,38 @@
// Clones this node and it's child nodes. This is a recursive function.
// -----------------------------------------------------------------------------
//
-EXPORT_C ChspsDomNode* ChspsDomNode::CloneL( ChspsDomStringPool& aStringPool )
+EXPORT_C ChspsDomNode* ChspsDomNode::CloneL( ChspsDomStringPool& aStringPool,
+ const TBool aFastClone )
{
- const TDesC8& name = iStringPool.String( iNameRef );
- const TDesC8& ns = iStringPool.String( iNSRef );
+ ChspsDomNode* clone = NULL;
- ChspsDomNode* clone = ChspsDomNode::NewL( name, ns, aStringPool );
+ if( aFastClone )
+ {
+ clone = ChspsDomNode::NewL( iNameRef, iNSRef, aStringPool );
+ }
+ else
+ {
+ const TDesC8& name = iStringPool.String( iNameRef );
+ const TDesC8& ns = iStringPool.String( iNSRef );
+ clone = ChspsDomNode::NewL( name, ns, aStringPool );
+ }
+
CleanupStack::PushL( clone );
+
if ( iPCData )
{
clone->AppendPCDataL( *iPCData );
}
+
clone->iNodeId = iNodeId;
clone->iRefNode = iRefNode;
TInt childCount( iChildList->Length() );
- for ( TInt i=0; i<childCount; i++ )
+ for( TInt i = 0; i < childCount; i++ )
{
ChspsDomNode* childClone =
- static_cast<ChspsDomNode*>( iChildList->Item(i) )->CloneL( aStringPool );
+ static_cast<ChspsDomNode*>( iChildList->Item(i) )->CloneL( aStringPool, aFastClone );
CleanupStack::PushL( childClone );
childClone->iParentNode = clone;
clone->iChildList->AddItemL( childClone );
@@ -136,10 +189,10 @@
}
TInt attrCount( iAttributeList->Length() );
- for ( TInt j=0; j<attrCount; j++ )
+ for( TInt j = 0; j < attrCount; j++ )
{
ChspsDomAttribute* attrClone =
- static_cast<ChspsDomAttribute*>( iAttributeList->Item(j) )->CloneL( aStringPool );
+ static_cast<ChspsDomAttribute*>( iAttributeList->Item(j) )->CloneL( aStringPool, aFastClone );
CleanupStack::PushL( attrClone );
clone->iAttributeList->AddItemL( attrClone );
CleanupStack::Pop( attrClone );
@@ -490,8 +543,7 @@
// -----------------------------------------------------------------------------
//
void ChspsDomNode::ExternalizeL( RWriteStream& aStream ) const
- {
-
+ {
aStream.WriteInt16L( iNameRef );
aStream.WriteInt16L( iNSRef );
aStream.WriteInt8L( iRefNode );
@@ -571,19 +623,6 @@
return count;
}
-
-
-// -----------------------------------------------------------------------------
-// ChspsDomNode::DeleteAttributeList
-// Deletes the attribute list
-// -----------------------------------------------------------------------------
-//
-EXPORT_C void ChspsDomNode::DeleteAttributeList()
- {
- delete iAttributeList;
- iAttributeList = NULL;
-
- }
// -----------------------------------------------------------------------------
// ChspsDomNode::AttributeValue
--- a/homescreenpluginsrv/hspsdom/src/hspsdomstringpool.cpp Wed Mar 03 15:38:34 2010 +0200
+++ b/homescreenpluginsrv/hspsdom/src/hspsdomstringpool.cpp Wed May 12 13:36:47 2010 +0300
@@ -20,42 +20,8 @@
// INCLUDE FILES
#include "hspsdomstringpool.h"
+// ============================ LOCAL FUNCTIONS ================================
-// ============================ LOCAL FUNCTIONS ================================
-// -----------------------------------------------------------------------------
-// Adds string to string pool. If string doesn't appear yet, it is added to
-// the string pool and index to pool is returned.
-// @param aString String to add
-// @param aArray A pool which holds strings
-// @return Index to string pool
-// -----------------------------------------------------------------------------
-//
-LOCAL_C TInt AddToStringPoolL( const TDesC8& aString, RPointerArray<HBufC8>& aArray )
- {
- TBool found( EFalse );
- TInt index( 0 );
-
- TInt count( aArray.Count() );
- for (; index < count && !found; )
- {
- if ( aArray[ index ]->Des().Compare( aString ) == 0 )
- {
- found = ETrue;
- }
- else
- {
- index++;
- }
- }
- if ( !found )
- {
- HBufC8* tmp = aString.AllocLC();
- aArray.AppendL( tmp );
- CleanupStack::Pop( tmp );
- index = aArray.Count()-1; //Last item
- }
- return index;
- }
// ============================ MEMBER FUNCTIONS ===============================
// -----------------------------------------------------------------------------
// ChspsDomStringPool::ChspsDomStringPool
@@ -63,7 +29,8 @@
// might leave.
// -----------------------------------------------------------------------------
//
-ChspsDomStringPool::ChspsDomStringPool()
+ChspsDomStringPool::ChspsDomStringPool( const TBool aAllowDuplicates ) :
+ iAllowDuplicates( aAllowDuplicates )
{
}
@@ -81,9 +48,10 @@
// Two-phased constructor.
// -----------------------------------------------------------------------------
//
-ChspsDomStringPool* ChspsDomStringPool::NewL()
+ChspsDomStringPool* ChspsDomStringPool::NewL( const TBool aAllowDuplicates )
{
- ChspsDomStringPool* self = new( ELeave ) ChspsDomStringPool;
+ ChspsDomStringPool* self =
+ new( ELeave ) ChspsDomStringPool( aAllowDuplicates );
CleanupStack::PushL( self );
self->ConstructL();
@@ -98,9 +66,10 @@
// Two-phased stream constructor.
// -----------------------------------------------------------------------------
//
-ChspsDomStringPool* ChspsDomStringPool::NewL( RReadStream& aStream )
+ChspsDomStringPool* ChspsDomStringPool::NewL( RReadStream& aStream,
+ const TBool aAllowDuplicates )
{
- ChspsDomStringPool* self = new( ELeave ) ChspsDomStringPool;
+ ChspsDomStringPool* self = new( ELeave ) ChspsDomStringPool( aAllowDuplicates );
CleanupStack::PushL( self );
aStream >> *self;
CleanupStack::Pop(self);
@@ -116,6 +85,7 @@
ChspsDomStringPool::~ChspsDomStringPool()
{
iStringPool.ResetAndDestroy();
+ iStringPoolOptimizer.Close();
}
// -----------------------------------------------------------------------------
@@ -123,15 +93,23 @@
// -----------------------------------------------------------------------------
//
ChspsDomStringPool* ChspsDomStringPool::CloneL()
- {
- ChspsDomStringPool* clone = ChspsDomStringPool::NewL();
+ {
+ ChspsDomStringPool* clone = NULL;
+ if( iAllowDuplicates )
+ {
+ clone = ChspsDomStringPool::NewL( ETrue );
+ }
+ else
+ {
+ clone = ChspsDomStringPool::NewL( EFalse );
+ }
CleanupStack::PushL( clone );
TInt count( iStringPool.Count() );
- for ( TInt i=0; i<count; i++ )
- {
+ for ( TInt i = 0; i < count; i++ )
+ {
HBufC8* tmp = iStringPool[i]->Des().AllocLC();
- clone->iStringPool.AppendL( tmp );
+ clone->DoAddStringL( tmp );
CleanupStack::Pop( tmp );
}
CleanupStack::Pop( clone );
@@ -139,26 +117,94 @@
}
// -----------------------------------------------------------------------------
-// ChspsDomNode::AddStringL
+// ChspsDomStringPool::Reset
+// -----------------------------------------------------------------------------
+//
+void ChspsDomStringPool::Reset()
+ {
+ if( iStringPool.Count() > 0 )
+ {
+ iStringPool.ResetAndDestroy();
+ }
+
+ if( iStringPoolOptimizer.Count() > 0 )
+ {
+ iStringPoolOptimizer.Reset();
+ }
+ }
+
+// -----------------------------------------------------------------------------
+// ChspsDomStringPool::AddStringL
// -----------------------------------------------------------------------------
//
EXPORT_C TInt ChspsDomStringPool::AddStringL( const TDesC8& aString )
- {
- return AddToStringPoolL( aString, iStringPool );
+ {
+ TInt index = iStringPoolOptimizer.GetIndex( aString );
+
+ if( index == KErrNotFound )
+ {
+ HBufC8* string = aString.AllocLC();
+ index = DoAddStringL( string );
+ CleanupStack::Pop( string );
+ }
+
+ return index;
}
// -----------------------------------------------------------------------------
-// ChspsDomNode::String
+// ChspsDomStringPool::AddStringL
+// -----------------------------------------------------------------------------
+//
+TInt ChspsDomStringPool::AddStringL( HBufC8* aString )
+ {
+ if( !aString )
+ {
+ User::Leave( KErrArgument );
+ }
+
+ TInt index = iStringPoolOptimizer.GetIndex( *aString );
+
+ if( index == KErrNotFound )
+ {
+ index = DoAddStringL( aString );
+ }
+ else
+ {
+ delete aString;
+ }
+
+ return index;
+ }
+
+// -----------------------------------------------------------------------------
+// ChspsDomStringPool::AddStringL
+// -----------------------------------------------------------------------------
+//
+void ChspsDomStringPool::AddAllL( ChspsDomStringPool& aStringPool )
+ {
+ const TInt count = aStringPool.Count();
+ for( TInt i = 0; i < count; i++ )
+ {
+ AddStringL( aStringPool.String( i ) );
+ }
+ }
+
+// -----------------------------------------------------------------------------
+// ChspsDomStringPool::String
// -----------------------------------------------------------------------------
//
const TDesC8& ChspsDomStringPool::String( const TInt aStringRef )
- {
- if ( aStringRef < iStringPool.Count() )
+ {
+ if( aStringRef >= 0 && aStringRef < iStringPool.Count() )
+ {
return (*iStringPool[ aStringRef ]);
+ }
else
+ {
return KNullDesC8;
+ }
}
-
+
// -----------------------------------------------------------------------------
// ChspsDomStringPool::Size
// -----------------------------------------------------------------------------
@@ -179,6 +225,15 @@
}
// -----------------------------------------------------------------------------
+// ChspsDomStringPool::Count
+// -----------------------------------------------------------------------------
+//
+TInt ChspsDomStringPool::Count() const
+ {
+ return iStringPool.Count();
+ }
+
+// -----------------------------------------------------------------------------
// ChspsDomStringPool::ExternalizeL
// -----------------------------------------------------------------------------
//
@@ -201,15 +256,39 @@
void ChspsDomStringPool::InternalizeL( RReadStream& aStream )
{
TInt len(0);
- TInt16 count ( aStream.ReadInt16L() );
-
+ TInt16 count ( aStream.ReadInt16L() );
+
for ( TInt i=0; i<count; i++ )
{
len = aStream.ReadInt16L();
HBufC8* tmp = HBufC8::NewLC( aStream, len );
- iStringPool.AppendL( tmp );
+ AddStringL( tmp ); // OWNERSHIP TRANSFERRED!
CleanupStack::Pop( tmp );
}
-
}
+
+// -----------------------------------------------------------------------------
+// ChspsDomStringPool::DoAddStringL
+// -----------------------------------------------------------------------------
+//
+TInt ChspsDomStringPool::DoAddStringL( HBufC8* aNewString )
+ {
+ if( !aNewString )
+ {
+ User::Leave( KErrArgument );
+ }
+
+ TInt index = iStringPool.Count();
+
+ if( !iAllowDuplicates )
+ {
+ ThspsDomStringPoolOptimizerEntry tmp( index, *aNewString );
+ iStringPoolOptimizer.AddEntryL( tmp );
+ }
+
+ iStringPool.AppendL( aNewString );
+
+ return index;
+ }
+
// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenpluginsrv/hspsdom/src/hspsdomstringpooloptimizer.cpp Wed May 12 13:36:47 2010 +0300
@@ -0,0 +1,197 @@
+/*
+* Copyright (c) 2005,2006 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: Optimizer module for ChspsDomStringPool.
+*
+*/
+
+
+
+// INCLUDE FILES
+#include "hspsdomstringpooloptimizer.h"
+
+const TInt KMaxEstimateThreshold = 2;
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// ThspsDomStringPoolOptimizerEntry::ThspsDomStringPoolOptimizerEntry
+// -----------------------------------------------------------------------------
+//
+ThspsDomStringPoolOptimizerEntry::ThspsDomStringPoolOptimizerEntry( TInt aIndex,
+ const TDesC8& aString) :
+ iIndex( aIndex ),
+ iString( aString )
+ {
+ }
+
+// -----------------------------------------------------------------------------
+// ThspsDomStringPoolOptimizer::AddEntryL
+// -----------------------------------------------------------------------------
+//
+void ThspsDomStringPoolOptimizer::AddEntryL( ThspsDomStringPoolOptimizerEntry& aEntry )
+ {
+ TBool positionFound = EFalse;
+
+ if( iEntries.Count() > 0 )
+ {
+ const TInt estimate = FindInsertionIndexEstimate(
+ aEntry.iString,
+ 0,
+ iEntries.Count() - 1 );
+
+ if( estimate != KErrNotFound )
+ {
+ for( TInt i = estimate; i < iEntries.Count(); i++ )
+ {
+ if( aEntry.iString.Compare( iEntries[i].iString ) < 0 )
+ {
+ positionFound = ETrue;
+ iEntries.InsertL( aEntry, i );
+ break;
+ }
+ }
+ }
+ }
+
+ if( !positionFound )
+ {
+ iEntries.AppendL( aEntry );
+ }
+ }
+
+// -----------------------------------------------------------------------------
+// ThspsDomStringPoolOptimizer::ThspsDomStringPoolOptimizerGetIndex
+// -----------------------------------------------------------------------------
+//
+TInt ThspsDomStringPoolOptimizer::GetIndex( const TDesC8& aString )
+ {
+ if( iEntries.Count() == 0 )
+ {
+ return KErrNotFound;
+ }
+
+ TInt index = FindEntry( aString, 0, iEntries.Count() - 1 );
+ if( index >= 0 && index < iEntries.Count() )
+ {
+ return iEntries[index].iIndex;
+ }
+ else
+ {
+ // Error code.
+ return index;
+ }
+ }
+
+// -----------------------------------------------------------------------------
+// ThspsDomStringPoolOptimizer::Close
+// -----------------------------------------------------------------------------
+//
+void ThspsDomStringPoolOptimizer::Close()
+ {
+ iEntries.Close();
+ }
+
+// -----------------------------------------------------------------------------
+// ThspsDomStringPoolOptimizer::Count
+// -----------------------------------------------------------------------------
+//
+TInt ThspsDomStringPoolOptimizer::Count()
+ {
+ return iEntries.Count();
+ }
+
+// -----------------------------------------------------------------------------
+// ThspsDomStringPoolOptimizer::Entry
+// -----------------------------------------------------------------------------
+//
+ThspsDomStringPoolOptimizerEntry& ThspsDomStringPoolOptimizer::Entry(
+ const TInt aIndex )
+ {
+ return iEntries[ aIndex ];
+ }
+
+// -----------------------------------------------------------------------------
+// ThspsDomStringPoolOptimizer::Reset
+// -----------------------------------------------------------------------------
+//
+void ThspsDomStringPoolOptimizer::Reset()
+ {
+ iEntries.Reset();
+ }
+
+// -----------------------------------------------------------------------------
+// ThspsDomStringPoolOptimizer::FindEntry
+// -----------------------------------------------------------------------------
+//
+TInt ThspsDomStringPoolOptimizer::FindEntry( const TDesC8& aString,
+ const TInt aLeft,
+ const TInt aRight )
+ {
+ if( aLeft > aRight )
+ {
+ return KErrNotFound;
+ }
+
+ const TUint middle = ( aLeft + aRight ) >> 1; // >> 1 means "divided by two".
+ ThspsDomStringPoolOptimizerEntry& entryAtMiddle = iEntries[ middle ];
+ const TInt comparisonResult = aString.Compare( entryAtMiddle.iString );
+
+ if( comparisonResult > 0 )
+ {
+ return FindEntry( aString, middle + 1, aRight);
+ }
+ else if( comparisonResult < 0 )
+ {
+ return FindEntry( aString, aLeft, middle - 1 );
+ }
+ else
+ {
+ return middle;
+ }
+ }
+
+// -----------------------------------------------------------------------------
+// ThspsDomStringPoolOptimizer::FindEntry
+// -----------------------------------------------------------------------------
+//
+TInt ThspsDomStringPoolOptimizer::FindInsertionIndexEstimate( const TDesC8& aString,
+ const TInt aLeft,
+ const TInt aRight )
+ {
+ if( ( aRight - aLeft ) <= KMaxEstimateThreshold )
+ {
+ return aLeft;
+ }
+
+ const TUint middle = ( aLeft + aRight ) >> 1;
+
+ ThspsDomStringPoolOptimizerEntry& entryAtMiddle = iEntries[ middle ];
+ const TInt comparisonResult = aString.Compare( entryAtMiddle.iString );
+
+ if( comparisonResult > 0 )
+ {
+ return FindInsertionIndexEstimate( aString, middle, aRight);
+ }
+ else if( comparisonResult < 0 )
+ {
+ return FindInsertionIndexEstimate( aString, aLeft, middle );
+ }
+ else
+ {
+ // Should not go here. There should be only one of a kind in the list.
+ return KErrNotFound;
+ }
+ }
+
+// End of File
--- a/homescreenpluginsrv/hspsmanager/bwins/hspsclientsessionu.def Wed Mar 03 15:38:34 2010 +0200
+++ b/homescreenpluginsrv/hspsmanager/bwins/hspsclientsessionu.def Wed May 12 13:36:47 2010 +0300
@@ -1,28 +1,28 @@
EXPORTS
- ?GetListHeaders@RhspsClientSession@@IAEHAAVTDes8@@ABVTDesC8@@0@Z @ 1 NONAME ; int RhspsClientSession::GetListHeaders(class TDes8 &, class TDesC8 const &, class TDes8 &)
- ?CancelRequest@RhspsClientSession@@IAEXHAAVTDes8@@H@Z @ 2 NONAME ; void RhspsClientSession::CancelRequest(int, class TDes8 &, int)
- ?SetConfState@RhspsClientSession@@IAEHAAVTDes8@@ABUThspsParamSetConfState@@@Z @ 3 NONAME ; int RhspsClientSession::SetConfState(class TDes8 &, struct ThspsParamSetConfState const &)
- ?CopyResourceFiles@RhspsClientSession@@IAEHAAVTDes8@@AAVTDesC16@@1@Z @ 4 NONAME ; int RhspsClientSession::CopyResourceFiles(class TDes8 &, class TDesC16 &, class TDesC16 &)
- ?Connect@RhspsClientSession@@IAEHXZ @ 5 NONAME ; int RhspsClientSession::Connect(void)
- ?GetODT@RhspsClientSession@@IAEHAAVTDes8@@ABUThspsConfiguration@@ABVTDesC8@@AAVTDes16@@@Z @ 6 NONAME ; int RhspsClientSession::GetODT(class TDes8 &, struct ThspsConfiguration const &, class TDesC8 const &, class TDes16 &)
+ ?CancelRequest@RhspsClientSession@@IAEXHAAVTDes8@@H@Z @ 1 NONAME ; void RhspsClientSession::CancelRequest(int, class TDes8 &, int)
+ ?SetConfState@RhspsClientSession@@IAEHAAVTDes8@@ABUThspsParamSetConfState@@@Z @ 2 NONAME ; int RhspsClientSession::SetConfState(class TDes8 &, struct ThspsParamSetConfState const &)
+ ?CopyResourceFiles@RhspsClientSession@@IAEHAAVTDes8@@AAVTDesC16@@1@Z @ 3 NONAME ; int RhspsClientSession::CopyResourceFiles(class TDes8 &, class TDesC16 &, class TDesC16 &)
+ ?Connect@RhspsClientSession@@IAEHXZ @ 4 NONAME ; int RhspsClientSession::Connect(void)
+ ?GetODT@RhspsClientSession@@IAEHAAVTDes8@@ABUThspsConfiguration@@ABVTDesC8@@AAVTDes16@@@Z @ 5 NONAME ; int RhspsClientSession::GetODT(class TDes8 &, struct ThspsConfiguration const &, class TDesC8 const &, class TDes16 &)
+ ?GetListHeaders@RhspsClientSession@@IAEHAAVTDes8@@ABVTDesC8@@H0@Z @ 6 NONAME ; int RhspsClientSession::GetListHeaders(class TDes8 &, class TDesC8 const &, int, class TDes8 &)
?MovePlugins@RhspsClientSession@@IAEHAAVTDes8@@ABUThpsParamMovePlugins@@@Z @ 7 NONAME ; int RhspsClientSession::MovePlugins(class TDes8 &, struct ThpsParamMovePlugins const &)
?SetActiveTheme@RhspsClientSession@@IAEHAAVTDes8@@ABVTDesC8@@0@Z @ 8 NONAME ; int RhspsClientSession::SetActiveTheme(class TDes8 &, class TDesC8 const &, class TDes8 &)
?SetActivePlugin@RhspsClientSession@@IAEHAAVTDes8@@ABUThpsParamSetActivePlugin@@@Z @ 9 NONAME ; int RhspsClientSession::SetActivePlugin(class TDes8 &, struct ThpsParamSetActivePlugin const &)
- ?ReplacePlugin@RhspsClientSession@@IAEHAAVTDes8@@ABUThspsParamReplacePlugin@@@Z @ 10 NONAME ; int RhspsClientSession::ReplacePlugin(class TDes8 &, struct ThspsParamReplacePlugin const &)
- ?InstallNextPhase@RhspsClientSession@@IAEXAAVTDes8@@0AAVTRequestStatus@@@Z @ 11 NONAME ; void RhspsClientSession::InstallNextPhase(class TDes8 &, class TDes8 &, class TRequestStatus &)
- ?SetPluginSettings@RhspsClientSession@@IAEHAAVTDes8@@0UThspsParamSetPluginSettings@@0@Z @ 12 NONAME ; int RhspsClientSession::SetPluginSettings(class TDes8 &, class TDes8 &, struct ThspsParamSetPluginSettings, class TDes8 &)
- ?RemovePlugin@RhspsClientSession@@IAEHAAVTDes8@@ABUThpsParamRemovePlugin@@@Z @ 13 NONAME ; int RhspsClientSession::RemovePlugin(class TDes8 &, struct ThpsParamRemovePlugin const &)
- ?GetNextHeader@RhspsClientSession@@IAEXAAVTDes8@@0AAVTRequestStatus@@@Z @ 14 NONAME ; void RhspsClientSession::GetNextHeader(class TDes8 &, class TDes8 &, class TRequestStatus &)
- ?RemoveTheme@RhspsClientSession@@IAEHAAVTDes8@@ABVTDesC8@@@Z @ 15 NONAME ; int RhspsClientSession::RemoveTheme(class TDes8 &, class TDesC8 const &)
- ?AddPlugin@RhspsClientSession@@IAEHAAVTDes8@@ABUThpsParamAddPlugin@@AAH@Z @ 16 NONAME ; int RhspsClientSession::AddPlugin(class TDes8 &, struct ThpsParamAddPlugin const &, int &)
- ?Close@RhspsClientSession@@IAEXXZ @ 17 NONAME ; void RhspsClientSession::Close(void)
- ?GetPluginOdt@RhspsClientSession@@IAEHAAVTDes8@@ABUThspsParamGetPluginOdt@@AAVTDes16@@@Z @ 18 NONAME ; int RhspsClientSession::GetPluginOdt(class TDes8 &, struct ThspsParamGetPluginOdt const &, class TDes16 &)
- ?RestoreDefault@RhspsClientSession@@IAEHAAVTDes8@@ABVTDesC8@@0@Z @ 19 NONAME ; int RhspsClientSession::RestoreDefault(class TDes8 &, class TDesC8 const &, class TDes8 &)
- ?GetNextHeader@RhspsClientSession@@IAEHAAVTDes8@@0@Z @ 20 NONAME ; int RhspsClientSession::GetNextHeader(class TDes8 &, class TDes8 &)
- ?RestoreActiveAppConf@RhspsClientSession@@IAEHAAVTDes8@@ABUThspsParamRestoreActiveAppConf@@@Z @ 21 NONAME ; int RhspsClientSession::RestoreActiveAppConf(class TDes8 &, struct ThspsParamRestoreActiveAppConf const &)
- ?InstallTheme@RhspsClientSession@@IAEHAAVTDes8@@ABVTDesC16@@0@Z @ 22 NONAME ; int RhspsClientSession::InstallTheme(class TDes8 &, class TDesC16 const &, class TDes8 &)
- ?AccessResourceFile@RhspsClientSession@@IAEHAAVTDes8@@ABUThspsConfiguration@@ABVTDesC16@@AAH@Z @ 23 NONAME ; int RhspsClientSession::AccessResourceFile(class TDes8 &, struct ThspsConfiguration const &, class TDesC16 const &, int &)
- ?GetODTUpdate@RhspsClientSession@@IAEXAAVTDes8@@00AAVTRequestStatus@@@Z @ 24 NONAME ; void RhspsClientSession::GetODTUpdate(class TDes8 &, class TDes8 &, class TDes8 &, class TRequestStatus &)
- ?ReinstallConf@RhspsClientSession@@IAEHAAVTDes8@@ABUThspsParamReinstallConf@@@Z @ 25 NONAME ; int RhspsClientSession::ReinstallConf(class TDes8 &, struct ThspsParamReinstallConf const &)
- ?RestoreConfigurations@RhspsClientSession@@IAEHAAVTDes8@@ABUThspsParamRestoreConfigurations@@@Z @ 26 NONAME ; int RhspsClientSession::RestoreConfigurations(class TDes8 &, struct ThspsParamRestoreConfigurations const &)
+ ?RestoreConfigurations@RhspsClientSession@@IAEHAAVTDes8@@ABUThspsParamRestoreConfigurations@@@Z @ 10 NONAME ; int RhspsClientSession::RestoreConfigurations(class TDes8 &, struct ThspsParamRestoreConfigurations const &)
+ ?ReplacePlugin@RhspsClientSession@@IAEHAAVTDes8@@ABUThspsParamReplacePlugin@@@Z @ 11 NONAME ; int RhspsClientSession::ReplacePlugin(class TDes8 &, struct ThspsParamReplacePlugin const &)
+ ?InstallNextPhase@RhspsClientSession@@IAEXAAVTDes8@@0AAVTRequestStatus@@@Z @ 12 NONAME ; void RhspsClientSession::InstallNextPhase(class TDes8 &, class TDes8 &, class TRequestStatus &)
+ ?SetPluginSettings@RhspsClientSession@@IAEHAAVTDes8@@0UThspsParamSetPluginSettings@@0@Z @ 13 NONAME ; int RhspsClientSession::SetPluginSettings(class TDes8 &, class TDes8 &, struct ThspsParamSetPluginSettings, class TDes8 &)
+ ?RemovePlugin@RhspsClientSession@@IAEHAAVTDes8@@ABUThpsParamRemovePlugin@@@Z @ 14 NONAME ; int RhspsClientSession::RemovePlugin(class TDes8 &, struct ThpsParamRemovePlugin const &)
+ ?GetNextHeader@RhspsClientSession@@IAEXAAVTDes8@@0AAVTRequestStatus@@@Z @ 15 NONAME ; void RhspsClientSession::GetNextHeader(class TDes8 &, class TDes8 &, class TRequestStatus &)
+ ?RemoveTheme@RhspsClientSession@@IAEHAAVTDes8@@ABVTDesC8@@@Z @ 16 NONAME ; int RhspsClientSession::RemoveTheme(class TDes8 &, class TDesC8 const &)
+ ?AddPlugin@RhspsClientSession@@IAEHAAVTDes8@@ABUThpsParamAddPlugin@@AAH@Z @ 17 NONAME ; int RhspsClientSession::AddPlugin(class TDes8 &, struct ThpsParamAddPlugin const &, int &)
+ ?Close@RhspsClientSession@@IAEXXZ @ 18 NONAME ; void RhspsClientSession::Close(void)
+ ?GetPluginOdt@RhspsClientSession@@IAEHAAVTDes8@@ABUThspsParamGetPluginOdt@@AAVTDes16@@@Z @ 19 NONAME ; int RhspsClientSession::GetPluginOdt(class TDes8 &, struct ThspsParamGetPluginOdt const &, class TDes16 &)
+ ?RestoreDefault@RhspsClientSession@@IAEHAAVTDes8@@ABVTDesC8@@0@Z @ 20 NONAME ; int RhspsClientSession::RestoreDefault(class TDes8 &, class TDesC8 const &, class TDes8 &)
+ ?GetNextHeader@RhspsClientSession@@IAEHAAVTDes8@@0@Z @ 21 NONAME ; int RhspsClientSession::GetNextHeader(class TDes8 &, class TDes8 &)
+ ?RestoreActiveAppConf@RhspsClientSession@@IAEHAAVTDes8@@ABUThspsParamRestoreActiveAppConf@@@Z @ 22 NONAME ; int RhspsClientSession::RestoreActiveAppConf(class TDes8 &, struct ThspsParamRestoreActiveAppConf const &)
+ ?InstallTheme@RhspsClientSession@@IAEHAAVTDes8@@ABVTDesC16@@0@Z @ 23 NONAME ; int RhspsClientSession::InstallTheme(class TDes8 &, class TDesC16 const &, class TDes8 &)
+ ?AccessResourceFile@RhspsClientSession@@IAEHAAVTDes8@@ABUThspsConfiguration@@ABVTDesC16@@AAH@Z @ 24 NONAME ; int RhspsClientSession::AccessResourceFile(class TDes8 &, struct ThspsConfiguration const &, class TDesC16 const &, int &)
+ ?GetODTUpdate@RhspsClientSession@@IAEXAAVTDes8@@00AAVTRequestStatus@@@Z @ 25 NONAME ; void RhspsClientSession::GetODTUpdate(class TDes8 &, class TDes8 &, class TDes8 &, class TRequestStatus &)
+ ?ReinstallConf@RhspsClientSession@@IAEHAAVTDes8@@ABUThspsParamReinstallConf@@@Z @ 26 NONAME ; int RhspsClientSession::ReinstallConf(class TDes8 &, struct ThspsParamReinstallConf const &)
--- a/homescreenpluginsrv/hspsmanager/bwins/hspsclientu.def Wed Mar 03 15:38:34 2010 +0200
+++ b/homescreenpluginsrv/hspsmanager/bwins/hspsclientu.def Wed May 12 13:36:47 2010 +0300
@@ -8,9 +8,9 @@
?GethspsResult@ChspsClient@@QAEXAAVChspsResult@@@Z @ 7 NONAME ; void ChspsClient::GethspsResult(class ChspsResult &)
?NewLC@ChspsClient@@SAPAV1@AAVMhspsThemeManagementServiceObserver@@@Z @ 8 NONAME ; class ChspsClient * ChspsClient::NewLC(class MhspsThemeManagementServiceObserver &)
?hspsInstallTheme@ChspsClient@@UAE?AW4ThspsServiceCompletedMessage@@ABVTDesC16@@AAVChspsODT@@@Z @ 9 NONAME ; enum ThspsServiceCompletedMessage ChspsClient::hspsInstallTheme(class TDesC16 const &, class ChspsODT &)
- ?hspsGetHeaders@ChspsClient@@QAEHABVChspsODT@@AAV?$CArrayPtrFlat@VChspsODT@@@@@Z @ 10 NONAME ; int ChspsClient::hspsGetHeaders(class ChspsODT const &, class CArrayPtrFlat<class ChspsODT> &)
- ?hspsReinstallConf@ChspsClient@@QAE?AW4ThspsServiceCompletedMessage@@HH@Z @ 11 NONAME ; enum ThspsServiceCompletedMessage ChspsClient::hspsReinstallConf(int, int)
- ?hspsRestoreDefault@ChspsClient@@UAE?AW4ThspsServiceCompletedMessage@@ABVChspsODT@@AAV3@@Z @ 12 NONAME ; enum ThspsServiceCompletedMessage ChspsClient::hspsRestoreDefault(class ChspsODT const &, class ChspsODT &)
+ ?hspsReinstallConf@ChspsClient@@QAE?AW4ThspsServiceCompletedMessage@@HH@Z @ 10 NONAME ; enum ThspsServiceCompletedMessage ChspsClient::hspsReinstallConf(int, int)
+ ?hspsRestoreDefault@ChspsClient@@UAE?AW4ThspsServiceCompletedMessage@@ABVChspsODT@@AAV3@@Z @ 11 NONAME ; enum ThspsServiceCompletedMessage ChspsClient::hspsRestoreDefault(class ChspsODT const &, class ChspsODT &)
+ ?hspsRestoreConfigurations@ChspsClient@@QAE?AW4ThspsServiceCompletedMessage@@HH@Z @ 12 NONAME ; enum ThspsServiceCompletedMessage ChspsClient::hspsRestoreConfigurations(int, int)
?hspsReplacePlugin@ChspsClient@@UAE?AW4ThspsServiceCompletedMessage@@HHH@Z @ 13 NONAME ; enum ThspsServiceCompletedMessage ChspsClient::hspsReplacePlugin(int, int, int)
?hspsSetActiveTheme@ChspsClient@@UAE?AW4ThspsServiceCompletedMessage@@ABVChspsODT@@AAV3@@Z @ 14 NONAME ; enum ThspsServiceCompletedMessage ChspsClient::hspsSetActiveTheme(class ChspsODT const &, class ChspsODT &)
?hspsPluginUpdateL@ChspsClient@@UAE?AW4ThspsServiceCompletedMessage@@ABVChspsODT@@@Z @ 15 NONAME ; enum ThspsServiceCompletedMessage ChspsClient::hspsPluginUpdateL(class ChspsODT const &)
@@ -22,11 +22,11 @@
?hspsSetActivePlugin@ChspsClient@@UAE?AW4ThspsServiceCompletedMessage@@HH@Z @ 21 NONAME ; enum ThspsServiceCompletedMessage ChspsClient::hspsSetActivePlugin(int, int)
?hspsCancelInstallTheme@ChspsClient@@UAE?AW4ThspsServiceCompletedMessage@@XZ @ 22 NONAME ; enum ThspsServiceCompletedMessage ChspsClient::hspsCancelInstallTheme(void)
?hspsGetNextHeader@ChspsClient@@UAE?AW4ThspsServiceCompletedMessage@@XZ @ 23 NONAME ; enum ThspsServiceCompletedMessage ChspsClient::hspsGetNextHeader(void)
- ?hspsSetActiveTheme@ChspsClient@@UAE?AW4ThspsServiceCompletedMessage@@ABVTDesC8@@AAVTDes8@@@Z @ 24 NONAME ; enum ThspsServiceCompletedMessage ChspsClient::hspsSetActiveTheme(class TDesC8 const &, class TDes8 &)
- ?hspsGetPluginOdtL@ChspsClient@@QAE?AW4ThspsServiceCompletedMessage@@HHPAVChspsODT@@@Z @ 25 NONAME ; enum ThspsServiceCompletedMessage ChspsClient::hspsGetPluginOdtL(int, int, class ChspsODT *)
- ?hspsRestoreActiveAppConf@ChspsClient@@UAE?AW4ThspsServiceCompletedMessage@@HH@Z @ 26 NONAME ; enum ThspsServiceCompletedMessage ChspsClient::hspsRestoreActiveAppConf(int, int)
- ?hspsMovePluginsL@ChspsClient@@UAE?AW4ThspsServiceCompletedMessage@@HHABV?$CArrayFixFlat@H@@@Z @ 27 NONAME ; enum ThspsServiceCompletedMessage ChspsClient::hspsMovePluginsL(int, int, class CArrayFixFlat<int> const &)
- ?hspsGetListHeaders@ChspsClient@@UAE?AW4ThspsServiceCompletedMessage@@ABVChspsODT@@AAV?$CArrayPtrFlat@VChspsODT@@@@@Z @ 28 NONAME ; enum ThspsServiceCompletedMessage ChspsClient::hspsGetListHeaders(class ChspsODT const &, class CArrayPtrFlat<class ChspsODT> &)
- ?hspsRemoveThemeL@ChspsClient@@UAE?AW4ThspsServiceCompletedMessage@@ABVChspsODT@@@Z @ 29 NONAME ; enum ThspsServiceCompletedMessage ChspsClient::hspsRemoveThemeL(class ChspsODT const &)
- ?hspsRestoreConfigurations@ChspsClient@@QAE?AW4ThspsServiceCompletedMessage@@HH@Z @ 30 NONAME ; enum ThspsServiceCompletedMessage ChspsClient::hspsRestoreConfigurations(int, int)
+ ?hspsGetListHeaders@ChspsClient@@UAE?AW4ThspsServiceCompletedMessage@@ABVChspsODT@@HAAV?$CArrayPtrFlat@VChspsODT@@@@@Z @ 24 NONAME ; enum ThspsServiceCompletedMessage ChspsClient::hspsGetListHeaders(class ChspsODT const &, int, class CArrayPtrFlat<class ChspsODT> &)
+ ?hspsSetActiveTheme@ChspsClient@@UAE?AW4ThspsServiceCompletedMessage@@ABVTDesC8@@AAVTDes8@@@Z @ 25 NONAME ; enum ThspsServiceCompletedMessage ChspsClient::hspsSetActiveTheme(class TDesC8 const &, class TDes8 &)
+ ?hspsGetPluginOdtL@ChspsClient@@QAE?AW4ThspsServiceCompletedMessage@@HHPAVChspsODT@@@Z @ 26 NONAME ; enum ThspsServiceCompletedMessage ChspsClient::hspsGetPluginOdtL(int, int, class ChspsODT *)
+ ?hspsRestoreActiveAppConf@ChspsClient@@UAE?AW4ThspsServiceCompletedMessage@@HH@Z @ 27 NONAME ; enum ThspsServiceCompletedMessage ChspsClient::hspsRestoreActiveAppConf(int, int)
+ ?hspsMovePluginsL@ChspsClient@@UAE?AW4ThspsServiceCompletedMessage@@HHABV?$CArrayFixFlat@H@@@Z @ 28 NONAME ; enum ThspsServiceCompletedMessage ChspsClient::hspsMovePluginsL(int, int, class CArrayFixFlat<int> const &)
+ ?hspsGetHeaders@ChspsClient@@QAEHABVChspsODT@@HAAV?$CArrayPtrFlat@VChspsODT@@@@@Z @ 29 NONAME ; int ChspsClient::hspsGetHeaders(class ChspsODT const &, int, class CArrayPtrFlat<class ChspsODT> &)
+ ?hspsRemoveThemeL@ChspsClient@@UAE?AW4ThspsServiceCompletedMessage@@ABVChspsODT@@@Z @ 30 NONAME ; enum ThspsServiceCompletedMessage ChspsClient::hspsRemoveThemeL(class ChspsODT const &)
--- a/homescreenpluginsrv/hspsmanager/client/hspsclient.cpp Wed Mar 03 15:38:34 2010 +0200
+++ b/homescreenpluginsrv/hspsmanager/client/hspsclient.cpp Wed May 12 13:36:47 2010 +0300
@@ -236,8 +236,10 @@
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
-EXPORT_C ThspsServiceCompletedMessage ChspsClient::hspsGetListHeaders( const ChspsODT& aSearchMask,
- CArrayPtrFlat<ChspsODT>& aHeaderList )
+EXPORT_C ThspsServiceCompletedMessage ChspsClient::hspsGetListHeaders(
+ const ChspsODT& aSearchMask,
+ const TBool aCopyLogos,
+ CArrayPtrFlat<ChspsODT>& aHeaderList )
{
ThspsServiceCompletedMessage ret = EhspsServiceRequestError;
TBuf8<KMaxHeaderDataLength8> headerData;
@@ -263,8 +265,11 @@
// cancel previous subscription first
hspsCancelGetListHeaders();
}
- ret = (ThspsServiceCompletedMessage)iSession.GetListHeaders(iResultData,
- iSearchMaskData->Des(),headerData );
+ ret = (ThspsServiceCompletedMessage)iSession.GetListHeaders(
+ iResultData,
+ iSearchMaskData->Des(),
+ aCopyLogos,
+ headerData );
#ifdef HSPS_LOG_ACTIVE
if( iLogBus )
@@ -534,8 +539,10 @@
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
-EXPORT_C TInt ChspsClient::hspsGetHeaders( const ChspsODT& aSearchMask,
- CArrayPtrFlat<ChspsODT>& aHeaderList )
+EXPORT_C TInt ChspsClient::hspsGetHeaders(
+ const ChspsODT& aSearchMask,
+ const TBool aCopyLogos,
+ CArrayPtrFlat<ChspsODT>& aHeaderList )
{
iHeaderList = &aHeaderList;
// Convert search mask ODT to binary stream
@@ -553,6 +560,7 @@
( ThspsServiceCompletedMessage )iSession.GetListHeaders(
iResultData,
iSearchMaskData->Des(),
+ aCopyLogos,
iHeaderData );
if ( ret == EhspsGetListHeadersSuccess )
--- a/homescreenpluginsrv/hspsmanager/client/hspsclientsession.cpp Wed Mar 03 15:38:34 2010 +0200
+++ b/homescreenpluginsrv/hspsmanager/client/hspsclientsession.cpp Wed May 12 13:36:47 2010 +0300
@@ -153,11 +153,13 @@
// -----------------------------------------------------------------------------
//
EXPORT_C TInt RhspsClientSession::GetListHeaders(TDes8& aResultData, const TDesC8& aSearchMaskData,
- TDes8& aHeaderData)
+ const TBool aCopyLogos, TDes8& aHeaderData)
{
aHeaderData.Zero();
aResultData.Zero();
- return SendReceive(EhspsGetListHeaders, TIpcArgs(&aResultData, &aSearchMaskData, &aHeaderData));
+ TPckg<TInt> intPkg( aCopyLogos );
+ return SendReceive( EhspsGetListHeaders,
+ TIpcArgs(&aResultData, &aSearchMaskData, &aHeaderData, &intPkg) );
}
// -----------------------------------------------------------------------------
--- a/homescreenpluginsrv/hspsmanager/eabi/hspsclientsessionu.def Wed Mar 03 15:38:34 2010 +0200
+++ b/homescreenpluginsrv/hspsmanager/eabi/hspsclientsessionu.def Wed May 12 13:36:47 2010 +0300
@@ -11,7 +11,7 @@
_ZN18RhspsClientSession13GetNextHeaderER5TDes8S1_R14TRequestStatus @ 10 NONAME
_ZN18RhspsClientSession13ReinstallConfER5TDes8RK23ThspsParamReinstallConf @ 11 NONAME
_ZN18RhspsClientSession13ReplacePluginER5TDes8RK23ThspsParamReplacePlugin @ 12 NONAME
- _ZN18RhspsClientSession14GetListHeadersER5TDes8RK6TDesC8S1_ @ 13 NONAME
+ _ZN18RhspsClientSession14GetListHeadersER5TDes8RK6TDesC8iS1_ @ 13 NONAME
_ZN18RhspsClientSession14RestoreDefaultER5TDes8RK6TDesC8S1_ @ 14 NONAME
_ZN18RhspsClientSession14SetActiveThemeER5TDes8RK6TDesC8S1_ @ 15 NONAME
_ZN18RhspsClientSession15SetActivePluginER5TDes8RK24ThpsParamSetActivePlugin @ 16 NONAME
@@ -20,9 +20,9 @@
_ZN18RhspsClientSession17SetPluginSettingsER5TDes8S1_27ThspsParamSetPluginSettingsS1_ @ 19 NONAME
_ZN18RhspsClientSession18AccessResourceFileER5TDes8RK18ThspsConfigurationRK7TDesC16Ri @ 20 NONAME
_ZN18RhspsClientSession20RestoreActiveAppConfER5TDes8RK30ThspsParamRestoreActiveAppConf @ 21 NONAME
- _ZN18RhspsClientSession5CloseEv @ 22 NONAME
- _ZN18RhspsClientSession6GetODTER5TDes8RK18ThspsConfigurationRK6TDesC8R6TDes16 @ 23 NONAME
- _ZN18RhspsClientSession7ConnectEv @ 24 NONAME
- _ZN18RhspsClientSession9AddPluginER5TDes8RK18ThpsParamAddPluginRi @ 25 NONAME
- _ZN18RhspsClientSession21RestoreConfigurationsER5TDes8RK31ThspsParamRestoreConfigurations @ 26 NONAME
+ _ZN18RhspsClientSession21RestoreConfigurationsER5TDes8RK31ThspsParamRestoreConfigurations @ 22 NONAME
+ _ZN18RhspsClientSession5CloseEv @ 23 NONAME
+ _ZN18RhspsClientSession6GetODTER5TDes8RK18ThspsConfigurationRK6TDesC8R6TDes16 @ 24 NONAME
+ _ZN18RhspsClientSession7ConnectEv @ 25 NONAME
+ _ZN18RhspsClientSession9AddPluginER5TDes8RK18ThpsParamAddPluginRi @ 26 NONAME
--- a/homescreenpluginsrv/hspsmanager/eabi/hspsclientu.def Wed Mar 03 15:38:34 2010 +0200
+++ b/homescreenpluginsrv/hspsmanager/eabi/hspsclientu.def Wed May 12 13:36:47 2010 +0300
@@ -1,7 +1,7 @@
EXPORTS
_ZN11ChspsClient13GethspsResultER11ChspsResult @ 1 NONAME
_ZN11ChspsClient13hspsAddPluginEiiiiRi @ 2 NONAME
- _ZN11ChspsClient14hspsGetHeadersERK8ChspsODTR13CArrayPtrFlatIS0_E @ 3 NONAME
+ _ZN11ChspsClient14hspsGetHeadersERK8ChspsODTiR13CArrayPtrFlatIS0_E @ 3 NONAME
_ZN11ChspsClient16hspsInstallThemeERK7TDesC16R5TDes8 @ 4 NONAME
_ZN11ChspsClient16hspsInstallThemeERK7TDesC16R8ChspsODT @ 5 NONAME
_ZN11ChspsClient16hspsMovePluginsLEiiRK13CArrayFixFlatIiE @ 6 NONAME
@@ -14,7 +14,7 @@
_ZN11ChspsClient17hspsReinstallConfEii @ 13 NONAME
_ZN11ChspsClient17hspsReplacePluginEiii @ 14 NONAME
_ZN11ChspsClient18hspsGetListHeadersERK6TDesC8R12CArrayPtrSegI6HBufC8E @ 15 NONAME
- _ZN11ChspsClient18hspsGetListHeadersERK8ChspsODTR13CArrayPtrFlatIS0_E @ 16 NONAME
+ _ZN11ChspsClient18hspsGetListHeadersERK8ChspsODTiR13CArrayPtrFlatIS0_E @ 16 NONAME
_ZN11ChspsClient18hspsRestoreDefaultERK8ChspsODTRS0_ @ 17 NONAME
_ZN11ChspsClient18hspsSetActiveThemeERK6TDesC8R5TDes8 @ 18 NONAME
_ZN11ChspsClient18hspsSetActiveThemeERK8ChspsODTRS0_ @ 19 NONAME
@@ -25,32 +25,32 @@
_ZN11ChspsClient22hspsCancelInstallThemeEv @ 24 NONAME
_ZN11ChspsClient24hspsCancelGetListHeadersEv @ 25 NONAME
_ZN11ChspsClient24hspsRestoreActiveAppConfEii @ 26 NONAME
- _ZN11ChspsClient4NewLER35MhspsThemeManagementServiceObserver @ 27 NONAME
- _ZN11ChspsClient5NewLCER35MhspsThemeManagementServiceObserver @ 28 NONAME
- _ZN11ChspsClient9SetLogBusEPv @ 29 NONAME
- _ZTI11ChspsClient @ 30 NONAME
- _ZTV11ChspsClient @ 31 NONAME
- _ZThn28_N11ChspsClient16hspsInstallThemeERK7TDesC16R5TDes8 @ 32 NONAME
- _ZThn28_N11ChspsClient16hspsInstallThemeERK7TDesC16R8ChspsODT @ 33 NONAME
- _ZThn28_N11ChspsClient21hspsInstallNextPhaseLER5TDes8 @ 34 NONAME
- _ZThn28_N11ChspsClient21hspsInstallNextPhaseLER8ChspsODT @ 35 NONAME
- _ZThn28_N11ChspsClient22hspsCancelInstallThemeEv @ 36 NONAME
- _ZThn32_N11ChspsClient13hspsAddPluginEiiiiRi @ 37 NONAME
- _ZThn32_N11ChspsClient16hspsMovePluginsLEiiRK13CArrayFixFlatIiE @ 38 NONAME
- _ZThn32_N11ChspsClient16hspsRemovePluginEii @ 39 NONAME
- _ZThn32_N11ChspsClient16hspsRemoveThemeLERK8ChspsODT @ 40 NONAME
- _ZThn32_N11ChspsClient16hspsSetConfStateEii23ThspsConfigurationState26ThspsConfStateChangeFilter @ 41 NONAME
- _ZThn32_N11ChspsClient17hspsGetNextHeaderEv @ 42 NONAME
- _ZThn32_N11ChspsClient17hspsPluginUpdateLERK8ChspsODT @ 43 NONAME
- _ZThn32_N11ChspsClient17hspsReplacePluginEiii @ 44 NONAME
- _ZThn32_N11ChspsClient18hspsGetListHeadersERK6TDesC8R12CArrayPtrSegI6HBufC8E @ 45 NONAME
- _ZThn32_N11ChspsClient18hspsGetListHeadersERK8ChspsODTR13CArrayPtrFlatIS0_E @ 46 NONAME
- _ZThn32_N11ChspsClient18hspsRestoreDefaultERK8ChspsODTRS0_ @ 47 NONAME
- _ZThn32_N11ChspsClient18hspsSetActiveThemeERK6TDesC8R5TDes8 @ 48 NONAME
- _ZThn32_N11ChspsClient18hspsSetActiveThemeERK8ChspsODTRS0_ @ 49 NONAME
- _ZThn32_N11ChspsClient19hspsSetActivePluginEii @ 50 NONAME
- _ZThn32_N11ChspsClient21hspsSetPluginSettingsERK8ChspsODTiR16ChspsDomDocumenti @ 51 NONAME
- _ZThn32_N11ChspsClient24hspsCancelGetListHeadersEv @ 52 NONAME
- _ZThn32_N11ChspsClient24hspsRestoreActiveAppConfEii @ 53 NONAME
- _ZN11ChspsClient25hspsRestoreConfigurationsEii @ 54 NONAME
+ _ZN11ChspsClient25hspsRestoreConfigurationsEii @ 27 NONAME
+ _ZN11ChspsClient4NewLER35MhspsThemeManagementServiceObserver @ 28 NONAME
+ _ZN11ChspsClient5NewLCER35MhspsThemeManagementServiceObserver @ 29 NONAME
+ _ZN11ChspsClient9SetLogBusEPv @ 30 NONAME
+ _ZTI11ChspsClient @ 31 NONAME
+ _ZTV11ChspsClient @ 32 NONAME
+ _ZThn28_N11ChspsClient16hspsInstallThemeERK7TDesC16R5TDes8 @ 33 NONAME
+ _ZThn28_N11ChspsClient16hspsInstallThemeERK7TDesC16R8ChspsODT @ 34 NONAME
+ _ZThn28_N11ChspsClient21hspsInstallNextPhaseLER5TDes8 @ 35 NONAME
+ _ZThn28_N11ChspsClient21hspsInstallNextPhaseLER8ChspsODT @ 36 NONAME
+ _ZThn28_N11ChspsClient22hspsCancelInstallThemeEv @ 37 NONAME
+ _ZThn32_N11ChspsClient13hspsAddPluginEiiiiRi @ 38 NONAME
+ _ZThn32_N11ChspsClient16hspsMovePluginsLEiiRK13CArrayFixFlatIiE @ 39 NONAME
+ _ZThn32_N11ChspsClient16hspsRemovePluginEii @ 40 NONAME
+ _ZThn32_N11ChspsClient16hspsRemoveThemeLERK8ChspsODT @ 41 NONAME
+ _ZThn32_N11ChspsClient16hspsSetConfStateEii23ThspsConfigurationState26ThspsConfStateChangeFilter @ 42 NONAME
+ _ZThn32_N11ChspsClient17hspsGetNextHeaderEv @ 43 NONAME
+ _ZThn32_N11ChspsClient17hspsPluginUpdateLERK8ChspsODT @ 44 NONAME
+ _ZThn32_N11ChspsClient17hspsReplacePluginEiii @ 45 NONAME
+ _ZThn32_N11ChspsClient18hspsGetListHeadersERK6TDesC8R12CArrayPtrSegI6HBufC8E @ 46 NONAME
+ _ZThn32_N11ChspsClient18hspsGetListHeadersERK8ChspsODTiR13CArrayPtrFlatIS0_E @ 47 NONAME
+ _ZThn32_N11ChspsClient18hspsRestoreDefaultERK8ChspsODTRS0_ @ 48 NONAME
+ _ZThn32_N11ChspsClient18hspsSetActiveThemeERK6TDesC8R5TDes8 @ 49 NONAME
+ _ZThn32_N11ChspsClient18hspsSetActiveThemeERK8ChspsODTRS0_ @ 50 NONAME
+ _ZThn32_N11ChspsClient19hspsSetActivePluginEii @ 51 NONAME
+ _ZThn32_N11ChspsClient21hspsSetPluginSettingsERK8ChspsODTiR16ChspsDomDocumenti @ 52 NONAME
+ _ZThn32_N11ChspsClient24hspsCancelGetListHeadersEv @ 53 NONAME
+ _ZThn32_N11ChspsClient24hspsRestoreActiveAppConfEii @ 54 NONAME
--- a/homescreenpluginsrv/hspsmanager/group/hspsthemeserver.mmp Wed Mar 03 15:38:34 2010 +0200
+++ b/homescreenpluginsrv/hspsmanager/group/hspsthemeserver.mmp Wed May 12 13:36:47 2010 +0300
@@ -52,6 +52,7 @@
SOURCE hspsbrobserver.cpp
SOURCE hspsbrhandler.cpp
SOURCE hspsinstaller.cpp
+SOURCE hspsfamily.cpp
#if defined(WINSCW) || defined(__WINS__)
SOURCE hspsfamilylistener.cpp
#endif
@@ -81,15 +82,14 @@
LIBRARY hspsdomdocument.lib
LIBRARY hspsdefinitionengineinterface.lib
LIBRARY ecom.lib // definition engine
+LIBRARY MemMan.lib
+LIBRARY ws32.lib // RWsSession
+
#ifdef _hsps_DEBUG_
LIBRARY flogger.lib
#endif // _hsps_DEBUG_
LIBRARY sysversioninfo.lib
LIBRARY abclient.lib
-#if defined(WINSCW) || defined(__WINS__)
-LIBRARY ws32.lib // RWsSession
-LIBRARY featmgr.lib // FeatureManager
-#endif // defined(WINSCW)
LANG SC
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenpluginsrv/hspsmanager/inc/hspsfamily.h Wed May 12 13:36:47 2010 +0300
@@ -0,0 +1,122 @@
+/*
+* 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:
+*
+*
+*/
+
+#ifndef HSPSFAMILY_H_
+#define HSPSFAMILY_H_
+
+#include <e32base.h>
+#include <w32std.h>
+
+#include "hspsthememanagement.h"
+
+
+
+/**
+* @ingroup group_hspsserver
+* ChspsFamily is used to get UI's resolution and orientation.
+*
+* @lib hspsThemeServer.exe
+* @since S60 9.2
+*/
+class ChspsFamily
+ {
+ public: // Constructors and destructor
+
+ /**
+ * NewL
+ * Two-phased constructor.
+ */
+ static ChspsFamily* NewL();
+
+ /**
+ * ~ChspsFamilyListener
+ * Destructor.
+ */
+ virtual ~ChspsFamily();
+
+ /**
+ * Retrieves family type from a string
+ * @since S60 9.2
+ */
+ static ThspsFamily GetFamilyType(
+ const TDesC8& aFamilyString );
+
+ /**
+ * Retrieves family type from the current resolution.
+ * @since S60 5.0
+ * @return Family id
+ */
+ ThspsFamily GetFamilyType();
+
+ /**
+ * Retrieves window server session
+ * @since S60 9.2
+ * @return Window server session
+ */
+ inline RWsSession& WsSession();
+
+ protected:
+
+ /**
+ * ConstructL
+ * By default Symbian 2nd phase constructor is private.
+ */
+ void ConstructL();
+
+ protected:
+ /**
+ * C++ default constructor.
+ */
+ ChspsFamily();
+
+
+ /**
+ * Retrieves used display code.
+ */
+ void GetFamilyString(
+ TDes8& aFamily );
+
+ private: // Data
+
+ // Window server session.
+ RWsSession iWsSession;
+
+ // Client-side handle to a server-side window group.
+ RWindowGroup iWindowGroup;
+
+ // Screen device, own.
+ CWsScreenDevice* iScreenDevice;
+
+ };
+
+
+// Inline methods
+
+
+// -----------------------------------------------------------------------------
+// ChspsFamily::WsSession
+// -----------------------------------------------------------------------------
+//
+RWsSession& ChspsFamily::WsSession()
+ {
+ return iWsSession;
+ }
+
+
+
+#endif /* HSPSFAMILY_H_ */
+
+// End of File
--- a/homescreenpluginsrv/hspsmanager/inc/hspsfamilylistener.h Wed Mar 03 15:38:34 2010 +0200
+++ b/homescreenpluginsrv/hspsmanager/inc/hspsfamilylistener.h Wed May 12 13:36:47 2010 +0300
@@ -24,12 +24,9 @@
#ifndef HSPSFAMILYLISTENER_H_
#define HSPSFAMILYLISTENER_H_
-#include <e32base.h>
-#include <w32std.h>
+#include "hspsfamily.h"
-#include "hspsthememanagement.h"
-
-
+class ChspsFamilyListener;
/**
* @ingroup group_hspsserver
* HandleFamilyChangeL.
@@ -47,45 +44,44 @@
virtual TBool HandleFamilyChangeL( const ThspsFamily aNewFamily ) = 0;
};
-/**
-* @ingroup group_hspsserver
-* ChspsFamilyListener is used to listen to the changes in UI's resolution and orientation.
-* Used on emulator environment only.
-*
-* @lib hspsThemeServer.exe
-* @since S60 5.0
-*/
-class ChspsFamilyListener : public CActive
- {
+
+class ChspsFamilyListenerActive : public CActive
+ {
public: // Constructors and destructor
/**
* NewL
* Two-phased constructor.
*/
- static ChspsFamilyListener* NewL(
+ static ChspsFamilyListenerActive* NewL(
+ ChspsFamilyListener& aListener,
MhspsFamilyObserver& aObserver );
/**
* ~ChspsFamilyListener
* Destructor.
*/
- virtual ~ChspsFamilyListener();
+ virtual ~ChspsFamilyListenerActive();
+
+ private:
+
/**
- * Retrieves family type from a string
- * @since S60 5.0
+ * ConstructL
+ * By default Symbian 2nd phase constructor is private.
+ */
+ void ConstructL();
+
+ ChspsFamilyListenerActive(
+ ChspsFamilyListener& aListener,
+ MhspsFamilyObserver& iObserver);
+
+ public:
+ /**
+ * Start listener.
*/
- static ThspsFamily GetFamilyType(
- const TDesC8& aFamilyString );
-
- /**
- * Retrieves family type from the current resolution.
- * @since S60 5.0
- * @return Family id
- */
- ThspsFamily GetFamilyType();
-
+ void Queue();
+
protected: // Functions from base classes
/**
@@ -108,6 +104,42 @@
* @since S60 5.0
*/
TInt RunError(TInt aError);
+
+ private: // data
+
+ // Listener reference, not owned
+ ChspsFamilyListener& iListener;
+
+ // Observer which is called when RunL occurs
+ MhspsFamilyObserver& iObserver;
+
+ };
+
+/**
+* @ingroup group_hspsserver
+* ChspsFamilyListener is used to listen to the changes in UI's resolution and orientation.
+* Used on emulator environment only.
+*
+* @lib hspsThemeServer.exe
+* @since S60 5.0
+*/
+class ChspsFamilyListener : public ChspsFamily
+ {
+ public: // Constructors and destructor
+
+ /**
+ * NewL
+ * Two-phased constructor.
+ */
+ static ChspsFamilyListener* NewL(
+ MhspsFamilyObserver& aObserver );
+
+ /**
+ * ~ChspsFamilyListener
+ * Destructor.
+ */
+ virtual ~ChspsFamilyListener();
+
private:
@@ -115,19 +147,14 @@
* ConstructL
* By default Symbian 2nd phase constructor is private.
*/
- void ConstructL();
+ void ConstructL( MhspsFamilyObserver& aObserver );
/**
* ChspsCenRepListener
* C++ default constructor.
*/
- ChspsFamilyListener(
- MhspsFamilyObserver& aObserver );
+ ChspsFamilyListener();
- /**
- * Start listener.
- */
- void Queue();
/**
* Retrieves used display code.
@@ -137,20 +164,10 @@
private: // Data
- // Observer which is called when RunL occurs
- MhspsFamilyObserver& iObserver;
-
- // Window server session.
- RWsSession iWsSession;
-
// Client-side handle to a server-side window group.
RWindowGroup iWindowGroup;
- CWsScreenDevice* iScreenDevice;
-
- TUint32 iActiveFamily;
-
- TBool iFeatureManagerLoaded;
+ ChspsFamilyListenerActive* iFamilyListenerActive;
};
--- a/homescreenpluginsrv/hspsmanager/inc/hspsinstallationhandler.h Wed Mar 03 15:38:34 2010 +0200
+++ b/homescreenpluginsrv/hspsmanager/inc/hspsinstallationhandler.h Wed May 12 13:36:47 2010 +0300
@@ -239,6 +239,14 @@
ThspsServiceCompletedMessage hspsInstallTheme(
const TDesC& aManifestFileName,
TDes8& aHeaderData );
+
+ /**
+ * Parses the manifest file and requests installation of next phases.
+ * @since S60 5.2
+ * @param aManifest is full path of the installation script file - a manifest file
+ */
+ void DoInstallThemeL(
+ const TDesC& aManifest );
/**
* From MhspsInstallationService hspsInstallNextPhaseL
@@ -596,18 +604,20 @@
const TDesC& aPath,
const TLanguage aLanguage );
+ /**
+ * Finds all language specific folders and resources
+ * under the interface path in ROM or UDA drive.
+ * @since S60 5.0
+ * @path aPath Xuikon path
+ */
void AddInterfaceResourcesV2L(
const TDesC& aPath );
-
- void AddLocalizedResourcesV2L(
- const TDesC& aPath,
- const TLanguage aLanguage );
/**
* Validates manifest contents and installs files into the Plug-in Repository.
* @since S60 5.0
*/
- void ValidateL();
+ void FinalizeParsingL();
/**
* Validates provided UID value.
@@ -640,7 +650,7 @@
HBufC8& aValue8,
const TDesC8& aTag,
HBufC*& aResultString );
-
+
public:
ChspsResult* iResult;
@@ -693,7 +703,7 @@
TBool iDefaultSpecificationSet;
// Path to installation files
- TPtrC iThemeFilePath;
+ TPath iThemeFilePath;
// Application or interface UID of the installed theme
TUint iRootUid;
@@ -770,8 +780,8 @@
// Set if "EhspsODTAdded" -notifications should be blocked (e.g. ROM installations)
TBool iDisableNotifications;
- // Set if installation files are located in ROM
- TBool iRomInstallation;
+ // Set if installation files are located in ROM or in UDA, validation is not required
+ TBool iTrustedInstallation;
// Set if widget mutliinstance flag
TInt32 iMultiInstance;
--- a/homescreenpluginsrv/hspsmanager/inc/hspsmaintenancehandler.h Wed Mar 03 15:38:34 2010 +0200
+++ b/homescreenpluginsrv/hspsmanager/inc/hspsmaintenancehandler.h Wed May 12 13:36:47 2010 +0300
@@ -343,6 +343,7 @@
* @return ThspsServiceCompletedMessage expressing the result of the call.
*/
ThspsServiceCompletedMessage hspsGetListHeaders(const ChspsODT& /*aSearchMask*/
+ , const TBool /*aCopyLogos*/
, CArrayPtrFlat<ChspsODT>& /*aHeaderList*/);
/**
@@ -806,14 +807,6 @@
ChspsDomNode& aPluginNode );
/**
- * Copies logo icons to Homescreen's private folder
- * @since S60 5.1
- * @param aAppUid Identifies the client process
- */
- void CopyIconsToHomescreenL(
- const TUint aAppUid );
-
- /**
* Appends missing plugin with a dummy configuration where status="Error"
* @since S60 5.0
* @param aAppDom is a DOM of an application configuration
@@ -884,8 +877,7 @@
TBool iSubscription;
TInt iDeliveryCount;
ChspsODT* iSearchMask;
- ChspsODT* iSetMask;
- TLanguage iLanguage;
+ ChspsODT* iSetMask;
ChspsThemeServer& iThemeServer;
// Identifies the client application
@@ -899,6 +891,7 @@
CArrayPtrSeg<ChspsODT>& iHeaderListCache;
ChspsThemeServerSession* iServerSession; // Not owned.
CFileMan* iFileMan;
+ TBool iMaintainLogoResources;
#ifdef HSPS_LOG_ACTIVE
/**
* Log bus.
--- a/homescreenpluginsrv/hspsmanager/inc/hspsrominstaller.h Wed Mar 03 15:38:34 2010 +0200
+++ b/homescreenpluginsrv/hspsmanager/inc/hspsrominstaller.h Wed May 12 13:36:47 2010 +0300
@@ -77,26 +77,16 @@
virtual ~ChspsRomInstaller();
public: // New functions
-
- /**
- * Finds plugin_*.dat and app_*.dat files from Z\private\200159C0\install
- * File names are stored into iImportsArrayV1 member array
- * @since S60 5.0
- */
- void FindImportsV1L();
-
- /**
- * Imports.
- * Returns a reference to the imports list, which is maintained by the class.
- * Contents of the list is set in FindImportsL() function.
- * @since S60 5.0
- * @return an array of *.DAT files which were found from the ROM drive.
- */
- const RPointerArray<HBufC>& ImportsV1();
+
/**
- * InstallTheme
- * Synchronous service for installing configurations from provided manifest files.
+ * Installs all plugin configurations which can be found from ROM and C drives (UDA).
+ * @since S60 5.2
+ */
+ void InstallL();
+
+ /**
+ * Installs a plugin configuration from the provided manifest file (synchronous).
* @since S60 5.0
* @param aFileName is name of the manifest file to be installed.
* @return ThspsServiceCompletedMessage error code
@@ -105,25 +95,16 @@
const TDesC& aFileName );
/**
- * ReinstallThemeL.
- * Synchronous service for re-installing corrupted application configurations
- * from an import (imports\app_*.dat file).
+ * Re-installs an application plugin configuration (synchronous).
* @since S60 5.0
* @param aAppUid is UID of an application
- * @param aConfigurationUid is UID of a HSPS configuration
+ * @param aConfigurationUid is UID of an application plugin configuration
* @return ThspsServiceCompletedMessage error code
*/
ThspsServiceCompletedMessage ReinstallThemeL(
const TInt aAppUid,
const TInt aConfigurationUid );
-
- /**
- * Gets names of the folders which should be installed from Z\private\200159C0\install
- * @since S60 5.0
- */
- void GetInstallationFoldersL(
- RPointerArray<HBufC>& aFolders );
-
+
#ifdef HSPS_LOG_ACTIVE
/**
* Set log bus.
@@ -175,18 +156,29 @@
* @since S60 5.0
*/
void ConstructL();
+
+ /**
+ * Retrieves manifest files from both Z and C drives located in
+ * \\private\200159C0\install\ paths.
+ * @since S60 5.0
+ */
+ void FindInstallationFilesL(
+ RPointerArray<HBufC>& aFolders );
+
+ void DoFindInstallationFilesL(
+ RPointerArray<HBufC>& aFolders,
+ const TDesC& aPath );
/**
- * SetImportsFilterL.
- * Finds specific imports ("plugin_*.dat"/"app_*.dat" files) from ROM drive's
- * import folder. Search results are appended into iImportsArray member.
- * @since S60 5.0
- * @param aFileFilter is a filter for finding the imports
- * @param
- * @return ETrue if files were found and added into the array
+ * Finds an installation file from a directory structure
+ * which has UID in hex format as folder name.
+ * @since S60 5.2
+ * @param aConfigurationUid Configuration to be found
+ * @param aManifest Found manifest file
*/
- TBool SetImportsFilterL(
- const TDesC& aFileFilter );
+ void FindInstallationFileL(
+ const TInt aConfigurationUid,
+ TFileName& aManifest );
private: // Data
@@ -199,10 +191,7 @@
ChspsInstallationHandler* iInstallationHandler;
// Required by the installation process
- TBuf8<KMaxHeaderDataLength8> iHeaderData;
-
- // An array of found *.DAT files
- RPointerArray<HBufC> iImportsArrayV1;
+ TBuf8<KMaxHeaderDataLength8> iHeaderData;
// Results of the previous installation
ThspsServiceCompletedMessage iRet;
--- a/homescreenpluginsrv/hspsmanager/inc/hspsserverutil.h Wed Mar 03 15:38:34 2010 +0200
+++ b/homescreenpluginsrv/hspsmanager/inc/hspsserverutil.h Wed May 12 13:36:47 2010 +0300
@@ -462,13 +462,13 @@
const TDesC8& aAttrValue );
/**
- * Retrieves a filename from a file declaration.
- * @since S60 5.1
+ * Retrieves filename from a logo declaration.
+ * @since S60 5.2
* @param aFileDeclaration "SKIN():MIF()", "MIF()", "UID()" or "file.ext" string
* @param aFilename Referred file name or NULL
* @return True if a file was referred from the declaration
*/
- static TBool hspsServerUtil::IsFile(
+ static TBool IsLogoFile(
const TDesC& aFileDeclaration,
TFileName& aFilename );
@@ -523,6 +523,63 @@
const TDesC8& aNodeTag,
ChspsDomNode& aDomNode );
+ /**
+ * Eclipsing enabler for customization where the input is
+ * searched from all secure unremovable drives.
+ * Drives are searched in descending alphabetical order,
+ * from Y: to A:, and ending with the Z: drive.
+ * All drives which end-user can freely modify/crack
+ * are skipped from the search.
+ * @since S60 5.2
+ * @param aFs is a reference to open file server session handle
+ * @param aPath is path of the file
+ * @param aFilename is name and extension of the file
+ * @param aDrivePathName Full path with a drive letter to the
+ * resource file (output)
+ */
+ static TInt FindFile(
+ RFs& aFs,
+ const TDesC& aPath,
+ const TDesC& aFilename,
+ TFileName& aDrivePathName );
+
+ /**
+ * Resolves icon path information from the provided logo declaration.
+ * Example:
+ * Decl. = "mif(536999050\270513751\268475903\1.0\sources\icon.mif)"
+ * Source = "c\private\200159c0\themes\536999050\270513751\268475903\1.0\sources\icon.mif"
+ * Target = "c\private\102750f0\536999050\270513751\268475903\1.0\sources\icon.mif"
+ * Up.decl = "mif(c\private\102750f0\536999050\270513751\268475903\1.0\sources\icon.mif)"
+ * @since S60 5.2
+ * @param aLogoDeclaration Skin():mif(), mif(), uid(), icon.mif declaration
+ * @param aAppUid Identifies the private directory where the logo file is copied to
+ * @param aTargetPath Empty or location of the target file
+ * @param aSourcePath Empty or location of the source file
+ * @param aUpdatedDeclaration Empty or declaration which points to the target location
+ */
+ static void PopulateLogoPathsL(
+ const TDesC& aLogoDeclaration,
+ const TUint aAppUid,
+ RBuf& aTargetPath,
+ RBuf& aSourcePath,
+ RBuf& aUpdatedDeclaration );
+
+ /**
+ * Finds ecplised files from the provided path in given drive order.
+ * @since S60 5.2
+ * @param aFs is a reference to open file server session handle
+ * @param aDriveArray An array of drives in search order
+ * @param aPath Relative path to be found
+ * @param aFolders Search results or empty
+ * @param aRecursive True if files should be found from any sudirectories
+ */
+ static void FindFilesRecursivelyL(
+ RFs& aFs,
+ const RArray<TInt>& aDriveArray,
+ const TDesC& aPath,
+ RPointerArray<HBufC>& aFolders,
+ TBool aRecursive = EFalse );
+
private:
/**
* Internal method. Do not call directly!
--- a/homescreenpluginsrv/hspsmanager/inc/hspsthemeserver.h Wed Mar 03 15:38:34 2010 +0200
+++ b/homescreenpluginsrv/hspsmanager/inc/hspsthemeserver.h Wed May 12 13:36:47 2010 +0300
@@ -179,7 +179,7 @@
_LIT(KhspsThemeServerName,"hspsthemeserver");
/** Supported manifest version */
-_LIT(KhspsSupportedManifestVersion,"1.0");
+_LIT(KhspsSupportedManifestVersion,"2.0");
/** hspsThemeServer Uid3 = SECUREID. */
const TUid KhspsThemeServerUid3 = {0x200159C0}; //old uid 0x10207254};
@@ -209,6 +209,8 @@
class ChspsSecurityEnforcer;
class ChspsRomInstaller;
class ChspsAutoInstaller;
+class ChspsThemeServerSession;
+class ChspsFamily;
#ifdef HSPS_LOG_ACTIVE
class ChspsLogBus;
@@ -396,15 +398,21 @@
/**
* AddSession
+ *
+ * @param aSession Session that is added. Ownership not transferred!.
+ *
* @since S60 3.1
*/
- void AddSession();
+ void AddSession( ChspsThemeServerSession* aSession );
/**
* DropSession
+ *
+ * @param aSession Session that is dropped. Ownership not transferred!.
+ *
* @since S60 3.1
*/
- void DropSession();
+ void DropSession( ChspsThemeServerSession* aSession );
public: // public functions
@@ -624,7 +632,19 @@
* @returns The active family
*/
TUint32 GetActiveFamilyL(
- const TInt aAppUid );
+ const TInt aAppUid );
+
+ /**
+ * Installs widgets located at \private\200159C0\install\ directories.
+ * @since S60 5.0
+ */
+ void InstallWidgetsL();
+
+ /**
+ * Install all widgets from uda
+ * @since S60 5.2
+ */
+ void InstallUDAWidgetsL();
public: // from MhspsFileChangeObserver
@@ -664,10 +684,11 @@
void HandleCenRepChangeL( const TUint32 aId );
-#if defined(WINSCW) || defined(__WINS__)
+
public: // from MshspFamilyObserver
TBool HandleFamilyChangeL( const ThspsFamily aNewFamily );
-#endif // defined(WINSCW)
+
+ ChspsFamily* Family();
private:
@@ -799,23 +820,7 @@
* @since S60 5.0
*/
void HandleRomInstallationsL();
-
- /**
- * Executes installation of manifest files from the ROM drive.
- * @since S60 5.0
- */
- void InstallManifestsFromRomDriveL();
-
- /**
- * V2 method for finding manifest files from Z\private\200159C0\install subfolders,
- * these folders should have a "hsps" subfolder.
- * Appends iManifestFiles array.
- * @since S60 5.0
- * @param aPluginFolders holds names of the plugin folders which are V2 based
- */
- void FindRomInstallationsV2L(
- RPointerArray<HBufC>& aPluginFolders );
-
+
/**
* Initiates uninstallation of a manifest file located under the imports folder.
* @since S60 5.0
@@ -980,9 +985,8 @@
*/
void RestoreConfigurationL(
ChspsODT& aOdt );
-
-#if defined(WINSCW) || defined(__WINS__)
+#if defined(WINSCW) || defined(__WINS__)
/**
* Executed at startup to activate root configurations which were designed
* for the current resolution.
@@ -990,12 +994,8 @@
*/
void ActivateRootConfigurationsL();
-#endif // defined(WINSCW)
-
-
-private:
- TInt iSessionCount;
-
+#endif // defined(WINSCW) || defined(__WINS__)
+
#ifdef _hsps_SERVER_SHUTDOWN_ENABLED_
CShutdown* iShutdown;
#endif // _hsps_SERVER_SHUTDOWN_ENABLED_
@@ -1067,10 +1067,10 @@
CHSPSBRHandler* iBRHandler;
-#if defined(WINSCW) || defined(__WINS__)
- // Listener for resolution and orientation changes
- ChspsFamilyListener* iFamilyListener;
-#endif // defined(WINSCW)
+
+ // Family handler, own
+ ChspsFamily* iFamily;
+
#ifdef HSPS_LOG_ACTIVE
/**
@@ -1078,6 +1078,8 @@
*/
ChspsLogBus* iLogBus;
#endif
+
+ RPointerArray<ChspsThemeServerSession> iSessions; // Sessions not owned!
};
#endif //__hspsTHEMESERVER_H__
--- a/homescreenpluginsrv/hspsmanager/inc/hspsthemeserversession.h Wed Mar 03 15:38:34 2010 +0200
+++ b/homescreenpluginsrv/hspsmanager/inc/hspsthemeserversession.h Wed May 12 13:36:47 2010 +0300
@@ -63,6 +63,41 @@
* @return Reference to RFs instance
*/
RFs& FileSystem();
+
+ /**
+ * Return whether icon file copy required.
+ *
+ * @return TBool ETrue if icon file copy is required. Otherwise false.
+ */
+ TBool IconFileCopyRequired() const;
+
+ /**
+ * Set icon file copy requirement flag.
+ *
+ * @param aCopyRequired Value to be set.
+ */
+ void SetIconFileCopyRequired( const TBool aCopyRequired );
+
+ /**
+ * Return whether resource file copy required.
+ *
+ * @return TBool ETrue if icon file copy is required. Otherwise false.
+ */
+ TBool ResourceFileCopyRequired() const;
+
+ /**
+ * Set resource file copy requirement flag.
+ *
+ * @param aCopyRequired Value to be set.
+ */
+ void SetResourceFileCopyRequired( const TBool aCopyRequired );
+
+ /**
+ * Get app uid of session
+ *
+ * @return App uid.
+ */
+ TInt AppUid() const;
private:
@@ -304,6 +339,17 @@
TBool iHoldingResources;
TInt iAppUid;
+
+ /**
+ * Boolean to indicate that icon files need to be copied.
+ */
+ TBool iIconFileCopyRequired;
+
+ /**
+ * Boolean to indicate that resource files need to be copied.
+ */
+ TBool iResourceFileCopyRequired;
+
#ifdef HSPS_LOG_ACTIVE
/**
* Log bus.
--- a/homescreenpluginsrv/hspsmanager/src/hspsclientrequesthandler.cpp Wed Mar 03 15:38:34 2010 +0200
+++ b/homescreenpluginsrv/hspsmanager/src/hspsclientrequesthandler.cpp Wed May 12 13:36:47 2010 +0300
@@ -703,61 +703,70 @@
{
// Check parent element
parentNode = node->Parent();
- const TDesC8& parentName = parentNode->Name();
-
+ const TDesC8& parentName = parentNode->Name();
if( parentName == KPluginElement )
{
- ChspsDomList& initial_settings_childList = node->ChildNodes();
-
- ChspsDomNode* initialSettingsNode = static_cast<ChspsDomNode*>(initial_settings_childList.FindByName( KSettingsElement ));
-
- ChspsDomList& initial_items = initialSettingsNode->ChildNodes();
-
- ChspsDomNode* controlNode = hspsServerUtil::FindNodeByTagL(KControlElement, *parentNode );
-
- if( controlNode )
+ ChspsDomList& initial_settings_childList = node->ChildNodes();
+ ChspsDomNode* initialSettingsNode =
+ static_cast<ChspsDomNode*>(initial_settings_childList.FindByName( KSettingsElement ));
+ if( initialSettingsNode )
{
- ChspsDomList& controlNode_childList = controlNode->ChildNodes();
-
- ChspsDomNode* settingsNode = static_cast<ChspsDomNode*>(controlNode_childList.FindByName( KSettingsElement ));
-
- if( settingsNode )
+
+ ChspsDomList& initial_items = initialSettingsNode->ChildNodes();
+ ChspsDomNode* controlNode = hspsServerUtil::FindNodeByTagL(KControlElement, *parentNode );
+
+ if( controlNode )
{
- ChspsDomList& items = settingsNode->ChildNodes();
-
- if( items.Length() == initial_items.Length() )
+ ChspsDomList& controlNode_childList = controlNode->ChildNodes();
+
+ ChspsDomNode* settingsNode = static_cast<ChspsDomNode*>(controlNode_childList.FindByName( KSettingsElement ));
+
+ if( settingsNode )
{
- TInt index = controlNode->ItemIndex( *settingsNode );
- controlNode->DeleteChild(settingsNode);
- ChspsDomNode* clone = initialSettingsNode->CloneL( aAppODT.DomDocument().StringPool() );
- CleanupStack::PushL( clone );
- controlNode->AddChildL( clone, index );
- clone->SetParent( controlNode );
- CleanupStack::Pop( clone );
- }
- else if( items.Length() > initial_items.Length() )
- {
- error = ParseInitialSettingsItemsL(*initialSettingsNode,*settingsNode);
+ ChspsDomList& items = settingsNode->ChildNodes();
+
+ if( items.Length() == initial_items.Length() )
+ {
+ TInt index = controlNode->ItemIndex( *settingsNode );
+ controlNode->DeleteChild(settingsNode);
+ ChspsDomNode* clone = initialSettingsNode->CloneL( aAppODT.DomDocument().StringPool() );
+ CleanupStack::PushL( clone );
+ controlNode->AddChildL( clone, index );
+ clone->SetParent( controlNode );
+ CleanupStack::Pop( clone );
+ }
+ else if( items.Length() > initial_items.Length() )
+ {
+ error = ParseInitialSettingsItemsL(*initialSettingsNode,*settingsNode);
+ }
+ else
+ {
+ error = KErrCorrupt;
+ }
}
else
{
- error = KErrCorrupt;
+ error = KErrNotFound;
}
}
else
{
- error = KErrNotFound;
+ error = KErrCorrupt;
}
- }
+
+ // clean settings under initialsettings
+ node->ChildNodes().RemoveItem( initialSettingsNode );
+ delete initialSettingsNode;
+ initialSettingsNode = NULL;
+
+ }
else
{
+ // initialSettingsNode (KSettingsElement) not found
error = KErrCorrupt;
}
- // clean settings under initialsettings
- node->ChildNodes().RemoveItem( initialSettingsNode );
- delete initialSettingsNode;
- initialSettingsNode = NULL;
- }
+
+ }
}
prevNode = node;
@@ -955,11 +964,14 @@
ChspsDomAttribute* attr = static_cast<ChspsDomAttribute*>(
attrList.FindByName( KItemAttrId ));
- const TDesC8& value = attr->Value();
- if( value.Compare( aNodeIdentifier ) == 0 )
- {
- found = ETrue;
- targetNode = node;
+ if( attr )
+ {
+ const TDesC8& value = attr->Value();
+ if( value.CompareF( aNodeIdentifier ) == 0 )
+ {
+ found = ETrue;
+ targetNode = node;
+ }
}
}
node = iter->NextL();
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenpluginsrv/hspsmanager/src/hspsfamily.cpp Wed May 12 13:36:47 2010 +0300
@@ -0,0 +1,179 @@
+/*
+* 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: Family gets resolution and orientation
+*
+*/
+
+#include "hspsfamily.h"
+#include "hsps_builds_cfg.hrh"
+#include "hspsmanifest.h"
+#include <featmgr.h>
+
+
+_LIT8(KTch, "_tch");
+const TInt KMaxFamilyLength( 20 );
+
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+
+// -----------------------------------------------------------------------------
+// ChspsFamily::NewL
+// -----------------------------------------------------------------------------
+//
+ChspsFamily* ChspsFamily::NewL()
+ {
+ ChspsFamily* self = new(ELeave) ChspsFamily();
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ CleanupStack::Pop( self );
+ return self;
+ }
+
+// -----------------------------------------------------------------------------
+// ChspsFamily::ChspsFamily
+// -----------------------------------------------------------------------------
+//
+ChspsFamily::ChspsFamily()
+ {
+ }
+
+// -----------------------------------------------------------------------------
+// ChspsFamily::ConstructL
+// -----------------------------------------------------------------------------
+//
+void ChspsFamily::ConstructL()
+ {
+
+ User::LeaveIfError( iWsSession.Connect() );
+
+ iScreenDevice = new (ELeave) CWsScreenDevice( iWsSession );
+
+ User::LeaveIfError( iScreenDevice->Construct() );
+
+ }
+
+
+// ------------------------------------------------------------------------------
+// ChspsFamily::~ChspsFamily
+// ------------------------------------------------------------------------------
+ChspsFamily::~ChspsFamily()
+ {
+
+ delete iScreenDevice;
+ iWsSession.Close();
+ }
+
+// -----------------------------------------------------------------------------
+// ChspsFamily::GetFamilyString
+// -----------------------------------------------------------------------------
+void ChspsFamily::GetFamilyString(
+ TDes8& aFamily )
+ {
+ // Append input with a prefix based on the active screen resolution
+ TPixelsTwipsAndRotation sizeAndRotation;
+ iScreenDevice->GetDefaultScreenSizeAndRotation( sizeAndRotation );
+ TSize resolution( sizeAndRotation.iPixelSize );
+ if( resolution.iWidth > resolution.iHeight )
+ {
+ TInt temp = resolution.iHeight;
+ resolution.iHeight = resolution.iWidth;
+ resolution.iWidth = temp;
+ }
+ switch( resolution.iHeight )
+ {
+ case 320:
+ {
+ if ( resolution.iWidth == 240 )
+ {
+ aFamily.Append( KFamilyQvga );
+ }
+ }
+ break;
+ case 640:
+ {
+ if( resolution.iWidth == 360 )
+ {
+ aFamily.Append( KFamilyQhd );
+ }
+ else if( resolution.iWidth == 480 )
+ {
+ aFamily.Append( KFamilyVga );
+ }
+ }
+ break;
+
+ default:
+ break;
+ }
+ if( aFamily.Length() > 0 )
+ {
+ aFamily.Append( KTch );
+ }
+ }
+
+// -----------------------------------------------------------------------------
+// ChspsFamily::GetFamilyType
+// -----------------------------------------------------------------------------
+ThspsFamily ChspsFamily::GetFamilyType(
+ const TDesC8& aFamilyString )
+ {
+ ThspsFamily family( EhspsFamilyUnknown );
+
+ if( aFamilyString == KFamilyQvga )
+ {
+ family = EhspsFamilyQvga;
+ }
+ else if( aFamilyString == KFamilyQvga2 )
+ {
+ family = EhspsFamilyQvga2;
+ }
+ else if( aFamilyString == KFamilyVga )
+ {
+ family = EhspsFamilyVga;
+ }
+ else if( aFamilyString == KFamilyVga3 )
+ {
+ family = EhspsFamilyVga3;
+ }
+ else if( aFamilyString == KFamilyQhd )
+ {
+ family = EhspsFamilyQhd;
+ }
+ else if( aFamilyString == KFamilyQhd_tch )
+ {
+ family = EhspsFamilyQhd_tch;
+ }
+ else if( aFamilyString == KFamilyVga_tch )
+ {
+ family = EhspsFamilyVga_tch;
+ }
+
+ return family;
+ }
+
+// -----------------------------------------------------------------------------
+// ChspsFamily::GetFamilyType
+// -----------------------------------------------------------------------------
+ThspsFamily ChspsFamily::GetFamilyType()
+ {
+ TBuf8<KMaxFamilyLength> familyString;
+ GetFamilyString( familyString );
+ return GetFamilyType( familyString );
+ }
+
+
+
+// End of File
+
--- a/homescreenpluginsrv/hspsmanager/src/hspsfamilylistener.cpp Wed Mar 03 15:38:34 2010 +0200
+++ b/homescreenpluginsrv/hspsmanager/src/hspsfamilylistener.cpp Wed May 12 13:36:47 2010 +0300
@@ -19,7 +19,6 @@
#include "hspsfamilylistener.h"
#include "hsps_builds_cfg.hrh"
#include "hspsmanifest.h"
-#include <featmgr.h>
_LIT8(KTch, "_tch");
@@ -35,9 +34,9 @@
//
ChspsFamilyListener* ChspsFamilyListener::NewL( MhspsFamilyObserver& aObserver )
{
- ChspsFamilyListener* self = new(ELeave) ChspsFamilyListener( aObserver );
+ ChspsFamilyListener* self = new(ELeave) ChspsFamilyListener( );
CleanupStack::PushL( self );
- self->ConstructL();
+ self->ConstructL( aObserver );
CleanupStack::Pop( self );
return self;
}
@@ -46,41 +45,77 @@
// ChspsFamilyListener::ChspsFamilyListener
// -----------------------------------------------------------------------------
//
-ChspsFamilyListener::ChspsFamilyListener( MhspsFamilyObserver& aObserver )
- : CActive( EPriorityStandard ), iObserver( aObserver), iActiveFamily( EhspsFamilyUnknown )
+ChspsFamilyListener::ChspsFamilyListener()
{
- CActiveScheduler::Add(this);
}
// -----------------------------------------------------------------------------
// ChspsFamilyListener::ConstructL
// -----------------------------------------------------------------------------
//
-void ChspsFamilyListener::ConstructL()
+void ChspsFamilyListener::ConstructL( MhspsFamilyObserver& aObserver )
{
- User::LeaveIfError( iWsSession.Connect() );
-
+
+ // ChspsFamily::ConstructL ChspsFamily's second phase constructor call
+ ChspsFamily::ConstructL();
+
+ iFamilyListenerActive = ChspsFamilyListenerActive::NewL( *this, aObserver );
+
// A group needs to be instansiated so that we're able to receive events
- iWindowGroup = RWindowGroup( iWsSession );
+ iWindowGroup = RWindowGroup( WsSession() );
User::LeaveIfError( iWindowGroup.Construct(2,ETrue) ); // '2' is a meaningless handle
// Enables for EEventScreenDeviceChanged events
iWindowGroup.EnableScreenChangeEvents();
-
- iScreenDevice = new (ELeave) CWsScreenDevice( iWsSession );
- User::LeaveIfError( iScreenDevice->Construct() );
// Start the listener
- Queue();
+ iFamilyListenerActive->Queue();
}
+
+
+
+
+ChspsFamilyListenerActive* ChspsFamilyListenerActive::NewL(
+ ChspsFamilyListener& aListener,
+ MhspsFamilyObserver& aObserver )
+ {
+ ChspsFamilyListenerActive* self = new( ELeave ) ChspsFamilyListenerActive(
+ aListener,
+ aObserver );
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ CleanupStack::Pop( self );
+ return self;
+ }
+
+ChspsFamilyListenerActive::~ChspsFamilyListenerActive()
+ {
+ Cancel();
+ }
+
+void ChspsFamilyListenerActive::ConstructL()
+ {
+ }
+
+ChspsFamilyListenerActive::ChspsFamilyListenerActive(
+ ChspsFamilyListener& aListener,
+ MhspsFamilyObserver& aObserver )
+ :CActive( EPriorityStandard ),
+ iListener( aListener),
+ iObserver( aObserver )
+ {
+ CActiveScheduler::Add(this);
+ }
+
+
// ------------------------------------------------------------------------------
-// ChspsFamilyListener::Queue
+// ChspsFamilyListenerActive::Queue
// ------------------------------------------------------------------------------
-void ChspsFamilyListener::Queue()
+void ChspsFamilyListenerActive::Queue()
{
ASSERT ( !IsActive() );
- iWsSession.EventReady( &iStatus );
+ iListener.WsSession().EventReady( &iStatus );
SetActive();
}
@@ -89,139 +124,31 @@
// ------------------------------------------------------------------------------
ChspsFamilyListener::~ChspsFamilyListener()
{
- Cancel();
- if ( iFeatureManagerLoaded )
+ if ( iFamilyListenerActive )
{
- FeatureManager::UnInitializeLib();
+ delete iFamilyListenerActive;
}
- delete iScreenDevice;
iWindowGroup.Close();
- iWsSession.Close();
}
+
+
+
// -----------------------------------------------------------------------------
-// ChspsFileChangeListener::GetFamilyString
+// ChspsFamilyListener::RunL
// -----------------------------------------------------------------------------
-void ChspsFamilyListener::GetFamilyString(
- TDes8& aFamily )
- {
- // Append input with a prefix based on the active screen resolution
- TPixelsTwipsAndRotation sizeAndRotation;
- iScreenDevice->GetDefaultScreenSizeAndRotation( sizeAndRotation );
- TSize resolution( sizeAndRotation.iPixelSize );
- if( resolution.iWidth > resolution.iHeight )
- {
- TInt temp = resolution.iHeight;
- resolution.iHeight = resolution.iWidth;
- resolution.iWidth = temp;
- }
- switch( resolution.iHeight )
- {
- case 320:
- {
- if ( resolution.iWidth == 240 )
- {
- aFamily.Append( KFamilyQvga );
- }
- }
- break;
- case 640:
- {
- if( resolution.iWidth == 360 )
- {
- aFamily.Append( KFamilyQhd );
- }
- else if( resolution.iWidth == 480 )
- {
- aFamily.Append( KFamilyVga );
- }
- }
- break;
-
- default:
- break;
- }
- if( aFamily.Length() > 0 )
- {
-// // Append input with a suffix based on the touch support
-// if ( !iFeatureManagerLoaded )
-// {
-// FeatureManager::InitializeLibL();
-// iFeatureManagerLoaded = ETrue;
-// }
-// if ( FeatureManager::FeatureSupported( KFeatureIdPenSupport ) )
-// {
- aFamily.Append( KTch );
-// }
- }
- }
-
-// -----------------------------------------------------------------------------
-// ChspsFileChangeListener::GetFamilyType
-// -----------------------------------------------------------------------------
-ThspsFamily ChspsFamilyListener::GetFamilyType(
- const TDesC8& aFamilyString )
- {
- ThspsFamily family( EhspsFamilyUnknown );
-
- if( aFamilyString == KFamilyQvga )
- {
- family = EhspsFamilyQvga;
- }
- else if( aFamilyString == KFamilyQvga2 )
- {
- family = EhspsFamilyQvga2;
- }
- else if( aFamilyString == KFamilyVga )
- {
- family = EhspsFamilyVga;
- }
- else if( aFamilyString == KFamilyVga3 )
- {
- family = EhspsFamilyVga3;
- }
- else if( aFamilyString == KFamilyQhd )
- {
- family = EhspsFamilyQhd;
- }
- else if( aFamilyString == KFamilyQhd_tch )
- {
- family = EhspsFamilyQhd_tch;
- }
- else if( aFamilyString == KFamilyVga_tch )
- {
- family = EhspsFamilyVga_tch;
- }
-
- return family;
- }
-
-// -----------------------------------------------------------------------------
-// ChspsFileChangeListener::GetFamilyType
-// -----------------------------------------------------------------------------
-ThspsFamily ChspsFamilyListener::GetFamilyType()
- {
- TBuf8<KMaxFamilyLength> familyString;
- GetFamilyString( familyString );
- return GetFamilyType( familyString );
- }
-
-// -----------------------------------------------------------------------------
-// ChspsFileChangeListener::RunL
-// -----------------------------------------------------------------------------
-void ChspsFamilyListener::RunL()
+void ChspsFamilyListenerActive::RunL()
{
TWsEvent wsEvent;
- iWsSession.GetEvent(wsEvent);
+ iListener.WsSession().GetEvent(wsEvent);
switch( wsEvent.Type() )
{
case EEventScreenDeviceChanged:
{
- ThspsFamily newFamily = GetFamilyType();
+ ThspsFamily newFamily = iListener.GetFamilyType();
if ( newFamily > EhspsFamilyUnknown )
{
iObserver.HandleFamilyChangeL( newFamily );
- iActiveFamily = newFamily;
}
break;
}
@@ -236,15 +163,15 @@
// ChspsFileChangeListener::DoCancel
// -----------------------------------------------------------------------------
//
-void ChspsFamilyListener::DoCancel()
+void ChspsFamilyListenerActive::DoCancel()
{
- iWsSession.EventReadyCancel();
+ iListener.WsSession().EventReadyCancel();
}
// -----------------------------------------------------------------------------
// ChspsFileChangeListener::RunError
// -----------------------------------------------------------------------------
-TInt ChspsFamilyListener::RunError(TInt /*aError*/)
+TInt ChspsFamilyListenerActive::RunError(TInt /*aError*/)
{
return KErrNone;
}
--- a/homescreenpluginsrv/hspsmanager/src/hspsinstallationhandler.cpp Wed Mar 03 15:38:34 2010 +0200
+++ b/homescreenpluginsrv/hspsmanager/src/hspsinstallationhandler.cpp Wed May 12 13:36:47 2010 +0300
@@ -56,8 +56,9 @@
_LIT8(KhspsDefinitionEngine, "hspsdefinitionengine");
_LIT(KPathDelim, "\\");
+_LIT(KPrivateInstall, "\\private\\200159c0\\install\\");
_LIT(KHsps, "\\hsps\\" );
-_LIT(KXuikon, "xuikon\\" );
+_LIT(KXuikon, "xuikon" );
const TInt KMaxMediaTypeLength = 100;
@@ -99,7 +100,7 @@
iDefaultSpecificationSet = EFalse;
iDefaultSpecification = ELangNone;
iInstallationMode = EServiceHandler;
- iRomInstallation = EFalse;
+ iTrustedInstallation = EFalse;
iInstallationType = EInstallationTypeNew;
iFamilyMask = 0;
}
@@ -297,9 +298,11 @@
// -----------------------------------------------------------------------------
void ChspsInstallationHandler::ResetL()
{
+ iThemeFilePath.FillZ();
iFamilyMask = 0;
iInstallationPhase = EhspsPhaseInitialise;
- iThemeStatus = EhspsThemeStatusNone;
+ iThemeStatus = EhspsThemeStatusNone;
+ iTrustedInstallation = EFalse;
iFileNotFound = EFalse;
delete iMediaType;
iMediaType = NULL;
@@ -357,109 +360,109 @@
TDes8& aHeaderData)
{
// Assume that the installation fails
- ThspsServiceCompletedMessage ret = EhspsInstallThemeFailed;
- iResult->iXuikonError = KErrManifestFileCorrupted;
-
- // Reset memeber variables
- TInt errorCode = KErrNone;
- TRAP( errorCode, ResetL() );
- if ( !errorCode )
- {
- // Get manifest file path
- iThemeFilePath.Set( TParsePtrC( aManifestFileName ).DriveAndPath() );
- // Check if ROM installation is requested
- iRomInstallation = EFalse;
- TParse driveParser;
- driveParser.Set( iThemeFilePath, NULL, NULL );
- TInt driveNumber;
- if ( RFs::CharToDrive( driveParser.Drive()[0], driveNumber ) == KErrNone )
- {
- if ( driveNumber == EDriveZ )
- {
- iRomInstallation = ETrue;
- }
- }
-
-#ifdef HSPS_LOG_ACTIVE
- if ( iLogBus )
- {
- iLogBus->LogText( _L( "ChspsInstallationHandler::hspsInstallTheme() - *** Parsing a manifest file:" ) );
- }
-#endif
- if( BaflUtils::FileExists( iFsSession, aManifestFileName ) )
- {
- // Parse XML from the manifest file
- TRAP( errorCode, Xml::ParseL( *iXmlParser, iFsSession, aManifestFileName ));
- }
- else
- {
-#ifdef HSPS_LOG_ACTIVE
- if ( iLogBus )
- {
- iLogBus->LogText( _L( "ChspsInstallationHandler::hspsInstallTheme() - Manifest was not found!" ) );
- }
-#endif
- iFileNotFound = ETrue;
- errorCode = KErrNotFound;
- }
+ ThspsServiceCompletedMessage ret = EhspsInstallThemeFailed;
+ iResult->iXuikonError = 0;
+ iResult->iIntValue2 = 0;
+
+ TRAPD( err, DoInstallThemeL(aManifestFileName) );
+ if( !err )
+ {
+ // correct headerdata is in iHeaderData set by CheckHeaderL()
+ aHeaderData = iHeaderData->Des();
+
+ // Set next phase
+ iInstallationPhase = EhspsPhaseCleanup;
+ ret = EhspsInstallThemeSuccess;
}
-
- if ( !errorCode && !iFileNotFound )
- {
- // The manifest file has been read at this point and following callbacks have been executed:
- // (unless the manifest was invalid): OnContent, OnStartElement, OnEndElement
-
- // Detect installation type.
- // Performance optimization: do not check if installing from rom.
- if( !iRomInstallation )
- {
- // Check type of installation
- TBool instancesFound = EFalse;
- TRAP( errorCode, instancesFound = IsPluginUsedInAppConfsL() );
- if( iThemeServer.PluginInHeaderCache( TUid::Uid( iThemeUid ) ) && instancesFound )
- {
- // Plugin should be found from cache, update notifications are
- // sent only when plugins are used by one/more app configurations
- iInstallationType = EInstallationTypeUpdate;
- }
- else
- {
- iInstallationType = EInstallationTypeNew;
- }
- }
- if ( !errorCode )
- {
- // Check the manifest
- TRAP( errorCode, ValidateL() );
- }
- if ( !errorCode )
- {
- // correct headerdata is in iHeaderData set by CheckHeaderL()
- aHeaderData = iHeaderData->Des();
-
- ret = EhspsInstallThemeSuccess;
-
- // Set next phase
- iInstallationPhase = EhspsPhaseCleanup;
-
- // number of all resources to iResult
- iResult->iIntValue2 = 0;
- }
- }
-
- if ( errorCode )
+ else
{
#ifdef HSPS_LOG_ACTIVE
if( iLogBus )
{
iLogBus->LogText( _L( "ChspsInstallationHandler::hspsInstallTheme(): - Installation failed with error code %d" ),
- errorCode );
+ err );
}
-#endif
+#endif
}
+
+ iResult->iSystemError = err;
+ return ret;
+ }
+
+// -----------------------------------------------------------------------------
+// ChspsInstallationHandler::DoInstallThemeL()
+// -----------------------------------------------------------------------------
+void ChspsInstallationHandler::DoInstallThemeL(
+ const TDesC& aManifest )
+ {
+ // Reset memeber variables
+ ResetL();
+
+ TParsePtrC parsePtr( aManifest );
+
+ // Store the path to the installation file
+ __ASSERT_DEBUG( aManifest.Length() < KMaxFileName, User::Leave( KErrBadName ) );
+ iThemeFilePath.Copy( parsePtr.DriveAndPath() );
+
+ // If trying to install widgets from one of our private install directories
+ const TPath path = parsePtr.Path();
+ if( path.Length() > KPrivateInstall().Length()
+ && path.Left( KPrivateInstall().Length() ) == KPrivateInstall() )
+ {
+ // Check if ROM or UDA installation was requested
+ if( parsePtr.DrivePresent() )
+ {
+ TInt driveNumber;
+ if ( RFs::CharToDrive( parsePtr.Drive()[0], driveNumber ) == KErrNone )
+ {
+ iTrustedInstallation = ( driveNumber == EDriveZ || driveNumber == EDriveC );
+ }
+ }
+ }
+
+ if( !BaflUtils::FileExists( iFsSession, aManifest ) )
+ {
+#ifdef HSPS_LOG_ACTIVE
+ if ( iLogBus )
+ {
+ iLogBus->LogText( _L( "ChspsInstallationHandler::DoInstallThemeL() - *** Manifest was not found!" ) );
+ }
+#endif
+ User::Leave( KErrNotFound );
+ }
+
+#ifdef HSPS_LOG_ACTIVE
+ if ( iLogBus )
+ {
+ iLogBus->LogText( _L( "ChspsInstallationHandler::DoInstallThemeL() - *** Parsing a manifest file" ) );
+ }
+#endif
- iResult->iSystemError = errorCode;
- return ret;
+ // Parse XML from the manifest file
+ Xml::ParseL( *iXmlParser, iFsSession, aManifest );
+
+ // The manifest file has been read at this point and following callbacks have been executed:
+ // OnContent(), OnStartElement() and OnEndElement()
+
+ // Performance optimization: do not check if installing from rom.
+ if( !iTrustedInstallation )
+ {
+ // Check type of installation
+ TBool instancesFound = IsPluginUsedInAppConfsL();
+ if( iThemeServer.PluginInHeaderCache( TUid::Uid( iThemeUid ) ) && instancesFound )
+ {
+ // Plugin should be found from cache, update notifications are
+ // sent only when plugins are used by one/more app configurations
+ iInstallationType = EInstallationTypeUpdate;
+ }
+ else
+ {
+ iInstallationType = EInstallationTypeNew;
+ }
+ }
+
+ // Check the parsed input
+ FinalizeParsingL();
}
// -----------------------------------------------------------------------------
@@ -479,7 +482,8 @@
{
pathParser.PopDir(); // pop "hsps" folder
path.Copy( pathParser.FullName() );
- path.Append( KXuikon );
+ path.Append( KXuikon );
+ path.Append( KPathDelim );
}
return path;
}
@@ -488,8 +492,9 @@
// ChspsInstallationHandler::ValidateL()
// -----------------------------------------------------------------------------
//
-void ChspsInstallationHandler::ValidateL()
- {
+void ChspsInstallationHandler::FinalizeParsingL()
+ {
+ // Check resources
TFileName interfacePath( GetInterfacePath() );
if ( interfacePath.Length() )
{
@@ -513,7 +518,7 @@
AddLocalesL( iThemeFilePath );
}
- // Validate input from the manifest
+ // Validate other input from the manifest
CheckHeaderL();
if ( iSecurityEnforcer.CheckThemeLockingL( *iOdt ) )
@@ -747,7 +752,7 @@
_L8( "0" ) );
}
- if ( iRomInstallation )
+ if ( iTrustedInstallation )
{
// Update configuration state to KConfStateConfirmed
hspsServerUtil::SetAttributeValueL(
@@ -798,13 +803,24 @@
User::Leave( KErrNotSupported );
}
- else
+
+ ChspsFamily* family = iThemeServer.Family();
+ if ( !family )
{
- // Store package version
- iOdt->SetPackageVersionL( *iPackageVersion );
+ User::Leave( KErrNotSupported );
}
- // Set the resolution family
+ ThspsFamily familyType = family->GetFamilyType();
+ if ( familyType == EhspsFamilyUnknown )
+ {
+ User::Leave( KErrNotSupported );
+ }
+#if !defined(WINSCW) && !defined(__WINS__)
+ if ( !( familyType & iFamilyMask ) )
+ {
+ User::Leave( KErrNotSupported );
+ }
+#endif // !defined(WINSCW) && !defined(__WINS__)
iOdt->SetFamily( iFamilyMask );
// Store root, provider and theme uid
@@ -1671,7 +1687,11 @@
iPackageVersion = HBufC::NewL( KMaxFileName );
iPackageVersion->Des().Copy( aAttributes[argIndex].Value().DesC() );
// Is manifest supported by this parser?
- iPackageVerSupported = ETrue; //TODO temporarily enable till 0.3 to 1.0 changes have been integrated ( iPackageVersion->Des().Compare(KhspsSupportedManifestVersion) == 0);
+ iPackageVerSupported = EFalse;
+ if ( iPackageVersion->Des().Compare( KhspsSupportedManifestVersion ) == 0 )
+ {
+ iPackageVerSupported = ETrue;
+ }
break;
}
}
@@ -1739,7 +1759,7 @@
iMultiInstance = KMultiInstanceDefaultValue;
}
}
-
+
// -----------------------------------------------------------------------------
// Parsing of the manifest elements.
// -----------------------------------------------------------------------------
@@ -1750,10 +1770,8 @@
if ( localName == KFamily )
{
-#if defined(WINSCW) || defined(__WINS__)
const TPtrC8 familyPtr( iContent->Des() );
- iFamilyMask |= ChspsFamilyListener::GetFamilyType( familyPtr );
-#endif // defined(WINSCW)
+ iFamilyMask |= ChspsFamily::GetFamilyType( familyPtr );
}
else if ( localName == KConfigurationType )
{
@@ -1934,28 +1952,28 @@
}
else if ( localName == KFileXML )
{
- delete iXmlFile;
- iXmlFile = NULL;
- iXmlFile = HBufC::NewL( KMaxFileName );
- TPtr fileDes( iXmlFile->Des() );
-
- fileDes.Copy( iThemeFilePath );
- HBufC* data = CnvUtfConverter::ConvertToUnicodeFromUtf8L( *iContent );
- fileDes.Append( *data );
- delete data;
-
- if( !BaflUtils::FileExists( iFsSession, fileDes ) )
+ if( iContent )
{
-#ifdef HSPS_LOG_ACTIVE
- if( iLogBus )
+ // Convert from 8 to 16bit string
+ HBufC* nameBuf = CnvUtfConverter::ConvertToUnicodeFromUtf8L( *iContent );
+ // Find full path to the file
+ TFileName fullName;
+ hspsServerUtil::FindFile(
+ iFsSession,
+ iThemeFilePath,
+ nameBuf->Des(),
+ fullName );
+ delete nameBuf;
+ nameBuf = NULL;
+ if( !fullName.Length() )
{
- iLogBus->LogText( _L( "ChspsInstallationHandler::OnEndElementL(): - XML file does not exist '%S'" ),
- &fileDes );
+ iFileNotFound = ETrue;
+ iResult->iXuikonError = KErrXmlFileNotFound;
+ User::Leave( KErrNotFound );
}
-#endif
-
- iFileNotFound = ETrue;
- iResult->iXuikonError = KErrXmlFileNotFound;
+ delete iXmlFile;
+ iXmlFile = NULL;
+ iXmlFile = fullName.AllocL();
}
}
else if ( localName == KFileDTD )
@@ -2256,105 +2274,114 @@
CleanupStack::PopAndDestroy( dtdPath );
}
+// -----------------------------------------------------------------------------
+// ChspsInstallationHandler::AddInterfaceResourcesV2L
+// -----------------------------------------------------------------------------
+//
void ChspsInstallationHandler::AddInterfaceResourcesV2L(
const TDesC& aPath )
- {
- // Find all locale specific subfolders
- TFindFile fileFinder( iFsSession );
- _LIT( KFilter, "*" );
- CDir* fileList( NULL );
- fileFinder.FindWildByDir( KFilter, aPath, fileList );
- if ( fileList )
- {
- CleanupStack::PushL( fileList );
- TFileName localePath;
- for( TInt i = 0; i < fileList->Count(); i++ )
+ {
+ RArray<TInt> driveArray;
+ CleanupClosePushL( driveArray );
+
+ // Set search order for eclipsing, only the ROM and UDA drives should be scanned
+ driveArray.Append( EDriveC );
+ driveArray.Append( EDriveZ );
+
+ // Find all unique locale entries under the Xuikon folders in either drive
+ RPointerArray<HBufC> locales;
+ CleanupClosePushL( locales );
+ hspsServerUtil::FindFilesRecursivelyL(
+ iFsSession,
+ driveArray,
+ aPath,
+ locales,
+ EFalse );
+
+ // Find all file entries under the Xuikon folders in either drive
+ RPointerArray<HBufC> folders;
+ CleanupClosePushL( folders );
+ hspsServerUtil::FindFilesRecursivelyL(
+ iFsSession,
+ driveArray,
+ aPath,
+ folders,
+ ETrue );
+
+ // Loop language folders
+ for(TInt localeIndex=0; localeIndex < locales.Count(); localeIndex++ )
+ {
+ TParsePtrC localeParser( locales[ localeIndex ]->Des() );
+ TPath localePath = localeParser.Path();
+
+ TPath tempPath = locales[ localeIndex ]->Des();
+ if( tempPath.Right( KPathDelim().Length() ).Compare( KPathDelim() ) == 0 )
{
- const TEntry& entry = (*fileList)[i];
- if ( entry.IsDir() )
+ tempPath.Delete( tempPath.Length() - KPathDelim().Length(), KPathDelim().Length() );
+ }
+ TParsePtrC tempParser( tempPath );
+ TFileName localeName = tempParser.Name();
+ TInt languageIndex = 0;
+ TLex lex( localeName );
+ if( lex.Val( languageIndex ) != KErrNone )
+ {
+ continue;
+ }
+ if( languageIndex < ELangTest )
+ {
+ User::Leave( KErrIllegalInstallation );
+ }
+
+ // If we found the first language specification
+ if ( !iDefaultSpecificationSet )
+ {
+ // Assume this is the default language shown when device language is not supported
+ iDefaultSpecification = (TLanguage)languageIndex;
+ iDefaultSpecificationSet = ETrue;
+ }
+
+ // Loop file resources which should be found from either drive
+ ChspsResource* resource = NULL;
+ for( TInt resourceIndex=0; resourceIndex < iTempLocalizedResourceList->Count(); resourceIndex++ )
+ {
+ resource = iTempLocalizedResourceList->At( resourceIndex );
+ TFileName file;
+
+ for( TInt folderIndex=0; folderIndex < folders.Count(); folderIndex++ )
{
- TInt languageIndex = 0;
- TLex lex( entry.iName );
- TInt error = lex.Val( languageIndex );
-
- // See enumarations from e32lang.h
- if( !error && languageIndex >= ELangTest )
- {
- // If we found the first language specification
- if ( !iDefaultSpecificationSet )
+ TParsePtrC folderParser( folders[ folderIndex ]->Des() );
+ TPath folderPath = folderParser.Path();
+ TFileName name = folderParser.Name();
+
+ if( localePath.CompareF( folderPath ) == 0 )
+ {
+ TFileName fixedName = hspsServerUtil::GetFixedOdtName( folderParser.NameAndExt() );
+ if( fixedName.CompareF( resource->FileName() ) == 0 )
{
- // Assume this is the default language shown incase
- // there is no locale for the active UI language
- iDefaultSpecification = (TLanguage)languageIndex;
- iDefaultSpecificationSet = ETrue;
+ file = folders[ folderIndex ]->Des();
+ break;
}
-
- // Setup a path to the subdirectory
- localePath.Copy( aPath );
- localePath.Append( entry.iName );
- localePath.Append( KPathDelim );
-
- // Find localized resources
- AddLocalizedResourcesV2L(
- localePath,
- (TLanguage)languageIndex );
- }
+ }
}
-
- }
- CleanupStack::PopAndDestroy( fileList );
- fileList = NULL;
- }
-
- // If no DTD files were found
- if ( iDefaultSpecification != ELangTest || !iDefaultSpecificationSet )
- {
- // Halt installation, test language was not found
- User::Leave( KErrNotFound );
- }
- }
-
-void ChspsInstallationHandler::AddLocalizedResourcesV2L(
- const TDesC& aPath,
- const TLanguage aLanguage )
- {
- TFindFile fileFinder( iFsSession );
- _LIT( KFilter, "*" );
- CDir* fileList( NULL );
- fileFinder.FindWildByDir( KFilter, aPath, fileList );
- if ( fileList )
- {
- CleanupStack::PushL( fileList );
-
- TFileName localePath;
- ChspsResource* resource = NULL;
- for( TInt i = 0; i < fileList->Count(); i++ )
- {
- const TEntry& entry = (*fileList)[i];
- if ( !entry.IsDir() )
- {
- TParsePtrC parserPtr( entry.iName );
- TFileName modName = hspsServerUtil::GetFixedOdtName( entry.iName );
-
- TBool addingOk = EFalse;
- for( TInt resourceIndex=0; resourceIndex < iTempLocalizedResourceList->Count(); resourceIndex++ )
- {
- resource = iTempLocalizedResourceList->At( resourceIndex );
- if( modName.CompareF( resource->FileName() ) == 0 )
+
+ if( file.Length() )
+ {
+ TBool duplicate = EFalse;
+ for( TInt i=0; i< iResourceList->Count(); i++ )
+ {
+ ChspsResource* r = iResourceList->At(i);
+ if( r->Language() == languageIndex
+ && r->FileName().CompareF( file ) == 0 )
{
- addingOk = ETrue;
+ duplicate = ETrue;
break;
}
}
- if ( addingOk )
- {
- HBufC* resourcePath = HBufC::NewLC( aPath.Length() + entry.iName.Length() );
- resourcePath->Des().Copy( aPath );
- resourcePath->Des().Append( entry.iName );
-
+ if( !duplicate )
+ {
+
TPtrC8 mimeType;
- TPtrC8 tag;
-
+ TPtrC8 tag;
HBufC8* tagBuf8 = NULL;
if ( resource->Tags().Length() )
{
@@ -2362,12 +2389,12 @@
tagBuf8->Des().Copy( resource->Tags() );
tag.Set( tagBuf8->Des() );
}
-
+
// Add localized files into the resource array
AddResourceL(
*iResourceList,
- *resourcePath,
- aLanguage,
+ file,
+ (TLanguage)languageIndex,
EResourceOther,
mimeType,
tag );
@@ -2376,16 +2403,24 @@
{
CleanupStack::PopAndDestroy( tagBuf8 );
}
- CleanupStack::PopAndDestroy( resourcePath );
- }
+
+ }
}
}
-
- CleanupStack::PopAndDestroy( fileList );
- fileList = NULL;
- }
- }
+ }
+
+ folders.ResetAndDestroy();
+ locales.ResetAndDestroy();
+ CleanupStack::PopAndDestroy( 3, &driveArray ); // driveArray, locales, folders,
+
+ if ( iDefaultSpecification != ELangTest || !iDefaultSpecificationSet )
+ {
+ // Halt installation, test language was not found
+ User::Leave( KErrNotFound );
+ }
+ }
+
// -----------------------------------------------------------------------------
// Finds locale specific subdirectories and resources and appends those
// into the resource array
@@ -2576,7 +2611,7 @@
// check whether skin/mif/uid declarations were used
TFileName filename;
- if ( hspsServerUtil::IsFile( resultPtr, filename ) )
+ if ( hspsServerUtil::IsLogoFile( resultPtr, filename ) )
{
// check whether the file reference is valid
TPath fullname;
--- a/homescreenpluginsrv/hspsmanager/src/hspsmaintenancehandler.cpp Wed Mar 03 15:38:34 2010 +0200
+++ b/homescreenpluginsrv/hspsmanager/src/hspsmaintenancehandler.cpp Wed May 12 13:36:47 2010 +0300
@@ -91,14 +91,15 @@
ChspsThemeServer& aThemeServer,
const TUint aSecureId ):
CTimer(EPriorityLow),
- iLanguage ( aThemeServer.DeviceLanguage() ),
iThemeServer( aThemeServer ),
iSecureId( aSecureId ),
iCentralRepository( aThemeServer.CentralRepository() ),
iDefinitionRepository( aThemeServer.DefinitionRepository() ),
iSecurityEnforcer( aThemeServer.SecurityEnforcer() ),
iHeaderListCache( aThemeServer.HeaderListCache() ),
- iFileMan( NULL )
+ iServerSession( NULL ),
+ iFileMan( NULL ),
+ iMaintainLogoResources( EFalse )
{
iDeliveryCount = 0;
iSubscription = EFalse;
@@ -194,11 +195,11 @@
}
iSearchMask = ChspsODT::NewL();
iSearchMask->UnMarshalHeaderL(searchMaskData);
-
- // check the device language
- iLanguage = iThemeServer.DeviceLanguage();
- iSearchMask->SetOdtLanguage( (TInt)iLanguage );
-
+
+ iMaintainLogoResources = EFalse;
+ TPckg<TInt> intPkg( iMaintainLogoResources );
+ messagePtr.ReadL(3, intPkg );
+
// now there is a subscription
iSubscription = ETrue;
// fetch the header list from repository
@@ -242,9 +243,6 @@
// is there headers to delivere left
if (iHeaderDataList->Count() > iDeliveryCount)
{
- // Handle copying of logo icon resources
- CopyIconsToHomescreenL( aMessage.SecureId().iId );
-
// at least one header on the list
TPtr8 bufPtr( iHeaderDataList->At(iDeliveryCount)->Des() );
iMessagePtr.WriteL(2, bufPtr, 0);
@@ -262,82 +260,6 @@
}
}
-// -----------------------------------------------------------------------------
-// ChspsMaintenanceHandler::CopyIconsToHomescreenL
-// -----------------------------------------------------------------------------
-//
-void ChspsMaintenanceHandler::CopyIconsToHomescreenL(
- const TUint aAppUid )
- {
- HBufC8* headerData = iHeaderDataList->At(iDeliveryCount);
- ChspsODT* header = ChspsODT::UnMarshalHeaderLC( headerData->Des() );
- if ( iServerSession && header )
- {
- if( header->LogoFile().Length() )
- {
- // If a file reference was found from the logo declaration
- TFileName filename;
- if ( hspsServerUtil::IsFile( header->LogoFile(), filename ) )
- {
- if ( !iFileMan )
- {
- iFileMan = CFileMan::NewL( iServerSession->FileSystem() );
- }
-
- // Get client's private directory:
- // We should use some common directory if there are more than one SAPI clients,
- // for now we can copy files to AI3's private folder
- _LIT( KPrivatePath, "c:\\private\\%X\\");
- TPath privatePath;
- privatePath.Format( KPrivatePath, aAppUid );
-
- // Append private path to the logo file reference
- TInt offset = header->LogoFile().FindF( filename );
- if ( offset >= 0 )
- {
- // Insert private path prior to the file reference
- HBufC* logoBuf = HBufC::NewLC(
- privatePath.Length() + header->LogoFile().Length() );
- logoBuf->Des().Copy( header->LogoFile() );
- logoBuf->Des().Insert( offset, privatePath );
- header->SetLogoFileL( logoBuf->Des() );
- CleanupStack::PopAndDestroy( logoBuf );
-
- // Replace the serialized header descriptor
- HBufC8* newHeaderData = header->MarshalHeaderL();
- CleanupStack::PushL( newHeaderData );
- iHeaderDataList->InsertL(
- iDeliveryCount,
- newHeaderData );
- CleanupStack::Pop( newHeaderData );
- delete headerData;
- headerData = 0;
- iHeaderDataList->Delete( iDeliveryCount + 1 );
- }
-
- // Set target directory for file copying
- TPath targetPath;
- targetPath.Copy( privatePath );
- targetPath.Append( filename );
-
- // Set source directory for file copying
- TFileName sourceFile;
- _LIT( KThemesFolder, "themes\\" );
- iServerSession->FileSystem().SessionPath( sourceFile );
- sourceFile.Append( KThemesFolder );
- sourceFile.Append( filename );
-
- // Create the target path and copy files when required
- hspsServerUtil::CopyResourceFileL(
- iServerSession->FileSystem(),
- *iFileMan,
- targetPath,
- sourceFile );
- }
- }
- }
- CleanupStack::PopAndDestroy( header );
- }
// -----------------------------------------------------------------------------
// ChspsMaintenanceHandler::SetServerSession
@@ -1120,7 +1042,7 @@
CleanupStack::PushL( pluginIter );
ChspsDomNode* pluginNode = pluginIter->First();
TBool steppingtoConfNode(EFalse);
- while(pluginNode && !steppingtoConfNode)
+ while( pluginNode && !steppingtoConfNode )
{
const TDesC8& pluginNodeName = pluginNode->Name();
@@ -1135,10 +1057,18 @@
}
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());
+ rootCopy->SetParent( node );
+ node->AddChildL( rootCopy );
+ }
+ else
+ {
+ // configuration is corrupted
+ User::Leave( KErrCorrupt );
+ }
}
CleanupStack::PopAndDestroy( pluginOdt );
@@ -1859,14 +1789,20 @@
{
TBool isView = EFalse;
- ChspsDomNode* confNode =
- (ChspsDomNode*)aPluginNode.ChildNodes().FindByName( KConfigurationElement );
+ ChspsDomNode* confNode = static_cast<ChspsDomNode*>(
+ aPluginNode.ChildNodes().FindByName( KConfigurationElement ));
+
if( confNode )
{
- ChspsDomAttribute* typeAttr =
- (ChspsDomAttribute*)confNode->AttributeList().FindByName( KConfigurationAttrType );
- isView = ( typeAttr->Value().CompareF( KConfTypeView ) == 0 );
+ ChspsDomAttribute* typeAttr = static_cast<ChspsDomAttribute*>(
+ confNode->AttributeList().FindByName( KConfigurationAttrType ));
+
+ if( typeAttr )
+ {
+ isView = ( typeAttr->Value().CompareF( KConfTypeView ) == 0 );
+ }
}
+
return isView;
}
@@ -3841,8 +3777,10 @@
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
-ThspsServiceCompletedMessage ChspsMaintenanceHandler::hspsGetListHeaders(const ChspsODT& /*aSearchMask*/,
- CArrayPtrFlat<ChspsODT>& /*aHeaderList*/)
+ThspsServiceCompletedMessage ChspsMaintenanceHandler::hspsGetListHeaders(
+ const ChspsODT& /*aSearchMask*/,
+ const TBool /*aCopyLogos*/,
+ CArrayPtrFlat<ChspsODT>& /*aHeaderList*/)
{
return EhspsServiceNotSupported;
}
@@ -4052,6 +3990,18 @@
{
After(KHeaderListUpdatePollingTimeSpan);
}
+
+ else if( aRepositoryInfo.iEventType & EhspsODTAdded
+ || aRepositoryInfo.iEventType & EhspsODTUpdated )
+ {
+ // If a widget has been installed or updated
+ if( iServerSession )
+ {
+ // Make sure all logos are copied when user retrieves the list
+ iServerSession->SetIconFileCopyRequired( ETrue );
+ }
+ }
+
return EFalse;
}
@@ -4315,37 +4265,83 @@
void ChspsMaintenanceHandler::GetHeaderListL(
CArrayPtrSeg<HBufC8>& aHeaderDataList,
const ChspsODT& aSearchMask )
- {
- HBufC8* headerBuf = aSearchMask.MarshalHeaderL();
- if ( !headerBuf )
- {
- User::Leave(KErrGeneral);
- }
- CleanupStack::PushL( headerBuf );
- ChspsODT* searchOdt = ChspsODT::UnMarshalHeaderLC( *headerBuf );
-
+ {
// Reset search results
aHeaderDataList.ResetAndDestroy();
+
+ if( !iFileMan )
+ {
+ iFileMan = CFileMan::NewL( iServerSession->FileSystem() );
+ }
for ( TInt i = 0; i < iHeaderListCache.Count(); i++ )
{
ChspsODT* header = iHeaderListCache.At( i );
- // Check whether the header matches the search criteria
- if ( FilterHeader( *searchOdt, *header ) )
+ // Header clone is needed because it prevents modifying list cache
+ ChspsODT* clone = header->CloneL();
+ CleanupStack::PushL( clone );
+
+ // Check whether the header matches the search criteria (family etc)
+ if ( FilterHeader( aSearchMask, *clone ) )
{
- // Append to the search results
- HBufC8* data = header->MarshalHeaderL();
+
+ // Update file paths into the existing logo declarations
+ if( clone->LogoFile().Length() &&
+ iMaintainLogoResources &&
+ ( header->ConfigurationType() == EhspsWidgetConfiguration ||
+ header->ConfigurationType() == EhspsTemplateConfiguration ) )
+ {
+
+ RBuf targetFile;
+ CleanupClosePushL( targetFile );
+ targetFile.CreateL( KMaxFileName );
+
+ RBuf sourceFile;
+ CleanupClosePushL( sourceFile );
+ sourceFile.CreateL( KMaxFileName );
+
+ RBuf newDeclaration;
+ CleanupClosePushL( newDeclaration );
+ newDeclaration.CreateL( clone->LogoFile().Length() + KMaxFileName );
+
+ // Find location of the logo file and location where it shold be copied
+ hspsServerUtil::PopulateLogoPathsL(
+ clone->LogoFile(),
+ iSecureId,
+ targetFile,
+ sourceFile,
+ newDeclaration );
+
+ if( targetFile.Length()
+ && sourceFile.Length()
+ && newDeclaration.Length() )
+ {
+ // Update private path information to the logo declaration
+ clone->SetLogoFileL( newDeclaration );
+
+ hspsServerUtil::CopyResourceFileL(
+ iServerSession->FileSystem(),
+ *iFileMan,
+ targetFile,
+ sourceFile );
+ }
+
+ CleanupStack::PopAndDestroy( 3, &targetFile ); // targetFile, sourceFile, newDeclaration
+ }
+
+ // Convert the header to a descriptor
+ HBufC8* data = clone->MarshalHeaderL();
if ( data )
{
+ // Append to the search results
CleanupStack::PushL( data );
aHeaderDataList.AppendL( data );
CleanupStack::Pop( data );
}
}
- }
-
- CleanupStack::PopAndDestroy( 2, headerBuf ); // searchOdt, headerBuf
+ CleanupStack::PopAndDestroy( clone );
+ }
}
// -----------------------------------------------------------------------------
@@ -4555,7 +4551,7 @@
)
&&
(
- ( aMask.ConfigurationType() && aMask.ConfigurationType() == aHeader.ConfigurationType() )
+ ( aMask.ConfigurationType() && ( aHeader.ConfigurationType() == aMask.ConfigurationType() ) )
||
( !aMask.ConfigurationType() )
)
@@ -4580,14 +4576,15 @@
ChspsODT& aOdt)
{
+ // If active application configuration is LicenceeRestorable
if ( aHeader->Flags() & EhspsThemeStatusLicenceeRestorable )
{
- // Licensee restorable configuration active -> Reinstall configuration
+ // Reinstall the configuration from ROM
iThemeServer.ReinstallConfL( aHeader->RootUid(), aHeader->ThemeUid() );
}
else
{
- // Get licensee restorable configuation
+ // Try to activate a configuation with the LicenceeRestorable status
ChspsODT* searchMask = ChspsODT::NewL();
CleanupStack::PushL( searchMask );
searchMask->SetRootUid( aHeader->RootUid() );
@@ -4722,10 +4719,7 @@
// Get active root configuration for the client application
ChspsODT* appODT = ChspsODT::NewL();
- CleanupStack::PushL( appODT );
- iThemeServer.GetActivateAppConfigurationL(
- params.appUid,
- *appODT );
+ CleanupStack::PushL( appODT );
#ifdef HSPS_LOG_ACTIVE
if( iLogBus )
@@ -4740,12 +4734,20 @@
TInt err = KErrNone;
if ( !params.restoreAll )
{
- // Remove all widgets from the active view
- err = RestoreActiveViewL( *appODT );
- }
+ // reinstall all widgets
+ TRAP( err, iThemeServer.InstallWidgetsL();
+ iThemeServer.InstallUDAWidgetsL() );
+
+ // Force updating of the header cache
+ iThemeServer.UpdateHeaderListCacheL();
+ }
+
+ iThemeServer.GetActivateAppConfigurationL(
+ params.appUid,
+ *appODT );
// As a backup, if restoration of the active view fails,
- // or if all views but the locked view should be removed
+ // or if all views but the locked view should be removedc
if ( err || params.restoreAll )
{
// Remove all views but the locked one and reset active view
--- a/homescreenpluginsrv/hspsmanager/src/hspsrominstaller.cpp Wed Mar 03 15:38:34 2010 +0200
+++ b/homescreenpluginsrv/hspsmanager/src/hspsrominstaller.cpp Wed May 12 13:36:47 2010 +0300
@@ -27,8 +27,14 @@
#include "hspsclientrequesthandler.h"
#include "hspsserverutil.h"
-_LIT( KInstallDirectoryZ, "z:\\private\\200159c0\\install\\" );
-_LIT( KHsps, "hsps");
+_LIT(KPrivateInstallZ, "Z:\\private\\200159c0\\install\\");
+_LIT(KPrivateInstallC, "C:\\private\\200159c0\\install\\");
+_LIT(KMaskAllFiles, "*");
+_LIT(KBackslash, "\\");
+_LIT(KHsps, "hsps");
+_LIT(KTestLanguage, "00");
+_LIT(KManifest, "manifest.dat");
+
// ========================= MEMBER FUNCTIONS ==================================
@@ -95,108 +101,189 @@
ChspsRomInstaller::~ChspsRomInstaller()
{
Cancel(); // Causes call to DoCancel()
- delete iInstallationHandler;
- iImportsArrayV1.ResetAndDestroy();
+ delete iInstallationHandler;
}
// -----------------------------------------------------------------------------
-// ChspsRomInstaller::SetImportsFilterL()
+// ChspsRomInstaller::InstallL()
// -----------------------------------------------------------------------------
//
-TBool ChspsRomInstaller::SetImportsFilterL(
- const TDesC& aFileFilter )
+void ChspsRomInstaller::InstallL()
{
- TFindFile fileFinder( iFsSession );
- CDir* fileList( NULL );
- fileFinder.FindWildByDir( aFileFilter, KInstallDirectoryZ, fileList );
- if ( fileList )
- {
- CleanupStack::PushL( fileList );
+ RPointerArray<HBufC> pluginFolders;
+ CleanupClosePushL( pluginFolders );
+
+ // Find UDA and ROM widgets to be installed
+ FindInstallationFilesL( pluginFolders );
+
+ // Install the manifest files
+ for( TInt index=0; index < pluginFolders.Count(); index++ )
+ {
+ TPtrC namePtr( pluginFolders[index]->Des() );
- TFileName sourceName;
- for( TInt i = 0; i < fileList->Count(); i++ )
+ // Synchronous method
+ ThspsServiceCompletedMessage ret = EhspsInstallThemeFailed;
+ TRAP_IGNORE( ret = InstallThemeL( namePtr ) );
+ if ( ret != EhspsInstallThemeSuccess )
{
- const TEntry& entry = (*fileList)[i];
- sourceName.Copy( KInstallDirectoryZ );
- sourceName.Append( entry.iName );
- iImportsArrayV1.AppendL( sourceName.AllocL() );
+// User::Leave( KErrAbort );
}
+ }
+
+ if ( pluginFolders.Count() == 0 )
+ {
+ // Mandatory plugins were missing
+ User::Leave( KErrCorrupt );
+ }
- CleanupStack::PopAndDestroy( fileList );
- fileList = NULL;
- }
-
- return EFalse;
+ pluginFolders.ResetAndDestroy();
+ CleanupStack::PopAndDestroy( 1, &pluginFolders );
+ }
+
+
+// -----------------------------------------------------------------------------
+// ChspsRomInstaller::FindInstallationFilesL()
+// -----------------------------------------------------------------------------
+//
+void ChspsRomInstaller::FindInstallationFilesL(
+ RPointerArray<HBufC>& aFolders )
+ {
+ __ASSERT_DEBUG( aFolders.Count() == 0, User::Leave( KErrArgument ) );
+
+ DoFindInstallationFilesL( aFolders, KPrivateInstallC );
+ DoFindInstallationFilesL( aFolders, KPrivateInstallZ );
}
// -----------------------------------------------------------------------------
-// ChspsRomInstaller::GetInstallationFoldersL()
+// ChspsRomInstaller::DoFindInstallationFilesL()
// -----------------------------------------------------------------------------
//
-void ChspsRomInstaller::GetInstallationFoldersL(
- RPointerArray<HBufC>& aFolders )
- {
- aFolders.ResetAndDestroy();
-
- _LIT(KAllFolders, "*");
- _LIT(KFolderSuffix, "\\");
- CDir* fileList( NULL );
+void ChspsRomInstaller::DoFindInstallationFilesL(
+ RPointerArray<HBufC>& aFolders,
+ const TDesC& aPath )
+ {
TFindFile fileFinder( iFsSession );
- fileFinder.FindWildByDir( KAllFolders, KInstallDirectoryZ, fileList );
- if ( fileList )
+ fileFinder.SetFindMask(
+ KDriveAttExclude|KDriveAttRemovable|KDriveAttRemote|KDriveAttSubsted );
+ CDir* dirList( NULL );
+ fileFinder.FindWildByDir( KMaskAllFiles, aPath, dirList );
+ if ( dirList )
{
- CleanupStack::PushL( fileList );
-
- TFileName sourceName;
- TBool verChecked = EFalse;
- for( TInt i = 0; i < fileList->Count(); i++ )
+ CleanupStack::PushL( dirList );
+
+ const TInt count = dirList->Count();
+ const TInt KMaxEntryLength = KMaxFileName - 50;
+ for( TInt i = 0; i < count; i++ )
{
- const TEntry& entry = (*fileList)[i];
- if ( entry.IsDir() )
- {
- const TEntry& entry = (*fileList)[i];
- sourceName.Copy( KInstallDirectoryZ );
- sourceName.Append( entry.iName );
- sourceName.Append( KFolderSuffix );
+ const TEntry& dirEntry = (*dirList)[i];
+ if ( dirEntry.IsDir() )
+ {
+ // Populate path for the manifest file
+ const TEntry& folderEntry = (*dirList)[i];
- if ( !verChecked )
+ // Check for length of the directory name
+ if( dirEntry.iName.Length() > KMaxEntryLength )
{
- // Check whether the V2 directory structure is available
- TFileName nameV2;
- nameV2.Copy( sourceName );
- nameV2.Append( KHsps );
- nameV2.Append( KFolderSuffix );
- if( !BaflUtils::FolderExists( iFsSession, nameV2 ) )
- {
- CleanupStack::PopAndDestroy( fileList );
- return;
- }
- verChecked = ETrue;
+ // Skip plugins which have too long name
+ continue;
}
- aFolders.AppendL( sourceName.AllocL() );
+ TFileName manifest( aPath );
+ manifest.Append( dirEntry.iName );
+ manifest.Append( KBackslash );
+ manifest.Append( KHsps );
+ manifest.Append( KBackslash );
+ manifest.Append( KTestLanguage );
+ manifest.Append( KBackslash );
+ manifest.Append( KManifest );
+
+ if( !BaflUtils::FileExists( iFsSession, manifest ) )
+ {
+ continue;
+ }
+
+ // Check for duplicates
+ TBool isShadowed = EFalse;
+ TParsePtrC manifestPtr( manifest );
+ for( TInt i=0; i < aFolders.Count(); i++ )
+ {
+ TParsePtrC ptr( aFolders[i]->Des() );
+ if( ptr.Path() == manifestPtr.Path() )
+ {
+ isShadowed = ETrue;
+ break;
+ }
+ }
+
+ if( !isShadowed )
+ {
+ // Append the drive information (C or Z)
+ TFileName driveIncluded;
+ hspsServerUtil::FindFile(
+ iFsSession,
+ manifest,
+ KNullDesC,
+ driveIncluded );
+ if( driveIncluded.Length() )
+ {
+ HBufC* nameBuf = driveIncluded.AllocLC();
+ aFolders.AppendL( nameBuf );
+ CleanupStack::Pop( nameBuf );
+ }
+ }
}
}
- CleanupStack::PopAndDestroy( fileList );
- fileList = NULL;
- }
- }
-
-void ChspsRomInstaller::FindImportsV1L()
- {
- iImportsArrayV1.ResetAndDestroy();
- SetImportsFilterL( KFilterAllPluginImportsV1 );
- SetImportsFilterL( KFilterAllAppImportsV1 );
+ CleanupStack::PopAndDestroy( dirList );
+ dirList = 0;
+ }
}
// -----------------------------------------------------------------------------
-// ChspsRomInstaller::ImportsV1
+// ChspsRomInstaller::FindInstallationFileL
// -----------------------------------------------------------------------------
//
-const RPointerArray<HBufC>& ChspsRomInstaller::ImportsV1()
- {
- return iImportsArrayV1;
+void ChspsRomInstaller::FindInstallationFileL(
+ const TInt aConfigurationUid,
+ TFileName& aManifest )
+ {
+ aManifest.FillZ();
+
+ _LIT(KFormat, "*_%X");
+ TFileName fileMask;
+ fileMask.Format( KFormat, aConfigurationUid );
+
+ TFindFile fileFinder( iFsSession );
+ CDir* dirList( NULL );
+ fileFinder.FindWildByDir( fileMask, KPrivateInstallZ, dirList );
+ if ( !dirList )
+ {
+ User::Leave( KErrNotFound );
+ }
+
+ CleanupStack::PushL( dirList );
+
+ const TInt count = dirList->Count();
+ for( TInt i = 0; i < count; i++ )
+ {
+ const TEntry& dirEntry = (*dirList)[i];
+ if ( dirEntry.IsDir() )
+ {
+ // Populate path for the manifest file
+ const TEntry& folderEntry = (*dirList)[i];
+
+ aManifest.Copy( KPrivateInstallZ );
+ aManifest.Append( dirEntry.iName );
+ aManifest.Append( KBackslash );
+ aManifest.Append( KHsps );
+ aManifest.Append( KBackslash );
+ aManifest.Append( KTestLanguage );
+ aManifest.Append( KBackslash );
+ aManifest.Append( KManifest );
+ break;
+ }
+ }
+ CleanupStack::PopAndDestroy( dirList );
}
// -----------------------------------------------------------------------------
@@ -209,7 +296,9 @@
// Start installation by reading the manifest file
iRet = iInstallationHandler->hspsInstallTheme( aFileName, iHeaderData );
if ( iRet == EhspsInstallThemeSuccess && !IsActive() )
- {
+ {
+ iRet = EhspsInstallThemeFailed;
+
// Continue with remaining installation phases
SetActive();
iInstallationHandler->hspsInstallNextPhaseL( iHeaderData, iStatus );
@@ -228,52 +317,44 @@
ThspsServiceCompletedMessage ChspsRomInstaller::ReinstallThemeL(
const TInt aAppUid,
const TInt aConfigurationUid )
- {
+ {
+ __ASSERT_DEBUG( aAppUid > 0 && aConfigurationUid > 0, User::Leave( KErrArgument ) );
+
ThspsServiceCompletedMessage ret = EhspsInstallThemeFailed;
- iImportsArrayV1.ResetAndDestroy();
-
- if ( aAppUid > 0 && aConfigurationUid > 0 )
- {
- // Setup a filter for finding a specific import
- _LIT(KFormat, "app_%X_*_%X_1.0.dat");
- HBufC* filter = HBufC::NewLC( KMaxFileName );
- filter->Des().AppendFormat( KFormat, aAppUid, aConfigurationUid );
- SetImportsFilterL( *filter );
- CleanupStack::PopAndDestroy( filter );
-
- // There should be only one import matching the UIDs
- if ( iImportsArrayV1.Count() == 1 )
- {
- // Get path for a manifest from the import's file name
- HBufC* manifestBuf = iThemeServer.GetManifestFromImportLC(
- iImportsArrayV1[0]->Des(),
- KInstallDirectoryZ );
- if ( manifestBuf )
- {
- // Sync request
- ret = InstallThemeL( manifestBuf->Des() );
- CleanupStack::PopAndDestroy( manifestBuf );
- }
+ // Find an installation file from the ROM
+ TFileName manifest;
+ FindInstallationFileL(
+ aConfigurationUid,
+ manifest );
+ if ( manifest.Length() > 0 )
+ {
+ // Install the plugin configuration (sync request)
+ ret = InstallThemeL( manifest );
+ }
+ if( ret == EhspsInstallThemeSuccess )
+ {
+ // The installed application configuration should now hold only plugin references,
+ // in addition it hasn't been updated to the header cache
+ iThemeServer.UpdateHeaderListCacheL();
+
+ // Complete reinstallation of the application configuration
+ ChspsODT* odt = ChspsODT::NewL();
+ CleanupStack::PushL( odt );
+ User::LeaveIfError( iThemeServer.GetConfigurationL( aAppUid, aConfigurationUid, *odt ) );
+ if ( odt->ConfigurationType() == EhspsAppConfiguration )
+ {
+ ChspsClientRequestHandler* clientReqHandler = ChspsClientRequestHandler::NewL( iThemeServer );
+ CleanupStack::PushL( clientReqHandler );
+
+ // Append configurations from referred plugins to the application configuration's DOM
+ clientReqHandler->HandlePluginReferencesL( *odt );
+
+ CleanupStack::PopAndDestroy( clientReqHandler );
}
-
- iImportsArrayV1.ResetAndDestroy();
+ CleanupStack::PopAndDestroy( odt );
}
- // Complete application configuration reinstallation
- ChspsODT* odt = ChspsODT::NewL();
- CleanupStack::PushL( odt );
- User::LeaveIfError( iThemeServer.GetConfigurationL( aAppUid, aConfigurationUid, *odt ) );
- if ( odt->ConfigurationType() == EhspsAppConfiguration )
- {
- // Add plugin configurations to the application configuration
- ChspsClientRequestHandler* clientReqHandler = ChspsClientRequestHandler::NewL( iThemeServer );
- CleanupStack::PushL( clientReqHandler );
- clientReqHandler->HandlePluginReferencesL( *odt );
- CleanupStack::PopAndDestroy( clientReqHandler );
- }
- CleanupStack::PopAndDestroy( odt );
-
return ret;
}
@@ -295,6 +376,7 @@
//
TInt ChspsRomInstaller::RunError( TInt /*aError*/ )
{
+ iRet = EhspsInstallThemeFailed;
// Called when error occurred in asynchronous request
CActiveScheduler::Stop();
return KErrNone;
--- a/homescreenpluginsrv/hspsmanager/src/hspsserverutil.cpp Wed Mar 03 15:38:34 2010 +0200
+++ b/homescreenpluginsrv/hspsmanager/src/hspsserverutil.cpp Wed May 12 13:36:47 2010 +0300
@@ -1660,10 +1660,10 @@
}
// -----------------------------------------------------------------------------
-// hspsServerUtil::IsFile
+// hspsServerUtil::IsLogoFile
// -----------------------------------------------------------------------------
//
-TBool hspsServerUtil::IsFile(
+TBool hspsServerUtil::IsLogoFile(
const TDesC& aFileDeclaration,
TFileName& aFilename )
{
@@ -1842,6 +1842,177 @@
CleanupStack::PopAndDestroy( iter );
return targetNode;
}
+
+
+// -----------------------------------------------------------------------------
+ // hspsServerUtil::FindFile
+ // Eclipsing support for customization
+ // -----------------------------------------------------------------------------
+ //
+ TInt hspsServerUtil::FindFile(
+ RFs& aFs,
+ const TDesC& aPath,
+ const TDesC& aFilename,
+ TFileName& aDrivePathName )
+ {
+ TInt err = KErrNotFound;
+
+ TParsePtrC parser( aPath );
+ const TPath path = parser.Path();
+
+ TFileName filename( aFilename );
+ if( filename.Length() == 0 )
+ {
+ filename.Copy( parser.NameAndExt() );
+ }
+
+ if( filename.Length() > 0 && path.Length() > 0 )
+ {
+ // Find the input file, search from the user area (UDA) first,
+ // exclude external/remote drives from the search - otherwise end-users
+ // could introduce fixed configurations (e.g. operator locks wouldn't work)
+ TFindFile fileFinder( aFs );
+ fileFinder.SetFindMask(
+ KDriveAttExclude|KDriveAttRemovable|KDriveAttRemote|KDriveAttSubsted );
+ aFs.SetSessionToPrivate( EDriveE );
+ err = fileFinder.FindByDir( filename, path );
+ aFs.SetSessionToPrivate( EDriveC );
+ if( !err )
+ {
+ // Return the path with a drive reference
+ aDrivePathName = fileFinder.File();
+ TParsePtrC drvParser( aDrivePathName );
+ if( !drvParser.DrivePresent() )
+ {
+ err = KErrNotFound;
+ }
+ }
+ }
+
+ return err;
+ }
+
+// -----------------------------------------------------------------------------
+// hspsServerUtil::ResolveLogoPathL
+// -----------------------------------------------------------------------------
+void hspsServerUtil::PopulateLogoPathsL(
+ const TDesC& aLogoDeclaration,
+ const TUint aAppUid,
+ RBuf& aTargetPath,
+ RBuf& aSourcePath,
+ RBuf& aUpdatedDeclaration)
+ {
+ // Process widget types only
+ if ( aLogoDeclaration.Length() && aAppUid > 0 )
+ {
+ // Get possible file name from the optional logo declaration
+ // and if found, populate the paths and update the declaration
+ TFileName filename;
+ if( IsLogoFile( aLogoDeclaration, filename ) )
+ {
+ // Get client's private directory
+ _LIT( KClientPrivatePath, "c:\\private\\%X\\");
+ TPath clientPath;
+ clientPath.Format( KClientPrivatePath, aAppUid );
+
+ // Updated logo declaration
+ TInt offset = aLogoDeclaration.FindF( filename );
+ __ASSERT_DEBUG( offset != KErrNotFound, User::Leave( KErrCorrupt ) );
+ if( aLogoDeclaration.Length() + aLogoDeclaration.Mid( offset ).Length() < KMaxFileName )
+ {
+ aUpdatedDeclaration.Copy( aLogoDeclaration );
+ aUpdatedDeclaration.Insert( offset, clientPath );
+
+ // Set path and name of the target file
+ if( clientPath.Length() + filename.Length() < KMaxFileName )
+ {
+ aTargetPath.Copy( clientPath );
+ aTargetPath.Append( filename );
+
+ // Set name of the source file
+ _LIT( KServerPrivateFolder, "c:\\private\\200159c0\\themes\\" );
+ if( KServerPrivateFolder().Length() + filename.Length() < KMaxFileName )
+ {
+ aSourcePath.Copy( KServerPrivateFolder );
+ aSourcePath.Append( filename );
+ }
+ }
+ }
+
+ }
+ }
+ }
+
+// -----------------------------------------------------------------------------
+// hspsServerUtil::FindFilesRecursivelyL
+// -----------------------------------------------------------------------------
+void hspsServerUtil::FindFilesRecursivelyL(
+ RFs& aFs,
+ const RArray<TInt>& aDriveArray,
+ const TDesC& aPath,
+ RPointerArray<HBufC>& aFolders,
+ TBool aRecursive )
+ {
+ TParsePtrC parser( aPath );
+
+ TFindFile fileFinder( aFs );
+ fileFinder.SetFindMask( KDriveAttExclude|KDriveAttRemovable|KDriveAttRemote|KDriveAttSubsted );
+
+ _LIT(KMaskFile, "*");
+ for( TInt driveIndex=0; driveIndex < aDriveArray.Count(); driveIndex++ )
+ {
+ TChar driveChar;
+ User::LeaveIfError( RFs::DriveToChar( aDriveArray[driveIndex], driveChar ) );
+ TBuf16<2> driveBuf(2);
+ driveBuf[0] = TUint( driveChar );
+ driveBuf[1] = TUint( TChar(':') );
+
+ TPath path;
+ path.Copy( driveBuf );
+ path.Append( parser.Path() );
+
+ CDir* dirList( NULL );
+ fileFinder.FindWildByDir( KMaskFile, path, dirList );
+ if ( dirList )
+ {
+ CleanupStack::PushL( dirList );
+
+ const TInt count = dirList->Count();
+ for( TInt entryIndex = 0; entryIndex < count; entryIndex++ )
+ {
+ const TEntry& entry = (*dirList)[ entryIndex ];
+
+ TFileName file( path );
+ file.Append( entry.iName );
+ if( entry.IsDir() )
+ {
+ file.Append( KDoubleBackSlash );
+ }
+
+ if( !BaflUtils::FileExists( aFs, file ) )
+ {
+ continue;
+ }
+ if( entry.IsDir() && aRecursive )
+ {
+ FindFilesRecursivelyL( aFs, aDriveArray, file, aFolders );
+ }
+ else
+ {
+ HBufC* nameBuf = file.AllocLC();
+ aFolders.AppendL( nameBuf );
+ CleanupStack::Pop( nameBuf );
+ }
+ }
+
+ CleanupStack::PopAndDestroy( dirList );
+ dirList = 0;
+ } // dirlist
+
+ } // driveIndex
+ }
+
+
// -----------------------------------------------------------------------------
// hspsServerUtil::hspsServerUtil
// -----------------------------------------------------------------------------
--- a/homescreenpluginsrv/hspsmanager/src/hspsthemeserver.cpp Wed Mar 03 15:38:34 2010 +0200
+++ b/homescreenpluginsrv/hspsmanager/src/hspsthemeserver.cpp Wed May 12 13:36:47 2010 +0300
@@ -19,6 +19,7 @@
#define __INCLUDE_CAPABILITY_NAMES__
// INCLUDE FILES
+#include <mw/MemoryManager.h>
#include <centralrepository.h>
#include <f32file.h>
#include <bautils.h>
@@ -34,6 +35,7 @@
#include "hspsdefinitionrepository.h"
#include "hspsdefinitionengineinterface.h"
#include "hspsconfiguration.h"
+#include "hspsfamily.h"
#ifdef _hsps_PERFORMANCE_TEST_
#include "hspstimemon.h"
#endif //_hsps_PERFORMANCE_TEST_
@@ -55,8 +57,6 @@
// Directory for the SISX installation files
_LIT( KImportDirectoryC, "c:\\private\\200159c0\\import\\" );
-// Directory for the ROM based installation files
-
// Directories for backup folders
_LIT( KBackupThemesDirectoryC, "c:\\private\\200159c0\\backup\\themes\\" );
@@ -181,6 +181,8 @@
//
TInt E32Main()
{
+ RAllocator* iAllocator = MemoryManager::SwitchToFastAllocator();
+
__UHEAP_MARK;
CTrapCleanup* cleanup=CTrapCleanup::New();
TInt r=KErrNoMemory;
@@ -190,6 +192,9 @@
delete cleanup;
}
__UHEAP_MARKEND;
+
+ MemoryManager::CloseFastAllocator(iAllocator);
+
return r;
}
@@ -312,7 +317,10 @@
// Get active device language
iDeviceLanguage = GetDeviceLanguage();
-
+#ifdef HSPS_LOG_ACTIVE
+ iLogBus->LogText( _L( "ChspsThemeServer::GetDeviceLanguage() %d" ), iDeviceLanguage );
+#endif
+
// Setup a search mask for finding headers from the cache
iCacheMask = ChspsODT::NewL();
@@ -341,10 +349,13 @@
// Start observing the notifications
iDefinitionRepository->RegisterObserverL( *this );
- // Resolution & orientation change listener
+
#if defined(WINSCW) || defined(__WINS__)
- iFamilyListener = ChspsFamilyListener::NewL( *this );
-#endif // defined(WINSCW)
+ // Resolution & orientation change listener
+ iFamily = ChspsFamilyListener::NewL( *this );
+#else
+ iFamily = ChspsFamily::NewL();
+#endif //defined(WINSCW) || defined(__WINS__)
// Auto-localize ODTs in the Definition Repository when the device language has changed
HandleLanguageChangeL();
@@ -400,6 +411,8 @@
delete iLogBus;
iLogBus = NULL;
#endif
+
+ iSessions.Reset();
}
#ifdef _hsps_SERVER_SHUTDOWN_ENABLED_
@@ -434,11 +447,12 @@
DisableAutoInstallation();
#endif //__DISABLE_SISX_INSTALLATION_
-#if defined(WINSCW) || defined(__WINS__)
- delete iFamilyListener;
- iFamilyListener = NULL;
-#endif // defined(WINSCW)
-
+ if ( iFamily )
+ {
+ delete iFamily;
+ iFamily = NULL;
+ }
+
delete iCenRepListener;
iCenRepListener = NULL;
@@ -491,9 +505,14 @@
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
-void ChspsThemeServer::AddSession()
+void ChspsThemeServer::AddSession( ChspsThemeServerSession* aSession )
{
- iSessionCount++;
+ if( aSession == NULL )
+ {
+ return;
+ }
+
+ iSessions.Append( aSession );
#ifdef _hsps_SERVER_SHUTDOWN_ENABLED_
if( iShutdown->IsActive() )
@@ -504,7 +523,7 @@
#ifdef HSPS_LOG_ACTIVE
iLogBus->LogText( _L( "ChspsThemeServer::AddSession(): - now %d concurrent sessions." ),
- iSessionCount );
+ iSessions.Count() );
#endif
}
@@ -515,12 +534,16 @@
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
-void ChspsThemeServer::DropSession()
+void ChspsThemeServer::DropSession( ChspsThemeServerSession* aSession )
{
- iSessionCount--;
+ const TInt index = iSessions.Find( aSession );
+ if( index != KErrNotFound )
+ {
+ iSessions.Remove( index );
+ }
#ifdef _hsps_SERVER_SHUTDOWN_ENABLED_
- if( iSessionCount == 0 )
+ if( iSessions.Count() == 0 )
{
iShutdown->Cancel();
iShutdown->Start();
@@ -529,7 +552,7 @@
#ifdef HSPS_LOG_ACTIVE
iLogBus->LogText( _L( "ChspsThemeServer::DropSession(): - %d concurrent sessions left." ),
- iSessionCount );
+ iSessions.Count() );
#endif
}
@@ -579,7 +602,20 @@
#ifdef HSPS_LOG_ACTIVE
iLogBus->LogText( _L( "--------------------------------------------------------" ) );
#endif
-
+
+ if( aRepositoryInfo.iEventType & EhspsODTUpdated ||
+ aRepositoryInfo.iEventType & EhspsODTModified ||
+ aRepositoryInfo.iEventType & EhspsPluginReplaced )
+ {
+ for( TInt i = 0; i < iSessions.Count(); i++ )
+ {
+ if( iSessions[i]->AppUid() == aRepositoryInfo.iAppUid )
+ {
+ iSessions[i]->SetResourceFileCopyRequired( ETrue );
+ }
+ }
+ }
+
// If header cache should be updated from files in the Plug-in Repository
if (mask & EhspsCacheUpdate)
{
@@ -1854,10 +1890,6 @@
//
TLanguage ChspsThemeServer::GetDeviceLanguage()
{
-#ifdef HSPS_LOG_ACTIVE
- iLogBus->LogText( _L( "ChspsThemeServer::GetDeviceLanguage(): %d returned" ), User::Language() );
-#endif
-
return User::Language();
}
@@ -2241,6 +2273,7 @@
ChspsODT& aOdt )
{
TBool localized = ETrue;
+ iFsSession.SetSessionToPrivate( EDriveC );
TLanguage requestedLanguage = DeviceLanguage();
if ( requestedLanguage == ELangNone )
@@ -2580,6 +2613,47 @@
}
// -----------------------------------------------------------------------------
+// ChspsThemeServer::InstallUDAWidgetsL()
+// -----------------------------------------------------------------------------
+//
+void ChspsThemeServer::InstallUDAWidgetsL()
+ {
+ //Get list of uda dir's
+ TPtrC filter( KFilterAllPluginImportsV1 );
+ CDir* importDir( NULL );
+ TFindFile fileFinder( iFsSession );
+ fileFinder.FindWildByDir( filter, KImportDirectoryC, importDir );
+ CleanupStack::PushL( importDir );
+
+ if ( importDir && importDir->Count() > 0 )
+ {
+ CHSPSInstaller* installer = CHSPSInstaller::NewL( *this );
+ CleanupStack::PushL( installer );
+
+ for ( TInt i = 0; i < importDir->Count(); i++ )
+ {
+ TPtrC udaName( (*importDir)[i].iName );
+ // Get manifest path
+ HBufC* manifestBuf = GetManifestFromImportLC(
+ udaName,
+ KImportDirectoryC );
+
+ //install
+ TRAPD( err, installer->InstallConfigurationL( *manifestBuf ) );
+ if ( err != KErrNone )
+ {
+#ifdef HSPS_LOG_ACTIVE
+ iLogBus->LogText( _L( "ChspsThemeServer::InstallUDAWidgetsL(): - Installation failed" ) );
+#endif
+ }
+ CleanupStack::PopAndDestroy( manifestBuf );
+ }
+ CleanupStack::PopAndDestroy( installer );
+ }
+ CleanupStack::PopAndDestroy( importDir );
+ }
+
+// -----------------------------------------------------------------------------
// ChspsThemeServer::HandleRomInstallationsL()
// -----------------------------------------------------------------------------
//
@@ -2612,9 +2686,12 @@
if( ( errorCode == KErrNone ) &&
( fwVersion.Length() == 0 ) )
{
- // Install manifest files from ROM
- InstallManifestsFromRomDriveL();
+ // Install widgets from \private\200159C0\install\ directories (ROM and UDA image)
+ InstallWidgetsL();
+ // Install widgets from \private\200159C0\imports\ directory (UDA image)
+ InstallUDAWidgetsL();
+
// Post RFS installations have been done, prevent re-installations at next startup
// by reading firmware version and saving it to cenrep.
GetFWVersion( fwVersion );
@@ -2647,7 +2724,7 @@
{
// Phone software has been updated.
CreateBackupDataL();
- InstallManifestsFromRomDriveL();
+ InstallWidgetsL();
RestoreApplicationConfigurationsL();
// Save new firmware version to cenrep
if ( errorCode == KErrNone )
@@ -2684,76 +2761,27 @@
// Activate client specific root configurations from active display resolution
ActivateRootConfigurationsL();
#endif // defined(WINSCW)
-
+
res.Close();
CleanupStack::PopAndDestroy(1, &res);
}
// -----------------------------------------------------------------------------
-// ChspsThemeServer::InstallManifestsFromRomDriveL()
+// ChspsThemeServer::InstallWidgetsL()
// -----------------------------------------------------------------------------
//
-void ChspsThemeServer::InstallManifestsFromRomDriveL()
- {
- if ( iRomInstaller || iManifestFiles.Count() )
- {
- // Invalid usage
- User::Leave( KErrGeneral );
- }
+void ChspsThemeServer::InstallWidgetsL()
+ {
+ __ASSERT_DEBUG( !iRomInstaller, User::Leave( KErrGeneral) );
iRomInstaller = ChspsRomInstaller::NewL( *this, iFsSession );
#ifdef HSPS_LOG_ACTIVE
iRomInstaller->SetLogBus( iLogBus );
#endif
-
- // An array for installation files with V2 directory structure
- RPointerArray<HBufC> pluginFolders;
- CleanupClosePushL( pluginFolders );
-
- // Retrieve an array of folder names
- iRomInstaller->GetInstallationFoldersL( pluginFolders );
- // Add manifest files from the subfolders
- FindRomInstallationsV2L( pluginFolders );
-
- pluginFolders.ResetAndDestroy();
-
- if ( iManifestFiles.Count() < 1 )
- {
-#ifdef HSPS_LOG_ACTIVE
- iLogBus->LogText( _L( "ChspsThemeServer::InstallManifestsFromRomDriveL(): - mandatory plugins were not found from the ROM drive!" ) );
-#endif
- // Mandatory plugins were missing from the ROM drive
- User::Leave( KErrGeneral );
- }
-
- CleanupStack::PopAndDestroy( 1, &pluginFolders );
-
-
- // Install configurations from the manifest files
- ThspsServiceCompletedMessage ret = EhspsInstallThemeFailed;
- for( TInt manifestIndex=0; manifestIndex < iManifestFiles.Count(); manifestIndex++ )
- {
- // Synchronous API call
- TPtr name( iManifestFiles[manifestIndex]->Des() );
-#ifdef HSPS_LOG_ACTIVE
- iLogBus->LogText( _L( "ChspsThemeServer::InstallManifestsFromRomDriveL(): - installing ROM configuration from: %S" ), &name );
-#endif
- ret = iRomInstaller->InstallThemeL( name );
- if ( ret != EhspsInstallThemeSuccess )
- {
-#ifdef HSPS_LOG_ACTIVE
- iLogBus->LogText( _L( "ChspsThemeServer::InstallManifestsFromRomDriveL(): - configuration is corrupted, critical error - shutting down!" ) );
-#endif
-// User::Leave( KErrAbort );
- }
- }
-
- // Cancel any actions done in the previous functionality
- iManifestFiles.ResetAndDestroy();
-
- // The ROM installer is not needed anymore and therefore it can be released
+ iRomInstaller->InstallL();
+
delete iRomInstaller;
- iRomInstaller = NULL;
+ iRomInstaller = 0;
// Force updating of the header cache
ThspsRepositoryInfo info( EhspsCacheUpdate );
@@ -2761,34 +2789,6 @@
}
// -----------------------------------------------------------------------------
-// ChspsThemeServer::FindRomInstallationsV2L()
-// -----------------------------------------------------------------------------
-//
-void ChspsThemeServer::FindRomInstallationsV2L(
- RPointerArray<HBufC>& aPluginFolders )
- {
- _LIT(KHspsFolder, "hsps\\");
- TFileName hspsPath;
- for( TInt folderIndex=0; folderIndex < aPluginFolders.Count(); folderIndex++ )
- {
- // Set path
- hspsPath.Copy( aPluginFolders[folderIndex]->Des() );
- hspsPath.Append( KHspsFolder );
-
- // Add full path into the installation queue
- TInt len = hspsPath.Length() + 3 + KDoubleBackSlash().Length() + KManifestFile().Length();
- HBufC* manifestBuf = HBufC::NewLC( len );
- manifestBuf->Des().Copy( hspsPath );
- manifestBuf->Des().Append( _L("00") );
- manifestBuf->Des().Append( KDoubleBackSlash );
- manifestBuf->Des().Append( KManifestFile );
-
- iManifestFiles.AppendL( manifestBuf );
- CleanupStack::Pop( manifestBuf );
- }
- }
-
-// -----------------------------------------------------------------------------
// ChspsThemeServer::GetConfigurationHeader()
// -----------------------------------------------------------------------------
//
@@ -3329,6 +3329,16 @@
{
// Invalid configuration
state.Set( KConfStateError );
+ // Delete related resource files
+ const TInt count = aOdt.ResourceCount();
+ for( TInt j( 0 ); j < count; j++ )
+ {
+ ChspsResource& resource = aOdt.ResourceL( j );
+ if( resource.ConfigurationUid() == uids[ i ] )
+ {
+ aOdt.DeleteResourceL( j );
+ }
+ }
}
else if ( state.CompareF( KConfStateError ) != 0 )
{
@@ -3474,7 +3484,7 @@
void ChspsThemeServer::ActivateRootConfigurationsL()
{
// Get family from the active resolution
- const ThspsFamily family = iFamilyListener->GetFamilyType();
+ const ThspsFamily family = iFamily->GetFamilyType();
// Try to activate an application configuration which was designed
// for the active resolution
@@ -3484,6 +3494,8 @@
HandleFamilyChangeL( KDefaultFamily );
}
}
+#endif // defined(WINSCW) || defined(__WINS__)
+
// -----------------------------------------------------------------------------
// ChspsThemeServer::HandleFamilyChangeL()
@@ -3589,7 +3601,14 @@
return activated;
}
-#endif // defined(WINSCW)
+// -----------------------------------------------------------------------------
+// ChspsThemeServer::Family()
+// -----------------------------------------------------------------------------
+//
+ChspsFamily* ChspsThemeServer::Family()
+ {
+ return iFamily;
+ }
// end of file
--- a/homescreenpluginsrv/hspsmanager/src/hspsthemeserversession.cpp Wed Mar 03 15:38:34 2010 +0200
+++ b/homescreenpluginsrv/hspsmanager/src/hspsthemeserversession.cpp Wed May 12 13:36:47 2010 +0300
@@ -49,9 +49,11 @@
// -----------------------------------------------------------------------------
//
ChspsThemeServerSession::ChspsThemeServerSession(
- const TInt aAppUid )
+ const TInt aAppUid ) :
+ iAppUid( aAppUid ),
+ iIconFileCopyRequired( ETrue ),
+ iResourceFileCopyRequired( ETrue )
{
- iAppUid = aAppUid;
}
// -----------------------------------------------------------------------------
@@ -68,7 +70,7 @@
iLogBus->LogText( _L( "--------------------------------------------------------" ) );
#endif
- Server().AddSession();
+ Server().AddSession( this );
iHoldingResources = EFalse;
User::LeaveIfError( iFs.Connect() );
Server().CheckConfigurationL( iAppUid );
@@ -93,7 +95,7 @@
}
delete iClientRequestHandler;
- Server().DropSession();
+ Server().DropSession( this );
#ifdef HSPS_LOG_ACTIVE
if( iLogBus )
@@ -284,7 +286,15 @@
#ifdef HSPS_LOG_ACTIVE
iLogBus->LogText( _L( "DoServiceL: EhspsCopyResources" ) );
#endif
- CopyResourceFilesL( aMessage );
+ if( iResourceFileCopyRequired )
+ {
+ CopyResourceFilesL( aMessage );
+ iResourceFileCopyRequired = EFalse;
+ }
+ else
+ {
+ aMessage.Complete( EhspsResourceCopySuccess );
+ }
break;
}
case EhspsAddPlugin:
@@ -1001,5 +1011,50 @@
return iFs;
}
+// -----------------------------------------------------------------------------
+// ChspsThemeServerSession::IconFileCopyRequired
+// -----------------------------------------------------------------------------
+//
+TBool ChspsThemeServerSession::IconFileCopyRequired() const
+ {
+ return iIconFileCopyRequired;
+ }
+
+// -----------------------------------------------------------------------------
+// ChspsThemeServerSession::SetIconFileCopyRequired
+// -----------------------------------------------------------------------------
+//
+void ChspsThemeServerSession::SetIconFileCopyRequired( const TBool aCopyRequired )
+ {
+ iIconFileCopyRequired = aCopyRequired;
+ }
+
+// -----------------------------------------------------------------------------
+// ChspsThemeServerSession::ResourceFileCopyRequired
+// -----------------------------------------------------------------------------
+//
+TBool ChspsThemeServerSession::ResourceFileCopyRequired() const
+ {
+ return iResourceFileCopyRequired;
+ }
+
+// -----------------------------------------------------------------------------
+// ChspsThemeServerSession::SetResourceFileCopyRequired
+// -----------------------------------------------------------------------------
+//
+void ChspsThemeServerSession::SetResourceFileCopyRequired( const TBool aCopyRequired )
+ {
+ iResourceFileCopyRequired = aCopyRequired;
+ }
+
+// -----------------------------------------------------------------------------
+// ChspsThemeServerSession::AppUid
+// -----------------------------------------------------------------------------
+//
+TBool ChspsThemeServerSession::AppUid() const
+ {
+ return iAppUid;
+ }
+
// end of file
--- a/homescreenpluginsrv/hspsodt/bwins/hspsodtu.def Wed Mar 03 15:38:34 2010 +0200
+++ b/homescreenpluginsrv/hspsodt/bwins/hspsodtu.def Wed May 12 13:36:47 2010 +0300
@@ -1,52 +1,52 @@
EXPORTS
- ?AddResourceL@ChspsODT@@QAEXPAVChspsResource@@@Z @ 1 NONAME ; void ChspsODT::AddResourceL(class ChspsResource *)
- ?CloneL@ChspsODT@@QAEPAV1@XZ @ 2 NONAME ; class ChspsODT * ChspsODT::CloneL(void)
- ?ConfigurationType@ChspsODT@@QBEIXZ @ 3 NONAME ; unsigned int ChspsODT::ConfigurationType(void) const
- ?CopyDomDocumentL@ChspsODT@@QAEXAAVChspsDomDocument@@@Z @ 4 NONAME ; void ChspsODT::CopyDomDocumentL(class ChspsDomDocument &)
- ?DeleteResourceL@ChspsODT@@QAEXH@Z @ 5 NONAME ; void ChspsODT::DeleteResourceL(int)
- ?DomDocument@ChspsODT@@QBEAAVChspsDomDocument@@XZ @ 6 NONAME ; class ChspsDomDocument & ChspsODT::DomDocument(void) const
- ?ExternalizeHeaderL@ChspsODT@@QBEXAAVRWriteStream@@@Z @ 7 NONAME ; void ChspsODT::ExternalizeHeaderL(class RWriteStream &) const
- ?ExternalizeL@ChspsODT@@QBEXAAVRWriteStream@@@Z @ 8 NONAME ; void ChspsODT::ExternalizeL(class RWriteStream &) const
- ?ExternalizeResourceListL@ChspsODT@@QBEXAAVRWriteStream@@@Z @ 9 NONAME ; void ChspsODT::ExternalizeResourceListL(class RWriteStream &) const
- ?Flags@ChspsODT@@QBEIXZ @ 10 NONAME ; unsigned int ChspsODT::Flags(void) const
- ?InternalizeHeaderL@ChspsODT@@QAEXAAVRReadStream@@@Z @ 11 NONAME ; void ChspsODT::InternalizeHeaderL(class RReadStream &)
- ?InternalizeL@ChspsODT@@QAEXAAVRReadStream@@@Z @ 12 NONAME ; void ChspsODT::InternalizeL(class RReadStream &)
- ?InternalizeResourceListL@ChspsODT@@QAEXAAVRReadStream@@@Z @ 13 NONAME ; void ChspsODT::InternalizeResourceListL(class RReadStream &)
- ?MarshalHeaderL@ChspsODT@@QBEPAVHBufC8@@XZ @ 14 NONAME ; class HBufC8 * ChspsODT::MarshalHeaderL(void) const
- ?NewL@ChspsODT@@SAPAV1@XZ @ 15 NONAME ; class ChspsODT * ChspsODT::NewL(void)
- ?NewLC@ChspsODT@@SAPAV1@ABVTDesC8@@@Z @ 16 NONAME ; class ChspsODT * ChspsODT::NewLC(class TDesC8 const &)
- ?OdtLanguage@ChspsODT@@QBEHXZ @ 17 NONAME ; int ChspsODT::OdtLanguage(void) const
- ?PackageVersion@ChspsODT@@QBEABVTDesC16@@XZ @ 18 NONAME ; class TDesC16 const & ChspsODT::PackageVersion(void) const
- ?ProviderName@ChspsODT@@QBEABVTDesC16@@XZ @ 19 NONAME ; class TDesC16 const & ChspsODT::ProviderName(void) const
- ?ProviderUid@ChspsODT@@QBEHXZ @ 20 NONAME ; int ChspsODT::ProviderUid(void) const
- ?ResourceCount@ChspsODT@@QBEHXZ @ 21 NONAME ; int ChspsODT::ResourceCount(void) const
- ?ResourceL@ChspsODT@@QBEAAVChspsResource@@H@Z @ 22 NONAME ; class ChspsResource & ChspsODT::ResourceL(int) const
- ?RootUid@ChspsODT@@QBEHXZ @ 23 NONAME ; int ChspsODT::RootUid(void) const
- ?SetConfigurationType@ChspsODT@@QAEXI@Z @ 24 NONAME ; void ChspsODT::SetConfigurationType(unsigned int)
- ?SetFlags@ChspsODT@@QAEXI@Z @ 25 NONAME ; void ChspsODT::SetFlags(unsigned int)
- ?SetOdtLanguage@ChspsODT@@QAEXH@Z @ 26 NONAME ; void ChspsODT::SetOdtLanguage(int)
- ?SetPackageVersionL@ChspsODT@@QAEXABVTDesC16@@@Z @ 27 NONAME ; void ChspsODT::SetPackageVersionL(class TDesC16 const &)
- ?SetProviderNameL@ChspsODT@@QAEXABVTDesC16@@@Z @ 28 NONAME ; void ChspsODT::SetProviderNameL(class TDesC16 const &)
- ?SetProviderUid@ChspsODT@@QAEXH@Z @ 29 NONAME ; void ChspsODT::SetProviderUid(int)
- ?SetRootUid@ChspsODT@@QAEXH@Z @ 30 NONAME ; void ChspsODT::SetRootUid(int)
- ?SetThemeFullNameL@ChspsODT@@QAEXABVTDesC16@@@Z @ 31 NONAME ; void ChspsODT::SetThemeFullNameL(class TDesC16 const &)
- ?SetThemeShortNameL@ChspsODT@@QAEXABVTDesC16@@@Z @ 32 NONAME ; void ChspsODT::SetThemeShortNameL(class TDesC16 const &)
- ?SetThemeUid@ChspsODT@@QAEXH@Z @ 33 NONAME ; void ChspsODT::SetThemeUid(int)
- ?SetThemeVersionL@ChspsODT@@QAEXABVTDesC16@@@Z @ 34 NONAME ; void ChspsODT::SetThemeVersionL(class TDesC16 const &)
- ?ThemeFullName@ChspsODT@@QBEABVTDesC16@@XZ @ 35 NONAME ; class TDesC16 const & ChspsODT::ThemeFullName(void) const
+ ?SetRootUid@ChspsODT@@QAEXH@Z @ 1 NONAME ; void ChspsODT::SetRootUid(int)
+ ?SetProviderNameL@ChspsODT@@QAEXABVTDesC16@@@Z @ 2 NONAME ; void ChspsODT::SetProviderNameL(class TDesC16 const &)
+ ?NewL@ChspsODT@@SAPAV1@XZ @ 3 NONAME ; class ChspsODT * ChspsODT::NewL(void)
+ ?InternalizeL@ChspsODT@@QAEXAAVRReadStream@@@Z @ 4 NONAME ; void ChspsODT::InternalizeL(class RReadStream &)
+ ?Flags@ChspsODT@@QBEIXZ @ 5 NONAME ; unsigned int ChspsODT::Flags(void) const
+ ?Description@ChspsODT@@QBEABVTDesC16@@XZ @ 6 NONAME ; class TDesC16 const & ChspsODT::Description(void) const
+ ?SetConfigurationType@ChspsODT@@QAEXI@Z @ 7 NONAME ; void ChspsODT::SetConfigurationType(unsigned int)
+ ?DomDocument@ChspsODT@@QBEAAVChspsDomDocument@@XZ @ 8 NONAME ; class ChspsDomDocument & ChspsODT::DomDocument(void) const
+ ?Family@ChspsODT@@QBEKXZ @ 9 NONAME ; unsigned long ChspsODT::Family(void) const
+ ?UnMarshalHeaderLC@ChspsODT@@SAPAV1@ABVTDesC8@@@Z @ 10 NONAME ; class ChspsODT * ChspsODT::UnMarshalHeaderLC(class TDesC8 const &)
+ ?ExternalizeResourceListL@ChspsODT@@QBEXAAVRWriteStream@@@Z @ 11 NONAME ; void ChspsODT::ExternalizeResourceListL(class RWriteStream &) const
+ ?SetThemeFullNameL@ChspsODT@@QAEXABVTDesC16@@@Z @ 12 NONAME ; void ChspsODT::SetThemeFullNameL(class TDesC16 const &)
+ ?SetFlags@ChspsODT@@QAEXI@Z @ 13 NONAME ; void ChspsODT::SetFlags(unsigned int)
+ ?ResourceCount@ChspsODT@@QBEHXZ @ 14 NONAME ; int ChspsODT::ResourceCount(void) const
+ ?SetThemeShortNameL@ChspsODT@@QAEXABVTDesC16@@@Z @ 15 NONAME ; void ChspsODT::SetThemeShortNameL(class TDesC16 const &)
+ ?PreviewFile@ChspsODT@@QBEABVTDesC16@@XZ @ 16 NONAME ; class TDesC16 const & ChspsODT::PreviewFile(void) const
+ ?DeleteResourceL@ChspsODT@@QAEXH@Z @ 17 NONAME ; void ChspsODT::DeleteResourceL(int)
+ ?ThemeVersion@ChspsODT@@QBEABVTDesC16@@XZ @ 18 NONAME ; class TDesC16 const & ChspsODT::ThemeVersion(void) const
+ ?SetThemeUid@ChspsODT@@QAEXH@Z @ 19 NONAME ; void ChspsODT::SetThemeUid(int)
+ ?CopyDomDocumentL@ChspsODT@@QAEXAAVChspsDomDocument@@@Z @ 20 NONAME ; void ChspsODT::CopyDomDocumentL(class ChspsDomDocument &)
+ ?SetLogoFileL@ChspsODT@@QAEXABVTDesC16@@@Z @ 21 NONAME ; void ChspsODT::SetLogoFileL(class TDesC16 const &)
+ ?SetFamily@ChspsODT@@QAEXK@Z @ 22 NONAME ; void ChspsODT::SetFamily(unsigned long)
+ ?CloneL@ChspsODT@@QBEPAV1@XZ @ 23 NONAME ; class ChspsODT * ChspsODT::CloneL(void) const
+ ?AddResourceL@ChspsODT@@QAEXPAVChspsResource@@@Z @ 24 NONAME ; void ChspsODT::AddResourceL(class ChspsResource *)
+ ?SetMultiInstance@ChspsODT@@QAEXH@Z @ 25 NONAME ; void ChspsODT::SetMultiInstance(int)
+ ?MultiInstance@ChspsODT@@QBEHXZ @ 26 NONAME ; int ChspsODT::MultiInstance(void) const
+ ?ConfigurationType@ChspsODT@@QBEIXZ @ 27 NONAME ; unsigned int ChspsODT::ConfigurationType(void) const
+ ?NewLC@ChspsODT@@SAPAV1@ABVTDesC8@@@Z @ 28 NONAME ; class ChspsODT * ChspsODT::NewLC(class TDesC8 const &)
+ ?ProviderName@ChspsODT@@QBEABVTDesC16@@XZ @ 29 NONAME ; class TDesC16 const & ChspsODT::ProviderName(void) const
+ ?ResourceL@ChspsODT@@QBEAAVChspsResource@@H@Z @ 30 NONAME ; class ChspsResource & ChspsODT::ResourceL(int) const
+ ?OdtLanguage@ChspsODT@@QBEHXZ @ 31 NONAME ; int ChspsODT::OdtLanguage(void) const
+ ?MarshalHeaderL@ChspsODT@@QBEPAVHBufC8@@XZ @ 32 NONAME ; class HBufC8 * ChspsODT::MarshalHeaderL(void) const
+ ?RootUid@ChspsODT@@QBEHXZ @ 33 NONAME ; int ChspsODT::RootUid(void) const
+ ?ProviderUid@ChspsODT@@QBEHXZ @ 34 NONAME ; int ChspsODT::ProviderUid(void) const
+ ?SetDescriptionL@ChspsODT@@QAEXABVTDesC16@@@Z @ 35 NONAME ; void ChspsODT::SetDescriptionL(class TDesC16 const &)
?ThemeShortName@ChspsODT@@QBEABVTDesC16@@XZ @ 36 NONAME ; class TDesC16 const & ChspsODT::ThemeShortName(void) const
- ?ThemeUid@ChspsODT@@QBEHXZ @ 37 NONAME ; int ChspsODT::ThemeUid(void) const
- ?ThemeVersion@ChspsODT@@QBEABVTDesC16@@XZ @ 38 NONAME ; class TDesC16 const & ChspsODT::ThemeVersion(void) const
- ?UnMarshalHeaderL@ChspsODT@@QAEXABVTDesC8@@@Z @ 39 NONAME ; void ChspsODT::UnMarshalHeaderL(class TDesC8 const &)
- ?UnMarshalHeaderLC@ChspsODT@@SAPAV1@ABVTDesC8@@@Z @ 40 NONAME ; class ChspsODT * ChspsODT::UnMarshalHeaderLC(class TDesC8 const &)
- ?Family@ChspsODT@@QBEKXZ @ 41 NONAME ; unsigned long ChspsODT::Family(void) const
- ?SetFamily@ChspsODT@@QAEXK@Z @ 42 NONAME ; void ChspsODT::SetFamily(unsigned long)
- ?SetMultiInstance@ChspsODT@@QAEXH@Z @ 43 NONAME ; void ChspsODT::SetMultiInstance(int)
- ?MultiInstance@ChspsODT@@QBEHXZ @ 44 NONAME ; int ChspsODT::MultiInstance(void) const
- ?Description@ChspsODT@@QBEABVTDesC16@@XZ @ 45 NONAME ; class TDesC16 const & ChspsODT::Description(void) const
- ?PreviewFile@ChspsODT@@QBEABVTDesC16@@XZ @ 46 NONAME ; class TDesC16 const & ChspsODT::PreviewFile(void) const
- ?SetLogoFileL@ChspsODT@@QAEXABVTDesC16@@@Z @ 47 NONAME ; void ChspsODT::SetLogoFileL(class TDesC16 const &)
- ?SetDescriptionL@ChspsODT@@QAEXABVTDesC16@@@Z @ 48 NONAME ; void ChspsODT::SetDescriptionL(class TDesC16 const &)
- ?SetPreviewFileL@ChspsODT@@QAEXABVTDesC16@@@Z @ 49 NONAME ; void ChspsODT::SetPreviewFileL(class TDesC16 const &)
- ?LogoFile@ChspsODT@@QBEABVTDesC16@@XZ @ 50 NONAME ; class TDesC16 const & ChspsODT::LogoFile(void) const
+ ?ThemeFullName@ChspsODT@@QBEABVTDesC16@@XZ @ 37 NONAME ; class TDesC16 const & ChspsODT::ThemeFullName(void) const
+ ?SetThemeVersionL@ChspsODT@@QAEXABVTDesC16@@@Z @ 38 NONAME ; void ChspsODT::SetThemeVersionL(class TDesC16 const &)
+ ?InternalizeResourceListL@ChspsODT@@QAEXAAVRReadStream@@@Z @ 39 NONAME ; void ChspsODT::InternalizeResourceListL(class RReadStream &)
+ ?CloneL@ChspsODT@@QAEXAAV1@@Z @ 40 NONAME ; void ChspsODT::CloneL(class ChspsODT &)
+ ?SetPreviewFileL@ChspsODT@@QAEXABVTDesC16@@@Z @ 41 NONAME ; void ChspsODT::SetPreviewFileL(class TDesC16 const &)
+ ?SetOdtLanguage@ChspsODT@@QAEXH@Z @ 42 NONAME ; void ChspsODT::SetOdtLanguage(int)
+ ?ExternalizeHeaderL@ChspsODT@@QBEXAAVRWriteStream@@@Z @ 43 NONAME ; void ChspsODT::ExternalizeHeaderL(class RWriteStream &) const
+ ?InternalizeHeaderL@ChspsODT@@QAEXAAVRReadStream@@@Z @ 44 NONAME ; void ChspsODT::InternalizeHeaderL(class RReadStream &)
+ ?ExternalizeL@ChspsODT@@QBEXAAVRWriteStream@@@Z @ 45 NONAME ; void ChspsODT::ExternalizeL(class RWriteStream &) const
+ ?SetProviderUid@ChspsODT@@QAEXH@Z @ 46 NONAME ; void ChspsODT::SetProviderUid(int)
+ ?UnMarshalHeaderL@ChspsODT@@QAEXABVTDesC8@@@Z @ 47 NONAME ; void ChspsODT::UnMarshalHeaderL(class TDesC8 const &)
+ ?DeleteAllResources@ChspsODT@@QAEXXZ @ 48 NONAME ; void ChspsODT::DeleteAllResources(void)
+ ?LogoFile@ChspsODT@@QBEABVTDesC16@@XZ @ 49 NONAME ; class TDesC16 const & ChspsODT::LogoFile(void) const
+ ?ThemeUid@ChspsODT@@QBEHXZ @ 50 NONAME ; int ChspsODT::ThemeUid(void) const
--- a/homescreenpluginsrv/hspsodt/eabi/hspsodtu.def Wed Mar 03 15:38:34 2010 +0200
+++ b/homescreenpluginsrv/hspsodt/eabi/hspsodtu.def Wed May 12 13:36:47 2010 +0300
@@ -3,51 +3,51 @@
_ZN8ChspsODT11SetThemeUidEi @ 2 NONAME
_ZN8ChspsODT12AddResourceLEP13ChspsResource @ 3 NONAME
_ZN8ChspsODT12InternalizeLER11RReadStream @ 4 NONAME
- _ZN8ChspsODT14SetOdtLanguageEi @ 5 NONAME
- _ZN8ChspsODT14SetProviderUidEi @ 6 NONAME
- _ZN8ChspsODT15DeleteResourceLEi @ 7 NONAME
- _ZN8ChspsODT16CopyDomDocumentLER16ChspsDomDocument @ 8 NONAME
- _ZN8ChspsODT16SetProviderNameLERK7TDesC16 @ 9 NONAME
- _ZN8ChspsODT16SetThemeVersionLERK7TDesC16 @ 10 NONAME
- _ZN8ChspsODT16UnMarshalHeaderLERK6TDesC8 @ 11 NONAME
- _ZN8ChspsODT17SetThemeFullNameLERK7TDesC16 @ 12 NONAME
- _ZN8ChspsODT17UnMarshalHeaderLCERK6TDesC8 @ 13 NONAME
- _ZN8ChspsODT18InternalizeHeaderLER11RReadStream @ 14 NONAME
- _ZN8ChspsODT18SetPackageVersionLERK7TDesC16 @ 15 NONAME
- _ZN8ChspsODT18SetThemeShortNameLERK7TDesC16 @ 16 NONAME
- _ZN8ChspsODT20SetConfigurationTypeEj @ 17 NONAME
- _ZN8ChspsODT24InternalizeResourceListLER11RReadStream @ 18 NONAME
- _ZN8ChspsODT4NewLEv @ 19 NONAME
- _ZN8ChspsODT5NewLCERK6TDesC8 @ 20 NONAME
- _ZN8ChspsODT6CloneLEv @ 21 NONAME
- _ZN8ChspsODT8SetFlagsEj @ 22 NONAME
- _ZNK8ChspsODT11DomDocumentEv @ 23 NONAME
- _ZNK8ChspsODT11OdtLanguageEv @ 24 NONAME
- _ZNK8ChspsODT11ProviderUidEv @ 25 NONAME
- _ZNK8ChspsODT12ExternalizeLER12RWriteStream @ 26 NONAME
- _ZNK8ChspsODT12ProviderNameEv @ 27 NONAME
- _ZNK8ChspsODT12ThemeVersionEv @ 28 NONAME
- _ZNK8ChspsODT13ResourceCountEv @ 29 NONAME
- _ZNK8ChspsODT13ThemeFullNameEv @ 30 NONAME
- _ZNK8ChspsODT14MarshalHeaderLEv @ 31 NONAME
- _ZNK8ChspsODT14PackageVersionEv @ 32 NONAME
- _ZNK8ChspsODT14ThemeShortNameEv @ 33 NONAME
- _ZNK8ChspsODT17ConfigurationTypeEv @ 34 NONAME
- _ZNK8ChspsODT24ExternalizeResourceListLER12RWriteStream @ 35 NONAME
- _ZNK8ChspsODT5FlagsEv @ 36 NONAME
- _ZNK8ChspsODT7RootUidEv @ 37 NONAME
- _ZNK8ChspsODT8ThemeUidEv @ 38 NONAME
- _ZNK8ChspsODT9ResourceLEi @ 39 NONAME
- _ZTI8ChspsODT @ 40 NONAME ; #<TI>#
- _ZTV8ChspsODT @ 41 NONAME ; #<VT>#
- _ZN8ChspsODT9SetFamilyEm @ 42 NONAME
- _ZNK8ChspsODT6FamilyEv @ 43 NONAME
- _ZN8ChspsODT16SetMultiInstanceEi @ 44 NONAME
- _ZNK8ChspsODT13MultiInstanceEv @ 45 NONAME
- _ZN8ChspsODT12SetLogoFileLERK7TDesC16 @ 46 NONAME
- _ZN8ChspsODT15SetDescriptionLERK7TDesC16 @ 47 NONAME
- _ZN8ChspsODT15SetPreviewFileLERK7TDesC16 @ 48 NONAME
- _ZNK8ChspsODT11DescriptionEv @ 49 NONAME
- _ZNK8ChspsODT11PreviewFileEv @ 50 NONAME
- _ZNK8ChspsODT8LogoFileEv @ 51 NONAME
+ _ZN8ChspsODT12SetLogoFileLERK7TDesC16 @ 5 NONAME
+ _ZN8ChspsODT14SetOdtLanguageEi @ 6 NONAME
+ _ZN8ChspsODT14SetProviderUidEi @ 7 NONAME
+ _ZN8ChspsODT15DeleteResourceLEi @ 8 NONAME
+ _ZN8ChspsODT15SetDescriptionLERK7TDesC16 @ 9 NONAME
+ _ZN8ChspsODT15SetPreviewFileLERK7TDesC16 @ 10 NONAME
+ _ZN8ChspsODT16CopyDomDocumentLER16ChspsDomDocument @ 11 NONAME
+ _ZN8ChspsODT16SetMultiInstanceEi @ 12 NONAME
+ _ZN8ChspsODT16SetProviderNameLERK7TDesC16 @ 13 NONAME
+ _ZN8ChspsODT16SetThemeVersionLERK7TDesC16 @ 14 NONAME
+ _ZN8ChspsODT16UnMarshalHeaderLERK6TDesC8 @ 15 NONAME
+ _ZN8ChspsODT17SetThemeFullNameLERK7TDesC16 @ 16 NONAME
+ _ZN8ChspsODT17UnMarshalHeaderLCERK6TDesC8 @ 17 NONAME
+ _ZN8ChspsODT18DeleteAllResourcesEv @ 18 NONAME
+ _ZN8ChspsODT18InternalizeHeaderLER11RReadStream @ 19 NONAME
+ _ZN8ChspsODT18SetThemeShortNameLERK7TDesC16 @ 20 NONAME
+ _ZN8ChspsODT20SetConfigurationTypeEj @ 21 NONAME
+ _ZN8ChspsODT24InternalizeResourceListLER11RReadStream @ 22 NONAME
+ _ZN8ChspsODT4NewLEv @ 23 NONAME
+ _ZN8ChspsODT5NewLCERK6TDesC8 @ 24 NONAME
+ _ZN8ChspsODT6CloneLERS_ @ 25 NONAME
+ _ZN8ChspsODT8SetFlagsEj @ 26 NONAME
+ _ZN8ChspsODT9SetFamilyEm @ 27 NONAME
+ _ZNK8ChspsODT11DescriptionEv @ 28 NONAME
+ _ZNK8ChspsODT11DomDocumentEv @ 29 NONAME
+ _ZNK8ChspsODT11OdtLanguageEv @ 30 NONAME
+ _ZNK8ChspsODT11PreviewFileEv @ 31 NONAME
+ _ZNK8ChspsODT11ProviderUidEv @ 32 NONAME
+ _ZNK8ChspsODT12ExternalizeLER12RWriteStream @ 33 NONAME
+ _ZNK8ChspsODT12ProviderNameEv @ 34 NONAME
+ _ZNK8ChspsODT12ThemeVersionEv @ 35 NONAME
+ _ZNK8ChspsODT13MultiInstanceEv @ 36 NONAME
+ _ZNK8ChspsODT13ResourceCountEv @ 37 NONAME
+ _ZNK8ChspsODT13ThemeFullNameEv @ 38 NONAME
+ _ZNK8ChspsODT14MarshalHeaderLEv @ 39 NONAME
+ _ZNK8ChspsODT14ThemeShortNameEv @ 40 NONAME
+ _ZNK8ChspsODT17ConfigurationTypeEv @ 41 NONAME
+ _ZNK8ChspsODT24ExternalizeResourceListLER12RWriteStream @ 42 NONAME
+ _ZNK8ChspsODT5FlagsEv @ 43 NONAME
+ _ZNK8ChspsODT6CloneLEv @ 44 NONAME
+ _ZNK8ChspsODT6FamilyEv @ 45 NONAME
+ _ZNK8ChspsODT7RootUidEv @ 46 NONAME
+ _ZNK8ChspsODT8LogoFileEv @ 47 NONAME
+ _ZNK8ChspsODT8ThemeUidEv @ 48 NONAME
+ _ZNK8ChspsODT9ResourceLEi @ 49 NONAME
+ _ZTI8ChspsODT @ 50 NONAME
+ _ZTV8ChspsODT @ 51 NONAME
--- a/homescreenpluginsrv/hspsodt/src/hspsodt.cpp Wed Mar 03 15:38:34 2010 +0200
+++ b/homescreenpluginsrv/hspsodt/src/hspsodt.cpp Wed May 12 13:36:47 2010 +0300
@@ -15,7 +15,6 @@
*
*/
-
#include "hspsodt.h"
#include <s32strm.h>
#include <s32mem.h>
@@ -23,8 +22,8 @@
#include "hspsdomdocument.h"
#include "hspsresource.h"
-/* Literal delim is used in separation of theme header and and other data in ODT-streaming. */
-_LIT(KDelim, "#");
+// ODT version number
+_LIT( KHpspOdtVersion, "3.0" );
// ============================ MEMBER FUNCTIONS ===============================
@@ -50,6 +49,46 @@
}
// -----------------------------------------------------------------------------
+// ChspsODT::CopyODTDataL()
+// Helper to ODT cloning. Prevents duplicate code in two clone methods.
+// -----------------------------------------------------------------------------
+//
+void ChspsODT::CopyODTDataL( const ChspsODT& aSource, ChspsODT& aTarget )
+ {
+ // Properties.
+ aTarget.SetFamily( aSource.Family() );
+ aTarget.SetConfigurationType( aSource.ConfigurationType() );
+ aTarget.SetRootUid( aSource.RootUid() );
+ aTarget.SetProviderUid( aSource.ProviderUid() );
+ aTarget.SetThemeUid( aSource.ThemeUid() );
+ aTarget.SetProviderNameL( aSource.ProviderName() );
+ aTarget.SetThemeFullNameL( aSource.ThemeFullName() );
+ aTarget.SetThemeShortNameL( aSource.ThemeShortName() );
+ aTarget.SetThemeVersionL( aSource.ThemeVersion() );
+ aTarget.SetDescriptionL( aSource.Description() );
+ aTarget.SetLogoFileL( aSource.LogoFile() );
+ aTarget.SetPreviewFileL( aSource.PreviewFile() );
+ aTarget.SetMultiInstance( aSource.MultiInstance() );
+ aTarget.SetOdtLanguage( aSource.OdtLanguage() );
+ aTarget.SetFlags( aSource.Flags() );
+
+ // Resources.
+ aTarget.DeleteAllResources();
+ TInt resourceCount = aSource.ResourceCount();
+ for ( TInt index = 0; index < resourceCount ; index++ )
+ {
+ ChspsResource* resource = ( aSource.ResourceL( index ) ).CloneL();
+ CleanupStack::PushL( resource );
+ aTarget.AddResourceL( resource );
+ CleanupStack::Pop( resource );
+ resource = NULL;
+ }
+
+ // DOM tree.
+ aTarget.CopyDomDocumentL( aSource.DomDocument() );
+ }
+
+// -----------------------------------------------------------------------------
// ChspsODT::NewL
// Two-phased constructor.
// -----------------------------------------------------------------------------
@@ -89,7 +128,6 @@
delete iThemeFullName;
delete iThemeShortName;
delete iThemeVersion;
- delete iPackageVersion;
// clean up the array
if( iResourceList )
{
@@ -107,20 +145,16 @@
// -----------------------------------------------------------------------------
EXPORT_C HBufC8* ChspsODT::MarshalHeaderL() const
{
- CBufFlat* buf = CBufFlat::NewL( KMaxHeaderDataLength8 );
- CleanupStack::PushL( buf );
- RBufWriteStream stream( *buf ); //stream over the buffer
- CleanupClosePushL( stream );
+ HBufC8* buf = HBufC8::NewLC( HeaderSize() );
+ TPtr8 ptr = buf->Des();
+ RDesWriteStream stream( ptr );
+ stream.PushL();
ExternalizeHeaderL( stream );
- CleanupStack::PopAndDestroy( &stream );
+ stream.Pop();
+ stream.Close();
+ CleanupStack::Pop( buf );
- //Create a heap descriptor from the buffer
- HBufC8* des = HBufC8::NewL( buf->Size() );
- TPtr8 ptr( des->Des() );
- buf->Read( 0, ptr, buf->Size() );
- CleanupStack::PopAndDestroy( buf );
-
- return des;
+ return buf;
}
// -----------------------------------------------------------------------------
@@ -147,7 +181,6 @@
// -----------------------------------------------------------------------------
EXPORT_C void ChspsODT::UnMarshalHeaderL( const TDesC8& aStreamData )
{
-
RDesReadStream stream( aStreamData );
CleanupClosePushL( stream );
InternalizeHeaderL( stream );
@@ -174,9 +207,8 @@
EXPORT_C void ChspsODT::InternalizeL( RReadStream& aStream )
{
InternalizeHeaderL( aStream );
- // consumes header delimiter
- aStream.ReadInt16L();
InternalizeResourceListL( aStream );
+
delete iDomDocument;
iDomDocument = NULL;
iDomDocument = ChspsDomDocument::NewL( aStream );
@@ -189,84 +221,139 @@
// -----------------------------------------------------------------------------
void ChspsODT::ExternalizeHeaderL( RWriteStream& aStream ) const
{
- if ( iPackageVersion )
- {
- aStream << *iPackageVersion;
- }
- else
+ aStream.WriteInt32L( KHpspOdtVersion().Length() );
+ aStream << KHpspOdtVersion();
+
+ aStream.WriteUint32L( iThemeUid );
+
+ const TDesC& providerName = ProviderName();
+ aStream.WriteInt32L( providerName.Length() );
+ if( providerName.Length() > 0 )
{
- aStream << KNullDesC;
- }
+ aStream << providerName;
+ }
+
+ const TDesC& themeFullName = ThemeFullName();
+ aStream.WriteInt32L( themeFullName.Length() );
+ if( themeFullName.Length() > 0 )
+ {
+ aStream << themeFullName;
+ }
- aStream.WriteUint32L( iFamilyMask );
- aStream.WriteUint32L( iConfigurationType );
- aStream.WriteUint32L( iRootUid );
- aStream.WriteUint32L( iProviderUid );
- aStream.WriteUint32L( iThemeUid );
- aStream.WriteInt32L( iMultiInstance );
- if ( iDescription )
+ const TDesC& themeShortName = ThemeShortName();
+ aStream.WriteInt32L( themeShortName.Length() );
+ if( themeShortName.Length() > 0 )
{
- aStream << *iDescription;
- }
- else
- {
- aStream << KNullDesC;
- }
- if ( iLogoFile )
- {
- aStream << *iLogoFile;
+ aStream << themeShortName;
}
- else
+
+ const TDesC& themeVersion = ThemeVersion();
+ aStream.WriteInt32L( themeVersion.Length() );
+ if( themeVersion.Length() > 0 )
+ {
+ aStream << themeVersion;
+ }
+
+ const TDesC& description = Description();
+ aStream.WriteInt32L( description.Length() );
+ if( description.Length() > 0 )
{
- aStream << KNullDesC;
- }
- if ( iPreviewFile )
+ aStream << description;
+ }
+
+ const TDesC& logoFile = LogoFile();
+ aStream.WriteInt32L( logoFile.Length() );
+ if( logoFile.Length() > 0 )
{
- aStream << *iPreviewFile;
- }
- else
+ aStream << logoFile;
+ }
+
+ const TDesC& previewFile = PreviewFile();
+ aStream.WriteInt32L( previewFile.Length() );
+ if( previewFile.Length() > 0 )
{
- aStream << KNullDesC;
- }
- if ( iProviderName )
- {
- aStream << *iProviderName;
- }
- else
+ aStream << previewFile;
+ }
+
+ aStream.WriteUint32L( iFamilyMask );
+ aStream.WriteUint32L( iConfigurationType );
+ aStream.WriteUint32L( iRootUid );
+ aStream.WriteUint32L( iProviderUid );
+ aStream.WriteUint32L( iFlags );
+
+ aStream.WriteInt32L( iLanguage );
+ aStream.WriteInt32L( iMultiInstance );
+ }
+
+
+// -----------------------------------------------------------------------------
+// ChspsODT::HeaderSize
+// Calculate header size in bytes.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+TInt ChspsODT::HeaderSize() const
+ {
+ TInt size = sizeof( TInt32 );
+ size += sizeof( TUint32 ); // String streaming insert also max. 32bit member of TCardinality.
+ size += KHpspOdtVersion().Size();
+
+ size += sizeof( TUint32 ); // iThemeUid
+
+ size += sizeof( TInt32 );
+ if( ProviderName().Length() > 0 )
{
- aStream << KNullDesC;
- }
+ size += sizeof( TUint32 ); // String streaming insert also max. 32bit member of TCardinality.
+ size += ProviderName().Size();
+ }
- if ( iThemeFullName )
- {
- aStream << *iThemeFullName;
- }
- else
+ size += sizeof( TInt32 );
+ if( ThemeFullName().Length() > 0 )
{
- aStream << KNullDesC;
- }
-
- if ( iThemeShortName )
+ size += sizeof( TUint32 ); // String streaming insert also max. 32bit member of TCardinality.
+ size += ThemeFullName().Size();
+ }
+
+ size += sizeof( TInt32 );
+ if( ThemeShortName().Length() > 0 )
{
- aStream << *iThemeShortName;
- }
- else
+ size += sizeof( TUint32 ); // String streaming insert also max. 32bit member of TCardinality.
+ size += ThemeShortName().Size();
+ }
+
+ size += sizeof( TInt32 );
+ if( ThemeVersion().Length() > 0 )
+ {
+ size += sizeof( TUint32 ); // String streaming insert also max. 32bit member of TCardinality.
+ size += ThemeVersion().Size();
+ }
+
+ size += sizeof( TInt32 );
+ if( Description().Length() > 0 )
{
- aStream << KNullDesC;
- }
-
- if ( iThemeVersion )
+ size += sizeof( TUint32 ); // String streaming insert also max. 32bit member of TCardinality.
+ size += Description().Size();
+ }
+
+ size += sizeof( TInt32 );
+ if( LogoFile().Length() > 0 )
{
- aStream << *iThemeVersion;
- }
- else
+ size += sizeof( TUint32 ); // String streaming insert also max. 32bit member of TCardinality.
+ size += LogoFile().Size();
+ }
+
+ size += sizeof( TInt32 );
+ if( PreviewFile().Length() > 0 )
{
- aStream << KNullDesC;
- }
- aStream.WriteInt32L( iLanguage );
- aStream.WriteUint32L( iFlags );
- // end of the header delimiter
- aStream.WriteL( KDelim );
+ size += sizeof( TUint32 ); // String streaming insert also max. 32bit member of TCardinality.
+ size += PreviewFile().Size();
+ }
+
+ size += sizeof( TUint32 ) * 5; // iFamilyMask, iConfigurationType,
+ // iRootUid, iProviderUid, iFlags
+
+ size += sizeof( TInt32 ) * 2; // iLanguage, iMultiInstance
+
+ return size;
}
// -----------------------------------------------------------------------------
@@ -275,59 +362,87 @@
// (other items were commented in a header).
// -----------------------------------------------------------------------------
EXPORT_C void ChspsODT::InternalizeHeaderL( RReadStream& aStream )
- {
- HBufC* version = HBufC::NewL( aStream, KMaxFileName );
- CleanupStack::PushL( version );
- if ( iPackageVersion && version->Des().Compare( iPackageVersion->Des() ) != 0 )
+ {
+ TInt len = aStream.ReadInt32L();
+ HBufC* odtVersion = NULL;
+ if ( len > 0 )
{
- // Package version check requested (iPackageVersion defined)
- // and package version not supported
+ odtVersion = HBufC::NewL( aStream, len );
+ }
+ CleanupStack::PushL( odtVersion );
+ // ODT version check.
+ if ( KHpspOdtVersion() != *odtVersion )
+ {
User::Leave( KErrNotSupported );
}
- if ( !iPackageVersion && version->Length() )
- {
- // Package version check not requested
- iPackageVersion = version->AllocL();
- }
- CleanupStack::PopAndDestroy( version );
-
- iFamilyMask = aStream.ReadUint32L();
- iConfigurationType = aStream.ReadUint32L();
- iRootUid = aStream.ReadUint32L();
- iProviderUid = aStream.ReadUint32L();
+ CleanupStack::PopAndDestroy( odtVersion );
+
iThemeUid = aStream.ReadUint32L();
- iMultiInstance = aStream.ReadInt32L();
-
- delete iDescription;
- iDescription = NULL;
- iDescription = HBufC::NewL(aStream, KMaxDescLength );
-
- delete iLogoFile;
- iLogoFile = NULL;
- iLogoFile = HBufC::NewL(aStream, KMaxFileName );
-
- delete iPreviewFile;
- iPreviewFile = NULL;
- iPreviewFile = HBufC::NewL(aStream, KMaxFileName );
-
+
delete iProviderName;
iProviderName = NULL;
- iProviderName = HBufC::NewL(aStream, KMaxFileName );
+ len = aStream.ReadInt32L();
+ if( len > 0 )
+ {
+ iProviderName = HBufC::NewL( aStream, len );
+ }
delete iThemeFullName;
iThemeFullName = NULL;
- iThemeFullName = HBufC::NewL(aStream, KMaxFileName );
+ len = aStream.ReadInt32L();
+ if( len > 0 )
+ {
+ iThemeFullName = HBufC::NewL( aStream, len );
+ }
delete iThemeShortName;
iThemeShortName = NULL;
- iThemeShortName = HBufC::NewL(aStream, KMaxFileName );
-
+ len = aStream.ReadInt32L();
+ if( len > 0 )
+ {
+ iThemeShortName = HBufC::NewL( aStream, len );
+ }
+
delete iThemeVersion;
iThemeVersion = NULL;
- iThemeVersion = HBufC::NewL(aStream, KMaxFileName );
-
+ len = aStream.ReadInt32L();
+ if( len > 0 )
+ {
+ iThemeVersion = HBufC::NewL( aStream, len );
+ }
+
+ delete iDescription;
+ iDescription = NULL;
+ len = aStream.ReadInt32L();
+ if( len > 0 )
+ {
+ iDescription = HBufC::NewL( aStream, len );
+ }
+
+ delete iLogoFile;
+ iLogoFile = NULL;
+ len = aStream.ReadInt32L();
+ if( len > 0 )
+ {
+ iLogoFile = HBufC::NewL( aStream, len );
+ }
+
+ delete iPreviewFile;
+ iPreviewFile = NULL;
+ len = aStream.ReadInt32L();
+ if( len > 0 )
+ {
+ iPreviewFile = HBufC::NewL( aStream, len );
+ }
+
+ iFamilyMask = aStream.ReadUint32L();
+ iConfigurationType = aStream.ReadUint32L();
+ iRootUid = aStream.ReadUint32L();
+ iProviderUid = aStream.ReadUint32L();
+ iFlags = aStream.ReadUint32L();
+
iLanguage = aStream.ReadInt32L();
- iFlags = aStream.ReadUint32L();
+ iMultiInstance = aStream.ReadInt32L();
}
// -----------------------------------------------------------------------------
@@ -394,6 +509,16 @@
}
// -----------------------------------------------------------------------------
+// ChspsODT::DeleteResourceListL
+// Deletes all resources from the ODT.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+EXPORT_C void ChspsODT::DeleteAllResources()
+ {
+ iResourceList->ResetAndDestroy();
+ }
+
+// -----------------------------------------------------------------------------
// ChspsODT::ResourceL
// Get the resource by the index
// (other items were commented in a header).
@@ -462,7 +587,6 @@
}
}
-
// -----------------------------------------------------------------------------
// ChspsODT::SetRootUid
// Set RootUid
@@ -530,9 +654,16 @@
// -----------------------------------------------------------------------------
EXPORT_C void ChspsODT::SetProviderNameL( const TDesC& aName )
{
- delete iProviderName;
- iProviderName = NULL;
- iProviderName = aName.AllocL();
+ if( iProviderName )
+ {
+ delete iProviderName;
+ iProviderName = NULL;
+ }
+
+ if( aName.Length() != 0 )
+ {
+ iProviderName = aName.AllocL();
+ }
}
// -----------------------------------------------------------------------------
@@ -559,9 +690,16 @@
// -----------------------------------------------------------------------------
EXPORT_C void ChspsODT::SetThemeFullNameL( const TDesC& aName )
{
- delete iThemeFullName;
- iThemeFullName = NULL;
- iThemeFullName = aName.AllocL();
+ if( iThemeFullName )
+ {
+ delete iThemeFullName;
+ iThemeFullName = NULL;
+ }
+
+ if( aName.Length() != 0 )
+ {
+ iThemeFullName = aName.AllocL();
+ }
}
// -----------------------------------------------------------------------------
@@ -588,9 +726,16 @@
// -----------------------------------------------------------------------------
EXPORT_C void ChspsODT::SetThemeShortNameL( const TDesC& aName )
{
- delete iThemeShortName;
- iThemeShortName = NULL;
- iThemeShortName = aName.AllocL();
+ if( iThemeShortName )
+ {
+ delete iThemeShortName;
+ iThemeShortName = NULL;
+ }
+
+ if( aName.Length() != 0 )
+ {
+ iThemeShortName = aName.AllocL();
+ }
}
// -----------------------------------------------------------------------------
@@ -617,9 +762,16 @@
// -----------------------------------------------------------------------------
EXPORT_C void ChspsODT::SetThemeVersionL( const TDesC& aVersion )
{
- delete iThemeVersion;
- iThemeVersion = NULL;
- iThemeVersion = aVersion.AllocL();
+ if( iThemeVersion )
+ {
+ delete iThemeVersion;
+ iThemeVersion = NULL;
+ }
+
+ if( aVersion.Length() != 0 )
+ {
+ iThemeVersion = aVersion.AllocL();
+ }
}
// -----------------------------------------------------------------------------
@@ -689,61 +841,30 @@
{
return *iDomDocument;
}
-
+
// -----------------------------------------------------------------------------
// ChspsODT::CloneL()
// Makes a clone of this ODT and returns pointer to it
// (other items were commented in a header).
// -----------------------------------------------------------------------------
//
-EXPORT_C ChspsODT* ChspsODT::CloneL()
+EXPORT_C ChspsODT* ChspsODT::CloneL() const
{
- ChspsODT* clone = new (ELeave) ChspsODT;
- CleanupStack::PushL( clone );
- clone->ConstructL();
- clone->SetConfigurationType( iConfigurationType );
- clone->SetRootUid( iRootUid );
- clone->SetProviderUid( iProviderUid );
- clone->SetThemeUid( iThemeUid );
- if( iProviderName )
- {
- clone->SetProviderNameL( *iProviderName );
- }
- if( iThemeFullName )
- {
- clone->SetThemeFullNameL( *iThemeFullName );
- }
- if( iThemeShortName )
- {
- clone->SetThemeShortNameL( *iThemeShortName );
- }
- if( iThemeVersion )
- {
- clone->SetThemeVersionL( *iThemeVersion );
- }
- if( iPackageVersion )
- {
- clone->SetPackageVersionL( *iPackageVersion );
- }
- if( iDescription )
- {
- clone->SetDescriptionL( *iDescription );
- }
- clone->SetOdtLanguage( iLanguage );
- clone->SetFlags( iFlags );
-
- TInt resourceCount = iResourceList->Count();
-
- for ( TInt index = 0; index < resourceCount ; index++ )
- {
- ChspsResource& resource = ResourceL( index );
- clone->AddResourceL( resource.CloneL() );
- }
-
- CleanupStack::Pop( clone );
+ ChspsODT* clone = ChspsODT::NewL();
+ CleanupStack::PushL( clone );
+ ChspsODT::CopyODTDataL( *this, *clone );
+ CleanupStack::Pop( clone );
return clone;
}
-
+
+// -----------------------------------------------------------------------------
+// Copies data from an exisiting ODT
+// -----------------------------------------------------------------------------
+EXPORT_C void ChspsODT::CloneL( ChspsODT& aODT )
+ {
+ ChspsODT::CopyODTDataL( aODT, *this );
+ }
+
// -----------------------------------------------------------------------------
// ChspsODT::CopyDomDocumentL()
// Clones the aDom and sets it as this ChspsODT's DomDocument
@@ -776,35 +897,6 @@
}
// -----------------------------------------------------------------------------
-// ChspsODT::SetPackageVersionL
-// Set package version
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-EXPORT_C void ChspsODT::SetPackageVersionL( const TDesC& aVersion )
- {
- delete iPackageVersion;
- iPackageVersion = NULL;
- iPackageVersion = aVersion.AllocL();
- }
-
-// -----------------------------------------------------------------------------
-// ChspsODT::PackageVersion
-// Get package version
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-EXPORT_C const TDesC& ChspsODT::PackageVersion() const
- {
- if ( iPackageVersion )
- {
- return *iPackageVersion;
- }
- else
- {
- return KNullDesC;
- }
- }
-
-// -----------------------------------------------------------------------------
// ChspsODT::SetFamily
// -----------------------------------------------------------------------------
EXPORT_C void ChspsODT::SetFamily( const TUint32 aFamilyMask )
@@ -845,9 +937,16 @@
// -----------------------------------------------------------------------------
EXPORT_C void ChspsODT::SetDescriptionL( const TDesC& aDesc )
{
- delete iDescription;
- iDescription = NULL;
- iDescription = aDesc.AllocL();
+ if( iDescription )
+ {
+ delete iDescription;
+ iDescription = NULL;
+ }
+
+ if( aDesc.Length() != 0 )
+ {
+ iDescription = aDesc.AllocL();
+ }
}
// -----------------------------------------------------------------------------
@@ -869,10 +968,17 @@
// ChspsODT::SetLogoFileL
// -----------------------------------------------------------------------------
EXPORT_C void ChspsODT::SetLogoFileL( const TDesC& aPath )
- {
- delete iLogoFile;
- iLogoFile = NULL;
- iLogoFile = aPath.AllocL();
+ {
+ if( iLogoFile )
+ {
+ delete iLogoFile;
+ iLogoFile = NULL;
+ }
+
+ if( aPath.Length() != 0 )
+ {
+ iLogoFile = aPath.AllocL();
+ }
}
// -----------------------------------------------------------------------------
@@ -894,10 +1000,17 @@
// ChspsODT::SetPreviewFileL
// -----------------------------------------------------------------------------
EXPORT_C void ChspsODT::SetPreviewFileL( const TDesC& aPath )
- {
- delete iPreviewFile;
- iPreviewFile = NULL;
- iPreviewFile = aPath.AllocL();
+ {
+ if( iPreviewFile )
+ {
+ delete iPreviewFile;
+ iPreviewFile = NULL;
+ }
+
+ if( aPath.Length() != 0 )
+ {
+ iPreviewFile = aPath.AllocL();
+ }
}
// -----------------------------------------------------------------------------
--- a/homescreenpluginsrv/hspspluginregistry/src/hspsdefinitionrepository.cpp Wed Mar 03 15:38:34 2010 +0200
+++ b/homescreenpluginsrv/hspspluginregistry/src/hspsdefinitionrepository.cpp Wed May 12 13:36:47 2010 +0300
@@ -20,6 +20,7 @@
#include <s32file.h>
#include <s32mem.h>
#include <sysutil.h>
+#include <bautils.h>
#include "hsps_builds_cfg.hrh"
@@ -63,8 +64,9 @@
// might leave.
// -----------------------------------------------------------------------------
//
-ChspsDefinitionRepository::ChspsDefinitionRepository()
- {
+ChspsDefinitionRepository::ChspsDefinitionRepository() :
+ iCacheLastODT( NULL )
+ {
}
// -----------------------------------------------------------------------------
@@ -122,6 +124,8 @@
iObservers.Close();
delete iPath;
+ delete iCacheLastODT;
+
iTempFileName1 = KNullDesC;
iTempFileName2 = KNullDesC;
}
@@ -200,6 +204,13 @@
}
#endif
+ if( aODT.ConfigurationType() == EhspsAppConfiguration )
+ {
+ delete iCacheLastODT;
+ iCacheLastODT = NULL;
+ iCacheLastODT = aODT.CloneL();
+ }
+
return ret;
}
@@ -212,6 +223,7 @@
EXPORT_C TInt ChspsDefinitionRepository::GetOdtL( ChspsODT& aODT )
{
TInt errorCode = KErrNone;
+
if ( aODT.Flags() & EhspsThemeStatusLicenceeDefault )
{
iLicenseDefault = ETrue;
@@ -221,12 +233,23 @@
iLicenseDefault = EFalse;
}
- TRAP( errorCode, GetPathL( aODT, EResourceODT ));
- if ( !errorCode )
- {
- errorCode = ReadFromFileL( *iPath, aODT );
- }
- iLicenseDefault = EFalse;
+ if( iCacheLastODT &&
+ iCacheLastODT->RootUid() == aODT.RootUid() &&
+ iCacheLastODT->ThemeUid() == aODT.ThemeUid() )
+ {
+ aODT.CloneL( *iCacheLastODT );
+ }
+ else
+ {
+ TRAP( errorCode, GetPathL( aODT, EResourceODT ));
+ if ( !errorCode )
+ {
+ errorCode = ReadFromFileL( *iPath, aODT );
+ }
+ }
+
+ iLicenseDefault = EFalse;
+
return errorCode;
}
@@ -616,8 +639,7 @@
}
CleanupStack::PopAndDestroy( fileName );
-
-
+
// Set drive information
iTempFileName1.Format( _L("%S"), &res->FileName() );
TParsePtr f( iTempFileName1 );
@@ -1026,19 +1048,22 @@
if ( !errorCode )
{
// Create the directory structure
- TInt err = iFs.MkDirAll( *iPath );
- if ( err != KErrNone && err != KErrAlreadyExists )
- {
- errorCode = err;
-
+ if( !BaflUtils::FolderExists( iFs, *iPath ) )
+ {
+ TInt err = iFs.MkDirAll( *iPath );
+ if ( err != KErrNone && err != KErrAlreadyExists )
+ {
+ errorCode = err;
+
#ifdef HSPS_LOG_ACTIVE
- if( iLogBus )
- {
- iLogBus->LogText( _L( "ChspsDefinitionRepository::WriteToFileL(): - error %d." ),
- err );
+ if( iLogBus )
+ {
+ iLogBus->LogText( _L( "ChspsDefinitionRepository::WriteToFileL(): - error %d." ),
+ err );
+ }
+#endif
}
-#endif
- }
+ }
if ( !errorCode )
{
--- a/homescreenpluginsrv/hspsresource/src/hspsresource.cpp Wed Mar 03 15:38:34 2010 +0200
+++ b/homescreenpluginsrv/hspsresource/src/hspsresource.cpp Wed May 12 13:36:47 2010 +0300
@@ -63,16 +63,20 @@
EXPORT_C ChspsResource* ChspsResource::CloneL()
{
ChspsResource* clone = ChspsResource::NewL();
+
CleanupStack::PushL( clone );
+
clone->SetLockingPolicy( iLockingPolicy );
clone->SetResourceType( iResourceType );
- clone->SetLanguage( iLanguage );
- clone->SetResourceIdL( *iResourceID );
- clone->SetFileNameL( *iFileName );
+ clone->SetLanguage( iLanguage );
+ clone->SetResourceIdL( ResourceId() );
+ clone->SetFileNameL( FileName() );
clone->SetMimeTypeL( iMimeType );
clone->SetConfigurationUid( iConfigurationUid );
+ clone->SetTagsL( Tags() );
CleanupStack::Pop( clone );
+
return clone;
}
@@ -95,37 +99,30 @@
aStream.WriteUint32L( iLockingPolicy );
aStream.WriteUint32L( iResourceType );
aStream.WriteUint32L( iLanguage );
-
- if ( iResourceID )
+
+ const TDesC& resourceId = ResourceId();
+ aStream.WriteInt32L( resourceId.Length() );
+ if ( resourceId.Length() > 0 )
{
- aStream << *iResourceID;
- }
- else
- {
- aStream << KNullDesC;
+ aStream << resourceId;
}
- if ( iFileName )
+ const TDesC& fileName = FileName();
+ aStream.WriteInt32L( fileName.Length() );
+ if ( fileName.Length() > 0 )
{
- aStream << *iFileName;
- }
- else
- {
- aStream << KNullDesC;
- }
-
+ aStream << fileName;
+ }
iMimeType.ExternalizeL(aStream);
aStream.WriteUint32L( iConfigurationUid );
- if ( iTags )
+ const TDesC& tags = Tags();
+ aStream.WriteInt32L( tags.Length() );
+ if ( tags.Length() > 0 )
{
- aStream << *iTags;
- }
- else
- {
- aStream << KNullDesC;
+ aStream << tags;
}
}
@@ -141,12 +138,20 @@
iLanguage = (TLanguage)aStream.ReadUint32L();
delete iResourceID;
- iResourceID = NULL;
- iResourceID = HBufC::NewL(aStream, KMaxFileName );
+ iResourceID = NULL;
+ TInt len = aStream.ReadInt32L();
+ if( len > 0 )
+ {
+ iResourceID = HBufC::NewL( aStream, len );
+ }
delete iFileName;
iFileName = NULL;
- iFileName = HBufC::NewL(aStream, KMaxFileName );
+ len = aStream.ReadInt32L();
+ if( len > 0 )
+ {
+ iFileName = HBufC::NewL( aStream, len );
+ }
iMimeType.InternalizeL(aStream);
@@ -154,7 +159,11 @@
delete iTags;
iTags = NULL;
- iTags = HBufC::NewL(aStream, KMaxTagsLength );
+ len = aStream.ReadInt32L();
+ if( len > 0 )
+ {
+ iTags = HBufC::NewL( aStream, len );
+ }
}
// -----------------------------------------------------------------------------
@@ -205,9 +214,16 @@
//
EXPORT_C void ChspsResource::SetResourceIdL( const TDesC& aResourceId )
{
- delete iResourceID;
- iResourceID = NULL;
- iResourceID = aResourceId.AllocL();
+ if( iResourceID )
+ {
+ delete iResourceID;
+ iResourceID = NULL;
+ }
+
+ if( aResourceId.Length() > 0 )
+ {
+ iResourceID = aResourceId.AllocL();
+ }
}
// -----------------------------------------------------------------------------
@@ -234,9 +250,16 @@
//
EXPORT_C void ChspsResource::SetFileNameL( const TDesC& aFileName )
{
- delete iFileName;
- iFileName = NULL;
- iFileName = aFileName.AllocL();
+ if( iFileName )
+ {
+ delete iFileName;
+ iFileName = NULL;
+ }
+
+ if( aFileName.Length() > 0 )
+ {
+ iFileName = aFileName.AllocL();
+ }
}
// -----------------------------------------------------------------------------
@@ -254,8 +277,7 @@
{
return KNullDesC;
}
- }
-
+ }
// -----------------------------------------------------------------------------
// ChspsResource::SetMimeTypeL().
@@ -322,9 +344,16 @@
//
EXPORT_C void ChspsResource::SetTagsL( const TDesC& aTag )
{
- delete iTags;
- iTags = NULL;
- iTags = aTag.AllocL();
+ if( iTags )
+ {
+ delete iTags;
+ iTags = NULL;
+ }
+
+ if( aTag.Length() > 0 )
+ {
+ iTags = aTag.AllocL();
+ }
}
// -----------------------------------------------------------------------------
--- a/homescreenpluginsrv/hspsresult/src/hspspluginidlist.cpp Wed Mar 03 15:38:34 2010 +0200
+++ b/homescreenpluginsrv/hspsresult/src/hspspluginidlist.cpp Wed May 12 13:36:47 2010 +0300
@@ -10,6 +10,7 @@
* Nokia Corporation - initial contribution.
*
* Contributors:
+* Leo Zheng - GCC-E compilation error fix (2098)
*
* Description: Class ChspsPluginIdList is a HSPS utility class for passing
* plugin ids from a client process to the server process.
@@ -30,7 +31,7 @@
// might leave.
// -----------------------------------------------------------------------------
//
-EXPORT_C ChspsPluginIdList::ChspsPluginIdList( TInt aGranularity ) : CArrayFixFlat( aGranularity )
+EXPORT_C ChspsPluginIdList::ChspsPluginIdList( TInt aGranularity ) : CArrayFixFlat<TInt>( aGranularity )
{
}
--- a/homescreenpluginsrv/hspstools/group/hspstools.mmp Wed Mar 03 15:38:34 2010 +0200
+++ b/homescreenpluginsrv/hspstools/group/hspstools.mmp Wed May 12 13:36:47 2010 +0300
@@ -57,7 +57,7 @@
nostrictdef
-LIBRARY euser.lib flogger.lib hspsdomdocument.lib liwservicehandler.lib estor.lib efsrv.lib hspsodt.lib charconv.lib hspsresource.lib
+LIBRARY euser.lib flogger.lib hspsdomdocument.lib liwservicehandler.lib estor.lib efsrv.lib hspsodt.lib charconv.lib hspsresource.lib
#ifdef ENABLE_ABIV2_MODE
DEBUGGABLE
--- a/homescreenpluginsrv/hspstools/src/hspslogbusfile.cpp Wed Mar 03 15:38:34 2010 +0200
+++ b/homescreenpluginsrv/hspstools/src/hspslogbusfile.cpp Wed May 12 13:36:47 2010 +0300
@@ -18,7 +18,7 @@
#include "hspslogbusfile.h"
#include "e32debug.h"
-
+#include "f32file.h"
// Constants
#ifdef HSPS_BUILD_LOG_IMPLEMENTATION
@@ -86,6 +86,13 @@
#ifdef HSPS_BUILD_LOG_IMPLEMENTATION
EXPORT_C TFileName ChspsLogBusFile::CreateLogFilename( const TDesC& aBaseline )
{
+ RFs fs;
+ if ( KErrNone == fs.Connect() )
+ {
+ fs.MkDirAll(_L("c:\\logs\\hsps\\"));
+ fs.Close();
+ }
+
TFileName fileName;
// Append baseline and trailing '_'.
--- a/homescreenpluginsrv/inc/hspsclient.h Wed Mar 03 15:38:34 2010 +0200
+++ b/homescreenpluginsrv/inc/hspsclient.h Wed May 12 13:36:47 2010 +0300
@@ -267,8 +267,10 @@
/**
* From MhspsMaintenanceService.
*/
- IMPORT_C ThspsServiceCompletedMessage hspsGetListHeaders(const ChspsODT& aSearchMask,
- CArrayPtrFlat<ChspsODT>& aHeaderList);
+ IMPORT_C ThspsServiceCompletedMessage hspsGetListHeaders(
+ const ChspsODT& aSearchMask,
+ const TBool aCopyLogos,
+ CArrayPtrFlat<ChspsODT>& aHeaderList );
/**
* From MhspsMaintenanceService.
@@ -324,11 +326,14 @@
* @param aSearchMask is ChspsODT-object which attributes are filled to present search
* parameters for theme set queried by client. This parametrisation follows
* the high-level schema.
+ * @param aCopyLogos is set if client wants to view logos
* @param aHeaderList is an list object able to carry ChspsODT-objects.
* @return Error code
*/
- IMPORT_C TInt hspsGetHeaders(const ChspsODT& aSearchMask,
- CArrayPtrFlat<ChspsODT>& aHeaderList);
+ IMPORT_C TInt hspsGetHeaders(
+ const ChspsODT& aSearchMask,
+ const TBool aCopyLogos,
+ CArrayPtrFlat<ChspsODT>& aHeaderList);
/**
* From MhspsMaintenanceService
--- a/homescreenpluginsrv/inc/hspsclientsession.h Wed Mar 03 15:38:34 2010 +0200
+++ b/homescreenpluginsrv/inc/hspsclientsession.h Wed May 12 13:36:47 2010 +0300
@@ -85,11 +85,12 @@
* @since S60 5.0
* @param aResultData Result data.
* @param aSearchMaskData Search mask data.
+ * @param aCopyLogos Set if logo resources should be copied to client
* @param aHeaderData Header data.
* @return Symbian error code.
*/
IMPORT_C TInt GetListHeaders(TDes8& aResultData, const TDesC8& aSearchMaskData,
- TDes8& aHeaderData);
+ const TBool aCopyLogos,TDes8& aHeaderData);
/**
* SetActiveTheme.
--- a/homescreenpluginsrv/inc/hspsdefinitionrepository.h Wed Mar 03 15:38:34 2010 +0200
+++ b/homescreenpluginsrv/inc/hspsdefinitionrepository.h Wed May 12 13:36:47 2010 +0300
@@ -491,7 +491,10 @@
#ifdef HSPS_LOG_ACTIVE
// Log bus. Not owned.
ChspsLogBus* iLogBus;
-#endif
+#endif
+
+ // Cached copy of last retrieved ODT.
+ ChspsODT* iCacheLastODT;
};
#endif // C_hspsDEFINITIONREPOSITORY_H
--- a/homescreenpluginsrv/inc/hspsdomattribute.h Wed Mar 03 15:38:34 2010 +0200
+++ b/homescreenpluginsrv/inc/hspsdomattribute.h Wed May 12 13:36:47 2010 +0300
@@ -52,6 +52,17 @@
IMPORT_C static ChspsDomAttribute* NewL(
const TDesC8& aName,
ChspsDomStringPool& aStringPool );
+
+ /**
+ * Two-phased constructor 8 bit.
+ *
+ * @since S60 5.0
+ * @param aName Name of attribute (String pool index).
+ * @param aStringPool Attached string pool.
+ */
+ IMPORT_C static ChspsDomAttribute* NewL(
+ const TInt aName,
+ ChspsDomStringPool& aStringPool );
/**
* Two-phased stream constructor.
@@ -83,9 +94,11 @@
*
* @since S60 5.0
* @param aStringPool Original string pool clone.
+ * @param aFastClone If ETrue, then fast mode cloning is used.
* @return Pointer to an attribute. Ownership is transferred to a caller.
*/
- ChspsDomAttribute* CloneL( ChspsDomStringPool& aStringPool );
+ ChspsDomAttribute* CloneL( ChspsDomStringPool& aStringPool,
+ const TBool aFastClone = EFalse );
/**
* Get the attribute value.
@@ -104,6 +117,14 @@
IMPORT_C void SetValueL( const TDesC8& aValue );
/**
+ * Set attribute value.
+ *
+ * @since S60 5.0
+ * @param aValue Attribute ref value.
+ */
+ IMPORT_C void SetValueL( const TInt aValue );
+
+ /**
* Get the attributes name string pool index.
*
* @since S60 5.0
@@ -127,8 +148,7 @@
* @since S60 5.0
* @return Name.
*/
- IMPORT_C const TDesC8& Name();
-
+ IMPORT_C const TDesC8& Name();
/**
* Documented in ChspsDomListItem::Size.
@@ -159,6 +179,10 @@
*/
void ConstructL( const TDesC8& aName );
+ /**
+ * By default Symbian 2nd phase constructor is private.
+ */
+ void ConstructL( const TInt aName );
private: // Data
//String pool to get string for references, not owned.
--- a/homescreenpluginsrv/inc/hspsdomnode.h Wed Mar 03 15:38:34 2010 +0200
+++ b/homescreenpluginsrv/inc/hspsdomnode.h Wed May 12 13:36:47 2010 +0300
@@ -63,7 +63,20 @@
const TDesC8& aName,
const TDesC8& aNS,
ChspsDomStringPool& aStringPool );
-
+
+ /**
+ * Two-phased constructor.
+ *
+ * @since S60 5.0
+ * @param aName Name of node (string pool index).
+ * @param aNS Namespace (string pool index).
+ * @param aStringPool Attached string pool.
+ */
+ static ChspsDomNode* NewL(
+ const TInt aName,
+ const TInt aNS,
+ ChspsDomStringPool& aStringPool );
+
/**
* Two-phased stream constructor.
*
@@ -83,10 +96,13 @@
* Makes a clone from this node and it's child nodes.
*
* @since S60 5.0
- * @param aStringPool A new string pool.
+ * @param aStringPool A new string pool.
+ * @param aFastClone If ETrue, then fast mode cloning is used.
+ *
* @return Pointer to a clone node. Caller has the ownership.
*/
- IMPORT_C ChspsDomNode* CloneL( ChspsDomStringPool& aStringPool );
+ IMPORT_C ChspsDomNode* CloneL( ChspsDomStringPool& aStringPool,
+ const TBool aFastClone = EFalse );
/**
* Makes a clone only from this node.
@@ -299,8 +315,7 @@
IMPORT_C const TDesC8& AttributeValue(const TDesC8& aAttribute) const;
public: //From MhspsDomListItem
-
-
+
/**
* Documented in ChspsDomListItem::Size
*/
@@ -321,8 +336,7 @@
* Documented in ChspsDomListItem::Name
*/
IMPORT_C const TDesC8& Name();
-
-
+
public:
/**
@@ -350,6 +364,16 @@
* By default Symbian 2nd phase constructor is private.
*/
void ConstructL( const TDesC8& aName, const TDesC8& aNS );
+
+ /**
+ * By default Symbian 2nd phase constructor is private.
+ */
+ void ConstructL( const TInt aName, const TInt aNS );
+
+ /**
+ * Construct members
+ */
+ void Construct2L();
private: // Data
--- a/homescreenpluginsrv/inc/hspsdomstringpool.h Wed Mar 03 15:38:34 2010 +0200
+++ b/homescreenpluginsrv/inc/hspsdomstringpool.h Wed May 12 13:36:47 2010 +0300
@@ -1,5 +1,5 @@
/*
-* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2005,2006 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"
@@ -15,25 +15,24 @@
*
*/
-
-
-#ifndef hsps_DOM_STRING_POOL_H
-#define hsps_DOM_STRING_POOL_H
+#ifndef HSPS_DOM_STRING_POOL_H
+#define HSPS_DOM_STRING_POOL_H
// INCLUDES
#include <e32base.h>
#include <s32strm.h>
+#include "hspsdomstringpooloptimizer.h"
// CLASS DECLARATION
/**
- * Class utilize flyweight pattern. Dom strings are stored once
- * and referred with index. Class can be serialized.
- *
- * @lib hspsdomdocument.lib
- * @since S60 5.0
- * @ingroup group_hspsdom
- */
+* @ingroup group_hspsdom
+* Class utilize flyweight pattern. Dom strings are stored once
+* and referred with index. Class can be serialized.
+*
+* @lib xndomdocument.lib
+* @since Series 60 3.1
+*/
class ChspsDomStringPool : public CBase
{
public: // Constructors and destructor
@@ -41,23 +40,26 @@
/**
* Two-phased constructor.
*
- * @since S60 5.0
+ * @param aAllowDuplicates ETrue if duplicates are to be allowed.
+ * Supported for legacy reasons.
*/
- static ChspsDomStringPool* NewL();
-
+ static ChspsDomStringPool* NewL( const TBool aAllowDuplicates = EFalse );
+
/**
* Two-phased stream constructor.
*
- * @since S60 5.0
- * @param aStream Source stream.
- */
- static ChspsDomStringPool* NewL( RReadStream& aStream );
+ * @param aStream Stream where string pool is internalized.
+ * @param aAllowDuplicates ETrue if duplicates are to be allowed.
+ * Supported for legacy reasons.
+ */
+ static ChspsDomStringPool* NewL( RReadStream& aStream,
+ const TBool aAllowDuplicates = EFalse );
/**
* Destructor.
*/
virtual ~ChspsDomStringPool();
-
+
public:
/**
* Make a copy from original StringPool.
@@ -65,39 +67,70 @@
* @return Pointer to a string pool. Ownership is transferred to a caller.
*/
ChspsDomStringPool* CloneL();
+
+ /**
+ * Reset string pool to be reused.
+ *
+ * @since Series 60 5.2
+ */
+ void Reset();
+
public: //Adding
/**
* Set dom string into string pool.
*
- * @since S60 5.0
* @param aString String to add to string pool
* @return Index (reference) to string pool
*/
IMPORT_C TInt AddStringL( const TDesC8& aString );
-
+
+ /**
+ * Set dom string into string pool.
+ *
+ * @param aString String to add to string pool. OWNERSHIP TRANSFERRED!
+ * @return Index (reference) to string pool
+ */
+ TInt AddStringL( HBufC8* aString );
+
+ /**
+ * Add all string from another string pool.
+ *
+ * @param aStringPool Source string pool.
+ */
+ void AddAllL( ChspsDomStringPool& aStringPool );
+
public: //Accessing
/**
- * Get pointer to the node element name.
- * @param aStringRef StringRef.
+ * Get reference to string.
+ *
+ * @param aMap Map object which has index to name string
* @return Pointer to the name
*/
const TDesC8& String( const TInt aStringRef );
/**
* Get object's data size in bytes.
+ *
* @return Data size in bytes
*/
TInt Size() const;
+
+ /**
+ * Get amount of strings.
+ */
+ TInt Count() const;
/**
- * Externalize object
+ * Externalize object.
+ *
* @param aStream Output stream
*/
void ExternalizeL( RWriteStream& aStream ) const;
/**
- * Internalize object
+ * Internalize object.
+ *
* @param aStream Input stream
*/
void InternalizeL( RReadStream& aStream );
@@ -106,21 +139,41 @@
/**
* C++ default constructor.
+ *
+ * @param aAllowDuplicates ETrue if duplicates are to be allowed.
+ * Supported for legacy reasons.
*/
- ChspsDomStringPool();
+ ChspsDomStringPool( const TBool aAllowDuplicates );
/**
- * By default Symbian 2nd phase constructor is private.
+ * By default Symbian 2nd phase constructor is private.
*/
- void ConstructL();
-
- private:
+ void ConstructL();
+
+ /**
+ * Add string to string pool and to optimizer also.
+ *
+ * @param aNewString String to be added. OWNERSHIP TRANSFERRED.
+ * @param TInt Index to added string.
+ */
+ TInt DoAddStringL( HBufC8* aNewString ) ;
+
+ private:
//String pool
RPointerArray<HBufC8> iStringPool;
-
+
+ /**
+ * String pool optimizer.
+ */
+ ThspsDomStringPoolOptimizer iStringPoolOptimizer;
+ /**
+ * ETrue if string pool can contain duplicate entries. Must
+ * be supported for legacy reasons while loading xuikon odts.
+ */
+ TBool iAllowDuplicates;
};
-#endif // hsps_DOM_STRING_POOL_H
+#endif // HSPS_DOM_STRING_POOL_H
// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreenpluginsrv/inc/hspsdomstringpooloptimizer.h Wed May 12 13:36:47 2010 +0300
@@ -0,0 +1,153 @@
+/*
+* Copyright (c) 2005,2006 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: Optimizer module for ChspsDomStringPool.
+*
+*/
+
+#ifndef HSPS_DOM_STRING_POOL_OPTIMIZER_H
+#define HSPS_DOM_STRING_POOL_OPTIMIZER_H
+
+// INCLUDES
+#include <e32base.h>
+
+// CLASS DECLARATION
+
+/**
+* @ingroup group_hspsdom
+* Optimizer module entry for ChspsDomStringPool.
+*
+* @lib hspsdomdocument.lib
+* @since Series 60 5.2
+*/
+class ThspsDomStringPoolOptimizerEntry
+ {
+ public: // Construction.
+ /**
+ * Constructor.
+ *
+ * @param aIndex Index.
+ * @param aString String.
+ */
+ ThspsDomStringPoolOptimizerEntry( TInt aIndex, const TDesC8& aString );
+
+ public: // Data.
+ /**
+ * Index of string in actual string pool.
+ */
+ TInt iIndex;
+
+ /**
+ * Reference to string in string pool.
+ */
+ const TDesC8& iString;
+ };
+
+/**
+* @ingroup group_hspsdom
+* Optimizer module for ChspsDomStringPool.
+*
+* @lib hspsdomdocument.lib
+* @since Series 60 5.2
+*/
+class ThspsDomStringPoolOptimizer
+ {
+ public:
+ /**
+ * Add entry to optimizer list.
+ *
+ * @param aEntry Entry to be added.
+ */
+ void AddEntryL( ThspsDomStringPoolOptimizerEntry& aEntry );
+
+ /**
+ * Get index for string.
+ *
+ * @param aString Reference to given string.
+ * @return TInt Index to actual string pool for string if found.
+ * If string is not found will return KErrNotFound.
+ */
+ TInt GetIndex( const TDesC8& aString );
+
+ /**
+ * Reset.
+ */
+ void Reset();
+
+ /**
+ * Close allocated resources.
+ */
+ void Close();
+
+ /**
+ * Get item count.
+ */
+ TInt Count();
+
+ /**
+ * Get entry.
+ *
+ * @param aIndex Index to Entry.
+ */
+ ThspsDomStringPoolOptimizerEntry& Entry( const TInt aIndex );
+
+ private:
+ /**
+ * Find entry from alphabetic list.
+ * Uses binary search.
+ *
+ * @param aString Reference to string to be searched for.
+ * @param aLeft Left limit for binary search
+ * @param aRight Right limit for binary search.
+ *
+ * @return Index to OPTIMIZER ARRAY. KErrNotFound if
+ * given string is not found.
+ */
+ TInt FindEntry( const TDesC8& aString,
+ const TInt aLeft,
+ const TInt aRight );
+
+ /**
+ * Find a position clue for given string.
+ *
+ * Will return index that can be used to initiate linear
+ * search. Uses binary search to limit required comparisons
+ * when string pools starts to fill.
+ *
+ * Note: Returned index is not absolute! it must be
+ * only used as a start index for linear searching.
+ *
+ * Returned index will be quite close to actual insertion position.
+ * it will be 0 - 2 steps backward from actual position.
+ *
+ * @param aString Reference to string.
+ * @param aLeft Left limit for binary search
+ * @param aRight Right limit for binary search.
+ *
+ * @return Index to start searching for position
+ * for given string.
+ */
+ TInt FindInsertionIndexEstimate( const TDesC8& aString,
+ const TInt aLeft,
+ const TInt aRight );
+
+ private: // Data.
+ /**
+ * Array of optimizer entries.
+ */
+ RArray<ThspsDomStringPoolOptimizerEntry> iEntries;
+ };
+
+#endif // HSPS_DOM_STRING_POOL_OPTIMIZER_H
+
+// End of File
--- a/homescreenpluginsrv/inc/hspsodt.h Wed Mar 03 15:38:34 2010 +0200
+++ b/homescreenpluginsrv/inc/hspsodt.h Wed May 12 13:36:47 2010 +0300
@@ -151,6 +151,13 @@
* @param aIndex Index of the resource to be deleted.
*/
IMPORT_C void DeleteResourceL( TInt aIndex );
+
+ /**
+ * Deletes all resources from the ODT.
+ *
+ * @since S60 5.0
+ */
+ IMPORT_C void DeleteAllResources();
/**
* Gets a resource.
@@ -344,8 +351,15 @@
* @since S60 5.0
* @return ChspsODT* pointer to the cloned ODT.
*/
- IMPORT_C ChspsODT* CloneL();
-
+ IMPORT_C ChspsODT* CloneL() const;
+
+ /**
+ * Clones given ODT to this ODT.
+ *
+ * @since S60 5.0
+ * @param aODT Source ODT.
+ */
+ IMPORT_C void CloneL( ChspsODT& aODT );
/**
* Clones the aDom and sets it as this ChspsODT's DomDocument.
@@ -370,22 +384,6 @@
* @return TUint configuration type.
*/
IMPORT_C TUint ConfigurationType() const;
-
- /**
- * Set package version.
- *
- * @since S60 5.0
- * @param aVersion Version.
- */
- IMPORT_C void SetPackageVersionL( const TDesC& aVersion );
-
- /**
- * Get configuration type.
- *
- * @since S60 5.0
- * @return TDesC package version
- */
- IMPORT_C const TDesC& PackageVersion() const;
/**
* Set family.
@@ -475,20 +473,23 @@
*/
void ConstructL();
- private: // Data
-
- // Family mask (bits for e.g. vga, qhd_tch etc resolutions)
- TUint32 iFamilyMask;
+ private:
+ /**
+ * Helper to ODT cloning. Prevents duplicate code in two clone methods.
+ *
+ * @param aSource Source ODT
+ * @param aTarget Target ODT
+ */
+ static void CopyODTDataL( const ChspsODT& aSource, ChspsODT& aTarget );
- // Configuration type
- TUint iConfigurationType;
-
- // Application or interface uid
- TUint iRootUid;
+ /**
+ * Calculate header size in bytes.
+ *
+ * @return TInt Header size.
+ */
+ TInt HeaderSize() const;
- // The publisher
- TUint iProviderUid;
-
+ private: // Data
// Identifies specific configuration
TUint iThemeUid;
HBufC* iProviderName;
@@ -496,17 +497,8 @@
HBufC* iThemeShortName;
// Revision number
- HBufC* iThemeVersion;
-
- // Indicates whether we are able to internalize the instance
- HBufC* iPackageVersion;
-
- // Language of the ODT instance
- TInt iLanguage;
-
- // Multiple instances allowed/not
- TInt iMultiInstance;
-
+ HBufC* iThemeVersion;
+
// Description of the widget
HBufC* iDescription;
@@ -515,10 +507,28 @@
// Path to the preview file
HBufC* iPreviewFile;
+
+ // Family mask (bits for e.g. vga, qhd_tch etc resolutions)
+ TUint32 iFamilyMask;
+ // Configuration type
+ TUint iConfigurationType;
+
+ // Application or interface uid
+ TUint iRootUid;
+
+ // The publisher
+ TUint iProviderUid;
+
// ThspsThemeStatus
- TUint iFlags;
-
+ TUint iFlags;
+
+ // Language of the ODT instance
+ TInt iLanguage;
+
+ // Multiple instances allowed/not
+ TInt iMultiInstance;
+
// Pointer to list of unlocalized resources
CArrayPtrSeg<ChspsResource>* iResourceList;
--- a/homescreenpluginsrv/inc/hspsresource.h Wed Mar 03 15:38:34 2010 +0200
+++ b/homescreenpluginsrv/inc/hspsresource.h Wed May 12 13:36:47 2010 +0300
@@ -289,15 +289,15 @@
TInt iConfigurationUid;
// Filename without the extension
- TDesC* iResourceID;
+ HBufC* iResourceID;
// Full path and name
- TDesC* iFileName;
+ HBufC* iFileName;
TDataType iMimeType;
// Tags seperated with a colon
- TDesC* iTags;
+ HBufC* iTags;
// Reserved pointer for future extension
TAny* iReserved;
--- a/homescreenpluginsrv/inc/hspsthememanagement.h Wed Mar 03 15:38:34 2010 +0200
+++ b/homescreenpluginsrv/inc/hspsthememanagement.h Wed May 12 13:36:47 2010 +0300
@@ -1294,11 +1294,14 @@
* @param aSearchMask is ChspsODT-object which attributes are filled to present search
* parameters for theme set queried by client. This parametrisation follows the
* high-level schema.
+ * @param aCopyLogos indicates that logo resources should be copied to a private directory
* @param aHeaderList is an list object able to carry ChspsODT-objects.
* @return ThspsServiceCompletedMessage expressing the result of the call.
*/
- virtual ThspsServiceCompletedMessage hspsGetListHeaders(const ChspsODT& aSearchMask,
- CArrayPtrFlat<ChspsODT>& aHeaderList) = 0;
+ virtual ThspsServiceCompletedMessage hspsGetListHeaders(
+ const ChspsODT& aSearchMask,
+ const TBool aCopyLogos,
+ CArrayPtrFlat<ChspsODT>& aHeaderList) = 0;
/** hspsGetListHeaders
*
--- a/homescreenpluginsrv/rom/hsps.iby Wed Mar 03 15:38:34 2010 +0200
+++ b/homescreenpluginsrv/rom/hsps.iby Wed May 12 13:36:47 2010 +0300
@@ -11,7 +11,6 @@
*
* Contributors:
* NTT DOCOMO, INC - Fixing Bug 399 - hsps.iby includes 200159C9.txt which is already included by s60cenrep_variant.iby
-*
* Description: IBY file for ROM image creation
*
*/
--- a/homescreensrv_plat/ai_content_model_api/group/bld.inf Wed Mar 03 15:38:34 2010 +0200
+++ b/homescreensrv_plat/ai_content_model_api/group/bld.inf Wed May 12 13:36:47 2010 +0300
@@ -26,8 +26,5 @@
../inc/aicontentobserver.inl MW_LAYER_PLATFORM_EXPORT_PATH(aicontentobserver.inl)
../inc/aicontentobserver.h MW_LAYER_PLATFORM_EXPORT_PATH(aicontentobserver.h)
-../inc/aipropertyextension.h MW_LAYER_PLATFORM_EXPORT_PATH(aipropertyextension.h)
-../inc/aieventhandlerextension.h MW_LAYER_PLATFORM_EXPORT_PATH(aieventhandlerextension.h)
-../inc/aipropertyextension.inl MW_LAYER_PLATFORM_EXPORT_PATH(aipropertyextension.inl)
../inc/aicontentmodel.h MW_LAYER_PLATFORM_EXPORT_PATH(aicontentmodel.h)
../inc/aicontentrequest.h MW_LAYER_PLATFORM_EXPORT_PATH(aicontentrequest.h)
--- a/homescreensrv_plat/ai_content_model_api/inc/aicontentmodel.h Wed Mar 03 15:38:34 2010 +0200
+++ b/homescreensrv_plat/ai_content_model_api/inc/aicontentmodel.h Wed May 12 13:36:47 2010 +0300
@@ -123,6 +123,12 @@
const char KAiContentTypeText[] = "text/plain";
+/** MIME type for passing raw data.
+ *
+ * @see MAiContentObserver::PublishPtr
+ */
+const char KAiContentTypeData[] = "data/stream";
+
/**
* Abstract interface which provides services to iterate content items
* supported by the plug-in. Only used by the Active Idle Framework.
--- a/homescreensrv_plat/ai_content_model_api/inc/aicontentobserver.h Wed Mar 03 15:38:34 2010 +0200
+++ b/homescreensrv_plat/ai_content_model_api/inc/aicontentobserver.h Wed May 12 13:36:47 2010 +0300
@@ -19,13 +19,15 @@
#ifndef M_AICONTENTOBSERVER_H
#define M_AICONTENTOBSERVER_H
+// System includes
#include <e32std.h>
-class MAiPropertyExtension;
+// User includes
+
+// Forward declarations
+class CHsContentPublisher;
+class THsPublisherInfo;
class RFile;
-class TDesC8;
-class TDesC16;
-struct TAiPublisherInfo;
/**
* Used by AI Plug-in to give notification about modifications in
@@ -35,9 +37,13 @@
*/
class MAiContentObserver
{
-public: // New Enumeration
+public:
+ // data types
+
/**
- * CSS Primitive value type
+ * Value type for SetProperty
+ *
+ * @since S60 5.2
*/
enum TValueType
{
@@ -57,7 +63,8 @@
EValueUnitValue
};
-public: // New functions
+public:
+ // new functions
/**
* Invoked by the plug-in to inform that it initiates content publishing
@@ -107,21 +114,21 @@
/**
* Invoked by plug-in to test if the specified content can be published.
*
- * @param aPlugin - Plug-in property extension interface implementation.
+ * @param aPlugin - Plug-in interface implementation.
* @param aContent - identification of content selector, MUST correspond
* single content selector supported by plug-in. The framework
* utilizes the selector id to match for cid and MIME type.
* @param aIndex - index of the content item.
* @return ETrue - if content could be published; EFalse otherwise.
*/
- virtual TBool CanPublish( MAiPropertyExtension& aPlugin, TInt aContent, TInt aIndex ) = 0;
+ virtual TBool CanPublish( CHsContentPublisher& aPlugin, TInt aContent, TInt aIndex ) = 0;
/**
* Invoked by the plug-in to inform that content identified by reference
* aResource must be published to UI control\element identified by selector
* aContent.
*
- * @param aPlugin - Plug-in property extension interface implementation.
+ * @param aPlugin - Plug-in interface implementation.
* @param aContent - identification of content selector, MUST correspond
* single content selector supported by plug-in. The framework
* utilizes the selector id to match for cid and MIME type.
@@ -137,14 +144,14 @@
* - KErrNotFound - if content reference is not found in current
* UI definition.
*/
- virtual TInt Publish( MAiPropertyExtension& aPlugin, TInt aContent, TInt aResource, TInt aIndex ) = 0;
+ virtual TInt Publish( CHsContentPublisher& aPlugin, TInt aContent, TInt aResource, TInt aIndex ) = 0;
/**
* Invoked by the plug-in to inform that textual content provided within
* parameter aText must be published to UI control\element identified by
* selector aContent.
*
- * @param aPlugin - Plug-in property extension interface implementation.
+ * @param aPlugin - Plug-in interface implementation.
* @param aContent - identification of content selector, MUST correspond
* single content selector supported by plug-in. The framework
* utilizes the selector id to match for cid and MIME type.
@@ -159,14 +166,14 @@
* - KErrArgument - if content cannot be published to UI element,
* e.g. MIME type mismatch.
*/
- virtual TInt Publish( MAiPropertyExtension& aPlugin, TInt aContent, const TDesC16& aText, TInt aIndex ) = 0;
+ virtual TInt Publish( CHsContentPublisher& aPlugin, TInt aContent, const TDesC16& aText, TInt aIndex ) = 0;
/**
* Invoked by the plug-in to inform that content provided within buffer
* aBuf must be published to UI control\element identified by selector
* aContent.
*
- * @param aPlugin - Plug-in property extension interface implementation.
+ * @param aPlugin - Plug-in interface implementation.
* @param aContent - identification of content selector, MUST correspond
* single content selector supported by plug-in. The framework
* utilizes the selector id to match for cid and MIME type.
@@ -181,7 +188,7 @@
* - KErrArgument - if content cannot be published to UI element,
* e.g. MIME type mismatch.
*/
- virtual TInt Publish( MAiPropertyExtension& aPlugin, TInt aContent, const TDesC8& aBuf, TInt aIndex ) = 0;
+ virtual TInt Publish( CHsContentPublisher& aPlugin, TInt aContent, const TDesC8& aBuf, TInt aIndex ) = 0;
/**
* Invoked by the plug-in to inform that an object provided by pointer aPtr
@@ -189,7 +196,7 @@
* The implementation packages the pointer to a buffer and delegates to
* buffer publishing method Publish(MAiPropertyExtension&, TInt, const TDesC8&, TInt).
*
- * @param aPlugin - Plug-in property extension interface implementation.
+ * @param aPlugin - Plug-in interface implementation.
* @param aContent - identification of content selector, MUST correspond
* single content selector supported by plug-in. The framework
* utilizes the selector id to match for cid and MIME type.
@@ -207,7 +214,7 @@
* e.g. MIME type mismatch.
* @see KAiContentTypeBitmap
*/
- inline TInt PublishPtr( MAiPropertyExtension& aPlugin, TInt aContent, TAny* aPtr, TInt aIndex );
+ inline TInt PublishPtr( CHsContentPublisher& aPlugin, TInt aContent, TAny* aPtr, TInt aIndex );
/**
* Helper function for unpacking a pointer that has been published with
@@ -221,7 +228,7 @@
* Invoked by the plug-in to inform that content from file handle aFile
* must be published to UI control\element identified by selector aContent.
*
- * @param aPlugin - Plug-in property extension interface implementation.
+ * @param aPlugin - Plug-in interface implementation.
* @param aContent - identification of content selector, MUST correspond
* single content selector supported by plug-in. The framework
* utilizes the selector id to match for cid and MIME type.
@@ -237,13 +244,13 @@
* - KErrArgument - if content cannot be published to UI element,
* e.g. MIME type mismatch.
*/
- virtual TInt Publish( MAiPropertyExtension& aPlugin, TInt aContent, RFile& aFile, TInt aIndex ) = 0;
+ virtual TInt Publish( CHsContentPublisher& aPlugin, TInt aContent, RFile& aFile, TInt aIndex ) = 0;
/**
* Invoked by the plug-in to inform that content must be cleaned in UI
* control\element identified by selector aContent.
*
- * @param aPlugin - Plug-in property extension interface implementation.
+ * @param aPlugin - Plug-in interface implementation.
* @param aContent - identification of content selector, MUST correspond
* single content selector supported by plug-in. The framework
* utilizes the selector id to match for cid and MIME type.
@@ -255,7 +262,7 @@
* - KErrNotFound - if content reference is not found in current
* UI definition.
*/
- virtual TInt Clean( MAiPropertyExtension& aPlugin, TInt aContent, TInt aIndex ) = 0;
+ virtual TInt Clean( CHsContentPublisher& aPlugin, TInt aContent, TInt aIndex ) = 0;
/**
* Returns interface extension. Not used in S60 3.2 release.
@@ -267,17 +274,17 @@
virtual TAny* Extension( TUid aUid ) = 0;
/**
- * Invoked by the plugin factory
- *
- * @param aPublsiherInfo Publisher which requires subscription
- * @return ETrue if subsription is needed, EFalse otherwise
- */
- virtual TBool RequiresSubscription( const TAiPublisherInfo& aPublisherInfo ) const = 0;
+ * Invoked by the plugin factory
+ *
+ * @param aPublsiherInfo Publisher which requires subscription
+ * @return ETrue if subsription is needed, EFalse otherwise
+ */
+ virtual TBool RequiresSubscription( const THsPublisherInfo& 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 aPlugin - Plug-in 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.
@@ -290,7 +297,7 @@
* - KErrNotSupported - if content selector is not supported by
* current plugin definition.
*/
- virtual TInt SetProperty( MAiPropertyExtension& aPlugin,
+ virtual TInt SetProperty( CHsContentPublisher& aPlugin,
const TDesC8& aElementId,
const TDesC8& aPropertyName,
const TDesC8& aPropertyValue ) = 0;
@@ -298,7 +305,7 @@
/**
* Invoked by the plug-in to change the property value of a specific content.
*
- * @param aPlugin - Plug-in property extension interface implementation.
+ * @param aPlugin - Plug-in 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.
@@ -312,7 +319,7 @@
* - KErrNotSupported - if content selector is not supported by
* current plugin definition.
*/
- virtual TInt SetProperty( MAiPropertyExtension& aPlugin,
+ virtual TInt SetProperty( CHsContentPublisher& aPlugin,
const TDesC8& aElementId,
const TDesC8& aPropertyName,
const TDesC8& aPropertyValue,
--- a/homescreensrv_plat/ai_content_model_api/inc/aicontentobserver.inl Wed Mar 03 15:38:34 2010 +0200
+++ b/homescreensrv_plat/ai_content_model_api/inc/aicontentobserver.inl Wed May 12 13:36:47 2010 +0300
@@ -15,23 +15,40 @@
*
*/
+#ifndef _AICONTENTOBSERVER_INL
+#define _AICONTENTOBSERVER_INL
-inline TInt MAiContentObserver::PublishPtr
- (MAiPropertyExtension& aPlugin, TInt aContent, TAny* aPtr, TInt aIndex)
+// ---------------------------------------------------------------------------
+// MAiContentObserver::PublishPtr
+//
+// ---------------------------------------------------------------------------
+//
+inline TInt MAiContentObserver::PublishPtr( CHsContentPublisher& aPlugin,
+ TInt aContent, TAny* aPtr, TInt aIndex )
{
// Package the pointer to a buffer and delegate to buffer publish method
- return this->Publish(aPlugin, aContent, TPckgC<TAny*>(aPtr), aIndex);
+ return this->Publish( aPlugin, aContent, TPckgC<TAny*>( aPtr ), aIndex );
}
-template<class PtrT> inline
-PtrT* MAiContentObserver::UnpackPtr(const TDesC8& aBuf)
+// ---------------------------------------------------------------------------
+// MAiContentObserver::UnpackPtr
+//
+// ---------------------------------------------------------------------------
+//
+template< class PtrT > inline PtrT* MAiContentObserver::UnpackPtr(
+ const TDesC8& aBuf )
{
- TAny* result = NULL;
+ TAny* result( NULL );
+
if ( aBuf.Size() == sizeof( TAny* ) )
{
- TPckg<TAny*>(result).Copy(aBuf); // Effectively writes aBuf contents to result
+ // Effectively writes aBuf contents to result
+ TPckg< TAny* >( result ).Copy( aBuf );
}
- return static_cast<PtrT*>(result);
+
+ return static_cast< PtrT* >( result );
}
-// End of file
\ No newline at end of file
+#endif // _AICONTENTOBSERVER_INL
+
+// End of file
--- a/homescreensrv_plat/ai_content_model_api/inc/aicontentrequest.h Wed Mar 03 15:38:34 2010 +0200
+++ b/homescreensrv_plat/ai_content_model_api/inc/aicontentrequest.h Wed May 12 13:36:47 2010 +0300
@@ -37,6 +37,15 @@
* content observer, EFalse otherwise.
*/
virtual TBool RefreshContent( TInt aContentId ) = 0;
+
+ /**
+ * Requests AI content publisher to suspend specific content item.
+ *
+ * @param aContentId content identifier in target plug-ins content model.
+ * @return ETrue if the plugin will suspend the content by calling its
+ * content observer, EFalse otherwise.
+ */
+ virtual TBool SuspendContent( TInt aContentId ) = 0;
protected:
/**
--- a/homescreensrv_plat/ai_content_model_api/inc/aieventhandlerextension.h Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,75 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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: Event handling extension for the CAiContentPublisher interface.
-*
-*/
-
-
-#ifndef M_AIEVENTHANDLEREXTENSION_H
-#define M_AIEVENTHANDLEREXTENSION_H
-
-#include <e32std.h>
-
-/**
- * Extension of the CAiContentPublisher interface, which allows Active Idle
- * Framework to notify their plug-ins that they must to handle event.
- * Plug-ins must provide implementation of interface only if they are
- * supporting event model (e.g. provides possibility to manipulate engine
- * properties via UI).
- *
- * @since S60 3.2
- */
-class MAiEventHandlerExtension
- {
-public:
- /**
- * 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.
- */
- virtual void HandleEvent(TInt aEvent, const TDesC& aParam) = 0;
-
- /**
- * 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 provied to plug-in as-is in the descriptor.
- */
- virtual 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
- */
- virtual TBool HasMenuItem(const TDesC& /*aMenuItem*/) { return EFalse; }
-
-protected:
- /**
- * Protected destructor prevents deletion through this interface.
- */
- ~MAiEventHandlerExtension() { }
- };
-
-#endif // M_AIEVENTHANDLEREXTENSION_H
--- a/homescreensrv_plat/ai_content_model_api/inc/aipropertyextension.h Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,219 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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 M_AIPROPERTYEXTENSION_H
-#define M_AIPROPERTYEXTENSION_H
-
-#include <e32std.h>
-
-/**
- * Maximum length for Content publisher name
- */
-const TInt KAiPublisherNameMaxLength = 128;
-
-/**
- * Maximum length for Content publisher namespace
- */
-const TInt KAiPublisherNamespaceMaxLength = 32;
-
-/**
- * Content publisher name buffer
- */
-typedef TBuf<KAiPublisherNameMaxLength> TAiPublisherName;
-
-/**
- * Content publisher namespace buffer
- */
-typedef TBuf8<KAiPublisherNamespaceMaxLength> TAiPublisherNamespace;
-
-/**
- * Contains information about Content publisher plug-in.
- */
-struct TAiPublisherInfo
- {
- TAiPublisherInfo()
- : iUid( TUid::Null() ),
- iName( KNullDesC ),
- iNamespace( KNullDesC8 )
- {
- }
-
- inline TAiPublisherInfo& operator= (const TAiPublisherInfo& aInfo)
- {
- iUid = TUid::Uid( aInfo.iUid.iUid );
- iName.Copy( aInfo.iName );
- iNamespace.Copy( aInfo.iNamespace );
- return *this;
- }
-
- inline TBool operator== (const TAiPublisherInfo& aInfo) const
- {
- if( iUid == aInfo.iUid &&
- iName == aInfo.iName &&
- iNamespace == aInfo.iNamespace )
- {
- return ETrue;
- }
-
- return EFalse;
- }
-
- TUid iUid;
- TAiPublisherName iName;
- TAiPublisherNamespace iNamespace;
- };
-
-/**
- * Defines set of properties supported by plug-in.
- *
- * Example how to provide and set the properties.
- * @code
- * void CMyAiPlugin::ConstructL()
- * {
- * iInfo = new (ELeave) TAiPublisherInfo;
- * iContent = AiUtility::CreateContentItemArrayIteratorL( KMyAiPluginContent );
- * iResources = AiUtility::CreateContentItemArrayIteratorL( KMyAiPluginResources );
- * iEvents = AiUtility::CreateContentItemArrayIteratorL( KMyAiPluginEvents );
- * }
- *
- * void CMyAiPlugin::SetPropertyL( TInt aProperty, TAny* aValue )
- * {
- * if( !aValue ) return;
- *
- * switch( aProperty )
- * {
- * case EAiPublisherInfo:
- * {
- * const TAiPublisherInfo* info =
- * static_cast<const TAiPublisherInfo*>(aValue);
- * iInfo->iUid.iUid = info->iUid.iUid;
- * iInfo->iName.Copy( info->iName );
- * break;
- * }
- * }
- * }
- *
- * TAny* CMyAiPlugin::GetPropertyL( TInt aProperty )
- * {
- * switch( aProperty )
- * {
- * case EAiPublisherInfo:
- * return iInfo;
- *
- * case EAiPublisherContent:
- * return iContent;
- *
- * case EAiPublisherResources:
- * return iResources;
- *
- * case EAiPublisherEvents:
- * return iEvents;
- * }
- * return NULL;
- * }
- * @endcode
- */
-enum TAiPublisherProperty
- {
- /**
- * Enables read-only access to Plug-in information. GetProperty MUST return
- * instance of struct TAiPublisherInfo via TAny* .
- */
- EAiPublisherInfo = 0x0001,
-
- /**
- * Enables read-only access to iterator of content selectors. GetProperty
- * MUST return instance of MAiContentItemIterator for content selectors.
- */
- EAiPublisherContent,
-
- /**
- * Enables read-only access to iterator of content references. GetProperty
- * MUST return instance of MAiContentItemIterator for content references.
- */
- EAiPublisherResources,
-
- /**
- * Enables read-only access to iterator of events supported by plug-in.
- * GetProperty MUST return instance of MAiContentItemIterator for events.
- */
- EAiPublisherEvents,
-
- /**
- * Provides access to MAiContentRequest interface for refreshing a content
- * item.
- * @see EAiPublisherContent
- */
- EAiContentRequest,
-
- /**
- * Provides access to MAiContentRequest interface for refreshing a resource
- * item.
- * @see EAiPublisherResources
- */
- EAiResourceRequest,
-
- /**
- * Provides access to localized plugin name if supported. HBufC*
- * @see EAiPublisherResources
- */
- EAiPluginName
- };
-
-
-/**
- * Property extension interface for CAiContentPublisher.
- *
- * @see CAiContentPublisher::Extension
- * @since S60 3.2
- */
-class MAiPropertyExtension
- {
-public: // New functions
-
- /**
- * Read property of publisher plug-in.
- *
- * @param aProperty - identification of property.
- * @return Pointer to property value.
- */
- virtual TAny* GetPropertyL(TInt aProperty) = 0;
-
- /**
- * Helper function for accessing the Publisher Info Property.
- */
- inline const TAiPublisherInfo* PublisherInfoL();
-
- /**
- * Write property value.
- *
- * @param aProperty - identification of property.
- * @param aValue - contains pointer to property value.
- */
- virtual void SetPropertyL(TInt aProperty, TAny* aValue) = 0;
-
-protected:
- /**
- * Protected destructor prevents deletion through this interface.
- */
- ~MAiPropertyExtension() { }
- };
-
-#include <aipropertyextension.inl>
-
-#endif // M_AIPROPERTYEXTENSION_H
--- a/homescreensrv_plat/ai_content_model_api/inc/aipropertyextension.inl Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,22 +0,0 @@
-/*
-* Copyright (c) 2005-2005 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: Inline function implementations for MAiPropertyExtension
-*
-*/
-
-
-inline const TAiPublisherInfo* MAiPropertyExtension::PublisherInfoL()
- {
- return static_cast<TAiPublisherInfo*>(this->GetPropertyL(EAiPublisherInfo));
- }
--- a/homescreensrv_plat/ai_plugin_information_api/group/bld.inf Wed Mar 03 15:38:34 2010 +0200
+++ b/homescreensrv_plat/ai_plugin_information_api/group/bld.inf Wed May 12 13:36:47 2010 +0300
@@ -25,4 +25,3 @@
PRJ_EXPORTS
../inc/activeidle2domainpskeys.h MW_LAYER_PLATFORM_EXPORT_PATH(activeidle2domainpskeys.h)
-../inc/activeidle2internalpskeys.h MW_LAYER_PLATFORM_EXPORT_PATH(activeidle2internalpskeys.h)
--- a/homescreensrv_plat/ai_plugin_information_api/inc/activeidle2domainpskeys.h Wed Mar 03 15:38:34 2010 +0200
+++ b/homescreensrv_plat/ai_plugin_information_api/inc/activeidle2domainpskeys.h Wed May 12 13:36:47 2010 +0300
@@ -68,10 +68,6 @@
const TUint KActiveIdleActOnSendKey = 0x00000004; // Contains 0 if we are to ignore the send or > 0 if we need to react to it
-const TUint KActiveIdleTouchToolbarWidth = 0x00000005;
-
-const TUint KActiveIdleTouchToolbarHeight = 0x00000006;
-
const TUint KActiveIdleSimRegFailedReceived = 0x00000007; // Contains 1 if we have received sim reg failed message, 0 if not.
enum EPSActiveIdleSimRegReceiveStatus
@@ -85,33 +81,6 @@
EPSSimRegFailedMessageReceived
};
-const TUint KActiveIdleThemeSupportsXsp = 0x00000008; // Contains one value from following enumeration
-
-enum EPSActiveIdleThemeSupportsXsp
-{
- // Value indicates that xSP feature is not supported in currently active theme
- EPSAiXspNotSupported,
-
- // Value indicates that the current theme supports the xSP feature
- EPSAiXspIsSupported
-};
-
-const TUint KActiveIdleLaunch = 0x00000009; // Contains information if shortcut launching is ongoing or not
-
-enum EPSActiveIdleIdleLaunch
-{
-
- // Value indicates that no shortcut is in launching state and new launch tapping can be handled
- EPSAiLaunchNotActive = 0,
-
- // Value indicates that active idle shortcut is launching
- EPSAiLaunchIsActive
-};
-
-
-// Indicates that Active Idle 2 should be restarted.
-const TUint KActiveIdleRestartAI2 = 0x0000000B;
-
// Indicates that all the CPS Harvester plugins have been updated
const TUint KActiveIdleCpsPluginsUpdated = 0x0000000C;
@@ -150,21 +119,6 @@
*/
const TUid KPSUidActiveIdle2 = {0x102750F0}; // ActiveIdle2 SID
-/**
-*
-* First iterate Active plugin UID range to find all
-* active plugin UID's. Use that UID as a key to find the plugins name
-* from the name range.
-*
-*/
-
-/**
-* Active plugin count
-*
-* Possible integer values:
-* 0x000000000 - 0xFFFFFFFF : Active plugin count
-*/
-const TUint KAIActivePluginCount = 0x00000000;
/**
* Active plugin UID range
@@ -175,13 +129,4 @@
const TUint KAIActivePluginRangeStart = 0x00000001;
const TUint KAIActivePluginRangeEnd = 0x0FFFFFFF;
-/**
-* Active plugin name range
-*
-* Possible string values:
-* Plugin name
-*/
-const TUint KAIPluginNameRangeStart = 0x10000000;
-const TUint KAIPluginNameRangeEnd = 0xFFFFFFFF;
-
#endif // ACTIVEIDLE2_DOMAIN_PS_KEYS_H
--- a/homescreensrv_plat/ai_plugin_information_api/inc/activeidle2internalpskeys.h Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,82 +0,0 @@
-/*
-* Copyright (c) 2002 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: Internal Publish & Subscribe keys for Active Idle 2
-*
-*/
-
-
-#ifndef __ACTIVEIDLE2INTERNALPSKEYS_H__
-#define __ACTIVEIDLE2INTERNALPSKEYS_H__
-
-/**
- * Gives possibility to execute shortcuts defined by localapp URL.
- * This UID is used as a key id under KUidSystemCategory.
- * Clients must supply string in localapp URL format defined by RFC 2396.
- *
- * @type RProperty::EText
- */
-const TUint32 KPSUidShortcutCmd = 0x102750FF;
-
-/**
- * Shortcut Plug-in command for enabling keylock.
- */
-_LIT( KAiPSEnableKeyLock, "localapp:keylock?on");
-
-/**
- * Shortcut Plug-in command for canceling keylock.
- */
-_LIT( KAiPSSkipKeyLock, "localapp:keylock?skip");
-
-/**
- * Shortcut Plug-in command for timeoutting keylock.
- */
-_LIT( KAiPSKeyLockTimeout, "localapp:keylock?timeout");
-
-/**
- * Shortcut Plug-in command for launching Logs to dialed calls view.
- */
-_LIT( KAiPSLaunchLogs, "localapp:logs?view=dialled");
-
-/**
- * Shortcut Plug-in command for launching Voice Dial UI.
- */
-_LIT( KAiPSLaunchNameDialer, "localapp:voicedial");
-
-/**
- * Shortcut Plug-in command for canceling voice dial ui.
- */
-_LIT( KAiPSSkipNameDialer, "localapp:voicedial?skip");
-
-
-// Restart code for category KPSUidAiInformation = 0x101FD657 key KActiveIdleRestartAI2 0xA
-const TInt KActiveIdleRestartCode = 0xFA93BAD2;
-
-
-
-/**
- * Publish and Subscribe key for data plugin states in KPSUidActiveIdle2 category (AI plug-in registry API)
- */
-const TUint KPSAiDataPluginState = 0x0000000F; // Contains one value from following emuneration
-
-/**
- * States for the KPSAiDataPluginState key
- */
-enum EPSAiDataPluginState
-{
- EPSAiDataPluginsNotLoaded,
- EPSAiDataPluginsLoaded
-};
-
-
-#endif // __ACTIVEIDLE2INTERNALPSKEYS_H__
--- a/homescreensrv_plat/ai_plugin_management_api/group/bld.inf Wed Mar 03 15:38:34 2010 +0200
+++ b/homescreensrv_plat/ai_plugin_management_api/group/bld.inf Wed May 12 13:36:47 2010 +0300
@@ -24,12 +24,12 @@
PRJ_EXPORTS
-../inc/aicontentpublisheruid.hrh MW_LAYER_PLATFORM_EXPORT_PATH(aicontentpublisheruid.hrh)
../inc/aiprofilepluginuids.hrh MW_LAYER_PLATFORM_EXPORT_PATH(aiprofilepluginuids.hrh)
-../inc/aiscutuids.hrh MW_LAYER_PLATFORM_EXPORT_PATH(aiscutuids.hrh)
-../inc/aicontentpublisher.h MW_LAYER_PLATFORM_EXPORT_PATH(aicontentpublisher.h)
../inc/aidevicestatuscontentmodel.h MW_LAYER_PLATFORM_EXPORT_PATH(aidevicestatuscontentmodel.h)
-../inc/aiscutcontentmodel.h MW_LAYER_PLATFORM_EXPORT_PATH(aiscutcontentmodel.h)
-../inc/aiscutdefs.h MW_LAYER_PLATFORM_EXPORT_PATH(aiscutdefs.h)
../inc/aiprofileplugincontentmodel.h MW_LAYER_PLATFORM_EXPORT_PATH(aiprofileplugincontentmodel.h)
-../inc/aiscutappuids.hrh MW_LAYER_PLATFORM_EXPORT_PATH(aiscutappuids.hrh)
+
+../inc/hscontentpublisheruid.hrh MW_LAYER_PLATFORM_EXPORT_PATH(hscontentpublisheruid.hrh)
+../inc/hscontentpublisher.h MW_LAYER_PLATFORM_EXPORT_PATH(hscontentpublisher.h)
+../inc/hscontentpublisher.inl MW_LAYER_PLATFORM_EXPORT_PATH(hscontentpublisher.inl)
+../inc/hspublisherinfo.h MW_LAYER_PLATFORM_EXPORT_PATH(hspublisherinfo.h)
+../inc/hspublisherinfo.inl MW_LAYER_PLATFORM_EXPORT_PATH(hspublisherinfo.inl)
--- a/homescreensrv_plat/ai_plugin_management_api/inc/aicontentpublisher.h Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,398 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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: Interface for Active Idle content publisher plug-ins.
-*
-*/
-
-
-#ifndef C_AICONTENTPUBLISHER_H
-#define C_AICONTENTPUBLISHER_H
-
-#include <ecom/ecom.h>
-#include <aicontentpublisheruid.hrh>
-
-/**
- * ECom plugin interface UID
- */
-const TUid KInterfaceUidContentPlugin = { AI_UID_ECOM_INTERFACE_CONTENTPUBLISHER };
-
-/**
- * API Extension UID for MAiPropertyExtension.
- *
- * @see CAiContentPublisher::Extension
- * @see MAiPropertyExtension
- */
-const TUid KExtensionUidProperty = { 0x1 };
-
-/**
- * API Extension UID for MAiEventExtension.
- *
- * @see CAiContentPublisher::Extension
- * @see MAiEventExtension
- */
-const TUid KExtensionUidEventHandler = { 0x2 };
-
-/**
- * Defines set of reasons for plug-in state change.
- */
-enum TAiTransitionReason
- {
-
- /**
- * Unknown transition reason.
- */
- EAiUnknownTransitionReason = 0,
-
- /**
- * System has started up.
- */
- EAiSystemStartup,
-
- /**
- * System is shutting down.
- */
- EAiSystemShutdown,
-
- /**
- * Backlight on.
- */
- EAiBacklightOn,
-
- /**
- * Backlight off.
- */
- EAiBacklightOff,
-
- /**
- * Backup or restore has been initiated.
- */
- EAiBackupRestoreStarted,
-
- /**
- * Backup or restore has ended.
- */
- EAiBackupRestoreEnded,
-
- /**
- * Call started.
- */
- EAiPhoneCallStarted,
-
- /**
- * Call ended.
- */
- EAiPhoneCallEnded,
-
- /**
- * Active Idle UI Definition change has started.
- */
- EAiUiDefinitionChangeStarted,
-
- /**
- * Active Idle UI Definition change has ended.
- */
- EAiUiDefinitionChangeEnded,
-
- /**
- * Phone general theme has changed.
- */
- EAiGeneralThemeChanged,
-
- /**
- * Screen layout has changed.
- */
- EAiScreenLayoutChanged,
-
- /**
- * System clock crossed midnight.
- */
- EAiMidnightPassed,
-
- /**
- * Language has been changed.
- */
- EAiLanguageChanged,
-
- /**
- * System time has been changed by user.
- */
- EAiTimeChanged,
-
- /**
- * Idle changes to background.
- */
- EAiIdleBackground,
-
- /**
- * Idle changes to foreground.
- */
- EAiIdleForeground,
-
- /**
- * Suspending plugins.
- */
- EAiSuspendPlugins,
-
- /**
- * Keylock enabled.
- */
- EAiKeylockEnabled,
-
- /**
- * Keylock disabled.
- */
- EAiKeylockDisabled,
-
- /**
- * Plugins can go online
- */
- EAiIdleOnLine,
-
- /**
- * Plugins must go offline
- */
- EAiIdleOffLine,
-
- /**
- * Page changed
- */
- EAiIdlePageSwitch
- };
-
-class MAiContentObserver;
-class MAiPluginSettings;
-typedef RPointerArray< MAiPluginSettings > RAiSettingsItemArray;
-
-/**
- * ECom plug-in interface that Active Idle plug-ins must implement.
- * It is used to control plug-in life cycle: load/destroy plug-ins;
- * suspend/resume plug-in execution.
- *
- * @since S60 3.2
- */
-class CAiContentPublisher : public CBase
- {
-public: // Constructors and destructor
-
- /**
- * Creates a new plug-in instance based on implementation UID.
- *
- * @param aImpUid implementation UID of plug-in to instantiate.
- * @return pointer to the instantiated interface implementation.
- * @pre Interface implementation exists by uid aImpUid.
- */
- inline static CAiContentPublisher* NewL(TUid aImpUid);
-
- /**
- * Creates a new plug-in instance based on mime type.
- *
- * @param aMime MIME type of plug-in to instantiate.
- * @return pointer to the instantiated interface implementation.
- */
- inline static CAiContentPublisher* NewL(const TDesC8& aMime);
-
- /**
- * Destroys instance of the plug-in. Called by the framework during plug-in
- * unloading phase.
- */
- inline virtual ~CAiContentPublisher();
-
-public: // New functions
- /**
- * This method transit the plugin to "Alive" state.
- * The method is called by the framework to instruct plug-in that it is
- * allowed to actively publish its data to its observers. This means the plugin
- * is allowed to consume memory and CPU resources, e.g plug-in is able load
- * engines, run timers, perform asynchronous operations, etc. The method
- * transits the plug-in to "Alive" state. There can be many concurrent
- * calls to resume, with different or the same reason code, this allows
- * the plugin to properly respond to enviroment change that raise the
- * need to re-publish content (changes like date/time change etc).
- *
- * @param aReason reason for state change, see TAiTransitionChange.
- * @pre None
- * @post Plugin is in resumed state and actively publishes its data.
- *
- * Short example what a typical resume implementation does.
- * @code
- * if( !MyEngineCreated() )
- * {
- * CreateEngine();
- * }
- * StartEngine();
- * @endcode
- */
- virtual void Resume(TAiTransitionReason aReason) = 0;
-
- /**
- * This method transits the plug-in to "Suspendend" state.
- * 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
- * timer, cancel outstanding asynchronous operations, etc.
- *
- * @param aReason reason for state change, see TAiTransitionChange.
- * @pre None
- * @post Plugin suspends publishing data and free resources (timers etc).
- *
- * Short example what a typical suspend implementation does.
- * @code
- * DisableEngine();
- * @endcode
- */
- virtual void Suspend(TAiTransitionReason aReason) = 0;
-
- /**
- * This method transits the plug-in to "Idle" state.
- * The method is called by the framework to request the plug-in free all
- * memory and CPU resources and close all its open files, the plug-in
- * should unload its engines during backup operation.
- *
- * @param aReason reason for state change, see TAiTransitionChange.
- * @pre None
- * @post Plugin stops publishing data and frees all possible resources.
- *
- * Short example what a typical stop implementation does.
- * @code
- * DestroyEngine();
- * @endcode
- */
- virtual void Stop(TAiTransitionReason aReason) = 0;
-
- /**
- * 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.
- * @pre None
- * @post Plugin publishes its data to the subscribed observer.
- *
- * Short example what a typical subscribe implementation does and
- * one alternative how observers are used.
- * @code
- * if( !ObserverAlreadyAdded( aObserver ) )
- * {
- * iMyContentObservers.AppendL( aObserver );
- * }
- *
- * ...
- *
- * // Engine reports data changed
- *
- * const TDesC& data = iEngine->LatestData();
- * for( TInt i = 0; i < iMyContentObservers.Count(); ++i )
- * {
- * iMyContentObservers[i].Publish( data );
- * }
- * @endcode
- */
- virtual void SubscribeL(MAiContentObserver& aObserver) = 0;
-
- /**
- * Configures the plug-in.
- *
- * @param aSettings setting items defined in the UI definition.
- * This plugin takes ownership of the
- * MAiPluginSettings objects in the array.
- * If this method leaves the caller will handle the cleanup.
- * @pre None
- * @post Plugin has set its state according to relevant settings.
- *
- * Short example how to read plugin settings.
- * @code
- * for( TInt i = 0; i < aSettings.Count(); ++i )
- * {
- * MAiPluginSettingsItem& item = (aSettings[i])->AiPluginSettingsItem();
- * TInt32 value = 0;
- * if( ParseInt( value, item.Value() ) != KErrNone )
- * {
- * continue;
- * }
- * if( value < 0 )
- * {
- * continue; // All our settings are counts, skip bad settings
- * }
- * if( item.Key() == EMySettingMaxUsers )
- * {
- * iEngine->SetMaxUsers( value );
- * continue;
- * }
- * else if( item.Key() == EMySettingNumItems )
- * {
- * iNumItems = value;
- * continue;
- * }
- * }
- * // We own the array so destroy it
- * aSettings.ResetAndDestroy();
- * @endcode
- */
- virtual void ConfigureL( RAiSettingsItemArray& aSettings) = 0;
-
- /**
- * Returns interface extension. In S60 3.2 only event & property
- * extensions are supported. See MAiEventHandlerExtension & MAiPropertyExtension
- * interfaces.
- *
- * @param aUid - UID of the extension interface to access.
- * @see MAiEventExtension
- * @see MAiPropertyExtension
- * @return the extension interface. Actual type depends on the passed aUid
- * argument.
- *
- * Example on how to properly return an extension.
- * @code
- * if (aUid == KExtensionUidProperty)
- * {
- * return static_cast<MAiPropertyExtension*>(this);
- * }
- * else if (aUid == KExtensionUidEventHandler)
- * {
- * return static_cast<MAiEventHandlerExtension*>(this);
- * }
- * return NULL; // Requested extension not supported
- * @endcode
- */
- virtual TAny* Extension(TUid aUid) = 0;
-
-private: // data
- /** An identifier used during destruction. */
- TUid iDestructKey;
- };
-
-inline CAiContentPublisher* CAiContentPublisher::NewL(TUid aImplUid)
- {
- TAny* ptr = REComSession::CreateImplementationL(aImplUid,
- _FOFF(CAiContentPublisher, iDestructKey));
-
- return reinterpret_cast<CAiContentPublisher*> (ptr);
- }
-
-inline CAiContentPublisher* CAiContentPublisher::NewL(const TDesC8& aMime)
- {
- TEComResolverParams params;
- params.SetDataType(aMime);
-
- TAny* ptr = REComSession::CreateImplementationL(KInterfaceUidContentPlugin,
- _FOFF(CAiContentPublisher, iDestructKey), params);
-
- return reinterpret_cast<CAiContentPublisher*> (ptr);
- }
-
-inline CAiContentPublisher::~CAiContentPublisher()
- {
- REComSession::DestroyedImplementation(iDestructKey);
- }
-
-#endif // C_AICONTENTPUBLISHER_H
--- a/homescreensrv_plat/ai_plugin_management_api/inc/aicontentpublisheruid.hrh Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,62 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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: Resource headers for aicontentpublisher
-*
-*/
-
-
-#ifndef AICONTENTPUBLISHERUID_HRH
-#define AICONTENTPUBLISHERUID_HRH
-
-/**
- * Ecom interface uid for CAiContentPublisher.
- *
- * Example resource of a plugin that implements content publisher interface.
- * @code
- * #include <aicontentpublisheruid.hrh>
- * #include <ecom/registryinfov2.rh>
- *
- * #define MY_DLL_UID 0xFFEEDDCC
- * #define MY_PLUGIN_IMPLEMENTATION_UID 0xBBAA9988
- *
- * RESOURCE REGISTRY_INFO registry_info
- * {
- * resource_format_version = RESOURCE_FORMAT_VERSION_2;
- * dll_uid = MY_DLL_UID;
- *
- * // Interface info array
- * interfaces =
- * {
- * INTERFACE_INFO
- * {
- * // UID of the implemented interface
- * interface_uid = AI_UID_ECOM_INTERFACE_CONTENTPUBLISHER;
- *
- * implementations =
- * {
- * IMPLEMENTATION_INFO
- * {
- * implementation_uid = MY_PLUGIN_IMPLEMENTATION_UID;
- * version_no = 1;
- * display_name = "My plugin";
- * }
- * };
- * }
- * };
- * }
- * @endcode
- */
-#define AI_UID_ECOM_INTERFACE_CONTENTPUBLISHER 0x102750ED
-
-#endif // AICONTENTPUBLISHERUID_HRH
--- a/homescreensrv_plat/ai_plugin_management_api/inc/aidevicestatuscontentmodel.h Wed Mar 03 15:38:34 2010 +0200
+++ b/homescreensrv_plat/ai_plugin_management_api/inc/aidevicestatuscontentmodel.h Wed May 12 13:36:47 2010 +0300
@@ -46,6 +46,7 @@
EAiDeviceStatusContentGeneralIndicator,
EAiDeviceStatusContentVHZText,
EAiDeviceStatusContentCUGMCNIndicator
+ ,EAiDeviceStatusContentNetRegStatus
};
@@ -64,7 +65,7 @@
const wchar_t KAiDeviceStatusContentGeneralIndicator_Cid[] = L"GeneralIndicator";
const wchar_t KAiDeviceStatusContentVHZText_Cid[] = L"VHZText";
const wchar_t KAiDeviceStatusContentCUGMCNIndicator_Cid[] = L"CUGMCNIndicator";
-
+const wchar_t KAiDeviceStatusContentNetRegStatus_Cid[] = L"NetRegStatus";
const char KAiDeviceStatusMimeTypeTextPlain[] = "text/plain";
@@ -130,6 +131,11 @@
//Published data is localized text, for example "Group 1" or MCN message
{ EAiDeviceStatusContentCUGMCNIndicator, KAiDeviceStatusContentCUGMCNIndicator_Cid,
KAiDeviceStatusMimeTypeTextPlain }
+
+ //Published data is network registration status
+ , { EAiDeviceStatusContentNetRegStatus, KAiDeviceStatusContentNetRegStatus_Cid,
+ KAiDeviceStatusMimeTypeTextPlain }
+
};
const TInt KAiDeviceStatusContentCount = sizeof( KAiDeviceStatusContent ) /
@@ -142,11 +148,13 @@
{
EAiDeviceStatusResourceSIMRegFail,
EAiDeviceStatusResourceNWOk,
- EAiDeviceStatusResourceNWLost
+ EAiDeviceStatusResourceNWLost
+ ,EAiDeviceStatusResourceNetRegFail
};
const wchar_t KAiDeviceStatusResourceSIMRegFail_Cid[] = L"SIMRegFail";
-const wchar_t KAiDeviceStatusResourceShowNWLost_Cid[] = L"NWLost";
+const wchar_t KAiDeviceStatusResourceShowNWLost_Cid[] = L"NWLost";
+const wchar_t KAiDeviceStatusResourceNetRegFail_Cid[] = L"NetRegFail";
const TAiContentItem KAiDeviceStatusResources[] =
@@ -155,7 +163,10 @@
{ EAiDeviceStatusResourceSIMRegFail, KAiDeviceStatusResourceSIMRegFail_Cid,
KAiDeviceStatusMimeTypeTextPlain },
{ EAiDeviceStatusResourceNWLost, KAiDeviceStatusResourceShowNWLost_Cid,
- KAiDeviceStatusMimeTypeTextPlain },
+ KAiDeviceStatusMimeTypeTextPlain },
+ { EAiDeviceStatusResourceNetRegFail, KAiDeviceStatusResourceNetRegFail_Cid,
+ KAiDeviceStatusMimeTypeTextPlain },
+
};
const TInt KAiDeviceStatusResourceCount = sizeof( KAiDeviceStatusResources ) /
--- a/homescreensrv_plat/ai_plugin_management_api/inc/aiprofilepluginuids.hrh Wed Mar 03 15:38:34 2010 +0200
+++ b/homescreensrv_plat/ai_plugin_management_api/inc/aiprofilepluginuids.hrh Wed May 12 13:36:47 2010 +0300
@@ -19,8 +19,6 @@
#ifndef AIPROFILEPLUGINUIDS_HRH
#define AIPROFILEPLUGINUIDS_HRH
-#include <platform/mw/aicontentpublisheruid.hrh>
-
/**
* Ecom dll uid for AI Profile plug-in.
*/
--- a/homescreensrv_plat/ai_plugin_management_api/inc/aiscutappuids.hrh Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,92 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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: App uids for shortcut plug-in
-*
-*/
-
-
-#ifndef AISCUTAPPUIDS_HRH
-#define AISCUTAPPUIDS_HRH
-
-#define KScutExchangeMailUidValue 0x10282480 //
-#define KScutFlashPlayerUidValue 0x101fd693 //
-#define KScutOperatorMenuUidValue 0x10008D5E // !!
-#define KScutVideoServicesUidValue 0x10281893 // !!
-#define KScutVoiceDialUidValue 0x101F8543 // aivoicedialui
-
-#define KScutAmsEditorUidValue 0x1020745A //
-#define KScutEmailEditorUidValue 0x101F4CD6 //
-#define KScutMmsEditorUidValue 0x100058DE //
-#define KScutPostcardEditorUidValue 0x10207247 //
-#define KScutUnifiedEditorUidValue 0x102072D8 //
-#define KScutSyncMlEmailUidValue 0x101F7C5C //
-
-#define KScutAboutUidValue 0x10005A22 //
-#define KScutApplicationManagerUidValue 0x101F8512 //
-#define KScutApplicationShellUidValue 0x101F4CD2 //
-#define KScutBluetoothUidValue 0x10005951 //
-#define KScutBrowserUidValue 0x10008D39 //
-#define KScutCalculatorUidValue 0x10005902 //
-#define KScutCalendarUidValue 0x10005901 //
-#define KScutCamcorderUidValue 0x101F857A //
-#define KScutChineseDictionaryUidValue 0x101F9CFE //
-#define KScutClockUidValue 0x10005903 //
-#define KScutConnectionManagerUidValue 0x101F84D0 //
-#define KScutConverterUidValue 0x101F4668 //
-#define KScutDiallerUidValue 0x100058B3 //
-#define KScutDRMRightsManagerUidValue 0x101F85C7 //
-#define KScutDeviceManagerUidValue 0x101F6DE5 //
-#define KScutFMRadioUidValue 0x10207A89 //
-#define KScutFMTXRadioUidValue 0x10282BEF //
-#define KScutFaxModemUidValue 0x1000594E //
-#define KScutFileManagerUidValue 0x101F84EB //
-#define KScutGeneralSettingsUidValue 0x100058EC //
-#define KScutControlPanelUidValue 0 // not yet!
-#define KScutHelpUidValue 0x10005234 //
-#define KScutIRUidValue 0x1000594D //
-#define KScutInstantMessagingUidValue 0x101F4673 //
-#define KScutLandmarksUidValue 0x101F85A2 //
-#define KScutLogsUidValue 0x101F4CD5 //
-#define KScutMediaGallery2UidValue 0x101F8599 //
-#define KScutMediaPlayerUidValue 0x200159B2 //
-#define KScutMemoryCardUidValue 0x101F4666 //
-#define KScutMessagingCenterUidValue 0x100058C5 //
-#define KScutMusicPlayerUidValue 0x102072C3 //
-#define KScutNavigatorUidValue 0x101F85A0 //
-#define KScutNotepadUidValue 0x10005907 //
-#define KScutPersonalisationUidValue 0x10005A32 //
-#define KScutPhoneUidValue 0x100058B3 //
-#define KScutPhonebookUidValue 0x101F4CCE //
-#define KScutPocUidValue 0x101FD63D //
-#define KScutProfilesUidValue 0x100058F8 //
-#define KScutSatUiUidValue 0x101F4CE0 //
-#define KScutSearchUidValue 0x10282411 //
-#define KScutSmlSyncUidValue 0x101F6DE4 //
-#define KScutSpeedDialUidValue 0x1000590A //
-#define KScutUSBUidValue 0x102068E2 //
-#define KScutUserDictionaryUidValue 0x101F8645 //
-#define KScutVoIPUidValue 0x10202871 //
-#define KScutVoiceCommandsUidValue 0x101F8555 //
-#define KScutVoiceMailboxUidValue 0x100058F5 //
-#define KScutVoiceRecorderUidValue 0x100058CA //
-
-#define KScutInstallationViewIdValue 0x10283321
-#define KScutChangeThemeViewIdValue 0x102750A7
-#define KScutDiallerViewIdValue 0x10282D81
-#define KScutRemoteMailboxViewIdValue 0x2
-#define KScutConnectivityStatusViewIdValue 0x10207250
-
-#endif // AISCUTAPPUIDS_HRH
-
-// End of File.
--- a/homescreensrv_plat/ai_plugin_management_api/inc/aiscutcontentmodel.h Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,242 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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: Content model for shortcut plug-in.
-*
-*/
-
-
-#ifndef AISCUTCONTENTMODEL_H
-#define AISCUTCONTENTMODEL_H
-
-#include <aicontentmodel.h>
-
-#include <platform/mw/aiscutuids.hrh>
-
-// AI Shortcut Plug-in ECOM implementation UID.
-const TInt KImplUidScutPlugin = AI_UID_ECOM_IMPLEMENTATION_CONTENTPUBLISHER_SCUTPLUGIN;
-const TUid KUidScutPlugin = { KImplUidScutPlugin };
-
-// ================================= CONTENT ===================================
-
-/**
- * Content Ids.
- */
-enum TAiScutContentIds
-{
- EAiScutContentShortcutIcon,
- EAiScutContentShortcutCaption,
- EAiScutContentShortcutShortCaption,
- EAiScutContentShortcutMskCaption,
- EAiScutContentShortcutSkCaption,
- EAiScutContentShortcutSkIcon,
- EAiScutContentShortcutToolbarCaption,
- EAiScutContentShortcutToolbarIcon,
- EAiScutContentPopupTextCaptionLine,
- EAiScutContentPopupTextFirstLine,
- EAiScutContentPopupTextSecondLine,
- EAiScutContentPopupTextThirdLine
-};
-
-/**
- * Content that the plug-in will publish.
- */
-const TAiContentItem KAiScutContent[] =
-{
- // Shortcut icon as CFbsBitmap.
- { EAiScutContentShortcutIcon, L"ShortcutIcon", KAiContentTypeBitmap }
- ,
- // Shortcut caption as plain text (used for long application titles).
- { EAiScutContentShortcutCaption, L"ShortcutCaption", "text/plain" }
- ,
- // Shortcut short caption as plain text (used for short application titles in softkeys).
- { EAiScutContentShortcutShortCaption, L"ShortcutShortCaption", "text/plain" }
- ,
- // Shortcut msk caption as plain text (used for short application titles in MSK).
- { EAiScutContentShortcutMskCaption, L"ShortcutMskCaption", "text/plain" }
- ,
- // Shortcut sk caption as plain text (used for short application titles in SK).
- { EAiScutContentShortcutSkCaption, L"ShortcutSkCaption", "text/plain" }
- ,
- // Shortcut sk icon as bitmap (used for application icons in SK).
- { EAiScutContentShortcutSkIcon, L"ShortcutSkIcon", KAiContentTypeBitmap }
- ,
- // Shortcut sk caption as plain text (used for short application titles in SK).
- { EAiScutContentShortcutToolbarCaption, L"ShortcutToolbarCaption", "text/plain" }
- ,
- // Shortcut toolbar icon as bitmap (used for application icons in toolbar).
- { EAiScutContentShortcutToolbarIcon, L"ShortcutToolbarIcon", KAiContentTypeBitmap }
- ,
- // Caption line of Popup as plain text.
- { EAiScutContentPopupTextCaptionLine, L"ShortcutPopupCaptionLine", "text/plain" }
- ,
- // 1st actual line of Popup as plain text.
- { EAiScutContentPopupTextFirstLine, L"ShortcutPopup1stLine", "text/plain" }
- ,
- // 2nd actual line of Popupn as plain text.
- { EAiScutContentPopupTextSecondLine, L"ShortcutPopup2ndLine", "text/plain" }
- ,
- // 3rd actual line of Popup as plain text.
- { EAiScutContentPopupTextThirdLine, L"ShortcutPopup3rdLine", "text/plain" }
-};
-
-const TInt KAiScutContentCount = sizeof( KAiScutContent ) /
- sizeof( KAiScutContent[0] );
-
-
-// ================================ RESOURCES ==================================
-
-/**
- * Resource Ids.
- */
-enum TAiScutPluginResourceIds
-{
- EAiScutResourceDefaultIcon,
- EAiScutResourceEmptyIcon,
- EAiScutResourceBackCaption,
- EAiScutResourceEmptyCaption,
- EAiScutResourceNewMsgCaption,
- EAiScutResourceNewEmailCaption,
- EAiScutResourceNewSyncMLMailCaption,
- EAiScutResourceNewPostcardCaption,
- EAiScutResourceNewAudioMsgCaption,
- EAiScutResourceSelectMsgTypeCaption,
- EAiScutResourceChangeThemeCaption,
- EAiScutResourceNewMsgShortCaption,
- EAiScutResourceNewEmailShortCaption,
- EAiScutResourceNewSyncMLMailShortCaption,
- EAiScutResourceNewPostcardShortCaption,
- EAiScutResourceNewAudioMsgShortCaption,
- EAiScutResourceSelectMsgTypeShortCaption,
- EAiScutResourceChangeThemeShortCaption
-};
-
-/**
- * Resources that the plug-in will publish.
- */
-const TAiContentItem KAiScutResources[] =
-{
- // Default shortcut icon.
- { EAiScutResourceDefaultIcon, L"DefaultIcon", "image/*" }
- ,
- // Empty shortcut icon, used when shortcut target is unknown.
- { EAiScutResourceEmptyIcon, L"EmptyIcon", "image/*" }
- ,
- // Localizable caption for the back shortcut
- { EAiScutResourceBackCaption, L"BackCaption", "text/plain" }
- ,
- // Localizable caption for the empty shortcut.
- { EAiScutResourceEmptyCaption, L"EmptyCaption", "text/plain" }
- ,
- // Localizable caption for the "new message" shortcut.
- { EAiScutResourceNewMsgCaption, L"NewMessageCaption", "text/plain" }
- ,
- // Localizable caption for the "new email" shortcut.
- { EAiScutResourceNewEmailCaption, L"NewEmailCaption", "text/plain" }
- ,
- // Localizable caption for the "new syncml mail" shortcut.
- { EAiScutResourceNewSyncMLMailCaption, L"NewSyncMLMailCaption", "text/plain" }
- ,
- // Localizable caption for the "new postcard" shortcut.
- { EAiScutResourceNewPostcardCaption, L"NewPostcardCaption", "text/plain" }
- ,
- // Localizable caption for the "new audio message" shortcut.
- { EAiScutResourceNewAudioMsgCaption, L"NewAudioMsgCaption", "text/plain" }
- ,
- // Localizable caption for the "select message type" shortcut.
- { EAiScutResourceSelectMsgTypeCaption, L"SelectMsgTypeCaption", "text/plain" }
- ,
- // Localizable caption for the "change theme" shortcut.
- { EAiScutResourceChangeThemeCaption, L"ChangeThemeCaption", "text/plain" }
- ,
- // Localizable short caption for the "new message" shortcut.
- { EAiScutResourceNewMsgShortCaption, L"NewMessageShortCaption", "text/plain" }
- ,
- // Localizable short caption for the "new email" shortcut.
- { EAiScutResourceNewEmailShortCaption, L"NewEmailShortCaption", "text/plain" }
- ,
- // Localizable short caption for the "new syncml mail" shortcut.
- { EAiScutResourceNewSyncMLMailShortCaption, L"NewSyncMLMailShortCaption", "text/plain" }
- ,
- // Localizable short caption for the "new postcard" shortcut.
- { EAiScutResourceNewPostcardShortCaption, L"NewPostcardShortCaption", "text/plain" }
- ,
- // Localizable short caption for the "new audio message" shortcut.
- { EAiScutResourceNewAudioMsgShortCaption, L"NewAudioMsgShortCaption", "text/plain" }
- ,
- // Localizable short caption for the "new message" shortcut.
- { EAiScutResourceSelectMsgTypeShortCaption, L"SelectMsgTypeShortCaption", "text/plain" }
- ,
- // Localizable short caption for the "change theme" shortcut.
- { EAiScutResourceChangeThemeShortCaption, L"ChangeThemeShortCaption", "text/plain" }
-
-};
-
-const TInt KAiScutResourceCount = sizeof( KAiScutResources ) /
- sizeof( KAiScutResources[0] );
-
-
-// ============================ SERVICES (Events) ==============================
-
-/**
- * Event Ids.
- */
-enum TAiScutEventIds
-{
- EAiScutEventLaunchByIndex,
- EAiScutEventLaunchByValue,
- EAiScutEventShowSettings,
- EAiScutEventShowSetting,
- EAiScutEventLaunchFastswap,
- EAiScutEventLaunchByIndexAlternate,
- EAiScutEventLoseFocus,
- EAiScutEventGainFocus
-};
-
-/**
- * Services that the plug-in can perform.
- */
-const TAiContentItem KAiScutEvents[] =
-{
- // Launches a shortcut by its index that is delivered as an integer.
- { EAiScutEventLaunchByIndex, L"LaunchByIndex", "int" }
- ,
- // Launches a shortcut by its value that is delivered in a descriptor.
- { EAiScutEventLaunchByValue, L"LaunchByValue", "str" }
- ,
- // Shows the shortcut plug-in settings dialog.
- { EAiScutEventShowSettings, L"ShowSettings", "" }
- ,
- // Shows the shortcut plug-in setting.
- { EAiScutEventShowSetting, L"ShowSetting", "" }
- ,
- // Opens the fast swap window
- { EAiScutEventLaunchFastswap, L"LaunchFastSwap", "" }
- ,
- // Special launching. If the index points to appshell
- // fastswap is opened. Other special cases can be added to the engine
- { EAiScutEventLaunchByIndexAlternate, L"LaunchByIndexAlternate", "int" }
- ,
- // Used when we move out of a SC button (Needed for Popup-functionality).
- // index of shortcut is delivered as an integer
- { EAiScutEventLoseFocus, L"LoseFocus", "int" }
- ,
- // Used when we move into a SC button (Needed for Popup-functionality).
- // index of shortcut is delivered as an integer.
- { EAiScutEventGainFocus, L"GainFocus", "int" }
-
-};
-
-#endif // AISCUTCONTENTMODEL_H
-
-// End of File.
--- a/homescreensrv_plat/ai_plugin_management_api/inc/aiscutdefs.h Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,158 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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: Shortcut plug-in definitions.
-*
-*/
-
-
-#ifndef AISCUTDEFS_H
-#define AISCUTDEFS_H
-
-#include <e32std.h>
-#include <platform/mw/aiscutuids.hrh>
-#include "aiscutappuids.hrh"
-
-// =============================================================================
-// =============== UIDs and view ids to external applications ==================
-// =============================================================================
-
-// Active Idle UID.
-const TUid KScutActiveIdleUid = { 0x102750F0 };
-
-// Shortcut Settings DLL UID.
-const TUid KScutSettingsDllUid = { AI_UID_ECOM_DLL_SETTINGS_SCUTPLUGIN };
-
-// Keypad lock UID
-const TUid KScutKeyLockUid = { 0x10000000 };
-
-// Web Browser application UID.
-const TUid KScutBrowserUid = { KScutBrowserUidValue };
-
-// General Settings application UID.
-const TUid KScutGeneralSettingsUid = { KScutGeneralSettingsUidValue };
-
-// Message Centre application UID.
-const TUid KScutMessagingUid = { KScutMessagingCenterUidValue };
-
-// Remote mailbox view id. Message list view id (0x2) defined in MceIds.hrh.
-const TUid KScutRemoteMailboxViewId = { KScutRemoteMailboxViewIdValue };
-
-// Personalisation application UID.
-const TUid KScutPersonalisationUid = { KScutPersonalisationUidValue };
-
-// Change-Theme view id in the Personalisation application.
-const TUid KScutChangeThemeViewId = { KScutChangeThemeViewIdValue };
-
-// Installation view id in the Control Panel.
-const TUid KScutInstallationViewId = { KScutInstallationViewIdValue };
-
-// Connectivity view id in the Control Panel.
-const TUid KScutConnectivityViewId = { KScutConnectivityStatusViewIdValue };
-// Voice dialer UID
-const TUid KScutVoiceDialUid = { KScutVoiceDialUidValue };
-
-// Logs UID
-const TUid KScutLogsUid = { KScutLogsUidValue };
-
-// AppShell UID
-const TUid KScutAppShellUid = { KScutApplicationShellUidValue };
-
-// Telephony UID
-const TUid KScutDiallerUid = { KScutDiallerUidValue };
-
-// Postcard editor UID
-const TUid KScutPostcardEditorUid = { KScutPostcardEditorUidValue };
-
-// On-Screen Dialler view id in the Telephony application.
-const TUid KScutDiallerViewId = { KScutDiallerViewIdValue };
-
-// On-Screen Dialler view command
-const TUid KScutDiallerViewCommand = { 0x1 };
-// AppMngr
-const TUid KScutAppMngrUid = { 0x101F8512 };
-
-// EasyVoip Application UID
-const TUid KScutEasyVoIPApplicationUid = { 0x1020E566 };
-
-// VoIP launcher UID
-const TUid KScutVoIPLauncherUid = { 0x10275424 };
-
-// EasyVoip Central Repository UID
-const TUid KUidEasyVoIPRepository = { 0x1020E593 };
-
-// EasyVoIP shortcut startup flag
-const TUint32 KEasyVoIPShortcutStartup = 0x00000004;
-
-// Logs views
-_LIT8( KLogsMissedCallsView , "missed" );
-_LIT8( KLogsDialledCallsView , "dialled" );
-_LIT8( KLogsReceivedCallsView , "received" );
-_LIT8( KLogsMainView , "counters" );
-
-// Softkeys
-_LIT( KLeftSoftkey , "0x01000100" );
-_LIT( KRightSoftkey , "0x01000101" );
-
-const TUint32 KLeftSoftkeyId = { 0x01000100 };
-const TUint32 KRightSoftkeyId = { 0x01000101 };
-
-/**
- * Bit fields for content items that the observers support.
- */
-enum TSupportedContentItems
-{
- ESupportIcon = 0x1,
- ESupportCaption = 0x2,
- ESupportShortCaption = 0x4
-};
-
-class CAiScutShortcut;
-class CAiScutShortcutInfo;
-typedef RPointerArray<CAiScutShortcut> RAiShortcutArray;
-typedef RPointerArray<CAiScutShortcutInfo> RAiShortcutInfoArray;
-
-/**
- * Definitions for application titles.
- */
-enum TAiScutAppTitleType
-{
- EAiScutLongTitle,
- EAiScutShortTitle,
- EAiScutSkeyTitle,
- EAiScutMskTitle
-};
-
-class TAiScutAppTitleEntry
-{
-public:
- TUid iAppUid;
- TUid iViewId;
- HBufC* iLongTitle;
- HBufC* iShortTitle;
- HBufC* iSkeyTitle;
- HBufC* iMskTitle;
-};
-
-/**
- * Localized send ui resource for error note.
- */
-_LIT( KSendNormResource, "sendnorm.rsc" );
-
-/**
- * Shortcut menu strings
- */
-_LIT( KSettings, "widgetsettings" );
-#endif // AISCUTDEFS_H
-
-// End of File.
--- a/homescreensrv_plat/ai_plugin_management_api/inc/aiscutuids.hrh Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,46 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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: Uids for shortcut plug-in
-*
-*/
-
-
-#ifndef AISCUTUIDS_HRH
-#define AISCUTUIDS_HRH
-
-#include <platform/mw/aicontentpublisheruid.hrh>
-
-/**
- * Ecom dll uid for AI Shortcut plug-in.
- */
-#define AI_UID_ECOM_DLL_CONTENTPUBLISHER_SCUTPLUGIN 0x102750F9
-
-/**
- * Ecom implementation uid for AI Shortcut plug-in.
- */
-#define AI_UID_ECOM_IMPLEMENTATION_CONTENTPUBLISHER_SCUTPLUGIN 0x102750FA
-
-/**
- * Ecom dll uid for AI Shortcut Settings plug-in.
- */
-#define AI_UID_ECOM_DLL_SETTINGS_SCUTPLUGIN 0x102750FB
-
-/**
- * Ecom implementation uid for AI Shortcut Settings plug-in.
- */
-#define AI_UID_ECOM_IMPLEMENTATION_SETTINGS_SCUTPLUGIN 0x102750FC
-
-#endif // AISCUTUIDS_HRH
-
-// End of File.
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreensrv_plat/ai_plugin_management_api/inc/hscontentpublisher.h Wed May 12 13:36:47 2010 +0300
@@ -0,0 +1,491 @@
+/*
+* Copyright (c) 2005-2006 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: Interface for Homescreen content publisher plug-ins.
+*
+*/
+
+#ifndef _HSCONTENTPUBLISHER_H
+#define _HSCONTENTPUBLISHER_H
+
+// System includes
+#include <e32base.h>
+#include <ecom/ecom.h>
+
+// User includes
+#include <hscontentpublisheruid.hrh>
+#include <hspublisherinfo.h>
+
+// Constants
+/**
+ * ECom plugin interface UID
+ *
+ * @since S60 5.2
+ */
+const TUid KInterfaceUidHsContentPlugin = { HS_UID_ECOM_INTERFACE_CONTENTPUBLISHER };
+
+// Forward declarations
+class MAiContentObserver;
+class MAiPluginSettings;
+
+// Type definitions
+typedef RPointerArray< MAiPluginSettings > RAiSettingsItemArray;
+
+/**
+ * ECom plug-in interface that Homescreen plug-ins must implement.
+ * It is used to control plug-in life cycle: load/destroy plug-ins;
+ * suspend/resume plug-in execution.
+ *
+ * @since S60 5.2
+ */
+class CHsContentPublisher : public CBase
+ {
+public:
+ // Data types
+
+ /**
+ * CHsContentPublisher start-up reason.
+ *
+ * @since S60 5.2
+ * @see CHsContentPublisher::Start()
+ */
+ enum TStartReason
+ {
+ ESystemStartup = 1,
+ EPageStartup,
+ EPluginStartup
+ };
+
+ /**
+ * CHsContentPublisher shutdown reason.
+ *
+ * @since S60 5.2
+ * @see CHsContentPublisher::Stop()
+ */
+ enum TStopReason
+ {
+ ESystemShutdown = 1,
+ EPageShutdown,
+ EPluginShutdown
+ };
+
+ /**
+ * CHsContentPublisher resume reason.
+ *
+ * @since S60 5.2
+ * @see CHsContentPublisher::Resume()
+ */
+ enum TResumeReason
+ {
+ /**
+ * Homescreen is visible.
+ */
+ EForeground = 1
+ };
+
+ /**
+ * CHsContentPublisher suspend reason.
+ *
+ * @since S60 5.2
+ * @see CHsContentPublisher::Suspend()
+ */
+ enum TSuspendReason
+ {
+ /**
+ * Homescreen is invisible.
+ */
+ EBackground = 1,
+ /**
+ * Backup/Restore is ongoing.
+ *
+ * The plug-in must realease all its resources
+ * which affects to backup/restore operation.
+ */
+ EBackupRestore,
+ /**
+ * General Theme is changed.
+ *
+ * The plug-in must re-create any data which is themeable.
+ */
+ EGeneralThemeChange
+ };
+
+ /**
+ * CHsContentPublisher properties.
+ *
+ * @since S60 5.2
+ * @see CHsContentPublisher::SetProperty()
+ * @see CHsContentPublisher::GetProperty()
+ */
+ enum TProperty
+ {
+ /**
+ * Enables read-only access to iterator of content selectors. GetProperty
+ * must return instance of MAiContentItemIterator for content selectors.
+ */
+ EPublisherContent = 1,
+
+ /**
+ * Enables read-only access to iterator of content references. GetProperty
+ * must return instance of MAiContentItemIterator for content references.
+ */
+ EPublisherResources,
+
+ /**
+ * Enables read-only access to iterator of events supported by plug-in.
+ * GetProperty must return instance of MAiContentItemIterator for events.
+ */
+ EPublisherEvents,
+
+ /**
+ * Provides access to MAiContentRequest interface for refreshing a content
+ * item.
+ * @see EPublisherContent
+ */
+ EContentRequest,
+
+ /**
+ * Provides access to MAiContentRequest interface for refreshing a resource
+ * item.
+ * @see EPublisherResources
+ */
+ EResourceRequest,
+
+ /**
+ * Provides access to localized plugin name if supported. HBufC*
+ * @see EPublisherResources
+ */
+ EPluginName,
+
+ /**
+ * Provides access to CPS command buffer.
+ */
+ ECpsCmdBuffer
+ };
+
+public:
+ // Constructor and destructor
+
+ /**
+ * Creates a new plug-in instance based on implementation UID.
+ *
+ * @param aPublisherInfo This plug-in's publisher info.
+ * @return pointer to the instantiated interface implementation.
+ * @pre Interface implementation exists by uid aImpUid.
+ */
+ inline static CHsContentPublisher* NewL(
+ const THsPublisherInfo& aPublisherInfo );
+
+ /**
+ * Destroys instance of the plug-in. Called by the framework during plug-in
+ * destruction phase.
+ */
+ inline ~CHsContentPublisher();
+
+public:
+ // new functions
+
+ /**
+ * This method transits the plug-in into "Idle" state.
+ * Parameter aReason explains the plug-in's startup reason.
+ * Based on THsStartReason plug-in may decide its startup behavior.
+ *
+ * This method is called by the framework after plugin is constructed and configured.
+ *
+ * @since S60 5.2
+ * @param aReason startup reason, see TStartReason.
+ * @pre None
+ * @post Plugin is in Idle state.
+ */
+ virtual void Start( TStartReason aReason ) = 0;
+
+ /**
+ * This method transits the plug-in into its final state.
+ * Parameter aReason explains the plug-in's shutdwon reason.
+ * Based on THsStopReason plug-in may prepare itself for next startup.
+ *
+ * This method is called by the framework before plugin is destroyed.
+ *
+ * @since S60 5.2
+ * @param aReason reason for state change, see TStopReason.
+ * @pre None
+ * @post Plugin is ready to be destroyed.
+ */
+ virtual void Stop( TStopReason aReason ) = 0;
+
+ /**
+ * This method transits the plug-in into "Alive" state.
+ *
+ * In this state the plug-in is allowed to actively publish data
+ * to its observers, and it can consume memory and CPU resources.
+ *
+ * @since S60 5.2
+ * @param aReason reason for state change, see TResumeReason.
+ * @pre None
+ * @post Plugin is in "Alive" state and actively publishes its data.
+ *
+ * Short example what a typical resume implementation does.
+ * @code
+ * if( !MyEngineCreated() )
+ * {
+ * CreateEngine();
+ * StartEngine();
+ * }
+ * else
+ * {
+ * // Publish only changed data!
+ * RefreshData();
+ * }
+ * @endcode
+ */
+ virtual void Resume( TResumeReason aReason ) = 0;
+
+ /**
+ * This method transits the plug-in into "Suspended" state.
+ *
+ * In this state the plug-in is not allowed to publish data
+ * to its observers. CPU resource usage must be minimal, e.g.
+ * timers must be stopped, outstanding asynchronous operations must
+ * be canceled, etc.
+ *
+ * @since S60 5.2
+ * @param aReason reason for state change, see TSuspendReason.
+ * @pre None
+ * @post Plugin suspends publishing data and free resources (timers etc).
+ *
+ * Short example what a typical suspend implementation does.
+ * @code
+ * SuspendEngine();
+ * @endcode
+ */
+ virtual void Suspend( TSuspendReason aReason ) = 0;
+
+ /**
+ * This method transits the plug-in into "Online" sub-state.
+ * In this state plugin is allowed to use network connections.
+ *
+ * @since S60 5.2
+ */
+ inline virtual void SetOnline();
+
+ /**
+ * This method transits the plug-in into "Offline" sub-state.
+ * In this state plugin is not allowed to use network connections.
+ *
+ * @since S60 5.2
+ */
+ inline virtual void SetOffline();
+
+ /**
+ * Adds the content observer / subscriber to the plug-in. The plug-in must
+ * maintain a registry of subscribers and publish data to all of them
+ * when new content is available in "Alive" state.
+ *
+ * @since S60 5.2
+ * @param aObserver content observer to register.
+ * @pre None
+ * @post Plugin publishes its data to the subscribed observer.
+ *
+ * Short example what a typical subscribe implementation does and
+ * one alternative how observers are used.
+ * @code
+ * if( !ObserverAlreadyAdded( aObserver ) )
+ * {
+ * iMyContentObservers.AppendL( aObserver );
+ * }
+ *
+ * ...
+ *
+ * // Engine reports data changed in "Alive" state
+ *
+ * const TDesC& data = iEngine->LatestData();
+ * for( TInt i = 0; i < iMyContentObservers.Count(); ++i )
+ * {
+ * iMyContentObservers[i].Publish( data );
+ * }
+ * @endcode
+ */
+ virtual void SubscribeL( MAiContentObserver& aObserver ) = 0;
+
+ /**
+ * Configures the plug-in.
+ *
+ * @since S60 5.2
+ * @param aSettings setting items defined in the UI definition.
+ * This plugin takes ownership of the
+ * MAiPluginSettings objects in the array.
+ * If this method leaves the caller will handle the cleanup.
+ * @pre None
+ * @post Plugin has set its state according to relevant settings.
+ *
+ * Short example how to read plugin settings.
+ * @code
+ * for( TInt i = 0; i < aSettings.Count(); ++i )
+ * {
+ * MAiPluginSettingsItem& item = (aSettings[i])->AiPluginSettingsItem();
+ * TInt32 value = 0;
+ * if( ParseInt( value, item.Value() ) != KErrNone )
+ * {
+ * continue;
+ * }
+ * if( value < 0 )
+ * {
+ * continue; // All our settings are counts, skip bad settings
+ * }
+ * if( item.Key() == EMySettingMaxUsers )
+ * {
+ * iEngine->SetMaxUsers( value );
+ * continue;
+ * }
+ * else if( item.Key() == EMySettingNumItems )
+ * {
+ * iNumItems = value;
+ * continue;
+ * }
+ * }
+ * // aSettings ownership is passed to the plug-in, destroy array.
+ * aSettings.ResetAndDestroy();
+ * @endcode
+ */
+ virtual void ConfigureL( RAiSettingsItemArray& aSettings ) = 0;
+
+ /**
+ * Sets property value.
+ *
+ * @since S60 5.2
+ * @param aProperty - identification of property.
+ * @param aValue - contains pointer to property value.
+ * @see TProperty.
+ *
+ * An example of setting a property
+ * @code
+ * void CMyPlugin::SetPropertyL( TInt TProperty, TAny* aValue )
+ * {
+ * if( !aValue )
+ * {
+ * return;
+ * }
+ *
+ * // Save the property here to a member variable
+ * }
+ * @endcode
+ */
+ inline virtual void SetProperty( TProperty aProperty, TAny* aAny );
+
+ /**
+ * Gets property value.
+ *
+ * @since S60 5.2
+ * @param aProperty - identification of property.
+ * @return Pointer to property value.
+ * @see TProperty.
+ *
+ * An example of getting a property
+ * @code
+ * void CMyPlugin::ConstructL()
+ * {
+ * iContent = AiUtility::CreateContentItemArrayIteratorL( KMyPluginContent );
+ * iResources = AiUtility::CreateContentItemArrayIteratorL( KMyPluginResources );
+ * iEvents = AiUtility::CreateContentItemArrayIteratorL( KMyPluginEvents );
+ * }
+ *
+ * TAny* CMyPlugin::GetPropertyL( TProperty aProperty )
+ * {
+ * switch( aProperty )
+ * {
+ * case EPublisherContent:
+ * return iContent;
+ *
+ * case EPublisherResources:
+ * return iResources;
+ *
+ * case EPublisherEvents:
+ * return iEvents;
+ * }
+ * return NULL;
+ * }
+ * @endcode
+ */
+ inline virtual TAny* GetProperty( TProperty aProperty );
+
+ /**
+ * Invoked by the framework when the plug-in must handle an event.
+ *
+ * @since S60 5.2
+ * @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.
+ */
+ inline virtual void HandleEvent( TInt aEvent, const TDesC& aParam );
+
+ /**
+ * Invoked by the framework when the plug-in must handle an event.
+ *
+ * @since S60 5.2
+ * @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 provied to plug-in as-is in the descriptor.
+ */
+ inline virtual void HandleEvent( const TDesC& aEventName, const TDesC& aParam );
+
+ /**
+ * Invoked by the framework to query whether the plug-in has a menu item.
+ *
+ * @since S60 5.2
+ * @param aMenuItem menu item name
+ * @return ETrue if plugin has specific menu item, EFalse otherwise
+ */
+ inline virtual TBool HasMenuItem( const TDesC& aMenuItem );
+
+ /**
+ * Returns interface extension. In S60 5.2 extensions are not provided.
+ *
+ * @param aUid - UID of the extension interface to access.
+ * @return the extension interface. Actual type depends on the passed aUid
+ * argument.
+ *
+ * Example on how to properly return an extension.
+ * @code
+ * return NULL; // Requested extension not supported
+ * @endcode
+ */
+ inline virtual TAny* Extension( TUid aUid );
+
+ /**
+ * Gets plug-in's publisher info.
+ *
+ * @since S60 5.2
+ * @return PublisherInfo
+ */
+ inline const THsPublisherInfo& PublisherInfo() const;
+
+private:
+ // data
+
+ /** An identifier used during destruction. */
+ TUid iDestructKey;
+ /** Publisher info. */
+ mutable THsPublisherInfo iPublisherInfo;
+ };
+
+#include <hscontentpublisher.inl>
+
+#endif // _HSCONTENTPUBLISHER_H
+
+// End of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreensrv_plat/ai_plugin_management_api/inc/hscontentpublisher.inl Wed May 12 13:36:47 2010 +0300
@@ -0,0 +1,142 @@
+/*
+* Copyright (c) 2005-2006 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: Inline function implementations for hscontentpublisher.h
+*
+*/
+
+
+#ifndef _HSCONTENTPUBLISHER_INL
+#define _HSCONTENTPUBLISHER_INL
+
+// ---------------------------------------------------------------------------
+// CHsContentPublisher::NewL
+//
+// ---------------------------------------------------------------------------
+//
+inline CHsContentPublisher* CHsContentPublisher::NewL(
+ const THsPublisherInfo& aPublisherInfo )
+ {
+ TAny* ptr = REComSession::CreateImplementationL( aPublisherInfo.Uid(),
+ _FOFF( CHsContentPublisher, iDestructKey ) );
+
+ CHsContentPublisher* self =
+ reinterpret_cast< CHsContentPublisher*>( ptr );
+
+ self->iPublisherInfo = aPublisherInfo;
+
+ return self;
+ }
+
+// ----------------------------------------------------------------------------
+// CHsContentPublisher::~CHsContentPublisher
+//
+// ----------------------------------------------------------------------------
+//
+inline CHsContentPublisher::~CHsContentPublisher()
+ {
+ REComSession::DestroyedImplementation( iDestructKey );
+ }
+
+// ----------------------------------------------------------------------------
+// CHsContentPublisher::SetOnline
+//
+// ----------------------------------------------------------------------------
+//
+inline void CHsContentPublisher::SetOnline()
+ {
+ }
+
+// ----------------------------------------------------------------------------
+// CHsContentPublisher::SetOffline
+//
+// ----------------------------------------------------------------------------
+//
+inline void CHsContentPublisher::SetOffline()
+ {
+ }
+
+// ----------------------------------------------------------------------------
+// CHsContentPublisher::SetProperty
+//
+// ----------------------------------------------------------------------------
+//
+inline void CHsContentPublisher::SetProperty( TProperty /*aProperty*/,
+ TAny* /*aAny*/ )
+ {
+ }
+
+// ----------------------------------------------------------------------------
+// CHsContentPublisher::GetProperty
+//
+// ----------------------------------------------------------------------------
+//
+inline TAny* CHsContentPublisher::GetProperty(
+ TProperty /*aProperty*/ )
+ {
+ return NULL;
+ }
+
+// ----------------------------------------------------------------------------
+// CHsContentPublisher::HandleEvent
+//
+// ----------------------------------------------------------------------------
+//
+inline void CHsContentPublisher::HandleEvent( TInt /*aEvent*/,
+ const TDesC& /*aParam*/ )
+ {
+ }
+
+// ----------------------------------------------------------------------------
+// CHsContentPublisher::HandleEvent
+//
+// ----------------------------------------------------------------------------
+//
+inline void CHsContentPublisher::HandleEvent( const TDesC& /*aEventName*/,
+ const TDesC& /*aParam*/ )
+ {
+ }
+
+// ----------------------------------------------------------------------------
+// CHsContentPublisher::HasMenuItem
+//
+// ----------------------------------------------------------------------------
+//
+inline TBool CHsContentPublisher::HasMenuItem( const TDesC& /*aMenuItem*/ )
+ {
+ return EFalse;
+ }
+
+// ----------------------------------------------------------------------------
+// CHsContentPublisher::Extension
+//
+// ----------------------------------------------------------------------------
+//
+inline TAny* CHsContentPublisher::Extension( TUid /*aUid*/ )
+ {
+ return NULL;
+ }
+
+// ----------------------------------------------------------------------------
+// CHsContentPublisher::PublisherInfo
+//
+// ----------------------------------------------------------------------------
+//
+inline const THsPublisherInfo& CHsContentPublisher::PublisherInfo() const
+ {
+ return iPublisherInfo;
+ }
+
+#endif // _HSCONTENTPUBLISHER_INL
+
+// End of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreensrv_plat/ai_plugin_management_api/inc/hscontentpublisheruid.hrh Wed May 12 13:36:47 2010 +0300
@@ -0,0 +1,62 @@
+/*
+* Copyright (c) 2005-2006 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: Resource headers for HS Content Publisher
+*
+*/
+
+
+#ifndef _HSCONTENTPUBLISHERUID_HRH
+#define _HSCONTENTPUBLISHERUID_HRH
+
+/**
+ * Ecom interface uid for CHsContentPublisher.
+ *
+ * Example resource of a plugin that implements HS content publisher interface.
+ * @code
+ * #include <hscontentpublisheruid.hrh>
+ * #include <ecom/registryinfov2.rh>
+ *
+ * #define MY_DLL_UID 0xFFEEDDCC
+ * #define MY_PLUGIN_IMPLEMENTATION_UID 0xBBAA9988
+ *
+ * RESOURCE REGISTRY_INFO registry_info
+ * {
+ * resource_format_version = RESOURCE_FORMAT_VERSION_2;
+ * dll_uid = MY_DLL_UID;
+ *
+ * // Interface info array
+ * interfaces =
+ * {
+ * INTERFACE_INFO
+ * {
+ * // UID of the implemented interface
+ * interface_uid = HS_UID_ECOM_INTERFACE_CONTENTPUBLISHER;
+ *
+ * implementations =
+ * {
+ * IMPLEMENTATION_INFO
+ * {
+ * implementation_uid = MY_PLUGIN_IMPLEMENTATION_UID;
+ * version_no = 1;
+ * display_name = "My plugin";
+ * }
+ * };
+ * }
+ * };
+ * }
+ * @endcode
+ */
+#define HS_UID_ECOM_INTERFACE_CONTENTPUBLISHER 0x200286E1
+
+#endif // _HSCONTENTPUBLISHERUID_HRH
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreensrv_plat/ai_plugin_management_api/inc/hspublisherinfo.h Wed May 12 13:36:47 2010 +0300
@@ -0,0 +1,156 @@
+/*
+* Copyright (c) 2005-2006 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: HS Publisher info
+*
+*/
+
+
+#ifndef _HSPUBLISHERINFO_H
+#define _HSPUBLISHERINFO_H
+
+// System includes
+#include <e32std.h>
+
+// User includes
+
+// Forward declarations
+
+// Constants
+
+/**
+ * Maximum length for Content publisher name.
+ *
+ * @since S60 5.2
+ */
+const TInt KHsPublisherNameMaxLength( 128 );
+
+/**
+ * Maximum length for Content publisher namespace.
+ *
+ * @since S60 5.2
+ */
+const TInt KHsPublisherNamespaceMaxLength( 32 );
+
+// Types
+
+/**
+ * Content publisher name buffer.
+ *
+ * @since S60 5.2
+ */
+typedef TBuf< KHsPublisherNameMaxLength > THsPublisherName;
+
+/**
+ * Content publisher namespace buffer.
+ *
+ * @since S60 5.2
+ */
+typedef TBuf8< KHsPublisherNamespaceMaxLength > THsPublisherNamespace;
+
+/**
+ * Content publisher information
+ *
+ * @since S60 5.2
+ */
+
+/**
+ * Holds content publisher plug-in information.
+ *
+ * @since S60 5.2
+ */
+class THsPublisherInfo
+ {
+public:
+ // Constructors
+
+ /**
+ * C++ default contrutor
+ */
+ inline THsPublisherInfo();
+
+ /**
+ * C++ contrutor
+ */
+ inline THsPublisherInfo( const TUid& aUid,
+ const TDesC& aName, const TDesC8& aNamespace );
+
+public:
+ // new functions
+
+ /**
+ * Assigment operator
+ *
+ * @since S60 5.2
+ * @param aInfo Publisher info to assign.
+ */
+ inline THsPublisherInfo& operator= ( const THsPublisherInfo& aInfo );
+
+ /**
+ * Equals operator
+ *
+ * @since S60 5.2
+ * @param aInfo Publisher info to compare
+ * @return ETrue if this and aInfo equals, EFalse otherwise.
+ */
+ inline TBool operator== ( const THsPublisherInfo& aInfo ) const;
+
+ /**
+ * Gets Uid
+ *
+ * @since S60 5.2
+ * @return Uid
+ */
+ inline TUid Uid() const;
+
+ /**
+ * Gets Name
+ *
+ * @since S60 5.2
+ * @return Name
+ */
+ inline const TDesC& Name() const;
+
+ /**
+ * Gets Namespace
+ *
+ * @since S60 5.2
+ * @return Namespace
+ */
+ inline const TDesC8& Namespace() const;
+
+private:
+ // data
+
+ /** Publisher implementation UID */
+ TUid iUid;
+ /** Publisher name */
+ THsPublisherName iName;
+ /** Publisher namespace */
+ THsPublisherNamespace iNamespace;
+
+private:
+ // friend classes
+
+ friend class CAiPluginFactory;
+
+#ifdef _AIFW_UNIT_TEST
+ friend class UT_HsPublisherInfo;
+#endif
+ };
+
+#include <hspublisherinfo.inl>
+
+#endif // _HSPUBLISHERINFO_H
+
+// End of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreensrv_plat/ai_plugin_management_api/inc/hspublisherinfo.inl Wed May 12 13:36:47 2010 +0300
@@ -0,0 +1,110 @@
+/*
+* Copyright (c) 2005-2006 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: Inline function implementations for hspublisherinfo.h
+*
+*/
+
+
+#ifndef _HSPUBLISHERINFO_INL
+#define _HSPUBLISHERINFO_INL
+
+// ---------------------------------------------------------------------------
+// THsPublisherInfo::THsPublisherInfo
+//
+// ---------------------------------------------------------------------------
+//
+inline THsPublisherInfo::THsPublisherInfo()
+ : iUid( TUid::Null() ), iName( KNullDesC ), iNamespace( KNullDesC8 )
+ {
+ }
+
+// ---------------------------------------------------------------------------
+// THsPublisherInfo::THsPublisherInfo
+//
+// ---------------------------------------------------------------------------
+//
+inline THsPublisherInfo::THsPublisherInfo( const TUid& aUid,
+ const TDesC& aName, const TDesC8& aNamespace )
+ {
+ iUid = TUid::Uid( aUid.iUid );
+ iName.Copy( aName );
+ iNamespace.Copy( aNamespace );
+ }
+
+// ---------------------------------------------------------------------------
+// THsPublisherInfo::operator=
+//
+// ---------------------------------------------------------------------------
+//
+inline THsPublisherInfo& THsPublisherInfo::operator= (
+ const THsPublisherInfo& aInfo )
+ {
+ iUid = TUid::Uid( aInfo.iUid.iUid );
+ iName.Copy( aInfo.iName );
+ iNamespace.Copy( aInfo.iNamespace );
+
+ return *this;
+ }
+
+// ---------------------------------------------------------------------------
+// THsPublisherInfo::operator==
+//
+// ---------------------------------------------------------------------------
+//
+inline TBool THsPublisherInfo::operator== (
+ const THsPublisherInfo& aInfo ) const
+ {
+ if( iUid == aInfo.iUid &&
+ iName == aInfo.iName &&
+ iNamespace == aInfo.iNamespace )
+ {
+ return ETrue;
+ }
+
+ return EFalse;
+ }
+
+// ---------------------------------------------------------------------------
+// THsPublisherInfo::Uid
+//
+// ---------------------------------------------------------------------------
+//
+inline TUid THsPublisherInfo::Uid() const
+ {
+ return iUid;
+ }
+
+// ---------------------------------------------------------------------------
+// THsPublisherInfo::Name
+//
+// ---------------------------------------------------------------------------
+//
+inline const TDesC& THsPublisherInfo::Name() const
+ {
+ return iName;
+ }
+
+// ---------------------------------------------------------------------------
+// THsPublisherInfo::Namespace
+//
+// ---------------------------------------------------------------------------
+//
+inline const TDesC8& THsPublisherInfo::Namespace() const
+ {
+ return iNamespace;
+ }
+
+#endif // _HSPUBLISHERINFO_INL
+
+// End of file
--- a/homescreensrv_plat/ai_shortcut_command_api/ai_shortcut_command_api.metaxml Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,17 +0,0 @@
-<?xml version="1.0" ?>
-<api id="178473c941d92ff1095ae98ebd827b68" dataversion="1.0">
- <name>AI Shortcut Command API</name>
- <description>Gives possibility to execute shortcuts defined by localapp URL</description>
- <type>c++</type>
- <subsystem>activeidle</subsystem>
- <libs>
- </libs>
- <release category="domain"/>
- <attributes>
- <!-- This indicates wether the api provedes separate html documentation -->
- <!-- or is the additional documentation generated from headers. -->
- <!-- If you are unsuere then the value is "no" -->
- <htmldocprovided>yes</htmldocprovided>
- <adaptation>no</adaptation>
- </attributes>
-</api>
--- a/homescreensrv_plat/ai_shortcut_command_api/group/bld.inf Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,27 +0,0 @@
-/*
-* Copyright (c) 2006 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: File that exports the files belonging to
-: AI Shortcut Command API
-*
-*/
-
-
-#include <platform_paths.hrh>
-
-PRJ_PLATFORMS
-DEFAULT
-
-PRJ_EXPORTS
-
-../inc/aiscutplugindomaincrkeys.h MW_LAYER_PLATFORM_EXPORT_PATH(aiscutplugindomaincrkeys.h)
--- a/homescreensrv_plat/ai_shortcut_command_api/inc/aiscutplugindomaincrkeys.h Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,127 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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: Shortcut Plug-in CenRep keys.
-*
-*/
-
-
-#ifndef AISCUTPLUGINDOMAINCRKEYS_H
-#define AISCUTPLUGINDOMAINCRKEYS_H
-
-/**
- * Uid for central repository file that holds shortcut plug-in settings.
- */
-const TUid KCRUidShortcutItems = { 0x10275104 };
-
-/**
- * Flag bit 31
- * Theme-default shortcuts. 1000 0000 0000 0000 0000 0000 0000 0000
- */
-const TUint32 KScutFlagBitThemeDefault = 0x80000000;
-
-/**
- * Mask to unset the theme-default flag. 0111 1111 1111 1111 1111 1111 1111 1111
- */
-const TUint32 KScutBitMaskThemeDefault = 0x7FFFFFFF;
-
-/**
- * Flag bit 30
- * Locked shortcuts. 0100 0000 0000 0000 0000 0000 0000 0000
- */
-const TUint32 KScutFlagBitLocked = 0x40000000;
-
-/**
- * Mask to unset the locked flag. 1011 1111 1111 1111 1111 1111 1111 1111
- */
-const TUint32 KScutBitMaskLocked = 0xBFFFFFFF;
-
-/**
- * Flag bit 24
- * Optionally visible shortcut (softkeys). 0000 0001 0000 0000 0000 0000 0000 0000
- */
-const TUint32 KScutFlagBitOptionallyVisible = 0x01000000;
-
-/**
- * Flag bit 25
- * Non-visible shortcut (key press). 0000 0010 0000 0000 0000 0000 0000 0000
- */
-const TUint32 KScutFlagBitNonVisible = 0x02000000;
-
-/**
-* Flag bits 26-31 //0000 0001 0000 0000 0000 0001 0000 0000
-* Icon ovverides 0010 0000 0000 0000 0000 0000 0000 0000
-*/
-const TUint32 KScutFlagBitIconOverride = 0x20000000;
-
-/**
- * Flag bit for toolbar shortcuts
- */
-const TUint32 KScutFlagBitToolbarShortcut = 0x10000000;
-
-/**
- * Mask for additional settings.
- */
-const TUint32 KScutMaskAdditionalSetting = 0xFFFFFFFF ^ (KScutFlagBitIconOverride + KScutFlagBitToolbarShortcut);
-
-/**
- * Partial key for theme-default shortcut ids.
- */
-const TUint32 KScutCenRepKeyThemeDefault = KScutFlagBitThemeDefault;
-
-/**
- * Partial key for user defined shortcut ids.
- */
-const TUint32 KScutCenRepKeyUserDefined = 0x0;
-
-/**
- * Mask used to separate theme-default ids from user defined ids.
- */
-const TUint32 KScutCenRepKeyMask = KScutFlagBitThemeDefault;
-
-/**
- * Shortcut count for the active theme
- */
-const TUint32 KScutCenRepShorcutCount = 0xFFFFFFF0;
-
-/**
- * A key which contains a space-separated list of application UIDs
- * identifying the applications that should not show the xSP tip message.
- */
-const TUint32 KAIxSPNoTipAppsList = 0x0001FFFF;
-
-/**
- * Shortcut plug-in keycodes for optionally visible shortcuts.
- */
-enum TAiScutKeyCodes
-{
- // Navigation keys.
- EAiScutScrollKeyLeft = 0x0000,
- EAiScutScrollKeyRight = 0x0001,
- EAiScutScrollKeyUp = 0x0002,
- EAiScutScrollKeyDown = 0x0003,
- EAiScutSelectionKey = 0x0004,
-
- // Soft keys.
- EAiScutSoftKeyLeft = 0x0100,
- EAiScutSoftKeyRight = 0x0101,
-
- // Touch toolbar
- EAiScutToolbarFirst = 0x1000,
- EAiScutToolbarSecond = 0x1001,
- EAiScutToolbarThird = 0x1002
-};
-
-#endif // AISCUTPLUGINDOMAINCRKEYS_H
-
-// End of File.
--- a/homescreensrv_plat/ai_utilities_api/group/bld.inf Wed Mar 03 15:38:34 2010 +0200
+++ b/homescreensrv_plat/ai_utilities_api/group/bld.inf Wed May 12 13:36:47 2010 +0300
@@ -31,7 +31,4 @@
../inc/aipluginsettings.h MW_LAYER_PLATFORM_EXPORT_PATH(aipluginsettings.h)
../inc/aistrcnv.h MW_LAYER_PLATFORM_EXPORT_PATH(aistrcnv.h)
../inc/contentprioritymap.h MW_LAYER_PLATFORM_EXPORT_PATH(contentprioritymap.h)
-
-#ifdef __COVER_DISPLAY
-../inc/aisecondarydisplayapi.h MW_LAYER_PLATFORM_EXPORT_PATH(secondarydisplay/aisecondarydisplayapi.h)
-#endif
+../inc/aicpscommandbuffer.h MW_LAYER_PLATFORM_EXPORT_PATH(aicpscommandbuffer.h)
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreensrv_plat/ai_utilities_api/inc/aicpscommandbuffer.h Wed May 12 13:36:47 2010 +0300
@@ -0,0 +1,81 @@
+/*
+* 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: Cps command buffer interface
+*
+*/
+
+
+#ifndef M_CAICPSCOMMANDBUFFER_H
+#define M_CAICPSCOMMANDBUFFER_H
+
+// System includes
+#include <e32base.h>
+
+// User includes
+
+// Forward declarations
+class MLiwInterface;
+class CLiwDefaultMap;
+class CLiwServiceHandler;
+
+/**
+ * AI Cps command buffer interface
+ *
+ * @lib aifw
+ * @since S60 v5.2
+ */
+class MAiCpsCommandBuffer
+ {
+public:
+ // new functions
+
+ /**
+ * Adds command to command buffer queue
+ *
+ * @since S60 5.2
+ * @param aPluginId plugin id.
+ * @param aType type of the cps registry.
+ * @param aFilter filter values.
+ * @param aAction action trigger.
+ */
+ virtual void AddCommand( const TDesC& aPluginId,
+ const TDesC& aType, CLiwDefaultMap* aFilter,
+ const TDesC8& aAction ) = 0;
+
+ /**
+ * Gets Service Handler
+ *
+ * @since S60 5.2
+ * @return Service handler
+ */
+ virtual CLiwServiceHandler* ServiceHandler() const = 0;
+
+ /**
+ * Gets IContentPublishing Interface
+ *
+ * @since S60 5.2
+ * @return Interface
+ */
+ virtual MLiwInterface* CpsInterface() const = 0;
+
+protected:
+ // destructor
+
+ ~MAiCpsCommandBuffer() { }
+ };
+
+#endif // M_CAICPSCOMMANDBUFFER_H
+
+// End of file
+
--- a/homescreensrv_plat/ai_utilities_api/inc/aiplugintool.h Wed Mar 03 15:38:34 2010 +0200
+++ b/homescreensrv_plat/ai_utilities_api/inc/aiplugintool.h Wed May 12 13:36:47 2010 +0300
@@ -19,14 +19,15 @@
#ifndef M_AIPLUGINTOOL_H
#define M_AIPLUGINTOOL_H
+// System includes
#include <e32base.h>
-#include <aipropertyextension.h>
-class TAiPublisherInfo;
-class CAiContentPublisher;
+// User incldues
+#include <hscontentpublisher.h>
+
+// Forward declarations
+class THsPublisherInfo;
class MAiContentItemIterator;
-class MAiPropertyExtension;
-class MAiEventHandlerExtension;
/**
* Plugin tool.
@@ -39,44 +40,15 @@
public:
/**
- * Get the publisher info of the passed publisher.
- *
- * @since S60 3.2
- * @param reference to content publisher
- * @return pointer to publisher info
- */
- virtual const TAiPublisherInfo* PublisherInfoL(
- CAiContentPublisher& aContentPublisher ) = 0;
-
- /**
* Get the content item iterator for the passed publisher.
*
* @param reference to content publisher
* @param content type indication
* @return pointer to content iterator
*/
- virtual MAiContentItemIterator* ContentItemIteratorL(
- CAiContentPublisher& aContentPublisher,
- TInt aContentType = EAiPublisherContent ) = 0;
-
-
- /**
- * Get the property extension for passed publisher.
- *
- * @param reference to content publisher
- * @return property extension pointer
- */
- virtual MAiPropertyExtension* PropertyExt(
- CAiContentPublisher& aContentPublisher ) = 0;
-
- /**
- * Get the event handler extension for passed publisher.
- *
- * @param reference to content publisher
- * @return event handler extension pointer
- */
- virtual MAiEventHandlerExtension* EventHandlerExt(
- CAiContentPublisher& aContentPublisher ) = 0;
+ virtual MAiContentItemIterator* ContentItemIterator(
+ CHsContentPublisher& aContentPublisher,
+ CHsContentPublisher::TProperty aType = CHsContentPublisher::EPublisherContent ) = 0;
/**
* Release the tool.
@@ -85,8 +57,7 @@
protected:
- MAiPluginTool() { }
-
+ MAiPluginTool() { }
};
inline void Release( MAiPluginTool* aSelf )
--- a/homescreensrv_plat/ai_utilities_api/inc/aisecondarydisplayapi.h Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,37 +0,0 @@
-/*
-* Copyright (c) 2005 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: This file contains note definitions for Cover UI sync
-*
-*/
-
-
-#ifndef AISECONDARYDISPLAYAPI_HRH
-#define AISECONDARYDISPLAYAPI_HRH
-
-// CONSTANTS
-const TUid KAICategory = { 0x102750F3 };
-
-// DATA TYPES
-
-// Enumerates dialogs
-enum TAiDialogIndex
- {
- EAiNoNote = 0,
- EAiSimRegistrationFailed
- };
-
-#endif // AISECONDARYDISPLAYAPI_HRH
-
-// End of File
-
--- a/homescreensrv_plat/ai_variation_api/inc/activeidle2domaincrkeys.h Wed Mar 03 15:38:34 2010 +0200
+++ b/homescreensrv_plat/ai_variation_api/inc/activeidle2domaincrkeys.h Wed May 12 13:36:47 2010 +0300
@@ -123,4 +123,9 @@
*/
const TUint32 KAIWallpaperPath = 0x00000851;
+/**
+ * Key id to store plugin id of active view
+ */
+const TUint32 KAIActiveViewPluginId = 0x00000852;
+
#endif // __AI2INTERNALCRKEYS_H__
--- a/homescreensrv_plat/context_utility_api/group/bld.inf Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,27 +0,0 @@
-/*
-* 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".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: File that exports the files belonging to context utility api
-*
-*/
-
-
-#include <platform_paths.hrh>
-
-PRJ_PLATFORMS
-DEFAULT
-
-PRJ_EXPORTS
-../inc/hgcontextutilitybase.h MW_LAYER_PLATFORM_EXPORT_PATH(hg/hgcontextutilitybase.h)
-../inc/hgcontextutility.h MW_LAYER_PLATFORM_EXPORT_PATH(hg/hgcontextutility.h)
-../inc/hgcontextdef.h MW_LAYER_PLATFORM_EXPORT_PATH(hg/hgcontextdef.h)
--- a/homescreensrv_plat/context_utility_api/inc/hgcontextdef.h Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,76 +0,0 @@
-/*
-* 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".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: Context types
-*
-*/
-
-
-#ifndef HGCONTEXTDEF_H
-#define HGCONTEXTDEF_H
-
-#include <e32base.h>
-
-// context source
-_LIT( KHgCFSource, "Hg" );
-
-// context types
-_LIT( KHgCFTypeContact, "Contact" );
-_LIT( KHgCFTypePbkContact, "PbkContact" );
-_LIT( KHgCFTypePbkContactMulti, "PbkContactMulti" );
-_LIT( KHgCFTypeText, "Text" );
-_LIT( KHgCFTypePhoto, "Photo" );
-_LIT( KHgCFTypeActiveDate, "ActiveDate" );
-_LIT( KHgCFTypeUrl, "Url" );
-_LIT( KHgCFTypeDate, "Date" );
-
-_LIT( KHgCFTypeMusicState, "MusicState" );
-_LIT( KHgCFTypeMusicArtist, "MusicArtist" );
-_LIT( KHgCFTypeMusicTitle, "MusicTitle" );
-_LIT( KHgCFTypeMusicAlbum, "MusicAlbum" );
-_LIT( KHgCFTypeMusicAlbumArt, "MusicAlbumArt" );
-_LIT( KHgCFTypeMusicUri, "MusicUri" );
-_LIT( KHgCFTypeMusicGenre, "MusicGenre" );
-_LIT( KHgCFTypeMusicType, "MusicType" );
-
-_LIT( KHgCFTypeMusicRadioName, "MusicRadioName" );
-_LIT( KHgCFTypeMusicRadioUrl, "MusicRadioUrl" );
-_LIT( KHgCFTypeMusicRadioFrequency, "MusicRadioFrequency" );
-_LIT( KHgCFTypeMusicRadioRDSPI, "MusicRadioRDSPI" );
-
-_LIT( KHgCFTypeVideoState, "VideoState" );
-_LIT( KHgCFTypeVideoTitle, "VideoTitle" );
-_LIT( KHgCFTypeVideoUri, "VideoUri" );
-_LIT( KHgCFTypeVideoType, "VideoType" );
-
-_LIT( KHgCFTypeTvChannelName, "TvChannelName" );
-_LIT( KHgCFTypeTvProgramName, "TvProgramName" );
-_LIT( KHgCFTypeTvProgramDesc, "TvProgramDesc" );
-_LIT( KHgCFTypeTvProgramGenre, "TvProgramGenre" );
-
-_LIT( KHgCFTypeGpsLatitude, "GpsLatitude" );
-_LIT( KHgCFTypeGpsLongitude, "GpsLongitude" );
-
-_LIT( KHgCFTypeOviId, "OviId" );
-
-// some pre-defined values
-_LIT( KHgCFValueUnknownContact, "<unknown>" ); // special value for PbkContact
-_LIT( KHgCFValueUnknownInfo, "<unknown>" ); // e.g. for TV contexts, when information is not available
-_LIT( KHgCFValueMusicTypePlayer, "MusicPlayer" );
-_LIT( KHgCFValueMusicTypeRadio, "Radio" );
-_LIT( KHgCFValueVideoTypeLocal, "VideoLocal" );
-_LIT( KHgCFValueVideoTypeStream, "VideoStream" );
-
-_LIT( KHgCFServiceIdPrefixOvi, "Ovi" ); // for CHgContextUtility::PublishServiceIdL
-
-#endif // HGCONTEXTDEF_H
--- a/homescreensrv_plat/context_utility_api/inc/hgcontextutility.h Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,327 +0,0 @@
-/*
-* 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".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: Context publishing helper dll
- *
-*/
-
-
-#ifndef HGCONTEXTUTILITY_H
-#define HGCONTEXTUTILITY_H
-
-#include <e32base.h>
-#include <e32cmn.h>
-#include <bamdesca.h>
-#include <badesca.h>
-#include <mdccommon.h>
-#include <hg/hgcontextutilitybase.h>
-
-class MVPbkStoreContact;
-class MVPbkContactLink;
-class CVPbkContactLinkArray;
-class CMdESession;
-
-/**
- * Utility class to publish and access context through the Context Framework.
- * @lib hgcontextutility.lib
- *
- * Typical usage in applications that are publishing context:
- * During construction:
- * \code
- * iContextUtility = CHgContextUtility::NewL();
- * iContextUtility->RePublishWhenFgL( ETrue );
- * \endcode
- * Publishing is accomplished with one single call, for example:
- * \code
- * void ContactChanged( MVPbkStoreContact* aNewContact ) {
- * ...
- * iContextUtility->PublishContactContextL( *aNewContact );
- * ...
- * \endcode
- *
- * By default publishing requests are ignored if the application is
- * not in foreground (does not apply to apps that do not have the
- * ui environment). If there is still a good reason to allow this
- * then call AllowPublishFromBackground( ETrue ).
- */
-NONSHARABLE_CLASS( CHgContextUtility ) : public CHgContextUtilityBase
- {
-public:
- /**
- * 2-phased constructor.
- */
- IMPORT_C static CHgContextUtility* NewL();
-
- /**
- * 2-phased constructor.
- */
- IMPORT_C static CHgContextUtility* NewLC();
-
- /*
- * Destructor.
- */
- IMPORT_C ~CHgContextUtility();
-
- /**
- * Publishes contact context.
- * @param aContact contact
- * @param aDelay if non-zero then context is published only after
- * a short delay. If a new publish call is made before the timer fires the
- * pending value will not be published.
- */
- IMPORT_C void PublishContactContextL( const MVPbkStoreContact& aContact,
- const TTimeIntervalMicroSeconds32& aDelay = 0 );
-
- /**
- * Publishes contact context.
- * @param aContactLink contact link
- * @param aDelay if non-zero then context is published only after
- * a short delay. If a new publish call is made before the timer fires the
- * pending value will not be published.
- */
- IMPORT_C void PublishContactContextL( const MVPbkContactLink& aContactLink,
- const TTimeIntervalMicroSeconds32& aDelay = 0 );
-
- /**
- * Publishes contact context.
- * Attempts to publish an empty value will be ignored.
- *
- * Prefer using the overloads taking vpbk contact or link, whenever possible.
- * Use this in case of unknown contacts only, that is, a name, phone number,
- * or email address that does not belong to a phonebook contact.
- *
- * @param aContactName formatted name, phone number, or email address,
- * or a combination of them, e.g. "firstname lastname", "+12345678",
- * "lastname firstname <abcd@efg.com>", "firstname, lastname <0501234567>".
- * @param aDelay if non-zero then context is published only after
- * a short delay. If a new publish call is made before the timer fires the
- * pending value will not be published.
- */
- IMPORT_C void PublishContactContextL( const TDesC& aContactName,
- const TTimeIntervalMicroSeconds32& aDelay = 0 );
-
- /**
- * Overload for publishing multiple contacts.
- * Ownership of passed pointers is not taken.
- * @param aContacts contact array
- * @param aDelay if non-zero then context is published only after
- * a short delay. If a new publish call is made before the timer fires the
- * pending value will not be published.
- */
- IMPORT_C void PublishContactContextL(
- const RPointerArray<MVPbkStoreContact>& aContacts,
- const TTimeIntervalMicroSeconds32& aDelay = 0 );
-
- /**
- * Overload for publishing multiple contacts.
- * @param aContactLinks contact link array
- * @param aDelay if non-zero then context is published only after
- * a short delay. If a new publish call is made before the timer fires the
- * pending value will not be published.
- */
- IMPORT_C void PublishContactContextL(
- const CVPbkContactLinkArray& aContactLinks,
- const TTimeIntervalMicroSeconds32& aDelay = 0 );
-
- /**
- * Overload for publishing multiple contacts.
- * @param aContactNames string array, for element format
- * see PublishContactContextL(const TDesC&)
- * @param aDelay if non-zero then context is published only after
- * a short delay. If a new publish call is made before the timer fires the
- * pending value will not be published.
- */
- IMPORT_C void PublishContactContextL( const MDesCArray& aContactNames,
- const TTimeIntervalMicroSeconds32& aDelay = 0 );
-
- /**
- * Publishes freetext context.
- * Not to be used for bulk text (e.g. full content of some text viewer component).
- * @param aText some text, typically the highlighted substring
- * from a viewer or editor control
- * @param aDelay if non-zero then context is published only after
- * a short delay. If a new publish call is made before the timer fires the
- * pending value will not be published.
- */
- IMPORT_C void PublishTextContextL( const TDesC& aText,
- const TTimeIntervalMicroSeconds32& aDelay = 0 );
-
- /**
- * Publishes URL context.
- * @param aUrl URL
- * @param aDelay if non-zero then context is published only after
- * a short delay. If a new publish call is made before the timer fires the
- * pending value will not be published.
- */
- IMPORT_C void PublishUrlContextL( const TDesC& aUrl,
- const TTimeIntervalMicroSeconds32& aDelay = 0 );
-
- /**
- * Publishes date/time context.
- * @param aTime time
- * @param aDelay if non-zero then context is published only after
- * a short delay. If a new publish call is made before the timer fires the
- * pending value will not be published.
- */
- IMPORT_C void PublishTimeContextL( const TTime& aTime,
- const TTimeIntervalMicroSeconds32& aDelay = 0 );
-
- /**
- * Publishes photo context.
- * @param aFilename name of image file, with full path
- * @param aDelay if non-zero then context is published only after
- * a short delay. If a new publish call is made before the timer fires the
- * pending value will not be published.
- */
- IMPORT_C void PublishPhotoContextL( const TDesC& aFilename,
- const TTimeIntervalMicroSeconds32& aDelay = 0 );
-
- /**
- * Publishes photo context.
- * @param aMdeItemId item id for the Image object in MDS
- * @param aMdeSession opened metadata engine session
- * @param aDelay if non-zero then context is published only after
- * a short delay. If a new publish call is made before the timer fires the
- * pending value will not be published.
- */
- IMPORT_C void PublishPhotoContextL( TItemId aMdeItemId,
- CMdESession& aMdeSession,
- const TTimeIntervalMicroSeconds32& aDelay = 0 );
-
- /**
- * Publishes TV context.
- * Pass KNullDesC if some of the needed data is not available.
- * @param aChannelName channel name
- * @param aProgramName program name
- * @param aProgramDescription program description
- * @param aGenre genre
- */
- IMPORT_C void PublishTvContextL(
- const TDesC& aChannelName,
- const TDesC& aProgramName,
- const TDesC& aProgramDescription,
- const TDesC& aGenre );
-
- /**
- * Publishes an account id as contact context.
- *
- * @param aServiceId the service prefix, e.g. "Ovi"
- * @param aAccountId the account id
- * @param aDelay if non-zero then context is published only after
- * a short delay. If a new publish call is made before the timer fires the
- * pending value will not be published.
- */
- IMPORT_C void PublishServiceIdL( const TDesC& aServiceId,
- const TDesC& aAccountId,
- const TTimeIntervalMicroSeconds32& aDelay = 0 );
-
- /**
- * Enables or disables automatic re-publishing of the latest
- * context (published via this context utility instance) whenever
- * the application comes to foreground.
- *
- * It is DISABLED by default.
- *
- * By enabling this the applications do not have to care about
- * context publishing in HandleForegroundEventL etc.
- *
- * The feature needs CCoeEnv and calls will be ignored if the
- * environment is not available.
- *
- * @param aEnable flag to turn the feature on/off
- */
- IMPORT_C void RePublishWhenFgL( TBool aEnable );
-
- /**
- * Enables or disables context publishing when being in background.
- * Applies to all PublishContextL variants.
- * If disabled then no context will be published if it seems that the
- * caller application is not in foreground.
- * Has no effect if there is no CCoeEnv available, publishing is always
- * allowed in that case.
- *
- * It is DISABLED by default, that is, publishing is not allowed
- * from applications that are not in foreground.
- *
- * @param aAllow flag to turn the feature on/off
- */
- IMPORT_C void AllowPublishFromBackground( TBool aAllow );
-
- /**
- * Adds new music context info to music context publishing parameters.
- * This method is to be used in context with PublishMusicContextL. Fill in the
- * parameters and then call PublishMusicContextL.
- * This parameter list is cleared after publishing music context.
- *
- * @param aKey Name of the key to be published.
- * @param aData Data for the key.
- * @leave KErrNotFound, when key is empty.
- * @leave KErrAlreadyExists, when key is already in the list.
- * @see hgcontextdef.h for keys
- * @see PublishMusicContextL
- */
- IMPORT_C void AddMusicContextInfoL( const TDesC& aKey, const TDesC& aData );
-
- /**
- * Publishes music context from provided parameters as music context.
- * Publishes all known (in hgcontextdef.h) music context fields as music
- * context. All keys, which do not contain any data, are automatically
- * filled with '<unknown>' -string.
- * Clears the parameter list after publishing the context.
- *
- * @leave KErrNotReady, when music context data parameter list is empty.
- * * @see hgcontextdef.h for keys
- * @see AddMusicContextInfoL
- */
- IMPORT_C void PublishMusicContextL(
- const TTimeIntervalMicroSeconds32& aDelay = 0 );
-
- /**
- * Publishes Radio context.
- * Pass KNullDesC if some of the needed data is not available.
- * @param aRadioName radio name
- * @param aRadioUrl radio url
- * @param aRadioFrequency radio frequency
- * @param aRadioRDSPI radio identification code
- */
- IMPORT_C void PublishRadioContextL(
- const TDesC& aRadioName,
- const TDesC& aRadioUrl,
- const TDesC& aRadioFrequency,
- const TDesC& aRadioRDSPI );
-
- /**
- * Creates a combined string from the elements of the given array.
- * Returns NULL if the array has less than 2 elements.
- * @param aArray string array
- * @return combined string or NULL, ownership transferred to caller
- */
- IMPORT_C static HBufC* BuildCombinedStringL( const MDesCArray& aArray );
-
- /**
- * Splits the given combined string and appends the components to
- * the given array. The initial content of the array is not modified.
- * If aString does not seem to be a string combined from multiple entries
- * then aString is appended to aArray without any changes.
- * @param aString combined string, input
- * @param aArray array, output
- */
- IMPORT_C static void SplitCombinedStringL( const TDesC& aString,
- CDesCArray& aArray );
-
-protected:
- CHgContextUtility();
- void ConstructL();
- };
-
-#endif /* HGCONTEXTUTILITY_H */
--- a/homescreensrv_plat/context_utility_api/inc/hgcontextutilitybase.h Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,101 +0,0 @@
-/*
-* 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".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: Context publishing helper dll
- *
-*/
-
-
-#ifndef HGCONTEXTUTILITYBASE_H
-#define HGCONTEXTUTILITYBASE_H
-
-#include <e32base.h>
-#include <bamdesca.h>
-
-class CHgContextUtilityImpl;
-
-/**
- * Utility base class to publish and access context through the Context Framework.
- * @lib hgcontextutility.lib
- */
-class CHgContextUtilityBase : public CBase
- {
-public:
- /**
- * Publishes context.
- * Also defines the context if it has not been defined.
- * Publishing empty value is not allowed, however such errors are ignored
- * here so the function will not leave when CFW responds with KErrArgument.
- * The security policy for the context will be set to require
- * LocalServices capability.
- * @param aContextType context type, source is always KHgCFSource
- * @param aContextData value for the context
- */
- IMPORT_C void PublishContextL( const TDesC& aContextType,
- const TDesC& aContextData );
-
- /**
- * Publishes context, the value will contain all the strings
- * from the given array, typically by using some separator character.
- * @see PublishContextL
- * @param aContextType context type, source is always KHgCFSource
- * @param aContextData value for the context will be a combined
- * version of all the strings from this array
- */
- IMPORT_C void PublishContextL( const TDesC& aContextType,
- const MDesCArray& aContextData );
-
- /**
- * Publishes context but only after a short interval, using a timer.
- * If it is called again before the timer expires then the timer
- * is restarted (and so the previous pending value is never published).
- * @param aContextType context type, source is always KHgCFSource
- * @param aContextData value for the context
- * @param aDelay delay for the timer, in microseconds
- */
- IMPORT_C void PublishContextDelayedL( const TDesC& aContextType,
- const TDesC& aContextData, const TTimeIntervalMicroSeconds32& aDelay );
-
- /**
- * Overload for delayed publishing of a value combined from multiple strings.
- * @param aContextType context type
- * @param aContextData string array
- * @param aDelay delay for the timer, in microseconds
- */
- IMPORT_C void PublishContextDelayedL( const TDesC& aContextType,
- const MDesCArray& aContextData, const TTimeIntervalMicroSeconds32& aDelay );
-
- /**
- * Requests the given context and returns the value for the
- * first result. Returns NULL if not found.
- * @param aContextType context type, the source is always KHgCFSource
- */
- IMPORT_C HBufC* GetContextL( const TDesC& aContextType );
-
- /**
- * Requests the given context and returns the value for the
- * first result. Returns NULL if not found.
- * @param aContextSource context source
- * @param aContextType context type
- */
- IMPORT_C HBufC* GetContextL( const TDesC& aContextSource,
- const TDesC& aContextType );
-
-protected:
- CHgContextUtilityBase();
- ~CHgContextUtilityBase();
- void BaseConstructL();
- CHgContextUtilityImpl* iImpl;
- };
-
-#endif /* HGCONTEXTUTILITYBASE_H */
--- a/homescreensrv_plat/context_utility_api/tsrc/bwins/t_ui_context_utility_apiu.def Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,84 +0,0 @@
-EXPORTS
- ?LibEntryL@@YAPAVCTestModuleBase@@XZ @ 1 NONAME ; class CTestModuleBase * LibEntryL(void)
- ?SetRequirements@@YAHAAPAVCTestModuleParam@@AAK@Z @ 2 NONAME ; int SetRequirements(class CTestModuleParam * &, unsigned long &)
- ?PublishContactContextL@CHgContextUtility@@QAEXABV?$RPointerArray@VMVPbkStoreContact@@@@ABVTTimeIntervalMicroSeconds32@@@Z @ 3 NONAME ; void CHgContextUtility::PublishContactContextL(class RPointerArray<class MVPbkStoreContact> const &, class TTimeIntervalMicroSeconds32 const &)
- ?PublishContactContextL@CHgContextUtility@@QAEXABVTDesC16@@ABVTTimeIntervalMicroSeconds32@@@Z @ 4 NONAME ; void CHgContextUtility::PublishContactContextL(class TDesC16 const &, class TTimeIntervalMicroSeconds32 const &)
- ??1CHgContextUtility@@UAE@XZ @ 5 NONAME ; CHgContextUtility::~CHgContextUtility(void)
- ?NewLC@CHgContextUtility@@SAPAV1@XZ @ 6 NONAME ; class CHgContextUtility * CHgContextUtility::NewLC(void)
- ?RePublishWhenFgL@CHgContextUtility@@QAEXH@Z @ 7 NONAME ; void CHgContextUtility::RePublishWhenFgL(int)
- ?PublishPhotoContextL@CHgContextUtility@@QAEXABVTDesC16@@ABVTTimeIntervalMicroSeconds32@@@Z @ 8 NONAME ; void CHgContextUtility::PublishPhotoContextL(class TDesC16 const &, class TTimeIntervalMicroSeconds32 const &)
- ?PublishContextDelayedL@CHgContextUtilityBase@@QAEXABVTDesC16@@ABVMDesC16Array@@ABVTTimeIntervalMicroSeconds32@@@Z @ 9 NONAME ; void CHgContextUtilityBase::PublishContextDelayedL(class TDesC16 const &, class MDesC16Array const &, class TTimeIntervalMicroSeconds32 const &)
- ?PublishContactContextL@CHgContextUtility@@QAEXABVMVPbkContactLink@@ABVTTimeIntervalMicroSeconds32@@@Z @ 10 NONAME ; void CHgContextUtility::PublishContactContextL(class MVPbkContactLink const &, class TTimeIntervalMicroSeconds32 const &)
- ?PublishUrlContextL@CHgContextUtility@@QAEXABVTDesC16@@ABVTTimeIntervalMicroSeconds32@@@Z @ 11 NONAME ; void CHgContextUtility::PublishUrlContextL(class TDesC16 const &, class TTimeIntervalMicroSeconds32 const &)
- ?PublishTvContextL@CHgContextUtility@@QAEXABVTDesC16@@000@Z @ 12 NONAME ; void CHgContextUtility::PublishTvContextL(class TDesC16 const &, class TDesC16 const &, class TDesC16 const &, class TDesC16 const &)
- ?PublishContextL@CHgContextUtilityBase@@QAEXABVTDesC16@@ABVMDesC16Array@@@Z @ 13 NONAME ; void CHgContextUtilityBase::PublishContextL(class TDesC16 const &, class MDesC16Array const &)
- ?AllowPublishFromBackground@CHgContextUtility@@QAEXH@Z @ 14 NONAME ; void CHgContextUtility::AllowPublishFromBackground(int)
- ?PublishContactContextL@CHgContextUtility@@QAEXABVMVPbkStoreContact@@ABVTTimeIntervalMicroSeconds32@@@Z @ 15 NONAME ; void CHgContextUtility::PublishContactContextL(class MVPbkStoreContact const &, class TTimeIntervalMicroSeconds32 const &)
- ?GetContextL@CHgContextUtilityBase@@QAEPAVHBufC16@@ABVTDesC16@@@Z @ 16 NONAME ; class HBufC16 * CHgContextUtilityBase::GetContextL(class TDesC16 const &)
- ?NewL@CHgContextUtility@@SAPAV1@XZ @ 17 NONAME ; class CHgContextUtility * CHgContextUtility::NewL(void)
- ?PublishContextDelayedL@CHgContextUtilityBase@@QAEXABVTDesC16@@0ABVTTimeIntervalMicroSeconds32@@@Z @ 18 NONAME ; void CHgContextUtilityBase::PublishContextDelayedL(class TDesC16 const &, class TDesC16 const &, class TTimeIntervalMicroSeconds32 const &)
- ?SplitCombinedStringL@CHgContextUtilityImpl@@SAXABVTDesC16@@AAVCDesC16Array@@@Z @ 19 NONAME ABSENT ; void CHgContextUtilityImpl::SplitCombinedStringL(class TDesC16 const &, class CDesC16Array &)
- ?PublishTextContextL@CHgContextUtility@@QAEXABVTDesC16@@ABVTTimeIntervalMicroSeconds32@@@Z @ 20 NONAME ; void CHgContextUtility::PublishTextContextL(class TDesC16 const &, class TTimeIntervalMicroSeconds32 const &)
- ?PublishContextL@CHgContextUtilityBase@@QAEXABVTDesC16@@0@Z @ 21 NONAME ; void CHgContextUtilityBase::PublishContextL(class TDesC16 const &, class TDesC16 const &)
- ?GetContextL@CHgContextUtilityBase@@QAEPAVHBufC16@@ABVTDesC16@@0@Z @ 22 NONAME ; class HBufC16 * CHgContextUtilityBase::GetContextL(class TDesC16 const &, class TDesC16 const &)
- ?BuildCombinedStringL@CHgContextUtilityImpl@@SAPAVHBufC16@@ABVMDesC16Array@@@Z @ 23 NONAME ABSENT ; class HBufC16 * CHgContextUtilityImpl::BuildCombinedStringL(class MDesC16Array const &)
- ?PublishPhotoContextL@CHgContextUtility@@QAEXKAAVCMdESession@@ABVTTimeIntervalMicroSeconds32@@@Z @ 24 NONAME ; void CHgContextUtility::PublishPhotoContextL(unsigned long, class CMdESession &, class TTimeIntervalMicroSeconds32 const &)
- ?PublishContactContextL@CHgContextUtility@@QAEXABVCVPbkContactLinkArray@@ABVTTimeIntervalMicroSeconds32@@@Z @ 25 NONAME ; void CHgContextUtility::PublishContactContextL(class CVPbkContactLinkArray const &, class TTimeIntervalMicroSeconds32 const &)
- ?PublishTimeContextL@CHgContextUtility@@QAEXABVTTime@@ABVTTimeIntervalMicroSeconds32@@@Z @ 26 NONAME ; void CHgContextUtility::PublishTimeContextL(class TTime const &, class TTimeIntervalMicroSeconds32 const &)
- ?PublishContactContextL@CHgContextUtility@@QAEXABVMDesC16Array@@ABVTTimeIntervalMicroSeconds32@@@Z @ 27 NONAME ; void CHgContextUtility::PublishContactContextL(class MDesC16Array const &, class TTimeIntervalMicroSeconds32 const &)
- ?PublishServiceIdL@CHgContextUtility@@QAEXABVTDesC16@@0ABVTTimeIntervalMicroSeconds32@@@Z @ 28 NONAME ; void CHgContextUtility::PublishServiceIdL(class TDesC16 const &, class TDesC16 const &, class TTimeIntervalMicroSeconds32 const &)
- ?PublishMusicContextL@CHgContextUtility@@QAEXABVTTimeIntervalMicroSeconds32@@@Z @ 29 NONAME ; void CHgContextUtility::PublishMusicContextL(class TTimeIntervalMicroSeconds32 const &)
- ?AddMusicContextInfoL@CHgContextUtility@@QAEXABVTDesC16@@0@Z @ 30 NONAME ; void CHgContextUtility::AddMusicContextInfoL(class TDesC16 const &, class TDesC16 const &)
- ?MatchPhoneNumberL@CHgCtxContactMatcher@@QAEXABVTDesC16@@HW4TVPbkPhoneNumberMatchFlags@CVPbkPhoneNumberMatchStrategy@@AAVCVPbkContactLinkArray@@AAVTRequestStatus@@@Z @ 31 NONAME ; void CHgCtxContactMatcher::MatchPhoneNumberL(class TDesC16 const &, int, enum CVPbkPhoneNumberMatchStrategy::TVPbkPhoneNumberMatchFlags, class CVPbkContactLinkArray &, class TRequestStatus &)
- ?OpenStoreL@CHgCtxContactMatcher@@QAEXABVCVPbkContactStoreUriArray@@AAVTRequestStatus@@@Z @ 32 NONAME ; void CHgCtxContactMatcher::OpenStoreL(class CVPbkContactStoreUriArray const &, class TRequestStatus &)
- ?SplitAndMatchL@CHgCtxContactMatcher@@QAEXABVTDesC16@@ABVMVPbkFieldTypeList@@AAVCVPbkContactLinkArray@@@Z @ 33 NONAME ; void CHgCtxContactMatcher::SplitAndMatchL(class TDesC16 const &, class MVPbkFieldTypeList const &, class CVPbkContactLinkArray &)
- ?GetFieldDataBinaryL@CHgCtxContactMatcher@@QBE?AVTPtrC8@@ABVMVPbkStoreContact@@ABVMVPbkFieldType@@@Z @ 34 NONAME ; class TPtrC8 CHgCtxContactMatcher::GetFieldDataBinaryL(class MVPbkStoreContact const &, class MVPbkFieldType const &) const
- ?OpenAllStoresL@CHgCtxContactMatcher@@QAEXXZ @ 35 NONAME ; void CHgCtxContactMatcher::OpenAllStoresL(void)
- ?GetNameL@CHgCtxContactMatcher@@QAEPAVHBufC16@@AAVMVPbkStoreContactFieldCollection@@@Z @ 36 NONAME ; class HBufC16 * CHgCtxContactMatcher::GetNameL(class MVPbkStoreContactFieldCollection &)
- ?OpenDefaultMatchStoresL@CHgCtxContactMatcher@@QAEXAAVTRequestStatus@@@Z @ 37 NONAME ; void CHgCtxContactMatcher::OpenDefaultMatchStoresL(class TRequestStatus &)
- ?OpenAllStoresL@CHgCtxContactMatcher@@QAEXAAVTRequestStatus@@@Z @ 38 NONAME ; void CHgCtxContactMatcher::OpenAllStoresL(class TRequestStatus &)
- ?GetFieldDataDateTimeL@CHgCtxContactMatcher@@QBE?AVTTime@@ABVMVPbkStoreContact@@ABVMVPbkFieldType@@@Z @ 39 NONAME ; class TTime CHgCtxContactMatcher::GetFieldDataDateTimeL(class MVPbkStoreContact const &, class MVPbkFieldType const &) const
- ?SplitFindStringL@CHgCtxContactMatcher@@SAPAVCDesC16Array@@ABVTDesC16@@@Z @ 40 NONAME ; class CDesC16Array * CHgCtxContactMatcher::SplitFindStringL(class TDesC16 const &)
- ?GetAddressesL@CHgCtxContactMatcher@@QAEXAAVMVPbkStoreContactFieldCollection@@AAVCDesC16Array@@@Z @ 41 NONAME ; void CHgCtxContactMatcher::GetAddressesL(class MVPbkStoreContactFieldCollection &, class CDesC16Array &)
- ?OpenOwnNumberStoresL@CHgCtxContactMatcher@@QAEXAAVTRequestStatus@@@Z @ 42 NONAME ; void CHgCtxContactMatcher::OpenOwnNumberStoresL(class TRequestStatus &)
- ?GetCustomFieldL@CHgCtxContactMatcher@@QAEXAAVMVPbkStoreContactFieldCollection@@AAVCDesC16Array@@W4TVPbkFieldTypeName@@W4TVPbkFieldTypeParameter@@@Z @ 43 NONAME ; void CHgCtxContactMatcher::GetCustomFieldL(class MVPbkStoreContactFieldCollection &, class CDesC16Array &, enum TVPbkFieldTypeName, enum TVPbkFieldTypeParameter)
- ?MatchDataL@CHgCtxContactMatcher@@QAEXABVTDesC16@@ABVMVPbkFieldTypeList@@AAVCVPbkContactLinkArray@@@Z @ 44 NONAME ; void CHgCtxContactMatcher::MatchDataL(class TDesC16 const &, class MVPbkFieldTypeList const &, class CVPbkContactLinkArray &)
- ?IsOwnNumberL@CHgCtxContactMatcher@@QAEXABVTDesC16@@AAVTRequestStatus@@@Z @ 45 NONAME ; void CHgCtxContactMatcher::IsOwnNumberL(class TDesC16 const &, class TRequestStatus &)
- ?IsOwnNumberL@CHgCtxContactMatcher@@QAEXABVTDesC16@@AAH@Z @ 46 NONAME ; void CHgCtxContactMatcher::IsOwnNumberL(class TDesC16 const &, int &)
- ?OpenOwnNumberStoresL@CHgCtxContactMatcher@@QAEXXZ @ 47 NONAME ; void CHgCtxContactMatcher::OpenOwnNumberStoresL(void)
- ?GetWebAddressesL@CHgCtxContactMatcher@@QAEXAAVMVPbkStoreContactFieldCollection@@AAVCDesC16Array@@W4TWebAddressesType@1@@Z @ 48 NONAME ; void CHgCtxContactMatcher::GetWebAddressesL(class MVPbkStoreContactFieldCollection &, class CDesC16Array &, enum CHgCtxContactMatcher::TWebAddressesType)
- ?FieldTypes@CHgCtxContactMatcher@@QBEABVMVPbkFieldTypeList@@XZ @ 49 NONAME ; class MVPbkFieldTypeList const & CHgCtxContactMatcher::FieldTypes(void) const
- ?GetContactManager@CHgCtxContactMatcher@@QAEAAVCVPbkContactManager@@XZ @ 50 NONAME ; class CVPbkContactManager & CHgCtxContactMatcher::GetContactManager(void)
- ?GetNamesForFindL@CHgCtxContactMatcher@@QAEPAVHBufC16@@AAVMVPbkStoreContactFieldCollection@@@Z @ 51 NONAME ; class HBufC16 * CHgCtxContactMatcher::GetNamesForFindL(class MVPbkStoreContactFieldCollection &)
- ?GetNumbersL@CHgCtxContactMatcher@@QAEXAAVMVPbkStoreContactFieldCollection@@AAVCDesC16Array@@@Z @ 52 NONAME ; void CHgCtxContactMatcher::GetNumbersL(class MVPbkStoreContactFieldCollection &, class CDesC16Array &)
- ?ContactNameFormatterL@CHgCtxContactMatcher@@QAEAAVMPbk2ContactNameFormatter@@XZ @ 53 NONAME ; class MPbk2ContactNameFormatter & CHgCtxContactMatcher::ContactNameFormatterL(void)
- ?IsEmailAddressL@CHgCtxContactMatcher@@SAHABVTDesC16@@@Z @ 54 NONAME ; int CHgCtxContactMatcher::IsEmailAddressL(class TDesC16 const &)
- ?IsPhoneNumberL@CHgCtxContactMatcher@@SAHABVTDesC16@@@Z @ 55 NONAME ; int CHgCtxContactMatcher::IsPhoneNumberL(class TDesC16 const &)
- ?GetFieldDataTextL@CHgCtxContactMatcher@@QBE?AVTPtrC16@@ABVMVPbkStoreContact@@ABVMVPbkFieldType@@@Z @ 56 NONAME ; class TPtrC16 CHgCtxContactMatcher::GetFieldDataTextL(class MVPbkStoreContact const &, class MVPbkFieldType const &) const
- ?RegisterContactObserverL@CHgCtxContactMatcher@@QAEXAAVMHgCtxContactObserver@@@Z @ 57 NONAME ; void CHgCtxContactMatcher::RegisterContactObserverL(class MHgCtxContactObserver &)
- ?GetContactStoresL@CHgCtxContactMatcher@@QAEAAVMVPbkContactStoreList@@XZ @ 58 NONAME ; class MVPbkContactStoreList & CHgCtxContactMatcher::GetContactStoresL(void)
- ?GetStoreContactL@CHgCtxContactMatcher@@QAEXABVMVPbkContactLink@@PAPAVMVPbkStoreContact@@AAVTRequestStatus@@@Z @ 59 NONAME ; void CHgCtxContactMatcher::GetStoreContactL(class MVPbkContactLink const &, class MVPbkStoreContact * *, class TRequestStatus &)
- ?CancelOperation@CHgCtxContactMatcher@@QAEXXZ @ 60 NONAME ; void CHgCtxContactMatcher::CancelOperation(void)
- ?NewLC@CHgCtxContactMatcher@@SAPAV1@PAVRFs@@@Z @ 61 NONAME ; class CHgCtxContactMatcher * CHgCtxContactMatcher::NewLC(class RFs *)
- ?GetCustomFieldTypeLC@CHgCtxContactMatcher@@QAEPAVCVPbkFieldTypeRefsList@@W4TVPbkFieldTypeName@@W4TVPbkFieldTypeParameter@@@Z @ 62 NONAME ; class CVPbkFieldTypeRefsList * CHgCtxContactMatcher::GetCustomFieldTypeLC(enum TVPbkFieldTypeName, enum TVPbkFieldTypeParameter)
- ?CloseStoresL@CHgCtxContactMatcher@@QAEXXZ @ 63 NONAME ; void CHgCtxContactMatcher::CloseStoresL(void)
- ?SplitMsgContactL@CHgCtxContactMatcher@@SAXABVTDesC16@@AAVCDesC16Array@@@Z @ 64 NONAME ; void CHgCtxContactMatcher::SplitMsgContactL(class TDesC16 const &, class CDesC16Array &)
- ?GetImppFieldL@CHgCtxContactMatcher@@QAEXAAVMVPbkStoreContactFieldCollection@@PAVCDesC16Array@@11@Z @ 65 NONAME ; void CHgCtxContactMatcher::GetImppFieldL(class MVPbkStoreContactFieldCollection &, class CDesC16Array *, class CDesC16Array *, class CDesC16Array *)
- ?GetNamesForFindL@CHgCtxContactMatcher@@QAEXAAVMVPbkStoreContactFieldCollection@@AAVCDesC16Array@@@Z @ 66 NONAME ; void CHgCtxContactMatcher::GetNamesForFindL(class MVPbkStoreContactFieldCollection &, class CDesC16Array &)
- ?NewL@CHgCtxContactMatcher@@SAPAV1@PAVRFs@@@Z @ 67 NONAME ; class CHgCtxContactMatcher * CHgCtxContactMatcher::NewL(class RFs *)
- ?MatchDataL@CHgCtxContactMatcher@@QAEXABVMDesC16Array@@ABVMVPbkFieldTypeList@@AAVCVPbkContactLinkArray@@ABVTCallBack@@@Z @ 68 NONAME ; void CHgCtxContactMatcher::MatchDataL(class MDesC16Array const &, class MVPbkFieldTypeList const &, class CVPbkContactLinkArray &, class TCallBack const &)
- ?OpenStoreL@CHgCtxContactMatcher@@QAEXABVCVPbkContactStoreUriArray@@@Z @ 69 NONAME ; void CHgCtxContactMatcher::OpenStoreL(class CVPbkContactStoreUriArray const &)
- ?FindContactWithBirthdayL@CHgCtxContactMatcher@@QAEXABVTTime@@AAVCVPbkContactLinkArray@@@Z @ 70 NONAME ; void CHgCtxContactMatcher::FindContactWithBirthdayL(class TTime const &, class CVPbkContactLinkArray &)
- ?LookupL@CHgCtxContactMatcher@@QAEXABVTDesC16@@AAVCVPbkContactLinkArray@@@Z @ 71 NONAME ; void CHgCtxContactMatcher::LookupL(class TDesC16 const &, class CVPbkContactLinkArray &)
- ?UnregisterContactObserver@CHgCtxContactMatcher@@QAEXAAVMHgCtxContactObserver@@@Z @ 72 NONAME ; void CHgCtxContactMatcher::UnregisterContactObserver(class MHgCtxContactObserver &)
- ?MatchPhoneNumberL@CHgCtxContactMatcher@@QAEXABVTDesC16@@HW4TVPbkPhoneNumberMatchFlags@CVPbkPhoneNumberMatchStrategy@@AAVCVPbkContactLinkArray@@@Z @ 73 NONAME ; void CHgCtxContactMatcher::MatchPhoneNumberL(class TDesC16 const &, int, enum CVPbkPhoneNumberMatchStrategy::TVPbkPhoneNumberMatchFlags, class CVPbkContactLinkArray &)
- ?OpenDefaultMatchStoresL@CHgCtxContactMatcher@@QAEXXZ @ 74 NONAME ; void CHgCtxContactMatcher::OpenDefaultMatchStoresL(void)
- ??1CHgCtxContactMatcher@@UAE@XZ @ 75 NONAME ; CHgCtxContactMatcher::~CHgCtxContactMatcher(void)
- ?GetStoreContactL@CHgCtxContactMatcher@@QAEXABVMVPbkContactLink@@PAPAVMVPbkStoreContact@@@Z @ 76 NONAME ; void CHgCtxContactMatcher::GetStoreContactL(class MVPbkContactLink const &, class MVPbkStoreContact * *)
- ?GetEmailAddressesL@CHgCtxContactMatcher@@QAEXAAVMVPbkStoreContactFieldCollection@@AAVCDesC16Array@@@Z @ 77 NONAME ; void CHgCtxContactMatcher::GetEmailAddressesL(class MVPbkStoreContactFieldCollection &, class CDesC16Array &)
- ?MatchDataL@CHgCtxContactMatcher@@QAEXABVTDesC16@@ABVMVPbkFieldTypeList@@AAVCVPbkContactLinkArray@@AAVTRequestStatus@@@Z @ 78 NONAME ; void CHgCtxContactMatcher::MatchDataL(class TDesC16 const &, class MVPbkFieldTypeList const &, class CVPbkContactLinkArray &, class TRequestStatus &)
- ?GetThumbnailL@CHgCtxContactMatcher@@QAEPAVCFbsBitmap@@AAVMVPbkStoreContactFieldCollection@@@Z @ 79 NONAME ; class CFbsBitmap * CHgCtxContactMatcher::GetThumbnailL(class MVPbkStoreContactFieldCollection &)
- ?SplitCombinedStringL@CHgContextUtility@@SAXABVTDesC16@@AAVCDesC16Array@@@Z @ 80 NONAME ; void CHgContextUtility::SplitCombinedStringL(class TDesC16 const &, class CDesC16Array &)
- ?BuildCombinedStringL@CHgContextUtility@@SAPAVHBufC16@@ABVMDesC16Array@@@Z @ 81 NONAME ; class HBufC16 * CHgContextUtility::BuildCombinedStringL(class MDesC16Array const &)
- ?PublishRadioContextL@CHgContextUtility@@QAEXABVTDesC16@@000@Z @ 82 NONAME ; void CHgContextUtility::PublishRadioContextL(class TDesC16 const &, class TDesC16 const &, class TDesC16 const &, class TDesC16 const &)
-
--- a/homescreensrv_plat/context_utility_api/tsrc/eabi/t_ui_context_utility_apiu.def Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,102 +0,0 @@
-EXPORTS
- _Z9LibEntryLv @ 1 NONAME
- _Z15SetRequirementsRP16CTestModuleParamRm @ 2 NONAME
- _ZN17CHgContextUtility16RePublishWhenFgLEi @ 3 NONAME
- _ZN17CHgContextUtility17PublishTvContextLERK7TDesC16S2_S2_S2_ @ 4 NONAME
- _ZN17CHgContextUtility18PublishUrlContextLERK7TDesC16RK27TTimeIntervalMicroSeconds32 @ 5 NONAME
- _ZN17CHgContextUtility19PublishTextContextLERK7TDesC16RK27TTimeIntervalMicroSeconds32 @ 6 NONAME
- _ZN17CHgContextUtility19PublishTimeContextLERK5TTimeRK27TTimeIntervalMicroSeconds32 @ 7 NONAME
- _ZN17CHgContextUtility20PublishPhotoContextLERK7TDesC16RK27TTimeIntervalMicroSeconds32 @ 8 NONAME
- _ZN17CHgContextUtility20PublishPhotoContextLEmR11CMdESessionRK27TTimeIntervalMicroSeconds32 @ 9 NONAME
- _ZN17CHgContextUtility22PublishContactContextLERK12MDesC16ArrayRK27TTimeIntervalMicroSeconds32 @ 10 NONAME
- _ZN17CHgContextUtility22PublishContactContextLERK13RPointerArrayI17MVPbkStoreContactERK27TTimeIntervalMicroSeconds32 @ 11 NONAME
- _ZN17CHgContextUtility22PublishContactContextLERK16MVPbkContactLinkRK27TTimeIntervalMicroSeconds32 @ 12 NONAME
- _ZN17CHgContextUtility22PublishContactContextLERK17MVPbkStoreContactRK27TTimeIntervalMicroSeconds32 @ 13 NONAME
- _ZN17CHgContextUtility22PublishContactContextLERK21CVPbkContactLinkArrayRK27TTimeIntervalMicroSeconds32 @ 14 NONAME
- _ZN17CHgContextUtility22PublishContactContextLERK7TDesC16RK27TTimeIntervalMicroSeconds32 @ 15 NONAME
- _ZN17CHgContextUtility26AllowPublishFromBackgroundEi @ 16 NONAME
- _ZN17CHgContextUtility4NewLEv @ 17 NONAME
- _ZN17CHgContextUtility5NewLCEv @ 18 NONAME
- _ZN17CHgContextUtilityD0Ev @ 19 NONAME
- _ZN17CHgContextUtilityD1Ev @ 20 NONAME
- _ZN17CHgContextUtilityD2Ev @ 21 NONAME
- _ZN21CHgContextUtilityBase11GetContextLERK7TDesC16 @ 22 NONAME
- _ZN21CHgContextUtilityBase11GetContextLERK7TDesC16S2_ @ 23 NONAME
- _ZN21CHgContextUtilityBase15PublishContextLERK7TDesC16RK12MDesC16Array @ 24 NONAME
- _ZN21CHgContextUtilityBase15PublishContextLERK7TDesC16S2_ @ 25 NONAME
- _ZN21CHgContextUtilityBase22PublishContextDelayedLERK7TDesC16RK12MDesC16ArrayRK27TTimeIntervalMicroSeconds32 @ 26 NONAME
- _ZN21CHgContextUtilityBase22PublishContextDelayedLERK7TDesC16S2_RK27TTimeIntervalMicroSeconds32 @ 27 NONAME
- _ZN21CHgContextUtilityImpl20BuildCombinedStringLERK12MDesC16Array @ 28 NONAME ABSENT
- _ZN21CHgContextUtilityImpl20SplitCombinedStringLERK7TDesC16R12CDesC16Array @ 29 NONAME ABSENT
- _ZTI11CHgTestBase @ 30 NONAME ; #<TI>#
- _ZTI21CHgContextUtilityBase @ 31 NONAME ; #<TI>#
- _ZTV11CHgTestBase @ 32 NONAME ; #<VT>#
- _ZTV21CHgContextUtilityBase @ 33 NONAME ; #<VT>#
- _ZN17CHgContextUtility17PublishServiceIdLERK7TDesC16S2_RK27TTimeIntervalMicroSeconds32 @ 34 NONAME
- _ZN17CHgContextUtility20AddMusicContextInfoLERK7TDesC16S2_ @ 35 NONAME
- _ZN17CHgContextUtility20PublishMusicContextLERK27TTimeIntervalMicroSeconds32 @ 36 NONAME
- _ZN17CHgContextUtility20BuildCombinedStringLERK12MDesC16Array @ 37 NONAME
- _ZN17CHgContextUtility20PublishRadioContextLERK7TDesC16S2_S2_S2_ @ 38 NONAME
- _ZN17CHgContextUtility20SplitCombinedStringLERK7TDesC16R12CDesC16Array @ 39 NONAME
- _ZN20CHgCtxContactMatcher10MatchDataLERK12MDesC16ArrayRK18MVPbkFieldTypeListR21CVPbkContactLinkArrayRK9TCallBack @ 40 NONAME
- _ZN20CHgCtxContactMatcher10MatchDataLERK7TDesC16RK18MVPbkFieldTypeListR21CVPbkContactLinkArray @ 41 NONAME
- _ZN20CHgCtxContactMatcher10MatchDataLERK7TDesC16RK18MVPbkFieldTypeListR21CVPbkContactLinkArrayR14TRequestStatus @ 42 NONAME
- _ZN20CHgCtxContactMatcher10OpenStoreLERK25CVPbkContactStoreUriArray @ 43 NONAME
- _ZN20CHgCtxContactMatcher10OpenStoreLERK25CVPbkContactStoreUriArrayR14TRequestStatus @ 44 NONAME
- _ZN20CHgCtxContactMatcher11GetNumbersLER32MVPbkStoreContactFieldCollectionR12CDesC16Array @ 45 NONAME
- _ZN20CHgCtxContactMatcher12CloseStoresLEv @ 46 NONAME
- _ZN20CHgCtxContactMatcher12IsOwnNumberLERK7TDesC16R14TRequestStatus @ 47 NONAME
- _ZN20CHgCtxContactMatcher12IsOwnNumberLERK7TDesC16Ri @ 48 NONAME
- _ZN20CHgCtxContactMatcher13GetAddressesLER32MVPbkStoreContactFieldCollectionR12CDesC16Array @ 49 NONAME
- _ZN20CHgCtxContactMatcher13GetImppFieldLER32MVPbkStoreContactFieldCollectionP12CDesC16ArrayS3_S3_ @ 50 NONAME
- _ZN20CHgCtxContactMatcher13GetThumbnailLER32MVPbkStoreContactFieldCollection @ 51 NONAME
- _ZN20CHgCtxContactMatcher14IsPhoneNumberLERK7TDesC16 @ 52 NONAME
- _ZN20CHgCtxContactMatcher14OpenAllStoresLER14TRequestStatus @ 53 NONAME
- _ZN20CHgCtxContactMatcher14OpenAllStoresLEv @ 54 NONAME
- _ZN20CHgCtxContactMatcher14SplitAndMatchLERK7TDesC16RK18MVPbkFieldTypeListR21CVPbkContactLinkArray @ 55 NONAME
- _ZN20CHgCtxContactMatcher15CancelOperationEv @ 56 NONAME
- _ZN20CHgCtxContactMatcher15GetCustomFieldLER32MVPbkStoreContactFieldCollectionR12CDesC16Array18TVPbkFieldTypeName23TVPbkFieldTypeParameter @ 57 NONAME
- _ZN20CHgCtxContactMatcher15IsEmailAddressLERK7TDesC16 @ 58 NONAME
- _ZN20CHgCtxContactMatcher16GetNamesForFindLER32MVPbkStoreContactFieldCollection @ 59 NONAME
- _ZN20CHgCtxContactMatcher16GetNamesForFindLER32MVPbkStoreContactFieldCollectionR12CDesC16Array @ 60 NONAME
- _ZN20CHgCtxContactMatcher16GetStoreContactLERK16MVPbkContactLinkPP17MVPbkStoreContact @ 61 NONAME
- _ZN20CHgCtxContactMatcher16GetStoreContactLERK16MVPbkContactLinkPP17MVPbkStoreContactR14TRequestStatus @ 62 NONAME
- _ZN20CHgCtxContactMatcher16GetWebAddressesLER32MVPbkStoreContactFieldCollectionR12CDesC16ArrayNS_17TWebAddressesTypeE @ 63 NONAME
- _ZN20CHgCtxContactMatcher16SplitFindStringLERK7TDesC16 @ 64 NONAME
- _ZN20CHgCtxContactMatcher16SplitMsgContactLERK7TDesC16R12CDesC16Array @ 65 NONAME
- _ZN20CHgCtxContactMatcher17GetContactManagerEv @ 66 NONAME
- _ZN20CHgCtxContactMatcher17GetContactStoresLEv @ 67 NONAME
- _ZN20CHgCtxContactMatcher17MatchPhoneNumberLERK7TDesC16iN29CVPbkPhoneNumberMatchStrategy26TVPbkPhoneNumberMatchFlagsER21CVPbkContactLinkArray @ 68 NONAME
- _ZN20CHgCtxContactMatcher17MatchPhoneNumberLERK7TDesC16iN29CVPbkPhoneNumberMatchStrategy26TVPbkPhoneNumberMatchFlagsER21CVPbkContactLinkArrayR14TRequestStatus @ 69 NONAME
- _ZN20CHgCtxContactMatcher18GetEmailAddressesLER32MVPbkStoreContactFieldCollectionR12CDesC16Array @ 70 NONAME
- _ZN20CHgCtxContactMatcher20GetCustomFieldTypeLCE18TVPbkFieldTypeName23TVPbkFieldTypeParameter @ 71 NONAME
- _ZN20CHgCtxContactMatcher20OpenOwnNumberStoresLER14TRequestStatus @ 72 NONAME
- _ZN20CHgCtxContactMatcher20OpenOwnNumberStoresLEv @ 73 NONAME
- _ZN20CHgCtxContactMatcher21ContactNameFormatterLEv @ 74 NONAME
- _ZN20CHgCtxContactMatcher23OpenDefaultMatchStoresLER14TRequestStatus @ 75 NONAME
- _ZN20CHgCtxContactMatcher23OpenDefaultMatchStoresLEv @ 76 NONAME
- _ZN20CHgCtxContactMatcher24FindContactWithBirthdayLERK5TTimeR21CVPbkContactLinkArray @ 77 NONAME
- _ZN20CHgCtxContactMatcher24RegisterContactObserverLER21MHgCtxContactObserver @ 78 NONAME
- _ZN20CHgCtxContactMatcher25UnregisterContactObserverER21MHgCtxContactObserver @ 79 NONAME
- _ZN20CHgCtxContactMatcher4NewLEP3RFs @ 80 NONAME
- _ZN20CHgCtxContactMatcher5NewLCEP3RFs @ 81 NONAME
- _ZN20CHgCtxContactMatcher7LookupLERK7TDesC16R21CVPbkContactLinkArray @ 82 NONAME
- _ZN20CHgCtxContactMatcher8GetNameLER32MVPbkStoreContactFieldCollection @ 83 NONAME
- _ZN20CHgCtxContactMatcherD0Ev @ 84 NONAME
- _ZN20CHgCtxContactMatcherD1Ev @ 85 NONAME
- _ZN20CHgCtxContactMatcherD2Ev @ 86 NONAME
- _ZNK20CHgCtxContactMatcher10FieldTypesEv @ 87 NONAME
- _ZNK20CHgCtxContactMatcher17GetFieldDataTextLERK17MVPbkStoreContactRK14MVPbkFieldType @ 88 NONAME
- _ZNK20CHgCtxContactMatcher19GetFieldDataBinaryLERK17MVPbkStoreContactRK14MVPbkFieldType @ 89 NONAME
- _ZNK20CHgCtxContactMatcher21GetFieldDataDateTimeLERK17MVPbkStoreContactRK14MVPbkFieldType @ 90 NONAME
- _ZThn12_N20CHgCtxContactMatcherD0Ev @ 91 NONAME
- _ZThn12_N20CHgCtxContactMatcherD1Ev @ 92 NONAME
- _ZThn16_N20CHgCtxContactMatcherD0Ev @ 93 NONAME
- _ZThn16_N20CHgCtxContactMatcherD1Ev @ 94 NONAME
- _ZThn20_N20CHgCtxContactMatcherD0Ev @ 95 NONAME
- _ZThn20_N20CHgCtxContactMatcherD1Ev @ 96 NONAME
- _ZThn4_N20CHgCtxContactMatcherD0Ev @ 97 NONAME
- _ZThn4_N20CHgCtxContactMatcherD1Ev @ 98 NONAME
- _ZThn8_N20CHgCtxContactMatcherD0Ev @ 99 NONAME
- _ZThn8_N20CHgCtxContactMatcherD1Ev @ 100 NONAME
-
--- a/homescreensrv_plat/context_utility_api/tsrc/group/bld.inf Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,32 +0,0 @@
-/*
-* Copyright (c) 2002 - 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: T_ui_context_utility_api test module.
-*
-*/
-
-
-
-PRJ_PLATFORMS
-DEFAULT
-
-PRJ_TESTEXPORTS
-
-PRJ_EXPORTS
-
-PRJ_TESTMMPFILES
-t_ui_context_utility_api.mmp
-
-PRJ_MMPFILES
-
-// End of File
--- a/homescreensrv_plat/context_utility_api/tsrc/group/context_utility_api.bat Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,17 +0,0 @@
-@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
-
-ATSInterface.exe -testmodule T_ui_context_utility_api
\ No newline at end of file
--- a/homescreensrv_plat/context_utility_api/tsrc/group/t_ui_context_utility_api.mmp Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,80 +0,0 @@
-/*TYPE STIFUNIT*//*
-* Copyright (c) 2002 - 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: T_ui_context_utility_api test module.
-*
-*/
-
-
-#include <platform_paths.hrh>
-
-TARGET T_ui_context_utility_api.dll
-TARGETTYPE dll
-UID 0x1000008D 0x101FB3E7
-
-CAPABILITY ALL -TCB
-
-DEFFILE T_ui_context_utility_api.def
-
-USERINCLUDE ../inc
-USERINCLUDE ../../inc
-USERINCLUDE ../../../../contextutility/inc
-
-// USERINCLUDE for base test class
-USERINCLUDE ../testbase
-
-APP_LAYER_SYSTEMINCLUDE
-
-SYSTEMINCLUDE /epoc32/include/internal
-
-SOURCEPATH ../src
-SOURCE T_ui_context_utility_api.cpp
-SOURCE T_ui_context_utility_api_cases.cpp
-SOURCE wait.cpp
-SOURCE hgctxcontactmatcher.cpp
-
-SOURCEPATH ../../../../contextutility/src
-SOURCE hgcontextutilityimpl.cpp
-SOURCE hgcontextutility.cpp
-SOURCE hgcontextutilitybase.cpp
-
-// SOURCEPATH for base test class
-SOURCEPATH ../testbase
-SOURCE hgtestbase.cpp
-
-LIBRARY euser.lib
-LIBRARY estor.lib
-LIBRARY bafl.lib
-LIBRARY stiftestinterface.lib
-LIBRARY avkon.lib
-LIBRARY aknnotify.lib
-LIBRARY eikcore.lib
-LIBRARY cfclient.lib
-LIBRARY cfservices.lib
-LIBRARY cone.lib
-LIBRARY ws32.lib
-LIBRARY mdeclient.lib
-LIBRARY vpbkeng.lib
-LIBRARY efsrv.lib
-LIBRARY Pbk2Presentation.lib
-LIBRARY fbscli.lib
-LIBRARY imageconversion.lib
-LIBRARY commonengine.lib
-
-DEBUGLIBRARY flogger.lib
-
-LANG SC
-
-EXPORTUNFROZEN
-
-// End of File
--- a/homescreensrv_plat/context_utility_api/tsrc/group/t_ui_context_utility_api.pkg Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,62 +0,0 @@
-;
-; 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:
-;
-;
-; Installation file for STIF
-;
-
-; Languages
-&EN
-
-; Provide value for uid
-#{"STIF"},(0x00000000),1,1,0,TYPE=SA
-
-; Series60 product id for S60 3.0
-[0x101F7961], 0, 0, 0, {"Series60ProductID"}
-
-; Localised Vendor name
-%{"Nokia"}
-
-; Unique Vendor name
-:"Nokia"
-
-; Logo
-; None
-
-; Package signature - Optional
-; None
-
-; Start of Package body
-
-; Condition blocks
-; None
-
-; Options list
-; None
-
-; Install files
-"\epoc32\release\armv5\udeb\T_ui_context_utility_api.dll" - "!:\Sys\Bin\T_ui_context_utility_api.dll"
-"context_utility_api.bat" - "c:\context_utility_api.bat"
-
-; Embedded SIS
-; None
-
-; End of Package body
-
-; PKG dependencies
-; None
-
-; PKG capabilities
-; None
--- a/homescreensrv_plat/context_utility_api/tsrc/inc/hgctxcontactmatcher.h Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,904 +0,0 @@
-/*
-* 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".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: Contact metching class
-*
-*/
-
-
-#ifndef HGCONTACTMATCHER_H
-#define HGCONTACTMATCHER_H
-
-// System includes
-#include <e32base.h>
-#include <e32std.h>
-#include <bamdesca.h>
-#include <badesca.h>
-
-#include <MVPbkSingleContactOperationObserver.h>
-#include <MVPbkContactStoreListObserver.h>
-#include <MVPbkContactFindObserver.h>
-#include <MVPbkFieldType.h>
-#include <CVPbkPhoneNumberMatchStrategy.h>
-#include <MVPbkContactFindFromStoresObserver.h>
-#include <MVPbkContactViewObserver.h>
-
-#include <finditemengine.h>
-
-// Classes referenced
-class RFs;
-class CActiveSchedulerWait;
-class CVPbkContactManager;
-class MVPbkContactLink;
-class CVPbkContactLinkArray;
-class CVPbkContactStoreUriArray;
-class MVPbkContactOperationBase;
-class MVPbkFieldType;
-class MVPbkFieldTypeList;
-class MVPbkStoreContact;
-class MVPbkStoreContactField;
-class CVPbkFieldTypeRefsList;
-class MVPbkStoreContactFieldCollection;
-class MVPbkContactFieldSelector;
-
-class CPbk2SortOrderManager;
-class MPbk2ContactNameFormatter;
-class CFbsBitmap;
-
-/**
- * Observer interface for contact added/changed/deleted notifications.
- */
-class MHgCtxContactObserver
- {
-public:
- /**
- * Called when a contact is added, changed, or deleted.
- */
- virtual void HandleContactEventL() = 0;
- };
-
-/**
-* CHgCtxContactMatcher class is an API for contact matching.
-*
-* Before a method starts executing a Virtual Phonebook operation,
-* it checks if there's an older asynchronous operation already in execution.
-* If there is, synchronous methods leave with error code KErrInUse.
-* Asynchronous methods complete the request with same error code.
-*
-* If phone backup/restore has been detected, using methods which
-* require Virtual Phonebook is not possible normally.
-* Instead those methods leave with error code KErrAccessDenied.
-* Once EStoreBackupRestoreCompleted event has been received,
-* methods can be called normally.
-*
-* @lib hgcontextservicesutils.lib
-*/
-
-NONSHARABLE_CLASS( CHgCtxContactMatcher ) : public CBase,
- public MVPbkSingleContactOperationObserver,
- public MVPbkContactStoreListObserver,
- public MVPbkContactFindObserver,
- public MVPbkContactFindFromStoresObserver,
- public MVPbkContactViewObserver
- {
-public: // Construct & destruct
-
- /**
- * Two-phase constructor for CHgCtxContactMatcher class.
- *
- * @param aFsSession File server session.
- *
- * @return CHgCtxContactMatcher* Pointer to newly created instance.
- */
- IMPORT_C static CHgCtxContactMatcher* NewL( RFs* aFsSession = 0 );
-
- /**
- * Two-phase constructor for CHgCtxContactMatcher class.
- * Like NewL(), but also places instance on cleanup stack.
- *
- * @return CHgCtxContactMatcher* Pointer to newly created instance.
- */
- IMPORT_C static CHgCtxContactMatcher* NewLC( RFs* aFsSession = 0 );
-
- /**
- * C++ destructor.
- */
- IMPORT_C ~CHgCtxContactMatcher();
-
-private: // Internal construct
-
- /**
- * C++ Constructor.
- */
- CHgCtxContactMatcher( RFs* aFsSession );
-
- /**
- * Second phase constructor
- */
- void ConstructL();
-
-public: // API methods
-
- /**
- * Opens one or more contact stores for future match operations.
- *
- * @param aUriArray Array of contact store URIs to be opened.
- *
- * @exception KErrNotSupported when none of the stores opens
- * @exception KErrGeneral if some stores are already open
- */
- IMPORT_C void OpenStoreL( const CVPbkContactStoreUriArray& aUriArray );
-
- /**
- * Opens one or more contact stores for future match operations.
- * Asynchronous version.
- *
- * @param aUriArray Array of contact store URIs to be opened.
- * @param aStatus Completion status of the request.
- * KErrNone - at least one store opened successfully
- * KErrNotSupported - all stores failed to open
- * KErrGeneral - if some stores are already open
- */
- IMPORT_C void OpenStoreL( const CVPbkContactStoreUriArray& aUriArray,
- TRequestStatus& aStatus );
-
- /**
- * Opens all contact stores for future match operations.
- * NOTE: does not open OwnNumber store.
- *
- * @exception KErrNotSupported when none of the stores opens
- * @exception KErrGeneral if some stores are already open
- */
- IMPORT_C void OpenAllStoresL();
-
- /**
- * Opens all contact stores for future match operations.
- * Asynchronous version.
- * NOTE: does not open OwnNumber store.
- *
- * @param aStatus Completion status of the request.
- * KErrNone - at least one store opened successfully
- * KErrNotSupported - all stores failed to open
- * KErrGeneral - if some stores are already open
- */
- IMPORT_C void OpenAllStoresL( TRequestStatus& aStatus );
-
- /**
- * Opens default contact stores for future match operations.
- * Used to find local aliases to phone numbers and email addresses
- * NOTE: does not open OwnNumber store or fixed dialing store
- * Opens the stores in the default preference order
- *
- * @exception KErrNotSupported when none of the stores opens
- * @exception KErrGeneral if some stores are already open
- */
- IMPORT_C void OpenDefaultMatchStoresL();
-
- /**
- * Opens default contact stores for future match operations.
- * Used to find local aliases to phone numbers and email addresses
- * Asynchronous version.
- * NOTE: does not open OwnNumber store or fixed dialing store
- * Opens the stores in the default preference order
- *
- * @param aStatus Completion status of the request.
- * KErrNone - at least one store opened successfully
- * KErrNotSupported - all stores failed to open
- * KErrGeneral - if some stores are already open
- */
- IMPORT_C void OpenDefaultMatchStoresL( TRequestStatus& aStatus );
-
- /**
- * Opens all OwnNumber stores for future match operations.
- *
- * @exception KErrNotSupported when none of the stores opens
- * @exception KErrGeneral if some stores are already open
- */
- IMPORT_C void OpenOwnNumberStoresL();
-
- /**
- * Opens all OwnNumber stores for future match operations.
- *
- * @param aStatus Completion status of the request.
- * KErrNone - at least one store opened successfully
- * KErrNotSupported - all stores failed to open
- * KErrGeneral - if some stores are already open
- */
- IMPORT_C void OpenOwnNumberStoresL( TRequestStatus& aStatus );
-
- /**
- * Closes all currently open contact stores
- * including OwnNumber stores.
- *
- * @return Leaves on error.
- */
- IMPORT_C void CloseStoresL();
-
- /**
- * Determines whether a phone number is OwnNumber. Synchronous version.
- * The method searches for the number from currently open stores.
- * In order to use SIM's ISDN store, it should be the only open store.
- * Can be opened with OpenOwnNumberStoresL().
- *
- * @param aSearch Phone number to search for
- * @param aResult Boolean result.
- */
- IMPORT_C void IsOwnNumberL( const TDesC& aSearch, TBool& aResult );
-
- /**
- * Determines whether a phone number is OwnNumber. Asynchronous version.
- * The method searches for the number from currently open stores.
- * In order to use SIM's ISDN store, it should be the only open store.
- * Can be opened with OpenOwnNumberStoresL().
- *
- * @param aSearch Phone number to search for
- * @param aStatus Request status containing the result and
- * possible error code.
- * KErrNone = TRUE,
- * KErrNotFound = FALSE,
- * other value = system wide error code.
- */
- IMPORT_C void IsOwnNumberL( const TDesC& aSearch, TRequestStatus& aStatus );
-
- /**
- * Finds contacts with phone numbers that match the search string.
- * Synchronous version.
- * Contacts are searched from all currently open contact stores.
- * Matching is done from the end of the phone number.
- * Note: If the search string is shorter than 7 digits, matching from
- * Phone memory contact store works ONLY if the phone number is
- * exactly the same as the search string.
- * Example:
- * Search string "567" would find phone number "567", but not "1234567".
- * From SIM stores both numbers would be found.
- *
- * @param aSearch Search string
- * @param aDigits Number of digits to match from the end of phone number.
- * @param aFlags Search all or stop at first match.
- * See enum values from CVPbkPhoneNumberMatchStrategy.h
- * @param aLinkArray Links to matching contacts are returned in this
- * array that method caller provides.
- *
- * @return KErrNone = success, otherwise an error code. ,,list of codes
- */
- IMPORT_C void MatchPhoneNumberL( const TDesC& aSearch, TInt aDigits,
- CVPbkPhoneNumberMatchStrategy::TVPbkPhoneNumberMatchFlags aFlags,
- CVPbkContactLinkArray& aLinkArray );
-
- /**
- * Finds contacts with phone numbers that match the search string.
- * Asynchronous version.
- * Searching is done according to parameters like in the synchronous version,
- * but status code is returned in aStatus.
- *
- * @param aStatus Completion status of the request.
- * Values: KErrNone = success, otherwise an error code.
- */
- IMPORT_C void MatchPhoneNumberL( const TDesC& aSearch, TInt aDigits,
- CVPbkPhoneNumberMatchStrategy::TVPbkPhoneNumberMatchFlags aFlags,
- CVPbkContactLinkArray& aLinkArray, TRequestStatus& aStatus );
-
- /**
- * Returns the global list of possible field types.
- *
- * @return List of field types
- */
- IMPORT_C const MVPbkFieldTypeList& FieldTypes() const;
-
- /**
- * Gets a store contact from a contact link.
- * @param aContactLink The link from which store contact should be returned.
- * @param aStoreContact Pointer to store contact.
- * Client must take the ownership immediately.
- */
- IMPORT_C void GetStoreContactL( const MVPbkContactLink& aContactLink,
- MVPbkStoreContact** aStoreContact );
-
- /**
- * Gets a store contact from a contact link.
- * Asynchronous version.
- * Parameters like in the synchronous version,
- * but status code is returned in aStatus.
- *
- * @param aStatus Completion status of the request.
- * Values: KErrNone = success, otherwise an error code.
- */
- IMPORT_C void GetStoreContactL( const MVPbkContactLink& aContactLink,
- MVPbkStoreContact** aStoreContact, TRequestStatus& aStatus );
-
- /**
- * Returns a pointer to contact's field data of given field type.
- * If the field type isn't found from contact, return value is KNullDesC.
- * NOTE: this works only for field types of storage type
- * EVPbkFieldStorageTypeText.
- * For other types, leaves with error code KErrArgument.
- *
- * @param aStoreContact The contact from which field data should be returned.
- * @param aFieldType Field's type.
- * @return TPtrC pointer to field's data.
- */
- IMPORT_C TPtrC GetFieldDataTextL( const MVPbkStoreContact& aStoreContact,
- const MVPbkFieldType& aFieldType ) const;
-
- /**
- * Returns a pointer to contact's field data of given field type.
- * If the field type isn't found from contact, return value is
- * "1.1.1111". (d.m.yyyy).
- * NOTE: this works only for field types of storage type
- * EVPbkFieldStorageTypeDateTime.
- * For other types, leaves with error code KErrArgument.
- *
- * @param aStoreContact The contact from which field data should be returned.
- * @param aFieldType Field's type.
- * @return TTime pointer to field's data.
- */
- IMPORT_C TTime GetFieldDataDateTimeL( const MVPbkStoreContact& aStoreContact,
- const MVPbkFieldType& aFieldType ) const;
-
- /**
- * Returns a pointer to contact's field data of given field type.
- * If the field type isn't found from contact, return value is KNullDesC8.
- * NOTE: this works only for field types of storage type
- * EVPbkFieldStorageTypeBinary.
- * For other types, leaves with error code KErrArgument.
- *
- * @param aStoreContact The contact from which field data should be returned.
- * @param aFieldType Field's type.
- * @return TPtrC8 pointer to field's data.
- */
- IMPORT_C TPtrC8 GetFieldDataBinaryL( const MVPbkStoreContact& aStoreContact,
- const MVPbkFieldType& aFieldType ) const;
-
- /**
- * Cancels asynchronous operation.
- */
- IMPORT_C void CancelOperation();
-
- /**
- * Returns the used contact store list, needed for e.g. aiw fetch
- * @return The used contact store list
- */
- IMPORT_C MVPbkContactStoreList& GetContactStoresL();
-
- /**
- * Returns the name of the contact in the same format as MPbk2ContactNameFormatter
- * @param aFieldCollection The fieldcollection of the contact
- * @return HBufC* the name of the contact or null
- */
- IMPORT_C HBufC* GetNameL(
- MVPbkStoreContactFieldCollection& aFieldCollection );
-
- /**
- * Returns reference to the contactmanager
- * @return reference to the contact manager
- */
- IMPORT_C CVPbkContactManager& GetContactManager();
-
- /**
- * Finds contacts with field data that match the search string.
- * Contacts are searched from all currently open contact stores.
- * Matching is done from field types given by the method caller.
- * The list of all possible field types can be fetched from the wrapper
- * using FieldTypes().
- *
- * @param aSearch Search string
- * @param aFieldTypes List of field types included in matching.
- * @param aLinkArray Links to matching contacts are returned
- * in this array that method caller provides.
- *
- * @return KErrNone = success, otherwise an error code. ,,list of codes
- */
- IMPORT_C void MatchDataL( const TDesC& aSearch, const MVPbkFieldTypeList& aFieldTypes,
- CVPbkContactLinkArray& aLinkArray);
-
- /**
- * Finds contacts with field data that match the search string.
- * Contacts are searched from all currently open contact stores.
- * Matching is done from field types given by the method caller.
- * The list of all possible field types can be fetched from the wrapper
- * using FieldTypes().
- *
- * @param aSearchStrings Search strings
- * @param aFieldTypes List of field types included in matching.
- * @param aLinkArray Links to matching contacts are returned
- * in this array that method caller provides.
- * @param aWordParserCallBack is the callback function to the parser
- *
- * @return KErrNone = success, otherwise an error code.
- */
- IMPORT_C void MatchDataL( const MDesC16Array& aSearchStrings,
- const MVPbkFieldTypeList& aFieldTypes,
- CVPbkContactLinkArray& aLinkArray,
- const TCallBack& aWordParserCallBack );
-
- /**
- * Finds contacts with field data that match the search string.
- * Asynchronous version.
- * Searching is done according to parameters like in the synchronous version,
- * but status code is returned in aStatus.
- *
- * @param aStatus Completion status of the request.
- * Values: KErrNone = success, otherwise an error code.
- */
- IMPORT_C void MatchDataL( const TDesC& aSearch, const MVPbkFieldTypeList& aFieldTypes,
- CVPbkContactLinkArray& aLinkArray, TRequestStatus& aStatus );
-
- /**
- * Returns reference to the contact name formatter. Object is created if not used earlier.
- * @return reference to the contact name formatter
- */
- IMPORT_C MPbk2ContactNameFormatter& ContactNameFormatterL();
-
- /**
- * Splits the input to words and then performs a MatchDataL using the same
- * splitter callback function.
- *
- * LookupL and this are the preferred functions to do text-based lookups from Hg code.
- *
- * @see MatchDataL
- * @see LookupL
- */
- IMPORT_C void SplitAndMatchL( const TDesC& aData,
- const MVPbkFieldTypeList& aFieldTypes,
- CVPbkContactLinkArray& aLinkArray );
-
- /**
- * Registers for getting notifications when a contact is added, changed, or deleted.
- * Does nothing if already added.
- * @param aObserver ref to observer
- */
- IMPORT_C void RegisterContactObserverL( MHgCtxContactObserver& aObserver );
-
- /**
- * Unregisters the given observer.
- * Does nothing if the given observer has not been registered before.
- * @param aObserver ref to observer
- */
- IMPORT_C void UnregisterContactObserver( MHgCtxContactObserver& aObserver );
-
- /**
- * Looks up a contact based on
- * - name, or
- * - phone number, or
- * - email address, or
- * - service id
- *
- * Also handles the "name <number>" or "name <email>" format.
- *
- * For service IDs the full uri must be given, e.g. if a contact
- * has an Ovi ID in phonebook set to "somebody" then the search will
- * only succeed if aData contains "Ovi:somebody" (unless of course
- * the string "somebody" matches some name fields).
- *
- * @param aData name or phone number of email address
- * @param aLinkArray array to which the result links are added,
- * no items are appended if not found
- */
- IMPORT_C void LookupL( const TDesC& aData, CVPbkContactLinkArray& aLinkArray );
-
- /**
- * Returns the phone numbers of the contact.
- * @param aFieldCollection The fieldcollection of the contact
- * @param aArray Phone numbers are appended to this. (not resetted)
- */
- IMPORT_C void GetNumbersL(
- MVPbkStoreContactFieldCollection& aFieldCollection,
- CDesCArray& aArray );
-
- /**
- * Returns the email addresses of the contact.
- * @param aFieldCollection The fieldcollection of the contact
- * @param aArray Email addresses are appended to this. (not resetted)
- */
- IMPORT_C void GetEmailAddressesL(
- MVPbkStoreContactFieldCollection& aFieldCollection,
- CDesCArray& aArray );
-
- /**
- * Constructs the address (e.g. street, city, country) for the contact.
- * The elements are combined into one string, using space as separator.
- * aArray will have 0-3 items appended: nothing, or general and/or work and/or home address.
- * @param aFieldCollection The fieldcollection of the contact
- * @param aArray Addresses are appended to this. (not resetted)
- */
- IMPORT_C void GetAddressesL(
- MVPbkStoreContactFieldCollection& aFieldCollection,
- CDesCArray& aArray );
-
- enum TWebAddressesType
- {
- EWebAddresses, //for general web adress
- EWebAddressesHome, //for home web adress
- EWebAddressesWork //for work web adress
- };
-
- /**
- * Gets the prefered web address for the contact.
- *
- * aArray can have 0 or more items appended.
- *
- * @param aFieldCollection The fieldcollection of the contact
- * @param aArray Web addresses are appended to this. (not resetted)
- * @param aType Determinates which web adress return, @see TWebAddressesType
- */
- IMPORT_C void GetWebAddressesL(
- MVPbkStoreContactFieldCollection& aFieldCollection,
- CDesCArray& aArray,
- TWebAddressesType aType );
-
-
- /**
- * Gets the thumbnail for a contact.
- * @param aFieldCollection The fieldcollection of the contact
- * @return bitmap or null (null if not found)
- */
- IMPORT_C CFbsBitmap* GetThumbnailL(
- MVPbkStoreContactFieldCollection& aFieldCollection );
-
- /**
- * Checks if the given string is a phone number.
- */
- IMPORT_C static TBool IsPhoneNumberL( const TDesC& aData );
-
- /**
- * Checks if the given string is an email address.
- */
- IMPORT_C static TBool IsEmailAddressL( const TDesC& aData );
-
- /**
- * Appends content of name fields to the given array.
- * Uses less fields than LookupL, here only family and given name
- * are taken and returned.
- *
- * @param aFieldCollection fields to check
- * @param aArray array to which strings are appended
- */
- IMPORT_C void GetNamesForFindL(
- MVPbkStoreContactFieldCollection& aFieldCollection,
- CDesCArray& aArray );
-
- /**
- * Gets content of name fields.
- * Overload for getting results in one string instead of an array.
- * @param aFieldCollection fields to check
- * @return content of name fields in no particular order separated by a space
- */
- IMPORT_C HBufC* GetNamesForFindL(
- MVPbkStoreContactFieldCollection& aFieldCollection );
-
- /**
- * Splits a string into parts.
- * Space, comma, and semicolon are treated as separators.
- */
- IMPORT_C static CDesCArray* SplitFindStringL(const TDesC& aFindString);
-
- /**
- * Splits a "name1 name2 ... <something>" into two parts:
- * "name1 name2 ..." and "something".
- * < and > characters are removed.
- * The resulting strings are appended to the given arrray.
- * Such format is used by messaging components and this function
- * is useful if a search has to be made based on both the name and
- * the phone number / email address.
- * @param aString input string
- * @param aArray array to append to
- */
- IMPORT_C static void SplitMsgContactL( const TDesC& aString, CDesCArray& aArray );
-
- /**
- * Appends the values from all matching text fields to a given array.
- * @param aFieldCollection fields to scan through
- * @param aArray destination array
- * @param aVersitName versit property name
- * @param aVersitParam versit property parameter
- */
- IMPORT_C void GetCustomFieldL(
- MVPbkStoreContactFieldCollection& aFieldCollection,
- CDesCArray& aArray,
- TVPbkFieldTypeName aVersitName,
- TVPbkFieldTypeParameter aVersitParam );
-
- /**
- * Returns a matching field type for the given versit name/parameter.
- * The returned list is empty if no matching field types were found.
- * @param aVersitName versit property name
- * @param aVersitParam versit property parameter
- * @return field type list, also on the cleanup stack
- */
- IMPORT_C CVPbkFieldTypeRefsList* GetCustomFieldTypeLC(
- TVPbkFieldTypeName aVersitName,
- TVPbkFieldTypeParameter aVersitParam );
-
- /**
- * Finds impp field data.
- * @param aFieldCollection fields to scan
- * @param aSchemeOnlyAray if non-null then scheme parts are appended to here
- * @param aUriOnlyArray if non-null then uri parts are appended to here
- * @param aFullArray if non-null then full field contents are appended to here
- */
- IMPORT_C void GetImppFieldL(
- MVPbkStoreContactFieldCollection& aFieldCollection,
- CDesCArray* aSchemeOnlyArray,
- CDesCArray* aUriOnlyArray,
- CDesCArray* aFullArray );
-
- /**
- * Finds all contacts that have a birthday on the given month/day.
- * Other components from aDate - like year, hours, etc. - are ignored.
- * @param aDate date to look for
- * @param aLinkArray links are appended to this array
- * If no matching contacts are found then aLinkArray is left untouched.
- */
- IMPORT_C void FindContactWithBirthdayL( const TTime& aDate,
- CVPbkContactLinkArray& aLinkArray );
-
-private: // from MVPbkContactStoreListObserver, MVPbkContactStoreObserver
-
- /**
- * Called when the opening process is complete, ie. all stores have
- * been reported either failed or successfully opened.
- */
- void OpenComplete();
-
- /**
- * Called when a contact store is ready for use.
- */
- void StoreReady( MVPbkContactStore& aContactStore );
-
- /**
- * Called when a contact store becomes unavailable.
- * Client may inspect the reason of the unavailability and decide whether or not
- * it will keep the store opened (ie. listen to the store events).
- * @param aContactStore The store that became unavailable.
- * @param aReason The reason why the store is unavailable.
- * This is one of the system wide error codes.
- */
- void StoreUnavailable( MVPbkContactStore& aContactStore, TInt aReason );
-
- /**
- * Called when changes occur in the contact store.
- * @see TVPbkContactStoreEvent, MVPbkContactStoreObserver.h
- *
- * @param aContactStore
- * @param aStoreEvent Event that has occured.
- */
- void HandleStoreEventL( MVPbkContactStore& aContactStore,
- TVPbkContactStoreEvent aStoreEvent );
-
-private: // from MVPbkContactFindFromStoresObserver
- /**
- * Called when find is complete on a single store. Callee takes
- * ownership of the results. In case of an error during find,
- * the aResultsFromStore may contain only partial results of the find.
- *
- * @param aStore is the store from which the contacts were searched from
- *
- * @param aResultsFromStore Array of contact links that matched the find.
- * Callee must take ownership of this object in
- * the end of the function, ie. in case the function
- * does not leave.
- */
- void FindFromStoreSucceededL( MVPbkContactStore& aStore,
- MVPbkContactLinkArray* aResultsFromStore );
-
- /**
- * This function is called if/when there were errors while searching
- * from a store.
- * @param aStore is the store from which the search was done.
- * @param aError is the error code.
- */
- void FindFromStoreFailed( MVPbkContactStore& aStore, TInt aError );
-
- /**
- * Called when find is complete.
- */
- void FindFromStoresOperationComplete();
-
-private: // from MVPbkContactFindObserver
-
- /**
- * Called when find is complete. Callee takes ownership of the results.
- * In case of an error during find, the aResults may contain only
- * partial results of the find.
- *
- * @param aResults Array of contact links that matched the find.
- * Callee must take ownership of this object in
- * the end of the function, ie. in case the function
- * does not leave.
- */
- void FindCompleteL( MVPbkContactLinkArray* aResults );
-
- /**
- * Called in case the find fails for some reason.
- *
- * @param aError One of the system wide error codes.
- */
- void FindFailed( TInt aError );
-
-private: // from MVPbkSingleContactOperationObserver
-
- /**
- * Called when operation is completed.
- *
- * @param aOperation the completed operation.
- * @param aContact the contact returned by the operation.
- * Client must take the ownership immediately.
- */
- void VPbkSingleContactOperationComplete(
- MVPbkContactOperationBase& aOperation, MVPbkStoreContact* aContact );
-
- /**
- * Called if the operation fails.
- *
- * @param aOperation the failed operation.
- * @param aError error code of the failure.
- */
- void VPbkSingleContactOperationFailed(
- MVPbkContactOperationBase& aOperation, TInt aError );
-
-private: // from MVPbkContactViewObserver
- void ContactViewReady(
- MVPbkContactViewBase& aView );
- void ContactViewUnavailable(
- MVPbkContactViewBase& aView );
- void ContactAddedToView(
- MVPbkContactViewBase& aView,
- TInt aIndex,
- const MVPbkContactLink& aContactLink );
- void ContactRemovedFromView(
- MVPbkContactViewBase& aView,
- TInt aIndex,
- const MVPbkContactLink& aContactLink );
- void ContactViewError(
- MVPbkContactViewBase& aView,
- TInt aError,
- TBool aErrorNotified );
-
-private: // Constants
-
- // Wrapper method IDs for calls that have an asynchronous version
- enum TMethodId
- {
- ENoMethod = 0,
- EMatchPhoneNumber,
- EMatchData,
- EGetStoreContact,
- EOpenStore,
- ECloseStores
- };
-
- // Wrapper method processing status.
- enum TMethodStatus
- {
- EIdle = 0,
- EExecuting,
- EFinished
- };
-
-private: // Methods
- const MVPbkStoreContactField* FindField( const MVPbkStoreContact& aContact,
- const MVPbkFieldType& aFType ) const;
- static CVPbkContactStoreUriArray* GetStoreArrayLC(
- const TDesC& (* const aFuncPtrs[])() );
- void OpenStoreL( const TDesC& (* const aFuncPtrs[])() );
- void OpenStoreL( const TDesC& (* const aFuncPtrs[])(),
- TRequestStatus& aStatus );
- void FreeOldOperation();
-
- // Copies the entries to the existing recipient array
- void CopyFindResultsL( MVPbkContactLinkArray* aResults );
-
- // Open store, code common to sync/async versions.
- void OpenStoreCommonL( const CVPbkContactStoreUriArray& aUriArray );
-
- // Match phonenumber, code common to sync/async versions.
- void MatchPhoneNumberCommonL( const TDesC& aData, TInt aDigits,
- CVPbkPhoneNumberMatchStrategy::TVPbkPhoneNumberMatchFlags aFlags );
-
- void InitOperationL( TMethodId aApiMethod );
- void InitOperationL( TMethodId aApiMethod, TRequestStatus* aStatus );
- void InitOperation( TRequestStatus* aStatus );
- void OperationComplete( TInt ErrorCode = KErrNone );
- void OperationFailed( TInt aError );
- void CleanupNumberMatch();
- void RemoveSimilarEmailAddressesL( const TDesC& aData, CVPbkContactLinkArray& aLinkArray, const MVPbkFieldTypeList& aFieldTypes );
-
- void TryTextLookupL( const TDesC& aName, CVPbkContactLinkArray& aLinkArray );
- void TryNumberLookupL( const TDesC& aName, CVPbkContactLinkArray& aLinkArray );
-
- void PreCreateNameFieldTypesL();
- void PreCreateEmailFieldTypesL();
- void PreCreateXspIdFieldTypesL();
- void PreCreateNumberFieldTypesL();
- void PreCreateAddressFieldTypesL();
- void PreCreateWebAddressFieldTypesL();
- void PreCreateWebAddressHomeFieldTypesL();
- void PreCreateWebAddressWorkFieldTypesL();
- void PreCreateWorkAddressFieldTypesL();
- void PreCreateHomeAddressFieldTypesL();
-
- void GetTextFieldsL( const CVPbkFieldTypeRefsList& aList,
- const MVPbkStoreContactFieldCollection& aFieldCollection, CDesCArray& aArray );
-
-private: // Data
-
- // Used members
-
- RFs* iFsSession;
- TBool iFsSessionOwned;
- MVPbkStoreContact** iResultStoreContact; // result of GetStoreContact
- CVPbkContactLinkArray* iResultContactLinkArray; // result of matching operations
- TInt iResultContactLinkCnt; // number of links found in matching operations
- TRequestStatus* iClientStatus; // request status used in asynch calls
-
- // Own members
- CVPbkContactManager* iContactManager;
- MVPbkContactOperationBase* iOperation; // CM operation being processed
- CActiveSchedulerWait iASchedulerWait; // used in asynch calls
- CVPbkContactStoreUriArray* iStoreUris; // used in matching
- CVPbkPhoneNumberMatchStrategy* iMatchStrategy; // used in matching
- CVPbkPhoneNumberMatchStrategy::TConfig* iStratConfig; // used in matching
- TBool iSync; // is this wrapper call Synchronous (1) or Asynchronous (0)
- TInt iError; // error code used while processing VPbk-operations
- TBool iBackup;// contact store backup/restore in progress
- // API method ID. Needed for cleanup after method finishes.
- TMethodId iApiMethod;
- // API method status. Needed to know processing has finished.
- TMethodStatus iApiMethodStatus;
-
- CPbk2SortOrderManager* iSortOrderManager;
- MPbk2ContactNameFormatter* iNameFormatter;
-
- RPointerArray<MHgCtxContactObserver> iContactObservers; // ptrs not owned
- CVPbkFieldTypeRefsList* iNameFieldTypes;
- CVPbkFieldTypeRefsList* iEmailFieldTypes;
- CVPbkFieldTypeRefsList* iXspIdFieldTypes;
- CVPbkFieldTypeRefsList* iNumberFieldTypes;
- CVPbkFieldTypeRefsList* iAddressFieldTypes;
- CVPbkFieldTypeRefsList* iWebAddressFieldTypes;
- CVPbkFieldTypeRefsList* iWebAddressHomeFieldTypes;
- CVPbkFieldTypeRefsList* iWebAddressWorkFieldTypes;
- CVPbkFieldTypeRefsList* iWorkAddressFieldTypes;
- CVPbkFieldTypeRefsList* iHomeAddressFieldTypes;
- };
-
-/**
-* Panic codes used in CHgCtxContactMatcher.
-*
-* @since 3.1u
-*/
-class HgContactMatcherPanics
- {
-public: // API
-
- /**
- * Panic codes
- */
- enum TPanic
- {
- EPanNullPointer = 0,
- EPanInvalidParam,
- EPanInvalidOp
- };
-
-public:
-
- /**
- * Panic
- */
- static void Panic( TPanic aPanic );
- };
-
-#endif
-
-// End of File
--- a/homescreensrv_plat/context_utility_api/tsrc/inc/t_ui_context_utility_api.h Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,99 +0,0 @@
-/*
-* Copyright (c) 2002 - 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: T_ui_context_utility_api test module.
-*
-*/
-
-
-
-#ifndef T_ui_context_utility_api_H
-#define T_ui_context_utility_api_H
-
-// INCLUDES
-#include "hgtestbase.h"
-#include "hgctxcontactmatcher.h"
-
-// Logging path
-_LIT( KT_ui_context_utility_apiLogPath, "\\logs\\testframework\\T_ui_context_utility_api\\" );
-// Log file
-_LIT( KT_ui_context_utility_apiLogFile, "T_ui_context_utility_api.txt" );
-
-// CLASS DECLARATION
-
-/**
-* This a T_ui_context_utility_api class.
-*/
-NONSHARABLE_CLASS(CT_ui_context_utility_api) : public CHgTestBase
- {
- public:
-
- CT_ui_context_utility_api();
-
- void ConstructL();
-
- static CT_ui_context_utility_api* NewL();
-
- void CreateEnvL();
- void DestroyEnv();
- TInt LoadTestCasesL(
- TInt& _test_case_no,
- CT_ui_context_utility_api::TCallReason aRunReason,
- TInt aTestToRun,
- RPointerArray<TTestCaseInfo>& aTestCases,
- TTestResult& aResult);
-
- ~CT_ui_context_utility_api();
-
- TInt RunTestL(
- CT_ui_context_utility_api::TCallReason aRunReason,
- TInt aTestToRun,
- RPointerArray<TTestCaseInfo>& aTestCases,
- TTestResult& aResult);
-
- RPtrHashMap<TDesC, TDesC>* GetImplHashTablePtr()
- {
- class CTestUtility : public CBase
- {
- public:
- CHgContextUtilityImpl* iImpl;
- };
-
- class CTestImplementation : CTimer
- {
- public:
- // number of pointers before iMusicContextInfo, calculate M-classes as pointers too
- TInt unneeded[12];
- RPtrHashMap<TDesC, TDesC> iMusicContextInfo;
- };
-
- // Fetch the pointer to hash table for testing purposes
- return &((CTestImplementation*)((CTestUtility*)iContextUtility)->iImpl)->iMusicContextInfo;
- }
- #define TEST_VAR_DECLARATIONS
- /**
- * all testmodule-global variables declarations are inserted here
- */
- #include "../src/T_ui_context_utility_api_cases.cpp"
- #undef TEST_VAR_DECLARATIONS
-
- // for creating test env
- CTrapCleanup* ENV_cleanup;
- TInt ENV_err;
- CEikonEnv* ENV_env;
- CAknAppUi* ENV_aknAppUI;
- };
-
-#endif // T_ui_context_utility_api_H
-
-// End of File
--- a/homescreensrv_plat/context_utility_api/tsrc/src/hgctxcontactmatcher.cpp Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,2539 +0,0 @@
-/*
-* 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".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: Contact matching class
-*
-*/
-
-
-// System includes
-#include <e32base.h>
-#include <bamdesca.h>
-#include <cntitem.h>
-#include <eikenv.h>
-#include <bautils.h>
-#include <fbs.h>
-#include <imageconversion.h>
-#include <data_caging_path_literals.hrh>
-
-#include <CVPbkContactManager.h>
-#include <MVPbkContactStoreList.h>
-#include <MVPbkContactStore.h>
-#include <CVPbkContactStoreUriArray.h>
-#include <MVPbkContactLinkArray.h>
-#include <MVPbkContactLink.h>
-#include <MVPbkFieldType.h>
-#include <MVPbkStoreContact.h>
-#include <MVPbkStoreContactField.h>
-#include <MVPbkStoreContactFieldCollection.h>
-#include <MVPbkContactFieldData.h>
-#include <MVPbkContactFieldTextData.h>
-#include <MVPbkContactFieldUriData.h>
-#include <MVPbkContactFieldDateTimeData.h>
-#include <MVPbkContactFieldBinaryData.h>
-#include <MVPbkContactOperationBase.h>
-#include <MVPbkContactStoreProperties.h>
-#include <TVPbkContactStoreUriPtr.h>
-#include <VPbkContactStoreUris.h>
-#include <MPbk2ContactNameFormatter.h>
-#include <CVPbkFieldTypeSelector.h>
-#include <TVPbkFieldVersitProperty.h>
-#include <CVPbkFieldTypeRefsList.h>
-#include <TVPbkWordParserCallbackParam.h>
-#include <CVPbkContactViewDefinition.h>
-#include <MVPbkContactViewBase.h>
-#include <coemain.h>
-#include <CPbk2SortOrderManager.h>
-#include <Pbk2ContactNameFormatterFactory.h>
-
-#include "hgctxcontactmatcher.h"
-
-
-#include "hgctxutilslogging.h"
-
-
-// ================= Static Constant Data ===================
-
-typedef const TDesC& (*UriFuncPtr)();
-
-// Number match store URIs in priority order.
-// When doing number matching, order of the stores in the uri array will
-// determine which stores are searched first (sequential match). We stop
-// the search when first match is found.
-static const UriFuncPtr NumberMatchStoreUris[] =
- {
- VPbkContactStoreUris::DefaultCntDbUri,
- // If we don't manage to open some store, we remove it from our array
- VPbkContactStoreUris::SimGlobalAdnUri,
- VPbkContactStoreUris::SimGlobalSdnUri,
- NULL, // end marker
- };
-
-// All store URIs except own number store
-static const UriFuncPtr AllStoreUris[] =
- {
- VPbkContactStoreUris::DefaultCntDbUri,
- // If we don't manage to open some store, we remove it from our array
- VPbkContactStoreUris::SimGlobalAdnUri,
- VPbkContactStoreUris::SimGlobalSdnUri,
- VPbkContactStoreUris::SimGlobalFdnUri,
- NULL, // end marker
- };
-
-// Own number store URIs
-static const UriFuncPtr OwnNumberStoreUris[] =
- {
- VPbkContactStoreUris::SimGlobalOwnNumberUri,
- NULL, // end marker
- };
-
-// number of digits that must match from the right side of a phone number
-const TInt KNumberMatchLenFromRight = 7;
-
-// granularity for CDesCArray
-const TInt KArrayGranularity = 4;
-
-// YYYYMMDD:HHMMSS.MMMMMM
-_LIT(KNullTime, "11110000:010101.00000");
-
-// ================= STATIC FUNCTIONS =======================
-
-// ---------------------------------------------------------
-// FindWordSplitterL
-// ---------------------------------------------------------
-//
-static TInt FindWordSplitterL( TAny* aParams )
- {
- TVPbkWordParserCallbackParam* parser =
- static_cast<TVPbkWordParserCallbackParam*>( aParams );
-
- const TText* ptr = parser->iStringToParse->Ptr();
- const TText* end = ptr + parser->iStringToParse->Length();
-
- const TText* startOfWord=NULL;
- for ( ; ; )
- {
- if ( ptr==end || TChar(*ptr).IsSpace() || *ptr == ',' || *ptr == ';' )
- {
- if ( startOfWord )
- {
- TPtrC addWord( startOfWord,ptr - startOfWord );
- parser->iWordArray->AppendL( addWord );
- startOfWord = NULL;
- }
- if ( ptr == end )
- {
- break;
- }
- }
- else if ( !startOfWord )
- {
- startOfWord = ptr;
- }
- ptr++;
- }
- return( KErrNone );
- }
-
-static HBufC* CombineStringsLC( CDesCArray& aArray )
- {
- TInt len = 0;
- for ( TInt i = 0, ie = aArray.Count(); i != ie; ++i )
- {
- len += aArray[i].Length() + 1;
- }
- HBufC* result = HBufC::NewLC( len );
- TPtr p( result->Des() );
- for ( TInt i = 0, ie = aArray.Count(); i != ie; ++i )
- {
- if ( i )
- {
- p.Append( ' ' );
- }
- p.Append( aArray[i] );
- }
- return result;
- }
-
-// ================= MEMBER FUNCTIONS =======================
-
-// ----------------------------------------------------------------------------
-// Two-phase constructor for CHgCtxContactMatcher class.
-// ----------------------------------------------------------------------------
-EXPORT_C CHgCtxContactMatcher* CHgCtxContactMatcher::NewL(
- RFs* aFsSession )
- {
- CHgCtxContactMatcher* self = CHgCtxContactMatcher::NewLC( aFsSession );
- CleanupStack::Pop(self);
- return self;
- }
-
-// ----------------------------------------------------------------------------
-// Two-phase constructor for CHgCtxContactMatcher class.
-// ----------------------------------------------------------------------------
-EXPORT_C CHgCtxContactMatcher* CHgCtxContactMatcher::NewLC(
- RFs* aFsSession )
- {
- CHgCtxContactMatcher* self = new ( ELeave ) CHgCtxContactMatcher( aFsSession );
- CleanupStack::PushL(self);
- self->ConstructL();
- return self;
- }
-
-// ----------------------------------------------------------------------------
-// C++ destructor.
-// ----------------------------------------------------------------------------
-EXPORT_C CHgCtxContactMatcher::~CHgCtxContactMatcher()
- {
- delete iNameFieldTypes;
- delete iNumberFieldTypes;
- delete iEmailFieldTypes;
- delete iXspIdFieldTypes;
- delete iAddressFieldTypes;
- delete iWebAddressFieldTypes;
- delete iHomeAddressFieldTypes;
- delete iWorkAddressFieldTypes;
-
- FreeOldOperation();
- CleanupNumberMatch();
- delete iStoreUris;
- delete iContactManager;
- delete iSortOrderManager;
- delete iNameFormatter;
-
- if ( iClientStatus )
- {
- User::RequestComplete( iClientStatus, KErrCancel );
- }
- if ( iASchedulerWait.IsStarted() )
- {
- iASchedulerWait.AsyncStop();
- }
-
- iContactObservers.Close();
-
- if ( iFsSessionOwned && iFsSession )
- {
- iFsSession->Close();
- delete iFsSession;
- }
- }
-
-// ----------------------------------------------------------------------------
-// C++ Constructor.
-// ----------------------------------------------------------------------------
-CHgCtxContactMatcher::CHgCtxContactMatcher( RFs* aFsSession) : iFsSession( aFsSession )
- {
- }
-
-// ----------------------------------------------------------------------------
-// Second phase constructor
-// ----------------------------------------------------------------------------
-void CHgCtxContactMatcher::ConstructL()
- {
- if ( !iFsSession )
- {
- // The contact manager would be okay with NULL but some of our own functions
- // need an RFs.
- iFsSessionOwned = ETrue;
- iFsSession = new ( ELeave ) RFs;
- User::LeaveIfError( iFsSession->Connect() );
- }
-
- iContactManager = CVPbkContactManager::NewL(
- *CVPbkContactStoreUriArray::NewLC(), iFsSession );
- CleanupStack::PopAndDestroy(); // CVPbkContactStoreUriArray
-
- // No stores open yet
- iStoreUris = CVPbkContactStoreUriArray::NewL();
- }
-
-//******************* API-methods *********************************************
-
-// ----------------------------------------------------------------------------
-// Synchronous version
-// ----------------------------------------------------------------------------
-EXPORT_C void CHgCtxContactMatcher::OpenStoreL(
- const CVPbkContactStoreUriArray& aUriArray )
- {
- InitOperationL( EOpenStore );
- OpenStoreCommonL( aUriArray );
- if ( iApiMethodStatus != EFinished )
- {
- iApiMethodStatus = EExecuting;
- // Wait until stores are open
- iASchedulerWait.Start();
- }
- User::LeaveIfError( iError );
- }
-
-// ----------------------------------------------------------------------------
-// Asynchronous version
-// ----------------------------------------------------------------------------
-EXPORT_C void CHgCtxContactMatcher::OpenStoreL(
- const CVPbkContactStoreUriArray& aUriArray, TRequestStatus& aStatus )
- {
- InitOperationL( EOpenStore );
- OpenStoreCommonL( aUriArray );
- InitOperation( &aStatus );
-
- if ( iApiMethodStatus != EFinished )
- {
- iApiMethodStatus = EExecuting;
- }
- }
-
-
-// ----------------------------------------------------------------------------
-// Common code to sync/async versions.
-// ----------------------------------------------------------------------------
-void CHgCtxContactMatcher::OpenStoreCommonL(
- const CVPbkContactStoreUriArray& aUriArray )
- {
- if (iStoreUris->Count())
- {
- // Opening more stores when some stores are already open is not
- // supported. Support would require managing iStoreUris properly
- // so that it contains all open stores.
- User::Leave(KErrGeneral);
- }
-
- const TInt count = aUriArray.Count();
-
- for (TInt i = 0; i < count; ++i)
- {
- // Appended Uri:s to the array. If store fails to open it is removed
- // from the array. This keeps Uri's in priority order in the array.
- TVPbkContactStoreUriPtr uriPtr = aUriArray[i];
- iStoreUris->AppendL( uriPtr );
-
- iContactManager->LoadContactStoreL( uriPtr );
- }
- MVPbkContactStoreList& storeList = iContactManager->ContactStoresL();
- storeList.OpenAllL( *this );
- }
-
-// ----------------------------------------------------------------------------
-// Synchronous version
-// ----------------------------------------------------------------------------
-EXPORT_C void CHgCtxContactMatcher::OpenAllStoresL()
- {
- OpenStoreL(AllStoreUris);
- }
-
-// ----------------------------------------------------------------------------
-// Asynchronous version
-// ----------------------------------------------------------------------------
-EXPORT_C void CHgCtxContactMatcher::OpenAllStoresL( TRequestStatus& aStatus )
- {
- OpenStoreL(AllStoreUris, aStatus);
- }
-
-// ----------------------------------------------------------------------------
-// Synchronous version
-// ----------------------------------------------------------------------------
-EXPORT_C void CHgCtxContactMatcher::OpenDefaultMatchStoresL()
- {
- OpenStoreL(NumberMatchStoreUris);
- }
-
-// ----------------------------------------------------------------------------
-// Asynchronous version
-// ----------------------------------------------------------------------------
-EXPORT_C void CHgCtxContactMatcher::OpenDefaultMatchStoresL( TRequestStatus& aStatus )
- {
- OpenStoreL(NumberMatchStoreUris, aStatus);
- }
-
-// ----------------------------------------------------------------------------
-// Open OwnNumber stores.
-// Synchronous version
-// ----------------------------------------------------------------------------
-EXPORT_C void CHgCtxContactMatcher::OpenOwnNumberStoresL()
- {
- OpenStoreL(OwnNumberStoreUris);
- }
-
-// ----------------------------------------------------------------------------
-// Open OwnNumber stores.
-// Asynchronous version
-// ----------------------------------------------------------------------------
-EXPORT_C void CHgCtxContactMatcher::OpenOwnNumberStoresL( TRequestStatus& aStatus )
- {
- OpenStoreL(OwnNumberStoreUris, aStatus);
- }
-
-// ----------------------------------------------------------------------------
-// Close all open stores.
-// ----------------------------------------------------------------------------
-EXPORT_C void CHgCtxContactMatcher::CloseStoresL()
- {
- // Closing stores does not work. MatchDataL() finds contacts from
- // closed stores.
-
- InitOperationL( ECloseStores );
-
- iApiMethodStatus = EExecuting;
- TRAPD( err, iContactManager->ContactStoresL().CloseAll( *this ) );
- iApiMethodStatus = EFinished;
- if ( err == KErrNone)
- {
- delete iStoreUris; iStoreUris = NULL;
- iStoreUris = CVPbkContactStoreUriArray::NewL();
- }
- else
- {
- User::Leave(err);
- }
- }
-
-// ----------------------------------------------------------------------------
-// Synchronous version
-// ----------------------------------------------------------------------------
-EXPORT_C void CHgCtxContactMatcher::MatchPhoneNumberL(
- const TDesC& aData, TInt aDigits,
- CVPbkPhoneNumberMatchStrategy::TVPbkPhoneNumberMatchFlags aFlags,
- CVPbkContactLinkArray& aLinkArray )
- {
- InitOperationL( EMatchPhoneNumber );
- iResultContactLinkArray = &aLinkArray;
-
- // Start asynchronous matching and wait until results are ready
- MatchPhoneNumberCommonL( aData, aDigits, aFlags );
- if ( iApiMethodStatus != EFinished )
- {
- iApiMethodStatus = EExecuting;
- iASchedulerWait.Start();
- }
- User::LeaveIfError( iError );
- }
-
-
-// ----------------------------------------------------------------------------
-// Asynchronous version
-// ----------------------------------------------------------------------------
-EXPORT_C void CHgCtxContactMatcher::MatchPhoneNumberL(
- const TDesC& aData, TInt aDigits,
- CVPbkPhoneNumberMatchStrategy::TVPbkPhoneNumberMatchFlags aFlags,
- CVPbkContactLinkArray& aLinkArray, TRequestStatus& aStatus )
- {
- InitOperationL( EMatchPhoneNumber );
- iResultContactLinkArray = &aLinkArray;
- // Start asynchronous matching
- MatchPhoneNumberCommonL( aData, aDigits, aFlags );
- InitOperation( &aStatus );
- if ( iApiMethodStatus != EFinished )
- {
- iApiMethodStatus = EExecuting;
- }
- }
-
-// ----------------------------------------------------------------------------
-// Common code for sync and async versions
-// ----------------------------------------------------------------------------
-void CHgCtxContactMatcher::MatchPhoneNumberCommonL(
- const TDesC& aData, TInt aDigits,
- CVPbkPhoneNumberMatchStrategy::TVPbkPhoneNumberMatchFlags aFlags )
- {
- // Delete resources allocated for previous match
- CleanupNumberMatch();
-
- // iStoreUris is filled when stores are opened
-
- iStratConfig = new (ELeave) CVPbkPhoneNumberMatchStrategy::TConfig(
- aDigits,
- *iStoreUris,
- CVPbkPhoneNumberMatchStrategy::EVPbkSequentialMatch,
- aFlags);
- iMatchStrategy = CVPbkPhoneNumberMatchStrategy::NewL(
- *iStratConfig,
- *iContactManager,
- *this);
- // Start asynchronous matching
- iMatchStrategy->MatchL( aData );
- }
-
-
-// ----------------------------------------------------------------------------
-// Find from a store succeeded
-// ----------------------------------------------------------------------------
-void CHgCtxContactMatcher::FindFromStoreSucceededL( MVPbkContactStore& /*aStore*/,
- MVPbkContactLinkArray* aResultsFromStore )
- {
- __ASSERT_DEBUG( aResultsFromStore, HgContactMatcherPanics::Panic(
- HgContactMatcherPanics::EPanNullPointer ));
-
- // Take the ownership of the result immediately
- CleanupDeletePushL( aResultsFromStore );
-
- CopyFindResultsL( aResultsFromStore );
-
- CleanupStack::PopAndDestroy(); // aResultsFromStore
- }
-
-// ----------------------------------------------------------------------------
-// Copy the found results for a store into array
-// ----------------------------------------------------------------------------
-void CHgCtxContactMatcher::CopyFindResultsL( MVPbkContactLinkArray*
- aResults )
- {
- const TInt count = aResults->Count();
- if ( iResultContactLinkArray )
- {
- // Copy links to the member array
- for ( TInt i = 0; i < count; ++i )
- {
- iResultContactLinkArray->AppendL( aResults->At( i ).CloneLC() );
- CleanupStack::Pop(); // cloned link
- }
- }
- else
- {
- iResultContactLinkCnt += count;
- }
- }
-
-
-// ----------------------------------------------------------------------------
-// Find failed
-// ----------------------------------------------------------------------------
-void CHgCtxContactMatcher::FindFromStoreFailed( MVPbkContactStore& /*aStore*/, TInt /*aError*/ )
- {
- //no operation, search to continue from the other stores
- }
-
-
-// ----------------------------------------------------------------------------
-// Find complete
-// ----------------------------------------------------------------------------
-void CHgCtxContactMatcher::FindFromStoresOperationComplete()
- {
- if (!iResultContactLinkArray)
- {
- // Links were not copied. Result is whether any links found or not.
- OperationComplete( iResultContactLinkCnt ? KErrNone:KErrNotFound );
- }
- else
- {
- OperationComplete();
- iResultContactLinkArray = NULL;
- }
- }
-
-// ----------------------------------------------------------------------------
-// Return global list of field types.
-// ----------------------------------------------------------------------------
-EXPORT_C const MVPbkFieldTypeList& CHgCtxContactMatcher::FieldTypes() const
- {
- return iContactManager->FieldTypes();
- }
-
-// ----------------------------------------------------------------------------
-// Synchronous version
-// ----------------------------------------------------------------------------
-EXPORT_C void CHgCtxContactMatcher::GetStoreContactL(
- const MVPbkContactLink& aLink, MVPbkStoreContact** aStoreContact )
- {
- InitOperationL( EGetStoreContact );
- iResultStoreContact = aStoreContact;
-
- // Start asynchronous operation and wait until results are ready
- FreeOldOperation();
- iOperation = iContactManager->RetrieveContactL( aLink, *this );
- if ( iApiMethodStatus != EFinished )
- {
- iApiMethodStatus = EExecuting;
- iASchedulerWait.Start();
- }
- User::LeaveIfError( iError );
- }
-
-// ----------------------------------------------------------------------------
-// Asynchronous version
-// ----------------------------------------------------------------------------
-EXPORT_C void CHgCtxContactMatcher::GetStoreContactL(
- const MVPbkContactLink& aLink, MVPbkStoreContact** aStoreContact,
- TRequestStatus& aStatus )
- {
- InitOperationL( EGetStoreContact );
- iResultStoreContact = aStoreContact;
- // Start asynchronous operation
- FreeOldOperation();
- iOperation = iContactManager->RetrieveContactL( aLink, *this );
- InitOperation( &aStatus );
- if ( iApiMethodStatus != EFinished )
- {
- iApiMethodStatus = EExecuting;
- }
- }
-
-// ----------------------------------------------------------------------------
-// Synchronous version
-// ----------------------------------------------------------------------------
-EXPORT_C void CHgCtxContactMatcher::IsOwnNumberL( const TDesC& aNumber, TBool& aResult )
- {
- InitOperationL( EMatchPhoneNumber );
-
- // Not interested in links, only whether found or not
- iResultContactLinkArray = NULL;
- iResultContactLinkCnt = 0;
-
- // Start asynchronous matching and wait until results are ready
- MatchPhoneNumberCommonL( aNumber, aNumber.Length(),
- CVPbkPhoneNumberMatchStrategy::EVPbkStopOnFirstMatchFlag );
- if ( iApiMethodStatus != EFinished )
- {
- iApiMethodStatus = EExecuting;
- iASchedulerWait.Start();
- }
- User::LeaveIfError( iError );
-
- aResult = iResultContactLinkCnt > 0;
- }
-
-// ----------------------------------------------------------------------------
-// Asynchronous version
-// ----------------------------------------------------------------------------
-EXPORT_C void CHgCtxContactMatcher::IsOwnNumberL( const TDesC& aNumber,
- TRequestStatus& aStatus )
- {
- InitOperationL( EMatchPhoneNumber );
-
- // Not interested in links, only whether found or not
- iResultContactLinkArray = NULL;
- iResultContactLinkCnt = 0;
-
- // Start asynchronous matching
- MatchPhoneNumberCommonL( aNumber, aNumber.Length(),
- CVPbkPhoneNumberMatchStrategy::EVPbkStopOnFirstMatchFlag );
- InitOperation( &aStatus );
- if ( iApiMethodStatus != EFinished )
- {
- iApiMethodStatus = EExecuting;
- }
- }
-
-// ----------------------------------------------------------------------------
-// Cancel asynchronous operation
-// ----------------------------------------------------------------------------
-EXPORT_C void CHgCtxContactMatcher::CancelOperation()
- {
- if (iApiMethodStatus != EExecuting)
- {
- return;
- }
-
- __ASSERT_DEBUG(!iSync, HgContactMatcherPanics::Panic(
- HgContactMatcherPanics::EPanInvalidOp));
-
- switch(iApiMethod)
- {
- case EMatchData:
- case EGetStoreContact:
- FreeOldOperation(); // deleting the operation cancels it
- break;
- case EMatchPhoneNumber:
- CleanupNumberMatch();
- break;
- default:
- ;
- }
-
- User::RequestComplete( iClientStatus, KErrCancel );
-
- iApiMethod = ENoMethod;
- iApiMethodStatus = EFinished;
- }
-
-// ----------------------------------------------------------------------------
-// GetFieldData, for EVPbkFieldStorageTypeText
-// ----------------------------------------------------------------------------
-EXPORT_C TPtrC CHgCtxContactMatcher::GetFieldDataTextL(
- const MVPbkStoreContact& aContact,
- const MVPbkFieldType& aFType ) const
- {
- TPtrC ret(KNullDesC);
- const MVPbkStoreContactField* field = FindField( aContact, aFType);
- if (field)
- {
- const MVPbkContactFieldData& fdata = field->FieldData();
- if (fdata.DataType() == EVPbkFieldStorageTypeText)
- {
- const MVPbkContactFieldTextData& fdata2 =
- MVPbkContactFieldTextData::Cast(fdata);
- ret.Set( fdata2.Text() );
- }
- else
- {
- User::Leave( KErrArgument );
- }
- }
- return ret;
- }
-
-// ----------------------------------------------------------------------------
-// GetFieldData, for EVPbkFieldStorageTypeDateTime
-// ----------------------------------------------------------------------------
-EXPORT_C TTime CHgCtxContactMatcher::GetFieldDataDateTimeL(
- const MVPbkStoreContact& aContact,
- const MVPbkFieldType& aFType ) const
- {
- TTime ret(KNullTime);
- const MVPbkStoreContactField* field = FindField( aContact, aFType);
- if (field)
- {
- const MVPbkContactFieldData& fdata = field->FieldData();
- if (fdata.DataType() == EVPbkFieldStorageTypeDateTime)
- {
- const MVPbkContactFieldDateTimeData& fdata2 =
- MVPbkContactFieldDateTimeData::Cast( fdata );
- ret = fdata2.DateTime();
- }
- else
- {
- User::Leave( KErrArgument );
- }
- }
- return ret;
- }
-
-// ----------------------------------------------------------------------------
-// GetFieldData, for EVPbkFieldStorageTypeBinary
-// ----------------------------------------------------------------------------
-EXPORT_C TPtrC8 CHgCtxContactMatcher::GetFieldDataBinaryL(
- const MVPbkStoreContact& aContact,
- const MVPbkFieldType& aFType ) const
- {
- TPtrC8 ret(KNullDesC8);
- const MVPbkStoreContactField* field = FindField( aContact, aFType);
- if (field)
- {
- const MVPbkContactFieldData& fdata = field->FieldData();
- if (fdata.DataType() == EVPbkFieldStorageTypeBinary)
- {
- const MVPbkContactFieldBinaryData& fdata2 =
- MVPbkContactFieldBinaryData::Cast( fdata );
- ret.Set( fdata2.BinaryData() );
- }
- else
- {
- User::Leave( KErrArgument );
- }
- }
- return ret;
- }
-
-
-//******************************** Private Methods ***************************
-
-// ----------------------------------------------------------------------------
-// Finds a field of given type from contact.
-// Returns pointer to field or NULL if not found.
-// ----------------------------------------------------------------------------
- const MVPbkStoreContactField* CHgCtxContactMatcher::FindField(
- const MVPbkStoreContact& aContact,
- const MVPbkFieldType& aFType ) const
- {
- const MVPbkStoreContactFieldCollection& coll = aContact.Fields();
- TInt n = coll.FieldCount();
-
- const MVPbkStoreContactField* field = NULL;
- TBool bFound = EFalse;
- for(TInt i=0; i < n && !bFound; ++i)
- {
- field = &coll.FieldAt( i );
- const MVPbkFieldType* ftype = field->MatchFieldType( 0 );
- if ( ftype )
- {
- if ( ftype->IsSame( aFType ))
- {
- bFound = ETrue;
- }
- }
- }
- if ( !bFound )
- {
- field = NULL;
- }
- return field;
- }
-
-// ----------------------------------------------------------------------------
-// Get URI array with stores
-// ----------------------------------------------------------------------------
-CVPbkContactStoreUriArray* CHgCtxContactMatcher::GetStoreArrayLC(
- const TDesC& (* const aFuncPtrs[])() )
- {
- CVPbkContactStoreUriArray* uriArray = CVPbkContactStoreUriArray::NewLC();
-
- // Add stores
- for(TInt i = 0; aFuncPtrs[i]; i++)
- {
- TVPbkContactStoreUriPtr uriPtr(aFuncPtrs[i]());
- uriArray->AppendL(uriPtr);
- }
- return uriArray;
- }
-
-// ----------------------------------------------------------------------------
-// Open stores. Synchronous version
-// ----------------------------------------------------------------------------
-void CHgCtxContactMatcher::OpenStoreL(const TDesC& (* const aFuncPtrs[])())
- {
- CVPbkContactStoreUriArray* uriArray = GetStoreArrayLC(aFuncPtrs);
-
- CHgCtxContactMatcher::OpenStoreL(*uriArray);
- CleanupStack::PopAndDestroy(uriArray);
- }
-
-// ----------------------------------------------------------------------------
-// Open stores. Asynchronous version
-// ----------------------------------------------------------------------------
-void CHgCtxContactMatcher::OpenStoreL(const TDesC& (* const aFuncPtrs[])(),
- TRequestStatus& aStatus)
- {
- CVPbkContactStoreUriArray* uriArray = GetStoreArrayLC(aFuncPtrs);
-
- CHgCtxContactMatcher::OpenStoreL(*uriArray, aStatus);
- CleanupStack::PopAndDestroy(uriArray);
- }
-
-// ----------------------------------------------------------------------------
-// Called when the opening process is complete,
-// ie. all stores have been reported either failed or successfully opened.
-// ----------------------------------------------------------------------------
-//
-void CHgCtxContactMatcher::OpenComplete()
- {
- TInt error = KErrNone;
- if ( iStoreUris->Count() == 0 )
- {
- // unable to open any of the specified stores
- error = KErrNotSupported;
- }
- OperationComplete( error );
- }
-
-// ----------------------------------------------------------------------------
-// Called when a contact store is ready to use.
-// ----------------------------------------------------------------------------
-void CHgCtxContactMatcher::StoreReady( MVPbkContactStore& /*aContactStore*/ )
- {
- }
-
-// ----------------------------------------------------------------------------
-// Called when a contact store becomes unavailable.
-// Client may inspect the reason of the unavailability and decide whether or not
-// it will keep the store opened (ie. listen to the store events).
-// @param aContactStore The store that became unavailable.
-// @param aReason The reason why the store is unavailable.
-// This is one of the system wide error codes.
-// ----------------------------------------------------------------------------
-void CHgCtxContactMatcher::StoreUnavailable( MVPbkContactStore& aContactStore,
- TInt /*aReason*/ )
- {
- // Remove contact store from uri list
- iStoreUris->Remove( aContactStore.StoreProperties().Uri() );
- }
-
-// ----------------------------------------------------------------------------
-// Called when changes occur in the contact store.
-// @see TVPbkContactStoreEvent
-//
-// @param aStoreEvent Event that has occured.
-// ----------------------------------------------------------------------------
-void CHgCtxContactMatcher::HandleStoreEventL(
- MVPbkContactStore& /*aContactStore*/,
- TVPbkContactStoreEvent aStoreEvent)
- {
- // Contact and group events can be ignored, but we pass backup events for the observer.
- switch ( aStoreEvent.iEventType )
- {
- case TVPbkContactStoreEvent::EStoreBackupBeginning:
- case TVPbkContactStoreEvent::EStoreRestoreBeginning:
- {
- iBackup = ETrue;
- break;
- }
- case TVPbkContactStoreEvent::EStoreBackupRestoreCompleted:
- {
- iBackup = EFalse;
- break;
- }
- case TVPbkContactStoreEvent::EContactAdded:
- case TVPbkContactStoreEvent::EContactDeleted:
- case TVPbkContactStoreEvent::EContactChanged:
- {
- for ( TInt i = 0, ie = iContactObservers.Count(); i != ie; ++i )
- {
- iContactObservers[i]->HandleContactEventL();
- }
- break;
- }
- default:
- break;
- }
- }
-
-
-// ----------------------------------------------------------------------------
-// Called when find is complete. Callee takes ownership of the results.
-// In case of an error during find, the aResults may contain only
-// partial results of the find.
-//
-// @param aResults Array of contact links that matched the find.
-// ----------------------------------------------------------------------------
-void CHgCtxContactMatcher::FindCompleteL( MVPbkContactLinkArray* aResults )
- {
- __ASSERT_DEBUG( aResults, HgContactMatcherPanics::Panic(
- HgContactMatcherPanics::EPanNullPointer ));
-
- // Take the ownership of the result immediately
- CleanupDeletePushL( aResults );
-
- CopyFindResultsL( aResults );
-
- CleanupStack::PopAndDestroy(); // aResults
-
- if (!iResultContactLinkArray)
- {
- // No need to copy links. Only interested whether found or not
- OperationComplete( iResultContactLinkCnt ? KErrNone:KErrNotFound );
- }
- else
- {
- OperationComplete();
- iResultContactLinkArray = NULL;
- }
- }
-
-// ----------------------------------------------------------------------------
-// Called in case the find fails for some reason.
-//
-// @param aError One of the system wide error codes.
-// ----------------------------------------------------------------------------
-void CHgCtxContactMatcher::FindFailed( TInt aError )
- {
- OperationFailed( aError );
- iResultContactLinkArray = NULL;
- }
-
-// ----------------------------------------------------------------------------
-// Free old VPbk-operation.
-// ----------------------------------------------------------------------------
-void CHgCtxContactMatcher::FreeOldOperation()
- {
- delete iOperation;
- iOperation = NULL;
- }
-
-// ----------------------------------------------------------------------------
-// Called when operation is completed.
-// ----------------------------------------------------------------------------
-void CHgCtxContactMatcher::VPbkSingleContactOperationComplete(
- MVPbkContactOperationBase& /*aOperation*/, MVPbkStoreContact* aContact)
- {
- *iResultStoreContact = aContact;
- iResultStoreContact = NULL;
- OperationComplete();
- }
-
-// ----------------------------------------------------------------------------
-// Called if the operation fails.
-// ----------------------------------------------------------------------------
-void CHgCtxContactMatcher::VPbkSingleContactOperationFailed(
- MVPbkContactOperationBase& /*aOperation*/, TInt aError)
- {
- OperationFailed( aError );
- }
-
-// ----------------------------------------------------------------------------
-// Set member variables for sync operation
-// ----------------------------------------------------------------------------
-void CHgCtxContactMatcher::InitOperationL( TMethodId aMethod )
- {
- if ( iBackup )
- {
- User::Leave( KErrAccessDenied );
- }
-
- // Check whether operation is in progress
- if ( iApiMethodStatus == EExecuting )
- {
- User::Leave( KErrInUse );
- }
-
- iSync = ETrue;
- iError = KErrNone;
- iApiMethod = aMethod;
- iApiMethodStatus = EIdle;
- }
-
-// ----------------------------------------------------------------------------
-// Set member variables for async operation
-// ----------------------------------------------------------------------------
-void CHgCtxContactMatcher::InitOperationL( TMethodId aMethod, TRequestStatus* aStatus )
- {
- InitOperationL( aMethod );
-
- iSync = EFalse;
- iClientStatus = aStatus;
- *iClientStatus = KRequestPending;
- }
-
-// ----------------------------------------------------------------------------
-// Set member variables for async operation
-// ----------------------------------------------------------------------------
-void CHgCtxContactMatcher::InitOperation( TRequestStatus* aStatus )
- {
- iSync = EFalse;
- iClientStatus = aStatus;
- *iClientStatus = KRequestPending;
- }
-
-// ----------------------------------------------------------------------------
-// Sync/async operation finished succesfully, return results to method caller.
-// ----------------------------------------------------------------------------
-void CHgCtxContactMatcher::OperationComplete( TInt aErrorCode )
- {
- if (iSync)
- {
- if ( iASchedulerWait.IsStarted() )
- {
- iASchedulerWait.AsyncStop();
- }
- }
- else
- {
- if ( iClientStatus )
- {
- User::RequestComplete( iClientStatus, aErrorCode );
- iClientStatus = NULL;
- }
- }
- iApiMethodStatus = EFinished;
- }
-
-// ----------------------------------------------------------------------------
-// Sync/async operation failed, return results to method caller.
-// ----------------------------------------------------------------------------
-void CHgCtxContactMatcher::OperationFailed( TInt aError )
- {
- iError = aError;
- OperationComplete( aError );
- }
-
-// ----------------------------------------------------------------------------
-// Free resources allocated for number matching
-// ----------------------------------------------------------------------------
-void CHgCtxContactMatcher::CleanupNumberMatch()
-{
- delete iMatchStrategy;
- iMatchStrategy = NULL;
-
- delete iStratConfig;
- iStratConfig = NULL;
-
- // store uris are not deleted here - opened array remains valid
- // until new set of stores is opened.
-}
-
-// ---------------------------------------------------------------------------
-// CHgCtxContactMatcher::GetContactStoresL
-// ---------------------------------------------------------------------------
-EXPORT_C MVPbkContactStoreList& CHgCtxContactMatcher::GetContactStoresL()
- {
- return iContactManager->ContactStoresL();
- }
-
-
-// -----------------------------------------------------------------------------
-// TInt CHgCtxContactMatcher::GetName
-//
-// Returns the formatted name fo the contact
-// -----------------------------------------------------------------------------
-EXPORT_C HBufC* CHgCtxContactMatcher::GetNameL( MVPbkStoreContactFieldCollection&
- aFieldCollection )
- {
- MPbk2ContactNameFormatter& nameFormatter = ContactNameFormatterL();
-
- HBufC* formattedName = nameFormatter.GetContactTitleOrNullL( aFieldCollection,
- MPbk2ContactNameFormatter::EUseSeparator );
- return formattedName;
- }
-
-// -----------------------------------------------------------------------------
-// CVPbkContactManager& CHgCtxContactMatcher::GetContactManager( )
-// -----------------------------------------------------------------------------
-EXPORT_C CVPbkContactManager& CHgCtxContactMatcher::GetContactManager()
- {
- return *iContactManager;
- }
-
-
-// ----------------------------------------------------------------------------
-// Synchronous version
-// ----------------------------------------------------------------------------
-EXPORT_C void CHgCtxContactMatcher::MatchDataL( const TDesC& aData,
- const MVPbkFieldTypeList& aFieldTypes,
- CVPbkContactLinkArray& aLinkArray)
- {
- InitOperationL( EMatchData );
- iResultContactLinkArray = &aLinkArray;
-
- // Start asynchronous matching and wait until results are ready
- FreeOldOperation();
- iOperation = iContactManager->FindL(aData, aFieldTypes, *this);
- if ( iApiMethodStatus != EFinished )
- {
- iApiMethodStatus = EExecuting;
- iASchedulerWait.Start();
- }
-
- User::LeaveIfError( iError );
- RemoveSimilarEmailAddressesL( aData, aLinkArray, aFieldTypes );
- }
-
-// ----------------------------------------------------------------------------
-// Remove contacts that do not have exactly the correct email address
-// e.g. if cbd@test.com address is requested, the for example a contact with address abcd@test.com will be removed
-// from the result.
-// This filtering is done only in the syncronous version of MatchDataL
-// ----------------------------------------------------------------------------
-void CHgCtxContactMatcher::RemoveSimilarEmailAddressesL( const TDesC& aData, CVPbkContactLinkArray& aLinkArray, const MVPbkFieldTypeList& aFieldTypes )
- {
- TVPbkFieldVersitProperty prop;
- prop.SetName( EVPbkVersitNameEMAIL );
- // do extra checks for email addresses
-
- const MVPbkFieldType* foundType = NULL;
- // Continue only if at least one type is EVPbkVersitNameEMAIL
- TInt i;
- for ( i = 0 ; i < aFieldTypes.FieldTypeCount() ; i++ )
- {
- foundType = &(aFieldTypes.FieldTypeAt( i ));
- if ( foundType->VersitProperties().Count() > 0
- && foundType->VersitProperties()[0].Name() == prop.Name() )
- {
- break;
- }
- }
- if ( i == aFieldTypes.FieldTypeCount() )
- {
- // no email types
- return;
- }
-
- const MVPbkFieldTypeList& fieldTypeList = FieldTypes();
-
- TInt index = 0;
- TBool isExactMatch;
- while( index < aLinkArray.Count() )
- {
- MVPbkStoreContact* storeContact;
- GetStoreContactL( aLinkArray.At( index ), &storeContact );
- storeContact->PushL();
-
- isExactMatch = EFalse;
- for ( TInt i = 0; i < fieldTypeList.FieldTypeCount(); i++ )
- {
- // find the email property
- foundType = &(fieldTypeList.FieldTypeAt( i ));
- if ( foundType->VersitProperties().Count() > 0
- && foundType->VersitProperties()[0].Name() == prop.Name() )
- {
- TPtrC src = GetFieldDataTextL(*storeContact, *foundType );
- if ( aData.CompareF( src ) == 0 )
- {
- isExactMatch = ETrue;
- }
- }
- }
- if ( isExactMatch )
- {
- // go for the next contact
- index++;
- }
- else
- {
- // remove the contact, because the email address does not match the one queried.
- // the next one will take plce of this contact in the list (=do not increase index)
- aLinkArray.Delete( index );
- }
- CleanupStack::PopAndDestroy( storeContact );
- }
- }
-
-// ----------------------------------------------------------------------------
-// Asynchronous version
-// ----------------------------------------------------------------------------
-EXPORT_C void CHgCtxContactMatcher::MatchDataL( const TDesC& aData,
- const MVPbkFieldTypeList& aFieldTypes,
- CVPbkContactLinkArray& aLinkArray,
- TRequestStatus& aStatus)
- {
- InitOperationL( EMatchData );
- iResultContactLinkArray = &aLinkArray;
-
- // Start asynchronous matching
- FreeOldOperation();
- iOperation = iContactManager->FindL(aData, aFieldTypes, *this);
- InitOperation( &aStatus );
- if ( iApiMethodStatus != EFinished )
- {
- iApiMethodStatus = EExecuting;
- }
- }
-// ----------------------------------------------------------------------------
-// MatchData for searchstrings
-// ----------------------------------------------------------------------------
-EXPORT_C void CHgCtxContactMatcher::MatchDataL( const MDesC16Array& aSearchStrings,
- const MVPbkFieldTypeList& aFieldTypes,
- CVPbkContactLinkArray& aLinkArray,
- const TCallBack& aWordParserCallBack )
- {
- InitOperationL( EMatchData );
- iResultContactLinkArray = &aLinkArray;
-
- // Start asynchronous matching and wait here until results are ready
- FreeOldOperation();
- iOperation = iContactManager->FindL( aSearchStrings, aFieldTypes,
- *this, aWordParserCallBack );
-
- if ( iApiMethodStatus != EFinished )
- {
- iApiMethodStatus = EExecuting;
- iASchedulerWait.Start();
- }
- User::LeaveIfError( iError );
- }
-
-// ----------------------------------------------------------------------------
-// CHgCtxContactMatcher::ContactNameFormatterL
-// ----------------------------------------------------------------------------
-EXPORT_C MPbk2ContactNameFormatter& CHgCtxContactMatcher::ContactNameFormatterL()
- {
- //first initialise, if not already initialised
- if ( !iSortOrderManager )
- {
- iSortOrderManager = CPbk2SortOrderManager::NewL( FieldTypes() );
- }
-
- if ( !iNameFormatter )
- {
- iNameFormatter = Pbk2ContactNameFormatterFactory::CreateL( FieldTypes(),
- *iSortOrderManager );
- }
- return *iNameFormatter;
- }
-
-
-// ---------------------------------------------------------------------------
-// HgContactMatcherPanics::Panic
-//
-// Panic function
-// ---------------------------------------------------------------------------
-void HgContactMatcherPanics::Panic( TPanic aPanic )
- {
- _LIT(KPanicCategory, "ContactMatcher");
- User::Panic( KPanicCategory, aPanic );
- }
-
-// ----------------------------------------------------------------------------
-// CHgCtxContactMatcher::SplitAndMatchL
-// ----------------------------------------------------------------------------
-EXPORT_C void CHgCtxContactMatcher::SplitAndMatchL( const TDesC& aData,
- const MVPbkFieldTypeList& aFieldTypes,
- CVPbkContactLinkArray& aLinkArray)
- {
- CDesCArray* wordArray = SplitFindStringL( aData );
- CleanupStack::PushL( wordArray );
- TCallBack findParser( FindWordSplitterL );
- MatchDataL( *wordArray, aFieldTypes, aLinkArray, findParser );
- CleanupStack::PopAndDestroy( wordArray );
- }
-
-// ----------------------------------------------------------------------------
-// CHgCtxContactMatcher::RegisterContactObserverL
-// ----------------------------------------------------------------------------
-EXPORT_C void CHgCtxContactMatcher::RegisterContactObserverL(
- MHgCtxContactObserver& aObserver )
- {
- if ( iContactObservers.Find( &aObserver ) == KErrNotFound )
- {
- iContactObservers.AppendL( &aObserver );
- }
- }
-
-// ----------------------------------------------------------------------------
-// CHgCtxContactMatcher::UnregisterContactObserver
-// ----------------------------------------------------------------------------
-EXPORT_C void CHgCtxContactMatcher::UnregisterContactObserver(
- MHgCtxContactObserver& aObserver )
- {
- TInt pos = iContactObservers.Find( &aObserver );
- if ( pos >= 0 )
- {
- iContactObservers.Remove( pos );
- }
- }
-
-// ----------------------------------------------------------------------------
-// CHgCtxContactMatcher::LookupL
-// ----------------------------------------------------------------------------
-EXPORT_C void CHgCtxContactMatcher::LookupL( const TDesC& aData,
- CVPbkContactLinkArray& aLinkArray )
- {
- HGLOG_CONTEXT( LookupL, HGLOG_LOCAL );
- HGLOG1_IN( "'%S'", &aData );
-
- // Take part_A from "part_A <part_B>"
- // or part_A from "part_A".
- TPtrC input( aData );
- TInt ltPos = input.Locate( '<' );
- TInt gtPos = input.Locate( '>' );
- if ( ltPos != KErrNotFound && gtPos> ltPos )
- {
- input.Set( aData.Mid( 0, ltPos ) );
- }
- HBufC* trimmedInput = input.AllocLC();
- trimmedInput->Des().Trim();
-
- TInt oldCount = aLinkArray.Count();
- if ( IsPhoneNumberL( *trimmedInput ) )
- {
- TryNumberLookupL( *trimmedInput, aLinkArray );
- }
- else
- {
- TryTextLookupL( *trimmedInput, aLinkArray );
- }
-
- CleanupStack::PopAndDestroy( trimmedInput );
-
- if ( aLinkArray.Count() == oldCount && ltPos != KErrNotFound && gtPos > ltPos )
- {
- // lookup for part_A was not successful so try part_B
- trimmedInput = aData.Mid( ltPos + 1, gtPos - ltPos - 1 ).AllocLC();
- trimmedInput->Des().Trim();
- if ( IsPhoneNumberL( *trimmedInput ) )
- {
- TryNumberLookupL( *trimmedInput, aLinkArray );
- }
- else
- {
- TryTextLookupL( *trimmedInput, aLinkArray );
- }
- CleanupStack::PopAndDestroy( trimmedInput );
- }
-
- HGLOG1_OUT( "got %d results", aLinkArray.Count() - oldCount );
- }
-
-// ----------------------------------------------------------------------------
-// CHgCtxContactMatcher::PreCreateNameFieldTypesL
-// ----------------------------------------------------------------------------
-void CHgCtxContactMatcher::PreCreateNameFieldTypesL()
- {
- HGLOG_CONTEXT( PreCreateNameFieldTypesL, HGLOG_LOCAL );
- HGLOG_IN();
-
- iNameFieldTypes = CVPbkFieldTypeRefsList::NewL();
- const MVPbkFieldTypeList& types( FieldTypes() );
- TVPbkFieldVersitProperty prop;
- const MVPbkFieldType* t;
-
- prop.SetName( EVPbkVersitNameFN );
- prop.SetSubField( EVPbkVersitSubFieldNone );
- t = types.FindMatch( prop, 0 );
- if ( t )
- {
- iNameFieldTypes->AppendL( *t );
- HGLOG0( HGLOG_INFO, "will try FN" );
- }
-
- prop.SetName( EVPbkVersitNameN );
- prop.SetSubField( EVPbkVersitSubFieldGivenName );
- t = types.FindMatch( prop, 0 );
- if ( t )
- {
- iNameFieldTypes->AppendL( *t );
- HGLOG0( HGLOG_INFO, "will try given name" );
- }
-
- prop.SetName( EVPbkVersitNameN );
- prop.SetSubField( EVPbkVersitSubFieldFamilyName );
- t = types.FindMatch( prop, 0 );
- if ( t )
- {
- iNameFieldTypes->AppendL( *t );
- HGLOG0( HGLOG_INFO, "will try family name" );
- }
-
- prop.SetName( EVPbkVersitNameORG );
- prop.SetSubField( EVPbkVersitSubFieldOrgName );
- t = types.FindMatch( prop, 0 );
- if ( t )
- {
- iNameFieldTypes->AppendL( *t );
- HGLOG0( HGLOG_INFO, "will try org name" );
- }
-
- HGLOG_OUT();
- }
-
-// ----------------------------------------------------------------------------
-// CHgCtxContactMatcher::PreCreateEmailFieldTypesL
-// ----------------------------------------------------------------------------
-void CHgCtxContactMatcher::PreCreateEmailFieldTypesL()
- {
- HGLOG_CONTEXT( PreCreateEmailFieldTypesL, HGLOG_LOCAL );
- HGLOG_IN();
-
- iEmailFieldTypes = CVPbkFieldTypeRefsList::NewL();
- const MVPbkFieldTypeList& types( FieldTypes() );
- TVPbkFieldVersitProperty prop;
- const MVPbkFieldType* t;
-
- prop.SetName( EVPbkVersitNameEMAIL );
- prop.SetSubField( EVPbkVersitSubFieldNone );
- prop.Parameters().Reset();
- prop.Parameters().Add( EVPbkVersitParamINTERNET );
- t = types.FindMatch( prop, 0 );
- if ( t )
- {
- iEmailFieldTypes->AppendL( *t );
- HGLOG0( HGLOG_INFO, "will try general email" );
- }
-
- prop.SetName( EVPbkVersitNameEMAIL );
- prop.SetSubField( EVPbkVersitSubFieldNone );
- prop.Parameters().Reset();
- prop.Parameters().Add( EVPbkVersitParamINTERNET );
- prop.Parameters().Add( EVPbkVersitParamWORK );
- t = types.FindMatch( prop, 0 );
- if ( t )
- {
- iEmailFieldTypes->AppendL( *t );
- HGLOG0( HGLOG_INFO, "will try work email" );
- }
-
- prop.SetName( EVPbkVersitNameEMAIL );
- prop.SetSubField( EVPbkVersitSubFieldNone );
- prop.Parameters().Reset();
- prop.Parameters().Add( EVPbkVersitParamINTERNET );
- prop.Parameters().Add( EVPbkVersitParamHOME );
- t = types.FindMatch( prop, 0 );
- if ( t )
- {
- iEmailFieldTypes->AppendL( *t );
- HGLOG0( HGLOG_INFO, "will try home email" );
- }
-
- HGLOG_OUT();
- }
-
-// ----------------------------------------------------------------------------
-// CHgCtxContactMatcher::PreCreateXspIdFieldTypesL
-// ----------------------------------------------------------------------------
-void CHgCtxContactMatcher::PreCreateXspIdFieldTypesL()
- {
- HGLOG_CONTEXT( PreCreateXspIdFieldTypesL, HGLOG_LOCAL );
- HGLOG_IN();
-
- iXspIdFieldTypes = CVPbkFieldTypeRefsList::NewL();
- const MVPbkFieldTypeList& types( FieldTypes() );
- TVPbkFieldVersitProperty prop;
- const MVPbkFieldType* t;
-
- prop.SetName( EVPbkVersitNameIMPP );
- t = types.FindMatch( prop, 0 );
- if ( t )
- {
- iXspIdFieldTypes->AppendL( *t );
- }
-
- HGLOG1_OUT( "found %d xsp id field types",
- iXspIdFieldTypes->FieldTypeCount() );
- }
-
-// ----------------------------------------------------------------------------
-// CHgCtxContactMatcher::PreCreateNumberFieldTypesL
-// ----------------------------------------------------------------------------
-void CHgCtxContactMatcher::PreCreateNumberFieldTypesL()
- {
- HGLOG_CONTEXT( PreCreateNumberFieldTypesL, HGLOG_LOCAL );
- HGLOG_IN();
-
- iNumberFieldTypes = CVPbkFieldTypeRefsList::NewL();
- const MVPbkFieldTypeList& types( FieldTypes() );
- TVPbkFieldVersitProperty prop;
- const MVPbkFieldType* t;
-
- prop.SetName( EVPbkVersitNameTEL );
- prop.SetSubField( EVPbkVersitSubFieldNone );
- prop.Parameters().Reset();
- prop.Parameters().Add( EVPbkVersitParamCELL );
- prop.Parameters().Add( EVPbkVersitParamHOME );
- t = types.FindMatch( prop, 0 );
- if ( t )
- {
- iNumberFieldTypes->AppendL( *t );
- HGLOG0( HGLOG_INFO, "will try home mobile" );
- }
-
- prop.SetName( EVPbkVersitNameTEL );
- prop.SetSubField( EVPbkVersitSubFieldNone );
- prop.Parameters().Reset();
- prop.Parameters().Add( EVPbkVersitParamCELL );
- prop.Parameters().Add( EVPbkVersitParamWORK );
- t = types.FindMatch( prop, 0 );
- if ( t )
- {
- iNumberFieldTypes->AppendL( *t );
- HGLOG0( HGLOG_INFO, "will try work mobile" );
- }
-
- prop.SetName( EVPbkVersitNameTEL );
- prop.SetSubField( EVPbkVersitSubFieldNone );
- prop.Parameters().Reset();
- prop.Parameters().Add( EVPbkVersitParamCELL );
- t = types.FindMatch( prop, 0 );
- if ( t )
- {
- iNumberFieldTypes->AppendL( *t );
- HGLOG0( HGLOG_INFO, "will try general mobile" );
- }
-
- prop.SetName( EVPbkVersitNameTEL );
- prop.SetSubField( EVPbkVersitSubFieldNone );
- prop.Parameters().Reset();
- prop.Parameters().Add( EVPbkVersitParamHOME );
- t = types.FindMatch( prop, 0 );
- if ( t )
- {
- iNumberFieldTypes->AppendL( *t );
- HGLOG0( HGLOG_INFO, "will try home landline" );
- }
-
- prop.SetName( EVPbkVersitNameTEL );
- prop.SetSubField( EVPbkVersitSubFieldNone );
- prop.Parameters().Reset();
- prop.Parameters().Add( EVPbkVersitParamWORK );
- t = types.FindMatch( prop, 0 );
- if ( t )
- {
- iNumberFieldTypes->AppendL( *t );
- HGLOG0( HGLOG_INFO, "will try work landline" );
- }
-
- prop.SetName( EVPbkVersitNameTEL );
- prop.SetSubField( EVPbkVersitSubFieldNone );
- prop.Parameters().Reset();
- t = types.FindMatch( prop, 0 );
- if ( t )
- {
- iNumberFieldTypes->AppendL( *t );
- HGLOG0( HGLOG_INFO, "will try general landline" );
- }
-
- HGLOG_OUT();
- }
-
-// ----------------------------------------------------------------------------
-// CHgCtxContactMatcher::PreCreateAddressFieldTypesL
-// ----------------------------------------------------------------------------
-void CHgCtxContactMatcher::PreCreateAddressFieldTypesL()
- {
- HGLOG_CONTEXT( PreCreateAddressFieldTypesL, HGLOG_LOCAL );
- HGLOG_IN();
-
- iAddressFieldTypes = CVPbkFieldTypeRefsList::NewL();
- const MVPbkFieldTypeList& types( FieldTypes() );
- TVPbkFieldVersitProperty prop;
- const MVPbkFieldType* t;
-
- prop.SetName( EVPbkVersitNameADR );
- prop.SetSubField( EVPbkVersitSubFieldCountry );
- t = types.FindMatch( prop, 0 );
- if ( t )
- {
- iAddressFieldTypes->AppendL( *t );
- HGLOG0( HGLOG_INFO, "will try general country" );
- }
-
- prop.SetName( EVPbkVersitNameADR );
- prop.SetSubField( EVPbkVersitSubFieldRegion );
- t = types.FindMatch( prop, 0 );
- if ( t )
- {
- iAddressFieldTypes->AppendL( *t );
- HGLOG0( HGLOG_INFO, "will try general region" );
- }
-
- prop.SetName( EVPbkVersitNameADR );
- prop.SetSubField( EVPbkVersitSubFieldLocality );
- t = types.FindMatch( prop, 0 );
- if ( t )
- {
- iAddressFieldTypes->AppendL( *t );
- HGLOG0( HGLOG_INFO, "will try general locality" );
- }
-
- prop.SetName( EVPbkVersitNameADR );
- prop.SetSubField( EVPbkVersitSubFieldStreet );
- t = types.FindMatch( prop, 0 );
- if ( t )
- {
- iAddressFieldTypes->AppendL( *t );
- HGLOG0( HGLOG_INFO, "will try general street" );
- }
-
- HGLOG_OUT();
- }
-
-
-// ----------------------------------------------------------------------------
-// CHgCtxContactMatcher::PreCreateWebAddressFieldTypesL
-// ----------------------------------------------------------------------------
-void CHgCtxContactMatcher::PreCreateWebAddressFieldTypesL()
- {
- HGLOG_CONTEXT( PreCreateWebAddressFieldTypesL, HGLOG_LOCAL );
- HGLOG_IN();
-
- iWebAddressFieldTypes = CVPbkFieldTypeRefsList::NewL();
- const MVPbkFieldTypeList& types( FieldTypes() );
- TVPbkFieldVersitProperty prop;
- const MVPbkFieldType* t;
-
- prop.Parameters().Add( EVPbkVersitParamPREF );
- prop.SetName( EVPbkVersitNameURL );
- t = types.FindMatch( prop, 0 );
- if ( t )
- {
- iWebAddressFieldTypes->AppendL( *t );
- HGLOG0( HGLOG_INFO, "will try prefered url" );
- }
-
- HGLOG_OUT();
- }
-
-// ----------------------------------------------------------------------------
-// CHgCtxContactMatcher::PreCreateWebAddressFieldTypesL
-// ----------------------------------------------------------------------------
-void CHgCtxContactMatcher::PreCreateWebAddressHomeFieldTypesL()
- {
- HGLOG_CONTEXT( PreCreateWebAddressHomeFieldTypesL, HGLOG_LOCAL );
- HGLOG_IN();
-
- iWebAddressHomeFieldTypes = CVPbkFieldTypeRefsList::NewL();
- const MVPbkFieldTypeList& types( FieldTypes() );
- TVPbkFieldVersitProperty prop;
- const MVPbkFieldType* t;
-
- prop.Parameters().Add( EVPbkVersitParamHOME );
- prop.SetName( EVPbkVersitNameURL );
- t = types.FindMatch( prop, 0 );
- if ( t )
- {
- iWebAddressHomeFieldTypes->AppendL( *t );
- HGLOG0( HGLOG_INFO, "will try home url" );
- }
-
- HGLOG_OUT();
- }
-
-// ----------------------------------------------------------------------------
-// CHgCtxContactMatcher::PreCreateWebAddressFieldTypesL
-// ----------------------------------------------------------------------------
-void CHgCtxContactMatcher::PreCreateWebAddressWorkFieldTypesL()
- {
- HGLOG_CONTEXT( PreCreateWebAddressWorkFieldTypesL, HGLOG_LOCAL );
- HGLOG_IN();
-
- iWebAddressWorkFieldTypes = CVPbkFieldTypeRefsList::NewL();
- const MVPbkFieldTypeList& types( FieldTypes() );
- TVPbkFieldVersitProperty prop;
- const MVPbkFieldType* t;
-
- prop.Parameters().Add( EVPbkVersitParamWORK );
- prop.SetName( EVPbkVersitNameURL );
- t = types.FindMatch( prop, 0 );
- if ( t )
- {
- iWebAddressWorkFieldTypes->AppendL( *t );
- HGLOG0( HGLOG_INFO, "will try work url" );
- }
-
- HGLOG_OUT();
- }
-
-// ----------------------------------------------------------------------------
-// CHgCtxContactMatcher::PreCreateHomeAddressFieldTypesL
-// ----------------------------------------------------------------------------
-void CHgCtxContactMatcher::PreCreateHomeAddressFieldTypesL()
- {
- HGLOG_CONTEXT( PreCreateHomeAddressFieldTypesL, HGLOG_LOCAL );
- HGLOG_IN();
-
- iHomeAddressFieldTypes = CVPbkFieldTypeRefsList::NewL();
- const MVPbkFieldTypeList& types( FieldTypes() );
- TVPbkFieldVersitProperty prop;
- const MVPbkFieldType* t;
- prop.Parameters().Add( EVPbkVersitParamHOME );
-
- prop.SetName( EVPbkVersitNameADR );
- prop.SetSubField( EVPbkVersitSubFieldCountry );
- t = types.FindMatch( prop, 0 );
- if ( t )
- {
- iHomeAddressFieldTypes->AppendL( *t );
- HGLOG0( HGLOG_INFO, "will try home country" );
- }
-
- prop.SetName( EVPbkVersitNameADR );
- prop.SetSubField( EVPbkVersitSubFieldRegion );
- t = types.FindMatch( prop, 0 );
- if ( t )
- {
- iHomeAddressFieldTypes->AppendL( *t );
- HGLOG0( HGLOG_INFO, "will try home region" );
- }
-
- prop.SetName( EVPbkVersitNameADR );
- prop.SetSubField( EVPbkVersitSubFieldLocality );
- t = types.FindMatch( prop, 0 );
- if ( t )
- {
- iHomeAddressFieldTypes->AppendL( *t );
- HGLOG0( HGLOG_INFO, "will try home locality" );
- }
-
- prop.SetName( EVPbkVersitNameADR );
- prop.SetSubField( EVPbkVersitSubFieldStreet );
- t = types.FindMatch( prop, 0 );
- if ( t )
- {
- iHomeAddressFieldTypes->AppendL( *t );
- HGLOG0( HGLOG_INFO, "will try home street" );
- }
-
- HGLOG_OUT();
- }
-
-// ----------------------------------------------------------------------------
-// CHgCtxContactMatcher::PreCreateWorkAddressFieldTypesL
-// ----------------------------------------------------------------------------
-void CHgCtxContactMatcher::PreCreateWorkAddressFieldTypesL()
- {
- HGLOG_CONTEXT( PreCreateWorkAddressFieldTypesL, HGLOG_LOCAL );
- HGLOG_IN();
-
- iWorkAddressFieldTypes = CVPbkFieldTypeRefsList::NewL();
- const MVPbkFieldTypeList& types( FieldTypes() );
- TVPbkFieldVersitProperty prop;
- const MVPbkFieldType* t;
- prop.Parameters().Add( EVPbkVersitParamWORK );
-
- prop.SetName( EVPbkVersitNameADR );
- prop.SetSubField( EVPbkVersitSubFieldCountry );
- t = types.FindMatch( prop, 0 );
- if ( t )
- {
- iWorkAddressFieldTypes->AppendL( *t );
- HGLOG0( HGLOG_INFO, "will try work country" );
- }
-
- prop.SetName( EVPbkVersitNameADR );
- prop.SetSubField( EVPbkVersitSubFieldRegion );
- t = types.FindMatch( prop, 0 );
- if ( t )
- {
- iWorkAddressFieldTypes->AppendL( *t );
- HGLOG0( HGLOG_INFO, "will try work region" );
- }
-
- prop.SetName( EVPbkVersitNameADR );
- prop.SetSubField( EVPbkVersitSubFieldLocality );
- t = types.FindMatch( prop, 0 );
- if ( t )
- {
- iWorkAddressFieldTypes->AppendL( *t );
- HGLOG0( HGLOG_INFO, "will try work locality" );
- }
-
- prop.SetName( EVPbkVersitNameADR );
- prop.SetSubField( EVPbkVersitSubFieldStreet );
- t = types.FindMatch( prop, 0 );
- if ( t )
- {
- iWorkAddressFieldTypes->AppendL( *t );
- HGLOG0( HGLOG_INFO, "will try work street" );
- }
-
- HGLOG_OUT();
- }
-
-// ----------------------------------------------------------------------------
-// CHgCtxContactMatcher::TryTextLookupL
-// ----------------------------------------------------------------------------
-void CHgCtxContactMatcher::TryTextLookupL( const TDesC& aName,
- CVPbkContactLinkArray& aLinkArray )
- {
- HGLOG_CONTEXT( TryTextLookupL, HGLOG_LOCAL );
- HGLOG_IN();
-
- CVPbkFieldTypeRefsList* fieldTypes = CVPbkFieldTypeRefsList::NewL();
- CleanupStack::PushL( fieldTypes );
-
- // try name and email and ovi id fields
- if ( !iNameFieldTypes )
- {
- PreCreateNameFieldTypesL();
- }
- for ( TInt i = 0, ie = iNameFieldTypes->FieldTypeCount(); i != ie; ++i )
- {
- fieldTypes->AppendL( iNameFieldTypes->FieldTypeAt( i ) );
- }
- if ( !iEmailFieldTypes )
- {
- PreCreateEmailFieldTypesL();
- }
- for ( TInt i = 0, ie = iEmailFieldTypes->FieldTypeCount(); i != ie; ++i )
- {
- fieldTypes->AppendL( iEmailFieldTypes->FieldTypeAt( i ) );
- }
- if ( !iXspIdFieldTypes )
- {
- PreCreateXspIdFieldTypesL();
- }
- for ( TInt i = 0, ie = iXspIdFieldTypes->FieldTypeCount(); i != ie; ++i )
- {
- fieldTypes->AppendL( iXspIdFieldTypes->FieldTypeAt( i ) );
- }
-
- SplitAndMatchL( aName, *fieldTypes, aLinkArray );
-
- CleanupStack::PopAndDestroy( fieldTypes );
- HGLOG_OUT();
- }
-
-// ----------------------------------------------------------------------------
-// CHgCtxContactMatcher::TryNumberLookupL
-// ----------------------------------------------------------------------------
-void CHgCtxContactMatcher::TryNumberLookupL( const TDesC& aNumber,
- CVPbkContactLinkArray& aLinkArray )
- {
- HGLOG_CONTEXT( TryNumberLookupL, HGLOG_LOCAL );
- HGLOG_IN();
-
- MatchPhoneNumberL( aNumber,
- KNumberMatchLenFromRight,
- CVPbkPhoneNumberMatchStrategy::EVPbkMatchFlagsNone,
- aLinkArray );
-
- HGLOG_OUT();
- }
-
-// ----------------------------------------------------------------------------
-// CHgCtxContactMatcher::GetTextFieldsL
-// ----------------------------------------------------------------------------
-void CHgCtxContactMatcher::GetTextFieldsL(
- const CVPbkFieldTypeRefsList& aList,
- const MVPbkStoreContactFieldCollection& aFieldCollection,
- CDesCArray& aArray )
- {
- HGLOG_CONTEXT( GetTextFieldsL, HGLOG_LOCAL );
- HGLOG_IN();
-
- for ( TInt i = 0, ie = aFieldCollection.FieldCount(); i != ie; ++i )
- {
- const MVPbkStoreContactField& field( aFieldCollection.FieldAt( i ) );
- const MVPbkFieldType* type = field.BestMatchingFieldType();
- if ( type && aList.ContainsSame( *type ) )
- {
- const MVPbkContactFieldData& fdata( field.FieldData() );
- if ( fdata.DataType() == EVPbkFieldStorageTypeText )
- {
- const MVPbkContactFieldTextData& fdata2 =
- MVPbkContactFieldTextData::Cast( fdata );
- const TDesC& text( fdata2.Text() );
- aArray.AppendL( text );
- HGLOG1( HGLOG_INFO, "found: '%S'", &text );
- }
- }
- }
-
- HGLOG_OUT();
- }
-
-// ----------------------------------------------------------------------------
-// CHgCtxContactMatcher::GetNumbersL
-// ----------------------------------------------------------------------------
-EXPORT_C void CHgCtxContactMatcher::GetNumbersL(
- MVPbkStoreContactFieldCollection& aFieldCollection,
- CDesCArray& aArray )
- {
- HGLOG_CONTEXT( GetNumbersL, HGLOG_LOCAL );
- HGLOG_IN();
-
- if ( !iNumberFieldTypes )
- {
- PreCreateNumberFieldTypesL();
- }
- GetTextFieldsL( *iNumberFieldTypes, aFieldCollection, aArray );
-
- HGLOG_OUT();
- }
-
-// ----------------------------------------------------------------------------
-// CHgCtxContactMatcher::GetEmailAddressesL
-// ----------------------------------------------------------------------------
-EXPORT_C void CHgCtxContactMatcher::GetEmailAddressesL(
- MVPbkStoreContactFieldCollection& aFieldCollection,
- CDesCArray& aArray )
- {
- HGLOG_CONTEXT( GetEmailAddressesL, HGLOG_LOCAL );
- HGLOG_IN();
-
- if ( !iEmailFieldTypes )
- {
- PreCreateEmailFieldTypesL();
- }
- GetTextFieldsL( *iEmailFieldTypes, aFieldCollection, aArray );
-
- HGLOG_OUT();
- }
-
-// ----------------------------------------------------------------------------
-// CHgCtxContactMatcher::GetAddressesL
-// ----------------------------------------------------------------------------
-EXPORT_C void CHgCtxContactMatcher::GetAddressesL(
- MVPbkStoreContactFieldCollection& aFieldCollection,
- CDesCArray& aArray )
- {
- HGLOG_CONTEXT( GetAddressesL, HGLOG_LOCAL );
- HGLOG_IN();
-
- CDesC16ArrayFlat* arr = new ( ELeave ) CDesC16ArrayFlat( KArrayGranularity );
- CleanupStack::PushL( arr );
-
- if ( !iAddressFieldTypes )
- {
- PreCreateAddressFieldTypesL();
- }
- GetTextFieldsL( *iAddressFieldTypes, aFieldCollection, *arr );
- if ( arr->Count() )
- {
- HBufC* combined = CombineStringsLC( *arr );
- aArray.AppendL( *combined );
- HGLOG1( HGLOG_INFO, "added '%S'", combined );
- CleanupStack::PopAndDestroy( combined );
- }
-
- arr->Reset();
- if ( !iHomeAddressFieldTypes )
- {
- PreCreateHomeAddressFieldTypesL();
- }
- GetTextFieldsL( *iHomeAddressFieldTypes, aFieldCollection, *arr );
- if ( arr->Count() )
- {
- HBufC* combined = CombineStringsLC( *arr );
- aArray.AppendL( *combined );
- HGLOG1( HGLOG_INFO, "added '%S'", combined );
- CleanupStack::PopAndDestroy( combined );
- }
-
- arr->Reset();
- if ( !iWorkAddressFieldTypes )
- {
- PreCreateWorkAddressFieldTypesL();
- }
- GetTextFieldsL( *iWorkAddressFieldTypes, aFieldCollection, *arr );
- if ( arr->Count() )
- {
- HBufC* combined = CombineStringsLC( *arr );
- aArray.AppendL( *combined );
- HGLOG1( HGLOG_INFO, "added '%S'", combined );
- CleanupStack::PopAndDestroy( combined );
- }
-
- CleanupStack::PopAndDestroy( arr );
- HGLOG_OUT();
- }
-
-
-// ----------------------------------------------------------------------------
-// CHgCtxContactMatcher::GetWebAddressesL
-// ----------------------------------------------------------------------------
-EXPORT_C void CHgCtxContactMatcher::GetWebAddressesL(
- MVPbkStoreContactFieldCollection& aFieldCollection,
- CDesCArray& aArray,
- TWebAddressesType aType )
- {
- HGLOG_CONTEXT( GetWebAddressesL, HGLOG_LOCAL );
- HGLOG_IN();
- CVPbkFieldTypeRefsList* addressFieldTypes( NULL );
-
- switch ( aType )
- {
- case EWebAddresses:
- {
- if ( !iWebAddressFieldTypes )
- {
- PreCreateWebAddressFieldTypesL();
- }
- addressFieldTypes = iWebAddressFieldTypes;
- }
- break;
-
- case EWebAddressesHome:
- {
- if ( !iWebAddressHomeFieldTypes )
- {
- PreCreateWebAddressHomeFieldTypesL();
- }
- addressFieldTypes = iWebAddressHomeFieldTypes;
- }
- break;
-
- case EWebAddressesWork:
- {
- if ( !iWebAddressWorkFieldTypes )
- {
- PreCreateWebAddressWorkFieldTypesL();
- }
- addressFieldTypes = iWebAddressWorkFieldTypes;
- }
- break;
-
- default:
- break;
- }
-
- if( addressFieldTypes )
- {
- GetTextFieldsL( *addressFieldTypes, aFieldCollection, aArray );
- }
-
- HGLOG_OUT();
- }
-
-// ----------------------------------------------------------------------------
-// CHgCtxContactMatcher::GetThumbnailL
-// ----------------------------------------------------------------------------
-EXPORT_C CFbsBitmap* CHgCtxContactMatcher::GetThumbnailL(
- MVPbkStoreContactFieldCollection& aFieldCollection )
- {
- HGLOG_CONTEXT( GetThumbnailL, HGLOG_LOCAL );
- HGLOG_IN();
-
- CFbsBitmap* result = 0;
- TVPbkFieldVersitProperty prop;
- prop.SetName( EVPbkVersitNamePHOTO );
- const MVPbkFieldType* t = FieldTypes().FindMatch( prop, 0 );
- if ( t )
- {
- HGLOG0( HGLOG_INFO, "photo field type found" );
- for ( TInt i = 0, ie = aFieldCollection.FieldCount(); i != ie; ++i )
- {
- const MVPbkStoreContactField& field( aFieldCollection.FieldAt( i ) );
- const MVPbkFieldType* type = field.BestMatchingFieldType();
- if ( type && type->IsSame( *t ) )
- {
- const MVPbkContactFieldData& fdata( field.FieldData() );
- if ( fdata.DataType() == EVPbkFieldStorageTypeBinary )
- {
- HGLOG0( HGLOG_INFO, "found thumbnail" );
- const MVPbkContactFieldBinaryData& fdata2 =
- MVPbkContactFieldBinaryData::Cast( fdata );
- TPtrC8 data( fdata2.BinaryData() );
- CImageDecoder* decoder = 0;
- // DataNewL does not seem to work properly with
- // EOptionAlwaysThread, it will hang in WaitForRequest
- // for ever, at least in the panel app.
- // So write the image to a temporary file (duhhh...)
- // and use FileNewL.
- RFile f;
- TFileName tempFileName;
- iFsSession->CreatePrivatePath( EDriveC );
- iFsSession->PrivatePath( tempFileName );
- _LIT( KDriveC, "C:" );
- _LIT( KTempName, "hgctxthumb" );
- tempFileName.Insert( 0, KDriveC );
- tempFileName.Append( KTempName );
- HGLOG1( HGLOG_INFO, "tempfn='%S'", &tempFileName );
- User::LeaveIfError( f.Replace( *iFsSession, tempFileName,
- EFileWrite ) );
- f.Write( data, data.Length() );
- f.Close();
- TRAPD( err, decoder = CImageDecoder::FileNewL( *iFsSession,
- tempFileName,
- CImageDecoder::EOptionAlwaysThread ) );
- HGLOG1( HGLOG_INFO, "decoder NewL result: %d", err );
- if ( err == KErrNone )
- {
- CleanupStack::PushL( decoder );
- result = new ( ELeave ) CFbsBitmap;
- CleanupStack::PushL( result );
- TSize sz( decoder->FrameInfo().iOverallSizeInPixels );
- TDisplayMode mode( decoder->FrameInfo().iFrameDisplayMode );
- HGLOG3( HGLOG_INFO, "size=%dx%d, mode=%d", sz.iWidth,
- sz.iHeight, mode );
- User::LeaveIfError( result->Create( sz, mode ) );
-
- TRequestStatus status;
- HGLOG0( HGLOG_INFO, "starting to convert" );
- decoder->Convert( &status, *result );
- User::WaitForRequest( status );
- HGLOG1( HGLOG_INFO, "decoder Convert result: %d",
- status.Int() );
- CleanupStack::Pop( result );
- CleanupStack::PopAndDestroy( decoder );
-
- if ( status.Int() != KErrNone )
- {
- delete result;
- result = 0;
- }
- else
- {
- // stop and return the bitmap
- break;
- }
- }
- }
- }
- }
- }
-
- HGLOG_OUT();
- return result;
- }
-
-// ----------------------------------------------------------------------------
-// CHgCtxContactMatcher::IsPhoneNumberL
-// ----------------------------------------------------------------------------
-EXPORT_C TBool CHgCtxContactMatcher::IsPhoneNumberL( const TDesC& aData )
- {
- TBool result = EFalse;
- CFindItemEngine::SFoundItem item;
- CFindItemEngine* search = CFindItemEngine::NewL( aData,
- CFindItemEngine::EFindItemSearchPhoneNumberBin );
- if ( search->ItemCount() )
- {
- search->Item( item );
- result = item.iStartPos == 0;
- }
- delete search;
- return result;
- }
-
-// ----------------------------------------------------------------------------
-// CHgCtxContactMatcher::IsEmailAddressL
-// ----------------------------------------------------------------------------
-EXPORT_C TBool CHgCtxContactMatcher::IsEmailAddressL( const TDesC& aData )
- {
- TBool result = EFalse;
- CFindItemEngine::SFoundItem item;
- CFindItemEngine* search = CFindItemEngine::NewL( aData,
- CFindItemEngine::EFindItemSearchMailAddressBin );
- if ( search->ItemCount() )
- {
- search->Item( item );
- result = item.iStartPos == 0;
- }
- delete search;
- return result;
- }
-
-// ----------------------------------------------------------------------------
-// CHgCtxContactMatcher::GetNamesForFindL
-// ----------------------------------------------------------------------------
-EXPORT_C void CHgCtxContactMatcher::GetNamesForFindL(
- MVPbkStoreContactFieldCollection& aFieldCollection,
- CDesCArray& aArray )
- {
- CVPbkFieldTypeRefsList* nameTypes = CVPbkFieldTypeRefsList::NewL();
- CleanupStack::PushL( nameTypes );
- const MVPbkFieldTypeList& types( FieldTypes() );
- TVPbkFieldVersitProperty prop;
- const MVPbkFieldType* t;
-
- prop.SetName( EVPbkVersitNameN );
- prop.SetSubField( EVPbkVersitSubFieldGivenName );
- t = types.FindMatch( prop, 0 );
- if ( t )
- {
- nameTypes->AppendL( *t );
- }
-
- prop.SetName( EVPbkVersitNameN );
- prop.SetSubField( EVPbkVersitSubFieldFamilyName );
- t = types.FindMatch( prop, 0 );
- if ( t )
- {
- nameTypes->AppendL( *t );
- }
-
- for ( TInt i = 0, ie = aFieldCollection.FieldCount(); i != ie; ++i )
- {
- const MVPbkStoreContactField& field( aFieldCollection.FieldAt( i ) );
- t = field.MatchFieldType( 0 );
- if ( t && nameTypes->ContainsSame( *t ) )
- {
- const MVPbkContactFieldData& fdata( field.FieldData() );
- if ( fdata.DataType() == EVPbkFieldStorageTypeText )
- {
- const MVPbkContactFieldTextData& fdata2 =
- MVPbkContactFieldTextData::Cast( fdata );
- aArray.AppendL( fdata2.Text() );
- }
- }
- }
-
- CleanupStack::PopAndDestroy( nameTypes );
- }
-
-// ----------------------------------------------------------------------------
-// CHgCtxContactMatcher::GetNamesForFindL
-// ----------------------------------------------------------------------------
-EXPORT_C HBufC* CHgCtxContactMatcher::GetNamesForFindL(
- MVPbkStoreContactFieldCollection& aFieldCollection )
- {
- CDesC16ArrayFlat* arr = new ( ELeave ) CDesC16ArrayFlat( KArrayGranularity );
- CleanupStack::PushL( arr );
- GetNamesForFindL( aFieldCollection, *arr );
- HBufC* result = CombineStringsLC( *arr );
- CleanupStack::Pop( result );
- CleanupStack::PopAndDestroy( arr );
- return result;
- }
-
-// ----------------------------------------------------------------------------
-// CHgCtxContactMatcher::SplitFindStringL
-// ----------------------------------------------------------------------------
-EXPORT_C CDesCArray* CHgCtxContactMatcher::SplitFindStringL(const TDesC& aFindString)
- {
- CDesCArray* wordArray = new ( ELeave ) CDesCArrayFlat( KArrayGranularity );
- CleanupStack::PushL( wordArray );
-
- TVPbkWordParserCallbackParam parser( &aFindString, wordArray );
- FindWordSplitterL( &parser );
-
- CleanupStack::Pop(); // wordArray
- return parser.iWordArray;
- }
-
-// ----------------------------------------------------------------------------
-// CHgCtxContactMatcher::SplitMsgContactL
-// ----------------------------------------------------------------------------
-EXPORT_C void CHgCtxContactMatcher::SplitMsgContactL( const TDesC& aString,
- CDesCArray& aArray )
- {
- TInt pos = aString.Locate( '<' );
- if ( pos >= 0 )
- {
- // skip spaces before '<'
- TInt endPos = pos - 1;
- while ( endPos > 0 && TChar( aString[endPos] ).IsSpace() )
- {
- --endPos;
- }
- // take the text before '<'
- aArray.AppendL( aString.Left( endPos + 1 ) );
- // take the text between '<' and '>'
- TInt closePos = aString.Locate( '>' );
- if ( closePos > pos )
- {
- aArray.AppendL( aString.Mid( pos + 1, closePos - pos - 1 ) );
- }
- }
- else
- {
- aArray.AppendL( aString );
- }
- }
-
-// ----------------------------------------------------------------------------
-// CHgCtxContactMatcher::GetCustomFieldL
-// ----------------------------------------------------------------------------
-EXPORT_C void CHgCtxContactMatcher::GetCustomFieldL(
- MVPbkStoreContactFieldCollection& aFieldCollection,
- CDesCArray& aArray,
- TVPbkFieldTypeName aVersitName,
- TVPbkFieldTypeParameter aVersitParam )
- {
- HGLOG_CONTEXT( GetCustomFieldL, HGLOG_LOCAL );
- HGLOG_IN();
-
- CVPbkFieldTypeRefsList* typeList = GetCustomFieldTypeLC(
- aVersitName, aVersitParam );
-
- GetTextFieldsL( *typeList, aFieldCollection, aArray );
-
- CleanupStack::PopAndDestroy( typeList );
- HGLOG_OUT();
- }
-
-// ----------------------------------------------------------------------------
-// CHgCtxContactMatcher::GetCustomFieldTypeLC
-// ----------------------------------------------------------------------------
-EXPORT_C CVPbkFieldTypeRefsList* CHgCtxContactMatcher::GetCustomFieldTypeLC(
- TVPbkFieldTypeName aVersitName,
- TVPbkFieldTypeParameter aVersitParam )
- {
- HGLOG_CONTEXT( GetCustomFieldTypeLC, HGLOG_LOCAL );
- HGLOG_IN();
-
- CVPbkFieldTypeRefsList* typeList = CVPbkFieldTypeRefsList::NewL();
- CleanupStack::PushL( typeList );
- const MVPbkFieldTypeList& types( FieldTypes() );
- TVPbkFieldVersitProperty prop;
- const MVPbkFieldType* t;
-
- prop.SetName( aVersitName );
- prop.Parameters().Add( aVersitParam );
- t = types.FindMatch( prop, 0 );
- if ( t )
- {
- typeList->AppendL( *t );
- HGLOG0( HGLOG_INFO, "field found" );
- }
-
- HGLOG_OUT();
- return typeList;
- }
-
-// ----------------------------------------------------------------------------
-// CHgCtxContactMatcher::GetImppFieldL
-// ----------------------------------------------------------------------------
-EXPORT_C void CHgCtxContactMatcher::GetImppFieldL(
- MVPbkStoreContactFieldCollection& aFieldCollection,
- CDesCArray* aSchemeOnlyArray,
- CDesCArray* aUriOnlyArray,
- CDesCArray* aFullArray )
- {
- HGLOG_CONTEXT( GetImppFieldL, HGLOG_LOCAL );
- HGLOG_IN();
-
- // this function will not build on TUBE
- CVPbkFieldTypeRefsList* typeList = CVPbkFieldTypeRefsList::NewL();
- CleanupStack::PushL( typeList );
- const MVPbkFieldTypeList& types( FieldTypes() );
- TVPbkFieldVersitProperty prop;
- const MVPbkFieldType* t;
- prop.SetName( EVPbkVersitNameIMPP );
- t = types.FindMatch( prop, 0 );
- if ( t )
- {
- typeList->AppendL( *t );
- HGLOG0( HGLOG_INFO, "type found" );
- }
- for ( TInt i = 0, ie = aFieldCollection.FieldCount(); i != ie; ++i )
- {
- const MVPbkStoreContactField& field( aFieldCollection.FieldAt( i ) );
- const MVPbkFieldType* type = field.BestMatchingFieldType();
- if ( type && typeList->ContainsSame( *type ) )
- {
- const MVPbkContactFieldData& fdata( field.FieldData() );
- HGLOG1( HGLOG_INFO, "field found %d", fdata.DataType() );
- if ( fdata.DataType() == EVPbkFieldStorageTypeUri )
- {
- const MVPbkContactFieldUriData& fdata2 =
- MVPbkContactFieldUriData::Cast( fdata );
- const TDesC& schemeOnly( fdata2.Scheme() );
- const TDesC& uriOnly( fdata2.Text() );
- const TDesC& fullText( fdata2.Uri() );
- HGLOG3( HGLOG_INFO, "'%S' + '%S' = '%S'",
- &schemeOnly, &uriOnly, &fullText );
- if ( aSchemeOnlyArray )
- {
- aSchemeOnlyArray->AppendL( schemeOnly );
- }
- if ( aUriOnlyArray )
- {
- aUriOnlyArray->AppendL( uriOnly );
- }
- if ( aFullArray )
- {
- aFullArray->AppendL( fullText );
- }
- }
- }
- }
- CleanupStack::PopAndDestroy( typeList );
-
- HGLOG_OUT();
- }
-
-// ----------------------------------------------------------------------------
-// CHgCtxContactMatcher::FindContactWithBirthdayL
-// ----------------------------------------------------------------------------
-EXPORT_C void CHgCtxContactMatcher::FindContactWithBirthdayL(
- const TTime& aDate,
- CVPbkContactLinkArray& aLinkArray )
- {
- HGLOG_CONTEXT( FindContactWithBirthdayL, HGLOG_LOCAL );
- HGLOG1_IN( "%Ld", aDate.Int64() );
-
- // extract month and day
- TDateTime dt = aDate.DateTime();
- TInt month = dt.Month();
- TInt day = dt.Day();
- HGLOG2( HGLOG_INFO, "wanted month = %d day = %d", month, day );
-
- CVPbkFieldTypeRefsList* emptyList = CVPbkFieldTypeRefsList::NewL();
- CleanupStack::PushL( emptyList );
-
- // create view with all contacts
- CVPbkContactViewDefinition* def = CVPbkContactViewDefinition::NewLC();
- def->SetType( EVPbkContactsView );
- def->SetUriL( VPbkContactStoreUris::DefaultCntDbUri() );
- MVPbkContactViewBase* view = iContactManager->CreateContactViewLC(
- *this, *def, *emptyList );
-
- HGLOG0( HGLOG_INFO, "starting wait" );
- iASchedulerWait.Start();
- HGLOG0( HGLOG_INFO, "after wait" );
-
- // view is ready
- TInt ctCount = view->ContactCountL();
- HGLOG1( HGLOG_INFO, "contact count: %d", ctCount );
-
- // find the birthday field type
- const MVPbkFieldTypeList& types( FieldTypes() );
- TVPbkFieldVersitProperty prop;
- const MVPbkFieldType* bdayFt;
- prop.SetName( EVPbkVersitNameBDAY );
- prop.SetSubField( EVPbkVersitSubFieldNone );
- bdayFt = types.FindMatch( prop, 0 );
-
- if ( bdayFt && ctCount )
- {
- HGLOG0( HGLOG_INFO, "found bday field type" );
- TTime nullTime( KNullTime );
- // go through all contacts and check birthday field values
- for ( TInt i = 0; i < ctCount; ++i )
- {
- MVPbkContactLink* link( view->CreateLinkLC( i ) );
- MVPbkStoreContact* contact = 0;
- GetStoreContactL( *link, &contact );
- if ( contact )
- {
- HGLOG1( HGLOG_INFO, "got contact, idx %d", i );
- contact->PushL();
- TTime bday;
- bday = GetFieldDataDateTimeL( *contact, *bdayFt );
- if ( bday != nullTime )
- {
- HGLOG1( HGLOG_INFO, "found bday %Ld", bday.Int64() );
- dt = bday.DateTime();
- TInt thisMonth = dt.Month();
- TInt thisDay = dt.Day();
- HGLOG2( HGLOG_INFO, "for this contact month = %d day = %d",
- thisMonth, thisDay );
- if ( thisMonth == month && thisDay == day )
- {
- HGLOG0( HGLOG_INFO, "match" );
- aLinkArray.AppendL( link );
- link = 0;
- }
- }
- CleanupStack::PopAndDestroy(); // contact
- }
- CleanupStack::Pop(); // if matched then no ownership and link is NULL by now
- delete link;
- }
- }
-
- CleanupStack::PopAndDestroy(); // view
- CleanupStack::PopAndDestroy( def );
- CleanupStack::PopAndDestroy( emptyList );
-
- HGLOG_OUT();
- }
-
-// ----------------------------------------------------------------------------
-// CHgCtxContactMatcher::ContactViewReady
-// ----------------------------------------------------------------------------
-void CHgCtxContactMatcher::ContactViewReady(
- MVPbkContactViewBase& aView )
- {
- HGLOG_CONTEXT( ContactViewReady, HGLOG_LOCAL );
- HGLOG_IN();
-
- if ( iASchedulerWait.IsStarted() )
- {
- iASchedulerWait.AsyncStop();
- }
-
- aView.RemoveObserver( *this );
-
- HGLOG_OUT();
- }
-
-// ----------------------------------------------------------------------------
-// CHgCtxContactMatcher::ContactViewUnavailable
-// ----------------------------------------------------------------------------
-void CHgCtxContactMatcher::ContactViewUnavailable(
- MVPbkContactViewBase& /*aView*/ )
- {
- // means that view is unavailable for now
- // but ContactViewReady will be called at some point
- }
-
-// ----------------------------------------------------------------------------
-// CHgCtxContactMatcher::ContactAddedToView
-// ----------------------------------------------------------------------------
-void CHgCtxContactMatcher::ContactAddedToView(
- MVPbkContactViewBase& /*aView*/,
- TInt /*aIndex*/,
- const MVPbkContactLink& /*aContactLink*/ )
- {
- }
-
-// ----------------------------------------------------------------------------
-// CHgCtxContactMatcher::ContactRemovedFromView
-// ----------------------------------------------------------------------------
- void CHgCtxContactMatcher::ContactRemovedFromView(
- MVPbkContactViewBase& /*aView*/,
- TInt /*aIndex*/,
- const MVPbkContactLink& /*aContactLink*/ )
- {
- }
-
-// ----------------------------------------------------------------------------
-// CHgCtxContactMatcher::ContactViewError
-// ----------------------------------------------------------------------------
- void CHgCtxContactMatcher::ContactViewError(
- MVPbkContactViewBase& aView,
- TInt aError,
- TBool /*aErrorNotified*/ )
- {
- HGLOG_CONTEXT( ContactViewError, HGLOG_LOCAL );
- HGLOG1_IN( "aError = %d", aError );
-
- if ( iASchedulerWait.IsStarted() )
- {
- iASchedulerWait.AsyncStop();
- }
-
- aView.RemoveObserver( *this );
-
- HGLOG_OUT();
- }
-
-
-// End of File
--- a/homescreensrv_plat/context_utility_api/tsrc/src/t_ui_context_utility_api.cpp Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,222 +0,0 @@
-/*
-* Copyright (c) 2002 - 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: T_ui_context_utility_api class member functions
-*
-*/
-
-
-
-// INCLUDE FILES
-#include <Stiftestinterface.h>
-#include <aknappui.h>
-#include <cfclient.h>
-#include "hgcontextutilityimpl.h"
-#include "hgcontextutility.h"
-#include "hgcontexttypes.h"
-#include "hgtestbasemacros.h"
-#include "T_ui_context_utility_api.h"
-#include "wait.h"
-#include "hgtestbasemacros.h"
-#include <cvpbkcontactmanager.h>
-#include <mvpbkcontactstore.h>
-#include <mvpbkcontactfieldtextdata.h>
-#include <mvpbkstorecontact.h>
-#include <MVPbkContactObserver.h>
-#include <MVPbkBatchOperationObserver.h>
-#include <CVPbkContactLinkArray.h>
-#include <MVPbkContactOperationBase.h>
-#include <VPbkEng.rsg>
-#include <mdesession.h>
-#include <e32math.h>
-#include <aknappui.h>
-// ============================ MEMBER FUNCTIONS ===============================
-
-// -----------------------------------------------------------------------------
-// CT_ui_context_utility_api::CT_ui_context_utility_api
-// C++ default constructor can NOT contain any code, that
-// might leave.
-// -----------------------------------------------------------------------------
-//
-CT_ui_context_utility_api::CT_ui_context_utility_api()
- {
- iTestDllName = _L("CT_ui_context_utility_api").AllocL();
- }
-
-// -----------------------------------------------------------------------------
-// CT_ui_context_utility_api::ConstructL
-// Symbian 2nd phase constructor can leave.
-//
-// Note: If OOM test case uses STIF Logger, then STIF Logger must be created
-// with static buffer size parameter (aStaticBufferSize). Otherwise Logger
-// allocates memory from heap and therefore causes error situations with OOM
-// testing. For more information about STIF Logger construction, see STIF Users
-// Guide.
-// -----------------------------------------------------------------------------
-//
-void CT_ui_context_utility_api::ConstructL()
- {
- CHgTestBase::BaseConstructL( KT_ui_context_utility_apiLogPath,
- KT_ui_context_utility_apiLogFile );
- }
-
-// -----------------------------------------------------------------------------
-// CT_ui_context_utility_api::NewL
-// Two-phased constructor.
-// -----------------------------------------------------------------------------
-//
-CT_ui_context_utility_api* CT_ui_context_utility_api::NewL()
- {
- CT_ui_context_utility_api* self = new (ELeave) CT_ui_context_utility_api;
- CleanupStack::PushL( self );
- self->ConstructL();
- CleanupStack::Pop( self );
- return self;
- }
-
-// Destructor
-CT_ui_context_utility_api::~CT_ui_context_utility_api()
- {
-
- }
-
-// ========================== OTHER EXPORTED FUNCTIONS =========================
-
-// -----------------------------------------------------------------------------
-// LibEntryL is a polymorphic Dll entry point
-// Returns: CTestModuleBase*: Pointer to Test Module object
-// -----------------------------------------------------------------------------
-//
-EXPORT_C CTestModuleBase* LibEntryL()
- {
- return CT_ui_context_utility_api::NewL();
- }
-
-// -----------------------------------------------------------------------------
-// SetRequirements handles test module parameters(implements evolution
-// version 1 for test module's heap and stack sizes configuring).
-// Returns: TInt: Symbian error code.
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TInt SetRequirements( CTestModuleParam*& /*aTestModuleParam*/,
- TUint32& /*aParameterValid*/ )
- {
- return KErrNone;
- }
-
-//// -----------------------------------------------------------------------------
-//// CT_ui_context_utility_api::RunTestL
-//// Method responsible for enumerating and running test cases (and also setup and teardown activities before
-//// and after each test case).
-//// -----------------------------------------------------------------------------
-TInt CT_ui_context_utility_api::RunTestL(
- CT_ui_context_utility_api::TCallReason aRunReason,
- TInt aTestToRun,
- RPointerArray<TTestCaseInfo>& aTestCases,
- TTestResult& aResult )
- {
- TInt _test_case_no = -1;
- //test cases, setup and teardown include
-
-
- if( aRunReason == CHgTestBase::ERunTestCase )
- {
- LoadTestCasesL(_test_case_no, aRunReason, STIF_RUN_SETUP, aTestCases, aResult);
- LoadTestCasesL(_test_case_no, aRunReason, aTestToRun, aTestCases, aResult);
- LoadTestCasesL(_test_case_no, aRunReason, STIF_RUN_TEARDOWN, aTestCases, aResult);
- CreateEnvL();
- _test_case_no = -1;
- TRAPD(
- errCode,
- LoadTestCasesL(_test_case_no, aRunReason, STIF_RUN_SETUP, aTestCases, aResult);
- LoadTestCasesL(_test_case_no, aRunReason, aTestToRun, aTestCases, aResult);
- LoadTestCasesL(_test_case_no, aRunReason, STIF_RUN_TEARDOWN, aTestCases, aResult);
- )
- DestroyEnv();
- User::LeaveIfError( errCode );
- }
- else
- {
- LoadTestCasesL(_test_case_no, aRunReason, aTestToRun, aTestCases, aResult);
- }
-
- return _test_case_no;
- }
-
-// -----------------------------------------------------------------------------
-// -----------------------------------------------------------------------------
-void CT_ui_context_utility_api::CreateEnvL()
- {
- CActiveScheduler::Install ( NULL );
- ENV_cleanup = CTrapCleanup::New();
- TInt ENV_err = KErrNone;
- ENV_env = new CEikonEnv;
- if ( ENV_env )
- {
- TRAP( ENV_err, ENV_env->ConstructL() );
- if ( ENV_err )
- {
- return;
- }
- ENV_aknAppUI = new CAknAppUi;
- if (ENV_aknAppUI)
- {
- TRAP( ENV_err, ENV_aknAppUI->BaseConstructL( CEikAppUi::ENoAppResourceFile ) ); \
- if ( ENV_err )
- {
- return;
- }
- }
- }
- }
-// -----------------------------------------------------------------------------
-// -----------------------------------------------------------------------------
-void CT_ui_context_utility_api::DestroyEnv()
- {
- TInt KWait( 500000 );
- CActiveSchedulerWait* wait = new (ELeave) CActiveSchedulerWait();
- CPeriodic* periodic = CPeriodic::NewL( CActive::EPriorityIdle );
- periodic->Start(KWait, KWait, TCallBack( CHgTestBase::CallStop, wait ) );
- wait->Start();
- delete periodic;
- delete wait;
-
- if ( ENV_aknAppUI )
- {
- ENV_aknAppUI->PrepareToExit();
- }
- if ( ENV_env )
- {
- ENV_env->DestroyEnvironment();
- }
- if( ENV_cleanup )
- {
- delete ENV_cleanup;
- }
- CActiveScheduler::Install ( iActiveScheduler );
- }
-// -----------------------------------------------------------------------------
-// -----------------------------------------------------------------------------
-TInt CT_ui_context_utility_api::LoadTestCasesL(
- TInt& _test_case_no,
- CT_ui_context_utility_api::TCallReason aRunReason,
- TInt aTestToRun,
- RPointerArray<TTestCaseInfo>& aTestCases,
- TTestResult& aResult)
- {
-#define TEST_CASES
- #include "..\src\T_ui_context_utility_api_cases.cpp"
-#undef TEST_CASES
- return KErrNone;
- }
-// End of File
--- a/homescreensrv_plat/context_utility_api/tsrc/src/t_ui_context_utility_api_cases.cpp Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,1025 +0,0 @@
-/*
-* Copyright (c) 2002 - 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: T_ui_context_utility_api test module.
-*
-*/
-
-
-// DEFINITION OF GLOBAL VARIABLES
-#ifdef TEST_VAR_DECLARATIONS
-// here You can define global objects used all over code
-CHgContextUtility* iContextUtility;
-#endif
-
-// testing code starts here
-#ifdef TEST_CASES
-
-#ifndef KNAME
-#define KNAME
-_LIT(KName,"James Bond");
-#endif
-
-// STIF_SETUP defines activities needed before every test case.
-STIF_SETUP
- {
- iContextUtility = CHgContextUtility::NewL();
- return KErrNone;
- }
-
-// STIF_TEARDOWN defines activities needed after every test case
-STIF_TEARDOWN
- {
- delete iContextUtility;
- return KErrNone;
- }
-
-// a Canary test to verify test environment.
-STIF_TESTDEFINE( CanaryTest )
-{
-
-}
-
-STIF_TESTDEFINE( T_MemoryOnlyTest )
-{
- /*private implementation IsForeground
- cant be covered by tests because covered by previous condition*/
- iContextUtility->AllowPublishFromBackground( ETrue );
- iContextUtility->AllowPublishFromBackground( EFalse );
- return KErrNone;
-}
-//Test code for testing PublishContextL function call
-STIF_TESTDEFINE( T_PublishContextL )
- {
- // publish the Hg.Contact context to CF
- iContextUtility->PublishContextL( KHgCFTypeContact, KName );
- //private implementation with dalay cant be covered by test because its never called
- return KErrNone;
- }
-
-//Test code for testing T_PublishContextDelayedL function call
-STIF_TESTDEFINE( T_PublishContextDelayedL )
- {
- // publish the Hg.Contact context to CF
- iContextUtility->PublishContextDelayedL( KHgCFTypeContact, KName ,50000);
- iContextUtility->PublishContextDelayedL( KHgCFTypeContact, KName ,0);
- return KErrNone;
- }
-
-//Test code for testing GetContextL function call
-STIF_TESTDEFINE( T_GetContextL )
- {
- HBufC* icontext = iContextUtility->GetContextL( _L( "NonExistContextType" ));
-
- STIF_ASSERT_TRUE_DESC( icontext == NULL, _L( "Item found" ) );
- delete icontext;
-
- // publish the Hg.Contact context to CF
- iContextUtility->PublishContextL( KHgCFTypeContact, KName );
-
- icontext = iContextUtility->GetContextL( KHgCFTypeContact);
-
- STIF_ASSERT_TRUE_DESC( icontext != NULL, _L( "Context is not found" ) );
- delete icontext;
-
- return KErrNone;
- }
-
-//Test code for testing GetContextL function call
-STIF_TESTDEFINE( T_GetContextLWithContextSource )
- {
- HBufC* icontext = iContextUtility->GetContextL(KHgCFSource,_L( "NonExistContextType" ));
-
- STIF_ASSERT_TRUE_DESC( icontext == NULL, _L( "Item found" ) );
- delete icontext;
-
- // publish the Hg.Contact context to CF
- iContextUtility->PublishContextL( KHgCFTypeContact, KName );
-
- icontext = iContextUtility->GetContextL(KHgCFSource,KHgCFTypeContact);
-
- STIF_ASSERT_TRUE_DESC( icontext != NULL, _L( "Context is not found" ) );
- delete icontext;
-
- return KErrNone;
- }
-
-//Test code for testing spliting combined context
-STIF_TESTDEFINE( T_SplitCombinedStringL )
- {
- HBufC* val( NULL );
- _LIT( KDummyContext, "CtxUtilApiTest" );
- const TInt KArrayGranularity( 3 );
- CDesCArray* sourceArray = new( ELeave ) CDesC16ArrayFlat(KArrayGranularity);
- CDesCArray* resultArray = new( ELeave ) CDesC16ArrayFlat(KArrayGranularity);
- CleanupStack::PushL( sourceArray );
- CleanupStack::PushL( resultArray );
-
- iContextUtility->PublishContextL( KDummyContext, *sourceArray );
- //Can't be verified if current context is NULL, because could be already published
-
- sourceArray->AppendL( _L( "https://somedomain.com?param=parmaValue" ) );
- iContextUtility->PublishContextL( KDummyContext, *sourceArray );//there only one value. nothing to combine but returned value should be equal
- val = iContextUtility->GetContextL( KDummyContext );
- CleanupStack::PushL( val );
- STIF_ASSERT_TRUE( val && val->Length() );
- CHgContextUtility::SplitCombinedStringL( *val, *resultArray );
- CleanupStack::PopAndDestroy(val);
- STIF_ASSERT_TRUE( resultArray->Count() == sourceArray->Count() );
- for( TInt iter( 0 ); iter < sourceArray->Count(); ++iter )
- {
- STIF_ASSERT_TRUE( 0 == (*sourceArray)[iter].Compare((*resultArray)[iter]) );
- }
- CleanupStack::PopAndDestroy(resultArray);
-
- resultArray = new( ELeave ) CDesC16ArrayFlat(KArrayGranularity);
- CleanupStack::PushL( resultArray );
- sourceArray->AppendL( _L( "\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\" ));
- sourceArray->AppendL( _L( "!@#$%^&&*()/\<>[]|~,." ) );
-
- iContextUtility->PublishContextL( KDummyContext, *sourceArray );
-
- val = iContextUtility->GetContextL( KDummyContext );
- STIF_ASSERT_TRUE( val && val->Length() );
- CleanupStack::PushL(val);
- CHgContextUtility::SplitCombinedStringL( *val, *resultArray );
- CleanupStack::PopAndDestroy( val );
- STIF_ASSERT_TRUE( resultArray->Count() == sourceArray->Count() );
- for( TInt iter( 0 ); iter < sourceArray->Count(); ++iter )
- {
- STIF_ASSERT_TRUE( 0 == (*sourceArray)[iter].Compare((*resultArray)[iter]) );
- }
- CleanupStack::PopAndDestroy(resultArray);
- CleanupStack::PopAndDestroy(sourceArray);
- return KErrNone;
- }
-
-//Test code for testing PublishContextL with array argument
-STIF_TESTDEFINE( T_PublishContextLWithArray )
- {
- _LIT( KDummyContext, "CtxUtilApiTest" );
- CDesCArray* arr = new ( ELeave ) CDesC16ArrayFlat( 4 );
- CleanupStack::PushL( arr );
-
- iContextUtility->PublishContextL( KDummyContext, *arr );
-
- arr->AppendL( _L( "first item" ) );
- arr->AppendL( _L( "second item" ) );
- arr->AppendL( _L( "third item" ) );
- iContextUtility->PublishContextL( KDummyContext, *arr );
- HBufC* val = iContextUtility->GetContextL( KDummyContext );
- STIF_ASSERT_TRUE( val && val->Length() );
- delete val;
- CleanupStack::PopAndDestroy( arr );
- return KErrNone;
- }
-
-//Test code for testing PublishContextDelayedL with array argument
-STIF_TESTDEFINE( T_PublishContextDelayedLWithArray )
- {
- _LIT( KDummyContext, "CtxUtilApiTest2" );
- CDesCArray* arr = new ( ELeave ) CDesC16ArrayFlat( 4 );
- CleanupStack::PushL( arr );
- arr->AppendL( _L( "first item" ) );
- arr->AppendL( _L( "second item" ) );
- arr->AppendL( _L( "third item" ) );
- iContextUtility->PublishContextDelayedL( KDummyContext, *arr, 500000 );
- iContextUtility->PublishContextDelayedL( KDummyContext, *arr, 0 );
- iContextUtility->PublishContextDelayedL( KDummyContext, *arr, 500000 );
- CWait* wait = CWait::NewL();
- wait->Start( 2000000 );
- delete wait;
- HBufC* val = iContextUtility->GetContextL( KDummyContext );
- STIF_ASSERT_TRUE( val && val->Length() );
- delete val;
- CleanupStack::PopAndDestroy( arr );
- return KErrNone;
- }
-
-//Test code for testing RePublishWhenFgL with different arguments
-//Most probably nothing will happen because there is no CCoeEnv but
-//it should never crash.
-STIF_TESTDEFINE( T_RePublishWhenFgL )
- {
- iContextUtility->RePublishWhenFgL( ETrue );
- iContextUtility->RePublishWhenFgL( EFalse );
- iContextUtility->RePublishWhenFgL( ETrue );
- return KErrNone;
- }
-
-/* IMPORT_C void PublishContactContextL( const MVPbkStoreContact& aContact,
- const TTimeIntervalMicroSeconds32& aDelay = 0 );*/
-STIF_TESTDEFINE( T_PublishContactContextL1 )
- {
- CHgCtxContactMatcher* m = CHgCtxContactMatcher::NewLC();
- m->OpenDefaultMatchStoresL();
- CVPbkContactManager& cm( m->GetContactManager() );
- MVPbkContactStoreList& sl( m->GetContactStoresL() );
- MVPbkStoreContact* newContact = sl.At( 0 ).CreateNewContactLC();
- const MVPbkFieldType* fieldType = m->FieldTypes().Find(R_VPBK_FIELD_TYPE_FIRSTNAME);
- MVPbkStoreContactField* newField = newContact->CreateFieldLC(*fieldType);
- MVPbkContactFieldTextData* textData = &(MVPbkContactFieldTextData::Cast(newField->FieldData()));
- _LIT(KName, "ctxutiltester");
- textData->SetTextL( KName );
- newContact->AddFieldL(newField);
- CleanupStack::Pop(newField);
- CWait* wait = CWait::NewLC();
- struct TDummyObs : public MVPbkContactObserver
- {
- CWait* iWait;
- TDummyObs( CWait* aWait ) : iWait( aWait ) { }
- void ContactOperationCompleted(TContactOpResult /*aResult*/)
- {
- iWait->Stop();
- }
- void ContactOperationFailed(TContactOp /*aOpCode*/,
- TInt /*aErrorCode*/,
- TBool /*aErrorNotified*/) { }
- } dummyObs( wait );
- newContact->CommitL( dummyObs );
- wait->Start( 2000000 );
- CleanupStack::PopAndDestroy( wait );
-
- iContextUtility->PublishContactContextL( *newContact, 0 );
- iContextUtility->PublishContactContextL( *newContact, 500000 );
- wait = CWait::NewL();
- wait->Start( 2000000 );
- delete wait;
- HBufC* ctx = iContextUtility->GetContextL( KHgCFTypeContact);
- STIF_ASSERT_TRUE_DESC( ctx != NULL, _L( "Context not found" ) );
- delete ctx;
-
- CVPbkContactLinkArray* ca = CVPbkContactLinkArray::NewLC();
- ca->AppendL( newContact->CreateLinkLC() );
- CleanupStack::Pop();
- wait = CWait::NewL();
- struct TDummyObs2 : public MVPbkBatchOperationObserver
- {
- CWait* iWait;
- TDummyObs2( CWait* aWait ) : iWait( aWait ) { }
- void StepComplete(
- MVPbkContactOperationBase& /*aOperation*/,
- TInt /*aStepSize*/ ) { }
- TBool StepFailed(
- MVPbkContactOperationBase& /*aOperation*/,
- TInt /*aStepSize*/, TInt /*aError*/ )
- {
- return EFalse;
- }
- void OperationComplete(
- MVPbkContactOperationBase& /*aOperation*/ )
- {
- iWait->Stop();
- }
- } dummyObs2( wait );
- MVPbkContactOperationBase* op = cm.DeleteContactsL( *ca, dummyObs2 );
- CleanupDeletePushL( op );
- wait->Start( 2000000 );
- delete wait;
- CleanupStack::PopAndDestroy( 4 ); // op, ca, newContact, m
-
- return KErrNone;
- }
-
-/* IMPORT_C void PublishContactContextL( const MVPbkContactLink& aContactLink,
- const TTimeIntervalMicroSeconds32& aDelay = 0 );*/
-STIF_TESTDEFINE( T_PublishContactContextL2 )
- {
- CHgCtxContactMatcher* m = CHgCtxContactMatcher::NewLC();
- m->OpenDefaultMatchStoresL();
- CVPbkContactManager& cm( m->GetContactManager() );
- MVPbkContactStoreList& sl( m->GetContactStoresL() );
- MVPbkStoreContact* newContact = sl.At( 0 ).CreateNewContactLC();
- const MVPbkFieldType* fieldType = m->FieldTypes().Find(R_VPBK_FIELD_TYPE_FIRSTNAME);
- MVPbkStoreContactField* newField = newContact->CreateFieldLC(*fieldType);
- MVPbkContactFieldTextData* textData = &(MVPbkContactFieldTextData::Cast(newField->FieldData()));
- _LIT(KName, "ctxutiltester");
- textData->SetTextL( KName );
- newContact->AddFieldL(newField);
- CleanupStack::Pop(newField);
- CWait* wait = CWait::NewL();
- struct TDummyObs : public MVPbkContactObserver
- {
- CWait* iWait;
- TDummyObs( CWait* aWait ) : iWait( aWait ) { }
- void ContactOperationCompleted(TContactOpResult /*aResult*/)
- {
- iWait->Stop();
- }
- void ContactOperationFailed(TContactOp /*aOpCode*/,
- TInt /*aErrorCode*/,
- TBool /*aErrorNotified*/){ }
- } dummyObs( wait );
- newContact->CommitL( dummyObs );
- wait->Start( 2000000 );
- delete wait;
-
- CVPbkContactLinkArray* ca = CVPbkContactLinkArray::NewLC();
- ca->AppendL( newContact->CreateLinkLC() );
- CleanupStack::Pop();
-
- iContextUtility->PublishContactContextL( ca->At( 0 ), 0 );
- iContextUtility->PublishContactContextL( ca->At( 0 ), 500000 );
- wait = CWait::NewL();
- wait->Start( 2000000 );
- delete wait;
- HBufC* ctx = iContextUtility->GetContextL( KHgCFTypeContact);
- STIF_ASSERT_TRUE_DESC( ctx != NULL, _L( "Context not found" ) );
- delete ctx;
-
- wait = CWait::NewL();
- struct TDummyObs2 : public MVPbkBatchOperationObserver
- {
- CWait* iWait;
- TDummyObs2( CWait* aWait ) : iWait( aWait ) { }
- void StepComplete(
- MVPbkContactOperationBase& /*aOperation*/,
- TInt /*aStepSize*/ ) { }
- TBool StepFailed(
- MVPbkContactOperationBase& /*aOperation*/,
- TInt /*aStepSize*/, TInt /*aError*/ )
- {
- return EFalse;
- }
- void OperationComplete(
- MVPbkContactOperationBase& /*aOperation*/ ) { iWait->Stop(); }
- } dummyObs2( wait );
- MVPbkContactOperationBase* op = cm.DeleteContactsL( *ca, dummyObs2 );
- CleanupDeletePushL( op );
- wait->Start( 2000000 );
- delete wait;
-
- // test with (surely) non-existing link
- iContextUtility->PublishContactContextL( ca->At( 0 ) );
- wait = CWait::NewL();
- wait->Start( 2000000 );
- delete wait;
-
- CleanupStack::PopAndDestroy( 4 ); // op, ca, newContact, m
-
- return KErrNone;
- }
-
-/* IMPORT_C void PublishContactContextL( const TDesC& aContactName,
- const TTimeIntervalMicroSeconds32& aDelay = 0 );*/
-STIF_TESTDEFINE( T_PublishContactContextL3 )
- {
- iContextUtility->PublishContactContextL( KName );
- HBufC* ctx = iContextUtility->GetContextL( KHgCFTypeContact);
- STIF_ASSERT_TRUE_DESC( ctx != NULL, _L( "Context not found" ) );
- delete ctx;
-
- iContextUtility->PublishContactContextL( KName, 500000 );
- iContextUtility->PublishContactContextL( KName, 500000 );
- iContextUtility->PublishContactContextL( KName, 500000 );
- ctx = iContextUtility->GetContextL( KHgCFTypeContact);
- STIF_ASSERT_TRUE_DESC( ctx != NULL, _L( "Context not found" ) );
- delete ctx;
-
- return KErrNone;
- }
-
-/* IMPORT_C void PublishContactContextL(
- const RPointerArray<MVPbkStoreContact>& aContacts,
- const TTimeIntervalMicroSeconds32& aDelay = 0 );*/
-STIF_TESTDEFINE( T_PublishContactContextL4 )
- {
- CHgCtxContactMatcher* m = CHgCtxContactMatcher::NewLC();
- m->OpenDefaultMatchStoresL();
- CVPbkContactManager& cm( m->GetContactManager() );
- MVPbkContactStoreList& sl( m->GetContactStoresL() );
- MVPbkStoreContact* newContact = sl.At( 0 ).CreateNewContactLC();
- const MVPbkFieldType* fieldType = m->FieldTypes().Find(R_VPBK_FIELD_TYPE_FIRSTNAME);
- MVPbkStoreContactField* newField = newContact->CreateFieldLC(*fieldType);
- MVPbkContactFieldTextData* textData = &(MVPbkContactFieldTextData::Cast(newField->FieldData()));
- _LIT(KName, "ctxutiltester");
- textData->SetTextL( KName );
- newContact->AddFieldL(newField);
- CleanupStack::Pop(newField);
- CWait* wait = CWait::NewL();
- struct TDummyObs : public MVPbkContactObserver
- {
- CWait* iWait;
- TDummyObs( CWait* aWait ) : iWait( aWait ) { }
- void ContactOperationCompleted(TContactOpResult /*aResult*/) { iWait->Stop(); }
- void ContactOperationFailed(TContactOp /*aOpCode*/, TInt /*aErrorCode*/, TBool /*aErrorNotified*/) { }
- } dummyObs( wait );
- newContact->CommitL( dummyObs );
- wait->Start( 2000000 );
- delete wait;
-
- RPointerArray<MVPbkStoreContact> pa;
- CleanupClosePushL( pa );
- pa.AppendL( newContact );
- iContextUtility->PublishContactContextL( pa, 0 );
- iContextUtility->PublishContactContextL( pa, 500000 );
- CleanupStack::PopAndDestroy( &pa );
- wait = CWait::NewL();
- wait->Start( 2000000 );
- delete wait;
- HBufC* ctx = iContextUtility->GetContextL( KHgCFTypeContact);
- STIF_ASSERT_TRUE_DESC( ctx != NULL, _L( "Context not found" ) );
- delete ctx;
-
- RPointerArray<MVPbkStoreContact> pa2;
- CleanupClosePushL( pa2 );
- pa2.AppendL( newContact );
- pa2.AppendL( newContact );
- pa2.AppendL( newContact );
- pa2.AppendL( newContact );
- iContextUtility->PublishContactContextL( pa2, 500000 );
- iContextUtility->PublishContactContextL( pa2, 0 );
- CleanupStack::PopAndDestroy( &pa2 );
- wait = CWait::NewL();
- wait->Start( 2000000 );
- delete wait;
- ctx = iContextUtility->GetContextL( KHgCFTypeContact);
- STIF_ASSERT_TRUE_DESC( ctx != NULL, _L( "Context not found" ) );
- delete ctx;
-
- CVPbkContactLinkArray* ca = CVPbkContactLinkArray::NewLC();
- ca->AppendL( newContact->CreateLinkLC() );
- CleanupStack::Pop();
- wait = CWait::NewL();
- struct TDummyObs2 : public MVPbkBatchOperationObserver
- {
- CWait* iWait;
- TDummyObs2( CWait* aWait ) : iWait( aWait ) { }
- void StepComplete(
- MVPbkContactOperationBase& /*aOperation*/,
- TInt /*aStepSize*/ ) { }
- TBool StepFailed(
- MVPbkContactOperationBase& /*aOperation*/,
- TInt /*aStepSize*/, TInt /*aError*/ )
- {
- return EFalse;
- }
- void OperationComplete(
- MVPbkContactOperationBase& /*aOperation*/ ) { iWait->Stop(); }
- } dummyObs2( wait );
- MVPbkContactOperationBase* op = cm.DeleteContactsL( *ca, dummyObs2 );
- CleanupDeletePushL( op );
- wait->Start( 2000000 );
- delete wait;
- CleanupStack::PopAndDestroy( 4 ); // op, ca, newContact, m
-
- return KErrNone;
- }
-
-/* IMPORT_C void PublishContactContextL(
- const RPointerArray<MVPbkContactLink>& aContactLinks,
- const TTimeIntervalMicroSeconds32& aDelay = 0 );*/
-STIF_TESTDEFINE( T_PublishContactContextL5 )
- {
- CHgCtxContactMatcher* m = CHgCtxContactMatcher::NewLC();
- m->OpenDefaultMatchStoresL();
- CVPbkContactManager& cm( m->GetContactManager() );
- MVPbkContactStoreList& sl( m->GetContactStoresL() );
- MVPbkStoreContact* newContact = sl.At( 0 ).CreateNewContactLC();
- const MVPbkFieldType* fieldType =
- m->FieldTypes().Find(R_VPBK_FIELD_TYPE_FIRSTNAME);
- MVPbkStoreContactField* newField = newContact->CreateFieldLC(*fieldType);
- MVPbkContactFieldTextData* textData =
- &(MVPbkContactFieldTextData::Cast(newField->FieldData()));
- _LIT(KName, "ctxutiltester");
- textData->SetTextL( KName );
- newContact->AddFieldL(newField);
- CleanupStack::Pop(newField);
- CWait* wait = CWait::NewL();
- struct TDummyObs : public MVPbkContactObserver
- {
- CWait* iWait;
- TDummyObs( CWait* aWait ) : iWait( aWait ) { }
- void ContactOperationCompleted(TContactOpResult /*aResult*/)
- {
- iWait->Stop();
- }
- void ContactOperationFailed(TContactOp /*aOpCode*/,
- TInt /*aErrorCode*/,
- TBool /*aErrorNotified*/) { }
- } dummyObs( wait );
- newContact->CommitL( dummyObs );
- wait->Start( 2000000 );
- delete wait;
-
- CVPbkContactLinkArray* pa = CVPbkContactLinkArray::NewLC();
- pa->AppendL( newContact->CreateLinkLC() );
- CleanupStack::Pop();
- iContextUtility->PublishContactContextL( *pa, 0 );
- iContextUtility->PublishContactContextL( *pa, 500000 );
- CleanupStack::PopAndDestroy( pa );
- wait = CWait::NewL();
- wait->Start( 2000000 );
- delete wait;
- HBufC* ctx = iContextUtility->GetContextL( KHgCFTypeContact);
- STIF_ASSERT_TRUE_DESC( ctx != NULL, _L( "Context not found" ) );
- delete ctx;
-
- CVPbkContactLinkArray* pa2 = CVPbkContactLinkArray::NewLC();
- pa2->AppendL( newContact->CreateLinkLC() );
- CleanupStack::Pop();
- pa2->AppendL( newContact->CreateLinkLC() );
- CleanupStack::Pop();
- pa2->AppendL( newContact->CreateLinkLC() );
- CleanupStack::Pop();
- iContextUtility->PublishContactContextL( *pa2, 500000 );
- iContextUtility->PublishContactContextL( *pa2, 0 );
- CleanupStack::PopAndDestroy( pa2 );
- wait = CWait::NewL();
- wait->Start( 2000000 );
- delete wait;
- ctx = iContextUtility->GetContextL( KHgCFTypeContact);
- STIF_ASSERT_TRUE_DESC( ctx != NULL, _L( "Context not found" ) );
- delete ctx;
-
- CVPbkContactLinkArray* ca = CVPbkContactLinkArray::NewLC();
- ca->AppendL( newContact->CreateLinkLC() );
- CleanupStack::Pop();
- wait = CWait::NewL();
- struct TDummyObs2 : public MVPbkBatchOperationObserver
- {
- CWait* iWait;
- TDummyObs2( CWait* aWait ) : iWait( aWait ) { }
- void StepComplete(
- MVPbkContactOperationBase& /*aOperation*/,
- TInt /*aStepSize*/ ) { }
- TBool StepFailed(
- MVPbkContactOperationBase& /*aOperation*/,
- TInt /*aStepSize*/, TInt /*aError*/ )
- {
- return EFalse;
- }
- void OperationComplete(
- MVPbkContactOperationBase& /*aOperation*/ ) { iWait->Stop(); }
- } dummyObs2( wait );
- MVPbkContactOperationBase* op = cm.DeleteContactsL( *ca, dummyObs2 );
- CleanupDeletePushL( op );
- wait->Start( 2000000 );
- delete wait;
- CleanupStack::PopAndDestroy( 4 ); // op, ca, newContact, m
-
- return KErrNone;
- }
-
-/*IMPORT_C void PublishContactContextL( const MDesCArray& aContactNames,
- const TTimeIntervalMicroSeconds32& aDelay = 0 );*/
-STIF_TESTDEFINE( T_PublishContactContextL6 )
- {
- CDesCArray* arr = new ( ELeave ) CDesC16ArrayFlat( 4 );
- CleanupStack::PushL( arr );
- arr->AppendL( _L( "first item" ) );
- arr->AppendL( _L( "second item" ) );
- arr->AppendL( _L( "third item" ) );
- iContextUtility->PublishContactContextL( *arr );
- iContextUtility->PublishContactContextL( *arr, 500000 );
- iContextUtility->PublishContactContextL( *arr );
- CleanupStack::PopAndDestroy( arr );
- return KErrNone;
- }
-
-/* IMPORT_C void PublishTextContextL( const TDesC& aText,
- const TTimeIntervalMicroSeconds32& aDelay = 0 );*/
-STIF_TESTDEFINE( T_PublishTextContextL )
- {
- iContextUtility->PublishTextContextL( KNullDesC, 100 );
- iContextUtility->PublishTextContextL( _L("fbngiuwetghorb rteogvhetui gherigth" ) );
- iContextUtility->PublishTextContextL( KNullDesC );
- iContextUtility->PublishTextContextL( _L("+35442754") );
- iContextUtility->PublishTextContextL( _L("35442754") );
- iContextUtility->PublishTextContextL( _L("abcdef@ghijk.com") );
- iContextUtility->PublishTextContextL( _L(" " ) );
- return KErrNone;
- }
-
-/* IMPORT_C void PublishUrlContextL( const TDesC& aUrl,
- const TTimeIntervalMicroSeconds32& aDelay = 0 );*/
-STIF_TESTDEFINE( T_PublishUrlContextL )
- {
- _LIT( KNokiaDomain, "http://www.nokia.com" );
- _LIT( KSomeDomain, "http://www.somedomain.com" );
- iContextUtility->PublishUrlContextL( KNokiaDomain, 1000 );
- iContextUtility->PublishUrlContextL( KSomeDomain );
- iContextUtility->PublishUrlContextL( KNokiaDomain );
- HBufC* ctx = iContextUtility->GetContextL( KHgCFTypeUrl );
- STIF_ASSERT_TRUE_DESC( ctx != NULL, _L( "Context not found" ) );
- STIF_ASSERT_TRUE( 0 == ctx->Compare( KNokiaDomain ) );
- delete ctx;
- return KErrNone;
- }
-
-/* IMPORT_C void PublishTimeContextL( const TTime& aTime,
- const TTimeIntervalMicroSeconds32& aDelay = 0 );*/
-STIF_TESTDEFINE( T_PublishTimeContextL )
- {
- TTime t( 0 );
- iContextUtility->PublishTimeContextL( t, 100 );
- iContextUtility->PublishTimeContextL( t );
- HBufC* ctx = iContextUtility->GetContextL( KHgCFTypeActiveDate );
- STIF_ASSERT_TRUE_DESC( ctx != NULL, _L( "Context not found" ) );
- delete ctx;
- return KErrNone;
- }
-
-/* IMPORT_C void PublishPhotoContextL( const TDesC& aFilename,
- const TTimeIntervalMicroSeconds32& aDelay = 0 );*/
-STIF_TESTDEFINE( T_PublishPhotoContextL )
- {
- _LIT( KJpegPath, "c:\\image.jpg" );
- _LIT( KPngPath, "c:\\image.png" );
- iContextUtility->PublishPhotoContextL( KJpegPath, 100 );
- iContextUtility->PublishPhotoContextL( KPngPath, 0 );
- iContextUtility->PublishPhotoContextL( KJpegPath );
- HBufC* ctx = iContextUtility->GetContextL( KHgCFTypePhoto );
- STIF_ASSERT_TRUE_DESC( ctx != NULL, _L( "Context not found" ) );
- STIF_ASSERT_TRUE( 0 == ctx->Compare(KJpegPath) );
- delete ctx;
-
- iContextUtility->PublishPhotoContextL( KPngPath, 100000 );
- ctx = iContextUtility->GetContextL( KHgCFTypePhoto );
- STIF_ASSERT_TRUE_DESC( ctx != NULL, _L( "Context not found" ) );
- STIF_ASSERT_TRUE( 0 == ctx->Compare(KJpegPath) );
- delete ctx;
- return KErrNone;
- }
-
-/* IMPORT_C void PublishPhotoContextL( TItemId aMdeItemId,
- CMdESession& aMdeSession,
- const TTimeIntervalMicroSeconds32& aDelay = 0 );*/
-STIF_TESTDEFINE( T_PublishPhotoContextL2 )
- {
- CWait* wait = CWait::NewLC();
- struct TObs : public MMdESessionObserver {
- CWait* iWait;
- TObs( CWait* aWait ) : iWait( aWait ) { }
- void HandleSessionOpened( CMdESession& /*aSession*/, TInt /*aError*/ ) { iWait->Stop(); }
- void HandleSessionError( CMdESession& /*aSession*/, TInt /*aError*/ ) { }
- } mdeobs( wait );
- CMdESession* s = CMdESession::NewLC( mdeobs );
- wait->Start( 5000000 );
- // invalid item id
- TRAPD( err, iContextUtility->PublishPhotoContextL( 0, *s ) );
- STIF_ASSERT_TRUE( err != KErrNone ); // leave should have occured
- for ( TInt i = 0; i < 100; ++i )
- {
- TRAP_IGNORE( iContextUtility->PublishPhotoContextL( TItemId( i ), *s ) );
- }
- CleanupStack::PopAndDestroy( 2 );
- return KErrNone;
- }
-
-/* IMPORT_C void PublishTvContextL( const TDesC& aChannelName,
- const TDesC& aProgramName, const TDesC& aProgramDescription,
- const TDesC& aGenre ); */
-STIF_TESTDEFINE( T_PublishTvContextL )
- {
- _LIT( K1, "channel A" );
- _LIT( K2, "program X" );
- _LIT( K3, "very interesting program" );
- iContextUtility->PublishTvContextL( K1, K2, K3, KNullDesC );
- iContextUtility->PublishTvContextL( K1, K2, K3, KNullDesC );
- iContextUtility->PublishTvContextL( K1, K2, KNullDesC, KNullDesC );
- HBufC* ctx = iContextUtility->GetContextL( KHgCFTypeTvProgramName );
- STIF_ASSERT_TRUE_DESC( ctx != NULL && !ctx->Compare( K2 ),
- _L( "Context not found" ) );
- delete ctx;
-
- iContextUtility->PublishTvContextL( KNullDesC, K2, KNullDesC, KNullDesC );
- iContextUtility->PublishTvContextL( KNullDesC, KNullDesC, KNullDesC, KNullDesC );
- iContextUtility->PublishTvContextL( KNullDesC, K2, KNullDesC, KNullDesC );
- iContextUtility->PublishTvContextL( KNullDesC, KNullDesC, KNullDesC, _L("movie") );
- ctx = iContextUtility->GetContextL( KHgCFTypeTvChannelName );
- STIF_ASSERT_TRUE_DESC( ctx != NULL && !ctx->Compare( KHgCFValueUnknownInfo ),
- _L( "Context not found" ) );
- delete ctx;
- return KErrNone;
- }
-
-/* IMPORT_C void PublishServiceIdL( const TDesC& aServiceId,
- const TDesC& aAccountId,
- const TTimeIntervalMicroSeconds32& aDelay = 0 ); */
-STIF_TESTDEFINE( T_PublishServiceIdL )
- {
- iContextUtility->PublishServiceIdL( _L("Ovi"), _L("someid") );
- iContextUtility->PublishServiceIdL( _L("Ovi"), _L("someid"), 1000000 );
- iContextUtility->PublishServiceIdL( _L("Ovi"), _L("someid") );
- }
-
-/* IMPORT_C void AddMusicContextInfoL(
- const TDesC& aKey,
- const TDesC& aData ); */
-STIF_TESTDEFINE( T_AddMusicContextInfoL )
- {
- // Fetch the pointer to hash table for testing purposes
- RPtrHashMap<TDesC, TDesC>* hash = GetImplHashTablePtr();
- _LIT( KPlaying, "Playing" );
- _LIT( KArtist, "Hans Zimmer");
- _LIT( KTitle, "Why so serious" );
- _LIT( KAlbum, "Dark Knight" );
- _LIT( KGenre, "Soundtrack" );
-
- STIF_ASSERT_TRUE_DESC( hash->Count() == 0, _L("There is stuff in the list!") );
- STIF_ASSERT_TRUE_DESC( hash->Find( KHgCFTypeMusicState ) == NULL, _L( "State in the list!" ) );
- STIF_ASSERT_TRUE_DESC( hash->Find( KHgCFTypeMusicArtist ) == NULL, _L( "Artist in the list!" ) );
- STIF_ASSERT_TRUE_DESC( hash->Find( KHgCFTypeMusicTitle ) == NULL, _L( "Title in the list!" ) );
- STIF_ASSERT_TRUE_DESC( hash->Find( KHgCFTypeMusicAlbum ) == NULL, _L( "Album in the list!" ) );
- STIF_ASSERT_TRUE_DESC( hash->Find( KHgCFTypeMusicAlbumArt ) == NULL, _L( "Art in the list!" ) );
- STIF_ASSERT_TRUE_DESC( hash->Find( KHgCFTypeMusicUri ) == NULL, _L( "Uri in the list!" ) );
- STIF_ASSERT_TRUE_DESC( hash->Find( KHgCFTypeMusicGenre ) == NULL, _L( "Genre in the list!" ) );
- STIF_ASSERT_TRUE_DESC( hash->Find( KHgCFTypeMusicType ) == NULL, _L( "Type in the list!" ) );
-
- // No room for empty keys
- TRAPD( err, iContextUtility->AddMusicContextInfoL( KNullDesC, KPlaying ) );
- STIF_ASSERT_TRUE_DESC( err == KErrNotFound, _L( "Empty key didn't cause leave!" ) );
- STIF_ASSERT_TRUE_DESC( hash->Count() == 0, _L( "There is stuff in the list!" ) );
-
- // Fill all values and test they will be there.
- iContextUtility->AddMusicContextInfoL( KHgCFTypeMusicState, KPlaying );
- iContextUtility->AddMusicContextInfoL( KHgCFTypeMusicArtist, KArtist );
- iContextUtility->AddMusicContextInfoL( KHgCFTypeMusicTitle, KTitle );
- iContextUtility->AddMusicContextInfoL( KHgCFTypeMusicAlbum, KAlbum );
- iContextUtility->AddMusicContextInfoL( KHgCFTypeMusicAlbumArt, KHgCFValueUnknownInfo );
- iContextUtility->AddMusicContextInfoL( KHgCFTypeMusicUri, KNullDesC );
- iContextUtility->AddMusicContextInfoL( KHgCFTypeMusicGenre, KGenre );
- iContextUtility->AddMusicContextInfoL( KHgCFTypeMusicType, KHgCFValueMusicTypePlayer );
-
- STIF_ASSERT_TRUE_DESC( hash->Count() == 8, _L( "List should contain 8 items." ) );
- STIF_ASSERT_TRUE_DESC( !hash->Find( KHgCFTypeMusicState )->CompareC( KPlaying ),
- _L( "Wrong state in the table!" ) );
- STIF_ASSERT_TRUE_DESC( !hash->Find( KHgCFTypeMusicArtist )->CompareC( KArtist ),
- _L( "Wrong artist in the table!" ) );
- STIF_ASSERT_TRUE_DESC( !hash->Find( KHgCFTypeMusicTitle )->CompareC( KTitle ),
- _L( "Wrong title in the table!" ) );
- STIF_ASSERT_TRUE_DESC( !hash->Find( KHgCFTypeMusicAlbum )->CompareC( KAlbum ),
- _L( "Wrong album in the table!" ) );
- STIF_ASSERT_TRUE_DESC( !hash->Find( KHgCFTypeMusicAlbumArt )->CompareC( KHgCFValueUnknownInfo ),
- _L( "Wrong art in the table!" ) );
- STIF_ASSERT_TRUE_DESC( !hash->Find( KHgCFTypeMusicUri )->CompareC( KHgCFValueUnknownInfo ),
- _L( "Wrong uri in the table!" ) );
- STIF_ASSERT_TRUE_DESC( !hash->Find( KHgCFTypeMusicGenre )->CompareC( KGenre ),
- _L( "Wrong genre in the table!" ) );
- STIF_ASSERT_TRUE_DESC( !hash->Find( KHgCFTypeMusicType )->CompareC( KHgCFValueMusicTypePlayer ),
- _L( "Wrong type in the table!" ) );
-
- // An attempt to add same key twice, causes problems.
- TRAP( err, iContextUtility->AddMusicContextInfoL( KHgCFTypeMusicState, KPlaying ) );
- STIF_ASSERT_TRUE_DESC( err == KErrAlreadyExists, _L( "Adding same key should cause a leave!" ) );
- STIF_ASSERT_TRUE_DESC( hash->Count() == 8, _L( "List should contain 8 items!" ) );
-
- return KErrNone;
- }
-
-/** IMPORT_C void PublishMusicContextL(
- const TTimeIntervalMicroSeconds32& aDelay = 0 ); */
-STIF_TESTDEFINE( T_PublishMusicContextL )
- {
- RPtrHashMap<TDesC, TDesC>* hash = GetImplHashTablePtr();
- _LIT( KPlaying, "Playing" );
- _LIT( KArtist, "John Williams");
- _LIT( KTitle, "Raiders March" );
- _LIT( KAlbum, "Raiders of the Lost Ark" );
-
- STIF_ASSERT_TRUE_DESC( hash->Count() == 0, _L( "There is stuff in the list!" ) );
- TRAPD( err, iContextUtility->PublishMusicContextL() );
- STIF_ASSERT_TRUE_DESC( err == KErrNotReady, _L( "No point to publish anything, when list is empty!" ) );
-
- iContextUtility->AddMusicContextInfoL( KHgCFTypeMusicState, KPlaying );
- iContextUtility->AddMusicContextInfoL( KHgCFTypeMusicArtist, KArtist );
- iContextUtility->AddMusicContextInfoL( KHgCFTypeMusicTitle, KTitle );
- iContextUtility->AddMusicContextInfoL( KHgCFTypeMusicAlbum, KAlbum );
- iContextUtility->AddMusicContextInfoL( KHgCFTypeMusicAlbumArt, KHgCFValueUnknownInfo );
-
- iContextUtility->PublishMusicContextL();
- STIF_ASSERT_TRUE_DESC( hash->Count() == 0, _L( "There is stuff in the list!" ) );
-
- HBufC* musicState = iContextUtility->GetContextL( KHgCFTypeMusicState );
- HBufC* musicArtist = iContextUtility->GetContextL( KHgCFTypeMusicArtist );
- HBufC* musicTitle = iContextUtility->GetContextL( KHgCFTypeMusicTitle );
- HBufC* musicAlbum = iContextUtility->GetContextL( KHgCFTypeMusicAlbum );
- HBufC* musicAlbumArt = iContextUtility->GetContextL( KHgCFTypeMusicAlbumArt );
- HBufC* musicGeneralUri = iContextUtility->GetContextL( KHgCFTypeMusicUri );
- HBufC* musicGenre = iContextUtility->GetContextL( KHgCFTypeMusicGenre );
- HBufC* musicType = iContextUtility->GetContextL( KHgCFTypeMusicType );
-
- STIF_ASSERT_TRUE_DESC( musicState != NULL
- && !musicState->Compare( KPlaying ), _L( "Music context not found" ) );
- STIF_ASSERT_TRUE_DESC( musicArtist != NULL
- && !musicArtist->Compare( KArtist ), _L( "Artist context not found" ) );
- STIF_ASSERT_TRUE_DESC( musicTitle != NULL
- && !musicTitle->Compare( KTitle ), _L( "Title context not found" ) );
- STIF_ASSERT_TRUE_DESC( musicAlbum != NULL
- && !musicAlbum->Compare( KAlbum ), _L( "Album context not found" ) );
- STIF_ASSERT_TRUE_DESC( musicAlbumArt != NULL
- && !musicAlbumArt->Compare( KHgCFValueUnknownInfo ), _L( "Art context not found" ) );
- STIF_ASSERT_TRUE_DESC( musicGeneralUri != NULL
- && !musicGeneralUri->Compare( KHgCFValueUnknownInfo ), _L( "Uri context not found" ) );
- STIF_ASSERT_TRUE_DESC( musicGenre != NULL
- && !musicGenre->Compare( KHgCFValueUnknownInfo ), _L( "Genre context not found" ) );
- STIF_ASSERT_TRUE_DESC( musicType != NULL
- && !musicType->Compare( KHgCFValueUnknownInfo ), _L( "Type context not found" ) );
-
- delete musicState;
- delete musicArtist;
- delete musicTitle;
- delete musicAlbum;
- delete musicAlbumArt;
- delete musicGeneralUri;
- delete musicGenre;
- delete musicType;
-
- return KErrNone;
- }
-
-STIF_TESTDEFINE( T_PublishRadioContextL )
- {
- _LIT( KTestRadioName, "radio test name" );
- _LIT( KTestRadioUrl, "radio test url" );
- _LIT( KTestRadioFrequency, "radio test frequency" );
- _LIT( KTestRadioRDSPI, "radio test rdspi" );
-
- HBufC* ctxRadioName = NULL;
- HBufC* ctxRadioUrl = NULL;
- HBufC* ctxRadioFrequency = NULL;
- HBufC* ctxRadioRDSPI = NULL;
-
- RArray<TPtrC> testData;
- CleanupClosePushL(testData);
-
- // Empty Values
- iContextUtility->PublishRadioContextL(KNullDesC, KNullDesC, KNullDesC, KNullDesC);
- ctxRadioName = iContextUtility->GetContextL(KHgCFTypeMusicRadioName);
- ctxRadioUrl = iContextUtility->GetContextL(KHgCFTypeMusicRadioUrl);
- ctxRadioFrequency = iContextUtility->GetContextL(KHgCFTypeMusicRadioFrequency);
- ctxRadioRDSPI = iContextUtility->GetContextL(KHgCFTypeMusicRadioRDSPI);
- STIF_ASSERT_TRUE_DESC( ctxRadioName != NULL && !ctxRadioName->Compare( KHgCFValueUnknownInfo ),
- _L( "Empty value: ctxRadioName error." ) );
- STIF_ASSERT_TRUE_DESC( ctxRadioUrl != NULL && !ctxRadioUrl->Compare( KHgCFValueUnknownInfo ),
- _L( "Empty value: ctxRadioUrl error." ) );
- STIF_ASSERT_TRUE_DESC( ctxRadioFrequency != NULL && !ctxRadioFrequency->Compare( KHgCFValueUnknownInfo ),
- _L( "Empty value: ctxRadioFrequency error." ) );
- STIF_ASSERT_TRUE_DESC( ctxRadioRDSPI != NULL && !ctxRadioRDSPI->Compare( KHgCFValueUnknownInfo ),
- _L( "Empty value: ctxRadioRDSPI error." ) );
- delete ctxRadioName;
- delete ctxRadioUrl;
- delete ctxRadioFrequency;
- delete ctxRadioRDSPI;
-
- // One value
- testData.Reset();
- testData.ReserveL(16);
- for(TInt i = 0; i < 12; i++)
- {
- testData.AppendL(KNullDesC());
- }
- testData.Insert(KTestRadioName(), 0);
- testData.Insert(KTestRadioUrl(), 5);
- testData.Insert(KTestRadioFrequency(), 10);
- testData.Insert(KTestRadioRDSPI(), 15);
- for(TInt i = 0; i < 16; i += 4)
- {
- iContextUtility->PublishRadioContextL(testData[i], testData[i+1], testData[i+2], testData[i+3]);
- ctxRadioName = iContextUtility->GetContextL(KHgCFTypeMusicRadioName);
- ctxRadioUrl = iContextUtility->GetContextL(KHgCFTypeMusicRadioUrl);
- ctxRadioFrequency = iContextUtility->GetContextL(KHgCFTypeMusicRadioFrequency);
- ctxRadioRDSPI = iContextUtility->GetContextL(KHgCFTypeMusicRadioRDSPI);
- STIF_ASSERT_TRUE_DESC( ctxRadioName != NULL &&
- !ctxRadioName->Compare( testData[i].Length() ? testData[i] : KHgCFValueUnknownInfo() ),
- _L( "One value: ctxRadioName error." ) );
- STIF_ASSERT_TRUE_DESC( ctxRadioUrl != NULL &&
- !ctxRadioUrl->Compare( testData[i+1].Length() ? testData[i+1] : KHgCFValueUnknownInfo() ),
- _L( "One value: ctxRadioUrl error." ) );
- STIF_ASSERT_TRUE_DESC( ctxRadioFrequency != NULL &&
- !ctxRadioFrequency->Compare( testData[i+2].Length() ? testData[i+2] : KHgCFValueUnknownInfo() ),
- _L( "One value: ctxRadioFrequency error." ) );
- STIF_ASSERT_TRUE_DESC( ctxRadioRDSPI != NULL &&
- !ctxRadioRDSPI->Compare( testData[i+3].Length() ? testData[i+3] : KHgCFValueUnknownInfo() ),
- _L( "One value: ctxRadioRDSPI error." ) );
- delete ctxRadioName;
- delete ctxRadioUrl;
- delete ctxRadioFrequency;
- delete ctxRadioRDSPI;
- }
-
- // Two values
- testData.Reset();
- testData.ReserveL(24);
- for(TInt i = 0; i < 12; i++)
- {
- testData.AppendL(KNullDesC());
- }
- testData.Insert(KTestRadioName(), 0);
- testData.Insert(KTestRadioUrl(), 1);
- testData.Insert(KTestRadioName(), 4);
- testData.Insert(KTestRadioFrequency(), 6);
- testData.Insert(KTestRadioName(), 8);
- testData.Insert(KTestRadioRDSPI(), 11);
- testData.Insert(KTestRadioUrl(), 13);
- testData.Insert(KTestRadioFrequency(), 14);
- testData.Insert(KTestRadioUrl(), 17);
- testData.Insert(KTestRadioRDSPI(), 19);
- testData.Insert(KTestRadioFrequency(), 22);
- testData.Insert(KTestRadioRDSPI(), 23);
- for(TInt i = 0; i < 24; i += 4)
- {
- iContextUtility->PublishRadioContextL(testData[i], testData[i+1], testData[i+2], testData[i+3]);
- ctxRadioName = iContextUtility->GetContextL(KHgCFTypeMusicRadioName);
- ctxRadioUrl = iContextUtility->GetContextL(KHgCFTypeMusicRadioUrl);
- ctxRadioFrequency = iContextUtility->GetContextL(KHgCFTypeMusicRadioFrequency);
- ctxRadioRDSPI = iContextUtility->GetContextL(KHgCFTypeMusicRadioRDSPI);
- STIF_ASSERT_TRUE_DESC( ctxRadioName != NULL &&
- !ctxRadioName->Compare( testData[i].Length() ? testData[i] : KHgCFValueUnknownInfo() ),
- _L( "Two values: ctxRadioName error." ) );
- STIF_ASSERT_TRUE_DESC( ctxRadioUrl != NULL &&
- !ctxRadioUrl->Compare( testData[i+1].Length() ? testData[i+1] : KHgCFValueUnknownInfo() ),
- _L( "Two values: ctxRadioUrl error." ) );
- STIF_ASSERT_TRUE_DESC( ctxRadioFrequency != NULL &&
- !ctxRadioFrequency->Compare( testData[i+2].Length() ? testData[i+2] : KHgCFValueUnknownInfo() ),
- _L( "Two values: ctxRadioFrequency error." ) );
- STIF_ASSERT_TRUE_DESC( ctxRadioRDSPI != NULL &&
- !ctxRadioRDSPI->Compare( testData[i+3].Length() ? testData[i+3] : KHgCFValueUnknownInfo() ),
- _L( "Two values: ctxRadioRDSPI error." ) );
- delete ctxRadioName;
- delete ctxRadioUrl;
- delete ctxRadioFrequency;
- delete ctxRadioRDSPI;
- }
-
- // Three values
- testData.Reset();
- testData.ReserveL(16);
- for(TInt i = 0; i < 4; i++)
- {
- testData.AppendL(KTestRadioName());
- testData.AppendL(KTestRadioUrl());
- testData.AppendL(KTestRadioFrequency());
- testData.AppendL(KTestRadioRDSPI());
- }
- testData.Remove(3);
- testData.Insert(KNullDesC(), 3);
- testData.Remove(6);
- testData.Insert(KNullDesC(), 6);
- testData.Remove(9);
- testData.Insert(KNullDesC(), 9);
- testData.Remove(12);
- testData.Insert(KNullDesC(), 12);
- for(TInt i = 0; i < 16; i += 4)
- {
- iContextUtility->PublishRadioContextL(testData[i], testData[i+1], testData[i+2], testData[i+3]);
- ctxRadioName = iContextUtility->GetContextL(KHgCFTypeMusicRadioName);
- ctxRadioUrl = iContextUtility->GetContextL(KHgCFTypeMusicRadioUrl);
- ctxRadioFrequency = iContextUtility->GetContextL(KHgCFTypeMusicRadioFrequency);
- ctxRadioRDSPI = iContextUtility->GetContextL(KHgCFTypeMusicRadioRDSPI);
- STIF_ASSERT_TRUE_DESC( ctxRadioName != NULL &&
- !ctxRadioName->Compare( testData[i].Length() ? testData[i] : KHgCFValueUnknownInfo() ),
- _L( "Three values: ctxRadioName error." ) );
- STIF_ASSERT_TRUE_DESC( ctxRadioUrl != NULL &&
- !ctxRadioUrl->Compare( testData[i+1].Length() ? testData[i+1] : KHgCFValueUnknownInfo() ),
- _L( "Three values: ctxRadioUrl error." ) );
- STIF_ASSERT_TRUE_DESC( ctxRadioFrequency != NULL &&
- !ctxRadioFrequency->Compare( testData[i+2].Length() ? testData[i+2] : KHgCFValueUnknownInfo() ),
- _L( "Three values: ctxRadioFrequency error." ) );
- STIF_ASSERT_TRUE_DESC( ctxRadioRDSPI != NULL &&
- !ctxRadioRDSPI->Compare( testData[i+3].Length() ? testData[i+3] : KHgCFValueUnknownInfo() ),
- _L( "Three values: ctxRadioRDSPI error." ) );
- delete ctxRadioName;
- delete ctxRadioUrl;
- delete ctxRadioFrequency;
- delete ctxRadioRDSPI;
- }
-
- // Four values
- iContextUtility->PublishRadioContextL(KTestRadioName, KTestRadioUrl, KTestRadioFrequency, KTestRadioRDSPI);
- ctxRadioName = iContextUtility->GetContextL(KHgCFTypeMusicRadioName);
- ctxRadioUrl = iContextUtility->GetContextL(KHgCFTypeMusicRadioUrl);
- ctxRadioFrequency = iContextUtility->GetContextL(KHgCFTypeMusicRadioFrequency);
- ctxRadioRDSPI = iContextUtility->GetContextL(KHgCFTypeMusicRadioRDSPI);
- STIF_ASSERT_TRUE_DESC( ctxRadioName != NULL && !ctxRadioName->Compare( KTestRadioName ),
- _L( "Four values: ctxRadioName error." ) );
- STIF_ASSERT_TRUE_DESC( ctxRadioUrl != NULL && !ctxRadioUrl->Compare( KTestRadioUrl ),
- _L( "Four values: ctxRadioUrl error." ) );
- STIF_ASSERT_TRUE_DESC( ctxRadioFrequency != NULL && !ctxRadioFrequency->Compare( KTestRadioFrequency ),
- _L( "Four values: ctxRadioFrequency error." ) );
- STIF_ASSERT_TRUE_DESC( ctxRadioRDSPI != NULL && !ctxRadioRDSPI->Compare( KTestRadioRDSPI ),
- _L( "Four values: ctxRadioRDSPI error." ) );
- delete ctxRadioName;
- delete ctxRadioUrl;
- delete ctxRadioFrequency;
- delete ctxRadioRDSPI;
-
- CleanupStack::PopAndDestroy(&testData);
-
- return KErrNone;
- }
-
-#endif
-
-// end of file
--- a/homescreensrv_plat/context_utility_api/tsrc/src/wait.cpp Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,143 +0,0 @@
-/*
-* Copyright (c) 2006-2006 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: CWait class implementation
-*
-*/
-
-
-#include "wait.h"
-
-// CONSTANTS
-
-_LIT( KPanicCat, "ActTimSche" );
-
-enum TPanicReason
- {
- EAlreadyStarted
- };
-
-LOCAL_C void Panic( TInt aCode )
- {
- User::Panic( KPanicCat, aCode );
- }
-
-// MEMBER FUNCTIONS
-
-CWait* CWait::NewL()
- {
-
- CWait* self =
- CWait::NewLC();
- CleanupStack::Pop( self );
-
- return self;
- }
-
-CWait* CWait::NewLC()
- {
-
- CWait* self =
- new( ELeave ) CWait;
- CleanupStack::PushL( self );
- self->ConstructL();
-
- return self;
- }
-
-CWait::CWait():
- CTimer( EPriorityStandard )
- {
-
- // Double check if base class adds active object into scheduler
- if( !IsAdded() )
- {
- CActiveScheduler::Add( this );
- }
- }
-
-void CWait::ConstructL()
- {
-
- // Do base constructions
- CTimer::ConstructL();
-
- // Initialize active scheduler wait
- iWait = new( ELeave ) CActiveSchedulerWait;
- }
-
-// Destructor
-CWait::~CWait()
- {
-
- Cancel();
- delete iWait;
- }
-
-// METHODS
-
-//-----------------------------------------------------------------------------
-// CWait::Start
-//-----------------------------------------------------------------------------
-//
-void CWait::Start(
- const TTimeIntervalMicroSeconds32& aInterval )
- {
-
- __ASSERT_ALWAYS( !IsActive(), Panic( EAlreadyStarted ) );
-
- After( aInterval );
- iWait->Start();
- }
-
-//-----------------------------------------------------------------------------
-// CWait::Stop
-//-----------------------------------------------------------------------------
-//
-void CWait::Stop()
- {
-
- Cancel();
- }
-
-//-----------------------------------------------------------------------------
-// CWait::RunL
-//-----------------------------------------------------------------------------
-//
-void CWait::RunL()
- {
-
- // Double check that wait really started
- if( iWait->IsStarted() )
- {
- iWait->AsyncStop();
- }
- }
-
-//-----------------------------------------------------------------------------
-// CWait::DoCancel
-//-----------------------------------------------------------------------------
-//
-void CWait::DoCancel()
- {
-
- // Double check that wait really started
- CTimer::DoCancel();
- if( iWait->IsStarted() )
- {
- iWait->AsyncStop();
- }
- }
-
-
-// end of file
--- a/homescreensrv_plat/context_utility_api/tsrc/src/wait.h Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,80 +0,0 @@
-/*
-* 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".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: CWait class declaration.
-*
-*/
-
-
-
-#ifndef C_WAIT_H
-#define C_WAIT_H
-
-#include <e32base.h>
-
-/**
-* Timed active scheduler wait.
-* This class wraps inside a timer and scheduler wait.
-* Wait will be automatically stopped after specified time.
-*/
-NONSHARABLE_CLASS( CWait ): public CTimer
- {
- public: // Constructors and destructor
-
- // Two-phased constructor.
- static CWait* NewL();
- static CWait* NewLC();
-
- // Destructor.
- virtual ~CWait();
-
- public: // New methods
-
- /**
- * Starts waiting in the scheduler.
- * Wait will be automatically stopped after aInterval amount
- * of time has passed.
- *
- * @param aInterval Interval after wait will be stopped.
- * @return None
- */
- void Start( const TTimeIntervalMicroSeconds32& aInterval );
-
- /**
- * Stops scheduler wait.
- *
- * @param None
- * @return None
- */
- void Stop();
-
- private: // From base classes
-
- // @see CActive
- void RunL();
-
- // @see CActive
- void DoCancel();
-
- private:
-
- CWait();
- void ConstructL();
-
- private: // Data
-
- // Own: Active scheduler wait
- CActiveSchedulerWait* iWait;
- };
-
-#endif
--- a/homescreensrv_plat/context_utility_api/tsrc/testbase/hgtestbase.cpp Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,281 +0,0 @@
-/*
-* Copyright (c) 2002 - 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: hgtestbase class member functions
-*
-*/
-
-
-
-// INCLUDE FILES
-#include <Stiftestinterface.h>
-#include "hgtestbase.h"
-#include <e32math.h>
-#include <e32math.h>
-#include <aknappui.h>
-
-// ============================ MEMBER FUNCTIONS ===============================
-
-// -----------------------------------------------------------------------------
-// CHgTestBase::CHgTestBase
-// C++ default constructor can NOT contain any code, that
-// might leave.
-// -----------------------------------------------------------------------------
-//
-CHgTestBase::CHgTestBase()
- {
- }
-
-// -----------------------------------------------------------------------------
-// CHgTestBase::ConstructL
-// Symbian 2nd phase constructor can leave.
-//
-// Note: If OOM test case uses STIF Logger, then STIF Logger must be created
-// with static buffer size parameter (aStaticBufferSize). Otherwise Logger
-// allocates memory from heap and therefore causes error situations with OOM
-// testing. For more information about STIF Logger construction, see STIF Users
-// Guide.
-// -----------------------------------------------------------------------------
-//
-void CHgTestBase::BaseConstructL( const TDesC& aTestPath,
- const TDesC& aTestFile )
- {
- iLog = CStifLogger::NewL( aTestPath,
- aTestFile);
-
- // Sample how to use logging
- _LIT( KLogStart, "Logging starts!" );
- iLog->Log( KLogStart );
-
- iVersionLogged = EFalse;
- iNumberOfTestCases = 0;
-
- // Construct active scheduler
- iActiveScheduler = new ( ELeave ) CActiveScheduler;
-
- // Install active scheduler
- // We don't need to check whether an active scheduler is already installed
- // as this is a new thread, so there won't be one
- CActiveScheduler::Install ( iActiveScheduler );
- }
-
-// Destructor
-CHgTestBase::~CHgTestBase()
- {
-
- delete iTestDllName;
- delete iLog;
- //delete ENV_cleanup;
- delete iActiveScheduler;
- }
-
-// -----------------------------------------------------------------------------
-// CHgTestBase::InitL
-// InitL is used to initialize the Test Module.
-// -----------------------------------------------------------------------------
-//
-TInt CHgTestBase::InitL(
- TFileName& /*aIniFile*/,
- TBool /*aFirstTime*/ )
- {
- return KErrNone;
-
- }
-
-// -----------------------------------------------------------------------------
-// CHgTestBase::GetTestCasesL
-// GetTestCases is used to inquire test cases from the Test Module. Test
-// cases are stored to array of test cases. The Test Framework will be
-// the owner of the data in the RPointerArray after GetTestCases return
-// and it does the memory deallocation.
-// -----------------------------------------------------------------------------
-//
-TInt CHgTestBase::GetTestCasesL(
- const TFileName& /*aConfig*/,
- RPointerArray<TTestCaseInfo>& aTestCases )
- {
- TTestResult dummyResult;
- return MainTestL(CHgTestBase::EEnumerateTestCases, -1, aTestCases, dummyResult);
- }
-
-// -----------------------------------------------------------------------------
-// CHgTestBase::OOMTestQueryL
-// Used to check if a particular test case should be run in OOM conditions and
-// which memory allocations should fail.
-// -----------------------------------------------------------------------------
-//
-TBool CHgTestBase::OOMTestQueryL(
- const TFileName& /* aTestCaseFile */,
- const TInt /*aCaseNumber*/,
- TOOMFailureType& /* aFailureType */,
- TInt& /*aFirstMemFailure*/,
- TInt& /*aLastMemFailure*/ )
- {
- return EFalse;
- }
-
-// -----------------------------------------------------------------------------
-// CHgTestBase::OOMTestInitializeL
-// Used to perform the test environment setup for a particular OOM test case.
-// Test Modules may use the initialization file to read parameters for Test
-// Module initialization but they can also have their own configure file or
-// some other routine to initialize themselves.
-//
-// NOTE: User may add implementation for OOM test environment initialization.
-// Usually no implementation is required.
-// -----------------------------------------------------------------------------
-//
-void CHgTestBase::OOMTestInitializeL(
- const TFileName& /* aTestCaseFile */,
- const TInt /* aCaseNumber */ )
- {
- }
-
-// -----------------------------------------------------------------------------
-// CHgTestBase::OOMHandleWarningL
-// In some cases the heap memory allocation should be skipped, either due to
-// problems in the OS code or components used by the code being tested, or even
-// inside the tested components which are implemented this way on purpose (by
-// design), so it is important to give the tester a way to bypass allocation
-// failures.
-//
-// NOTE: User may add implementation for OOM test warning handling. Usually no
-// implementation is required.
-// -----------------------------------------------------------------------------
-//
-void CHgTestBase::OOMHandleWarningL(
- const TFileName& /* aTestCaseFile */,
- const TInt /* aCaseNumber */,
- TInt& /* aFailNextValue */ )
- {
- }
-
-// -----------------------------------------------------------------------------
-// CHgTestBase::OOMTestFinalizeL
-// Used to perform the test environment cleanup for a particular OOM test case.
-//
-// NOTE: User may add implementation for OOM test environment finalization.
-// Usually no implementation is required.
-// -----------------------------------------------------------------------------
-//
-void CHgTestBase::OOMTestFinalizeL(
- const TFileName& /* aTestCaseFile */,
- const TInt /* aCaseNumber */ )
- {
- }
-
-void CHgTestBase::SendTestModuleVersion( const TDesC& aModuleName )
- {
- TVersion moduleVersion;
- moduleVersion.iMajor = TEST_MODULE_VERSION_MAJOR;
- moduleVersion.iMinor = TEST_MODULE_VERSION_MINOR;
- moduleVersion.iBuild = TEST_MODULE_VERSION_BUILD;
-
- TBool newVersionOfMethod = ETrue;
- TestModuleIf().SendTestModuleVersion(moduleVersion, aModuleName, newVersionOfMethod);
- }
-
-// -----------------------------------------------------------------------------
-// CHgTestBase::RunTestCaseL
-// RunTestCaseL is used to run an individual test case specified
-// by aTestCase. Test cases that can be run may be requested from
-// Test Module by GetTestCases method before calling RunTestCase.
-// -----------------------------------------------------------------------------
-//
-TInt CHgTestBase::RunTestCaseL(
- const TInt aCaseNumber,
- const TFileName& /*aConfig*/,
- TTestResult& aResult )
- {
- if(!iVersionLogged)
- {
- CHgTestBase::SendTestModuleVersion( *iTestDllName );
- iVersionLogged = ETrue;
- }
-
- RPointerArray<TTestCaseInfo> aTestCases; //temporary
-
- /**
- * SetupL is responsible for inicialization of all fields (etc.) common for all testcases
- * MainTestL starts required testcase
- * TeardownL destroys all data that was created by SetupL
- */
- TInt errSetup = KErrNone;
- TInt errTestcase = KErrNone;
-
- if(aCaseNumber > iNumberOfTestCases)
- return KErrNotFound;
-
- __UHEAP_MARK;
-
- //TRAP(errSetup, MainTestL(CHgTestBase::ERunTestCase, STIF_RUN_SETUP, aTestCases, aResult);
- TRAP(errTestcase, MainTestL(CHgTestBase::ERunTestCase, aCaseNumber, aTestCases, aResult));
- // MainTestL(CHgTestBase::ERunTestCase, STIF_RUN_TEARDOWN, aTestCases, aResult));
-
- __UHEAP_MARKEND;
-
- if(errTestcase != KErrNone)
- {
- aResult.SetResult(errTestcase, _L("Testcase failed"));
- }
- if(errSetup != KErrNone)
- {
- aResult.SetResult(errSetup, _L("Setup or teardown failed"));
- }
-
- return KErrNone;
- }
-
-// -----------------------------------------------------------------------------
-// CHgTestBase::MainTestL
-// Method responsible for enumerating and running test cases (and also setup and teardown activities before
-// and after each test case).
-// -----------------------------------------------------------------------------
-//
-TInt CHgTestBase::MainTestL(CHgTestBase::TCallReason aRunReason,
- TInt aTestToRun,
- RPointerArray<TTestCaseInfo>& aTestCases,
- TTestResult& aResult )
- {
- if(aRunReason == CHgTestBase::ERunTestCase)
- {
- if(aTestToRun < 0)
- {
- iLog->Log(_L("Running setup or teardown"));
- }
- else
- {
- iLog->Log(_L("Running test case #%d"), aTestToRun);
- }
- }
- else
- {
- iLog->Log(_L("Enumerating test cases."));
- }
-
- TInt result = -1;
-
- // this method must be implemented in the test case
- result = RunTestL( aRunReason, aTestToRun, aTestCases, aResult );
-
- if(aRunReason != CHgTestBase::ERunTestCase)
- {
- iNumberOfTestCases = result;
- iLog->Log(_L("Enumeration completed."));
- }
-
- // Test case was executed
- return KErrNone;
- }
-
-// End of File
--- a/homescreensrv_plat/context_utility_api/tsrc/testbase/hgtestbase.h Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,233 +0,0 @@
-/*
-* Copyright (c) 2002 - 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: hgtestbase module.
-*
-*/
-
-
-#include <e32svr.h>
-#include "StifTestModule.h"
-#include <StifLogger.h>
-
-#include "hgtestbasemacros.h"
-
-// MACROS
-#define TEST_MODULE_VERSION_MAJOR 0
-#define TEST_MODULE_VERSION_MINOR 0
-#define TEST_MODULE_VERSION_BUILD 0
-
-// CLASS DECLARATION
-
-// FORWARD DECLARATIONS
-class CHgTestClass;
-class CEikonEnv;
-class CAknAppUi;
-
-// DATA TYPES
-typedef TInt (CHgTestClass::* TestFunction)(TTestResult&);
-
-/**
-* An internal structure containing a test case name and
-* the pointer to function doing the test
-*/
-class TCaseInfoInternal
-{
-public:
- const TText* iCaseName;
- TestFunction iMethod;
- TBool iIsOOMTest;
- TInt iFirstMemoryAllocation;
- TInt iLastMemoryAllocation;
-};
-
-// CLASS DECLARATION
-
-/**
-* A structure containing a test case name and
-* the pointer to function doing the test
-*/
-class TCaseInfo
-{
-public:
- TPtrC iCaseName;
- TestFunction iMethod;
- TBool iIsOOMTest;
- TInt iFirstMemoryAllocation;
- TInt iLastMemoryAllocation;
-
-TCaseInfo( const TText* a ) : iCaseName( (TText*) a )
- {
- };
-
-};
-
-class CHgTestBase : public CTestModuleBase
-{
-
-public: //Enums
- // Reason for running test method
- enum TCallReason
- {
- EEnumerateTestCases,
- ERunTestCase,
- };
-
-public: // Constructors and destructor
- /**
- * Destructor.
- */
- virtual ~CHgTestBase();
-
-public: // New functions
- static TInt CallStop( TAny* aWait )
- {
- (static_cast<CActiveSchedulerWait*>(aWait))->AsyncStop();
- }
-public: // Functions from base classes
-
- /**
- * From CTestModuleBase InitL is used to initialize the
- * test class object. It is called once for every instance of
- * TestModule test class object after its creation.
- * @param aIniFile Initialization file for the test module (optional)
- * @param aFirstTime Flag is true when InitL is executed for first
- * created instance of test class object
- * @return Symbian OS error code
- */
- TInt InitL( TFileName& aIniFile, TBool aFirstTime );
-
- /**
- * From CTestModuleBase GetTestCasesL is used to inquiry test cases
- * from test class object.
- * @param aTestCaseFile Test case file (optional)
- * @param aTestCases Array of TestCases returned to test framework
- * @return Symbian OS error code
- */
- TInt GetTestCasesL( const TFileName& aTestCaseFile,
- RPointerArray<TTestCaseInfo>& aTestCases );
-
-
- /**
- * From CTestModuleBase; OOMTestQueryL is used to specify is particular
- * test case going to be executed using OOM conditions
- * @param aTestCaseFile Test case file (optional)
- * @param aCaseNumber Test case number (optional)
- * @param aFailureType OOM failure type (optional)
- * @param aFirstMemFailure The first heap memory allocation failure value (optional)
- * @param aLastMemFailure The last heap memory allocation failure value (optional)
- * @return TBool
- */
- virtual TBool OOMTestQueryL( const TFileName& /* aTestCaseFile */,
- const TInt /* aCaseNumber */,
- TOOMFailureType& aFailureType,
- TInt& /* aFirstMemFailure */,
- TInt& /* aLastMemFailure */ );
-
- /**
- * From CTestModuleBase; OOMTestInitializeL may be used to initialize OOM
- * test environment
- * @param aTestCaseFile Test case file (optional)
- * @param aCaseNumber Test case number (optional)
- * @return None
- */
- virtual void OOMTestInitializeL( const TFileName& /* aTestCaseFile */,
- const TInt /* aCaseNumber */ );
-
- /**
- * From CTestModuleBase; OOMHandleWarningL
- * @param aTestCaseFile Test case file (optional)
- * @param aCaseNumber Test case number (optional)
- * @param aFailNextValue FailNextValue for OOM test execution (optional)
- * @return None
- *
- * User may add implementation for OOM test warning handling. Usually no
- * implementation is required.
- */
- virtual void OOMHandleWarningL( const TFileName& /* aTestCaseFile */,
- const TInt /* aCaseNumber */,
- TInt& /* aFailNextValue */);
-
- /**
- * From CTestModuleBase; OOMTestFinalizeL may be used to finalize OOM
- * test environment
- * @param aTestCaseFile Test case file (optional)
- * @param aCaseNumber Test case number (optional)
- * @return None
- *
- */
- virtual void OOMTestFinalizeL( const TFileName& /* aTestCaseFile */,
- const TInt /* aCaseNumber */ );
-
- /**
- * Method used to log version of test module
- */
- void SendTestModuleVersion( const TDesC& aTestPath );
-
-private:
- /**
- * From CTestModuleBase RunTestCaseL is used to run an individual
- * test case.
- * @param aCaseNumber Test case number
- * @param aTestCaseFile Test case file (optional)
- * @param aResult Test case result returned to test framework (PASS/FAIL)
- * @return Symbian OS error code (test case execution error, which is
- * not reported in aResult parameter as test case failure).
- */
- TInt RunTestCaseL( const TInt aCaseNumber,
- const TFileName& aTestCaseFile,
- TTestResult& aResult );
-
- /**
- * Method containing all test cases, setup and teardown sections.
- */
- TInt MainTestL(CHgTestBase::TCallReason aRunReason, TInt aTestToRun, RPointerArray<TTestCaseInfo>& aTestCases,
- TTestResult& aResult);
-
-protected:
-
- /**
- * C++ default constructor.
- */
- CHgTestBase();
-
- /**
- * By default Symbian 2nd phase constructor is private.
- */
- void BaseConstructL( const TDesC& aTestPath,
- const TDesC& aTestFile );
-
- /**
- * Put here the #include of the test cases cpp file
- */
- virtual TInt RunTestL(
- CHgTestBase::TCallReason aRunReason,
- TInt aTestToRun,
- RPointerArray<TTestCaseInfo>& aTestCases,
- TTestResult& aResult) = 0;
-
-protected: // Data
- // Pointer to test (function) to be executed
- TestFunction iMethod;
-
- // Pointer to logger
- CStifLogger * iLog;
-
- // Flag saying if version of test module was already sent
- TBool iVersionLogged;
- // Total number of test cases
- TInt iNumberOfTestCases;
- HBufC16* iTestDllName;
- // activescheduler for connecting
- CActiveScheduler* iActiveScheduler;
-};
--- a/homescreensrv_plat/context_utility_api/tsrc/testbase/hgtestbasemacros.h Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,202 +0,0 @@
-/*
-* Copyright (c) 2002 - 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: hgtestbasemacros test module.
-*
-*/
-
-
-
-#ifndef hgtestbasemacros_H
-#define hgtestbasemacros_H
-
-_LIT( KAssertFailedEquals, "AssertEquals Failed [F:%s][L:%d]" );
-_LIT( KAssertFailedNotEquals, "AssertNotEquals Failed [F:%s][L:%d]" );
-_LIT( KAssertFailedNull, "AssertNull Failed [F:%s][L:%d]" );
-_LIT( KAssertFailedNotNull, "AssertNotNull Failed [F:%s][L:%d]" );
-_LIT( KAssertFailedSame, "AssertSame Failed [F:%s][L:%d]" );
-_LIT( KAssertFailedNotSame, "AssertNotSame Failed [F:%s][L:%d]" );
-_LIT( KAssertFailedTrue, "AssertTrue Failed [F:%s][L:%d]" );
-_LIT( KAssertFailedFalse, "AssertFalse Failed [F:%s][L:%d]" );
-_LIT( KAssertFailedNotLeaves, "AssertNotLeaves Failed [F:%s][L:%d]" );
-_LIT( KAssertFailedLeaves, "AssertLeaves Failed [F:%s][L:%d]" );
-_LIT( KAssertFailedLeavesWith, "AssertLeavesWith Failed [F:%s][L:%d]" );
-
-
-#ifdef _UNICODE
- #define __STIF_WIDEN2(x) L ## x
- #define __STIF_WIDEN(x) __STIF_WIDEN2(x)
- #define __STIF_DBG_FILE__ __STIF_WIDEN(__FILE__)
-#else
- #define __STIF_DBG_FILE__ __FILE__
-#endif
-
-
-// Logs to the STIF log file AND to the RDebug
-#define STIF_LOG( aMessage ) \
- iLog->Log( _L( aMessage ) ); RDebug::Print( _L( aMessage ) );
-
-
-// Defines a separate test case which consists of two blocks - one for enumeration of test cases
-// second for running the testcase.
-#define STIF_TESTDEFINE( aTestName ) \
-_test_case_no++; \
-if( aRunReason == CHgTestBase::EEnumerateTestCases ) \
- { \
- TTestCaseInfo* newCase = new( ELeave ) TTestCaseInfo(); \
- CleanupStack::PushL( newCase ); \
- newCase->iCaseNumber = _test_case_no; \
- newCase->iTitle.Copy( _L( #aTestName ) ); \
- User::LeaveIfError(aTestCases.Append ( newCase ) ); \
- CleanupStack::Pop( newCase ); \
- } \
-else if(aRunReason == CHgTestBase::ERunTestCase && _test_case_no == aTestToRun)
-
-#define STIF_RUN_SETUP -1
-#define STIF_RUN_TEARDOWN -2
-
-// Defines a setup section of MainTestL method
-#define STIF_SETUP \
- if( aRunReason == CHgTestBase::ERunTestCase && aTestToRun == STIF_RUN_SETUP )
-
-// Defines a teardown section of MainTestL method
-#define STIF_TEARDOWN \
- if( aRunReason == CHgTestBase::ERunTestCase && aTestToRun == STIF_RUN_TEARDOWN )
-
-/*********************************************************************************
- * Assert Macros
- *********************************************************************************/
-#define __STIF_ASSERT_SHARED( aFunction, aMessage ) \
- if(!aFunction) \
- { \
- iLog->Log( aMessage, __STIF_DBG_FILE__, __LINE__ );\
- aResult.SetResult( KErrGeneral, _L("Testcase failed"));\
- User::Leave( KErrGeneral );\
- }
-
-#define __STIF_ASSERT_SHARED_DESC( aFunction, aMessage, aDesc ) \
- if(!aFunction) \
- { \
- iLog->Log( aMessage, __STIF_DBG_FILE__, __LINE__ );\
- aResult.SetResult( KErrGeneral, aDesc );\
- User::Leave( KErrGeneral );\
- } \
- else \
- { \
- aResult.SetResult( KErrNone, aDesc ); \
- }
-
-
-
-#define STIF_ASSERT_EQUALS( aExpected, aActual ) \
- __STIF_ASSERT_SHARED( AssertEquals( aExpected, aActual ) , KAssertFailedEquals );
-
-#define STIF_ASSERT_EQUALS_DESC( aExpected, aActual, aDescription ) \
- __STIF_ASSERT_SHARED_DESC( AssertEquals( aExpected, aActual ) , KAssertFailedEquals, aDescription );
-
-#define STIF_ASSERT_NOT_EQUALS( aExpected, aActual ) \
- __STIF_ASSERT_SHARED( !AssertEquals( aExpected, aActual ) , KAssertFailedNotEquals );
-
-#define STIF_ASSERT_NOT_EQUALS_DESC( aExpected, aActual, aDescription ) \
- __STIF_ASSERT_SHARED_DESC( !AssertEquals( aExpected, aActual ) , KAssertFailedNotEquals, aDescription );
-
-#define STIF_ASSERT_NULL( aPtr ) \
- __STIF_ASSERT_SHARED( AssertNull( aPtr ), KAssertFailedNull );
-
-#define STIF_ASSERT_NULL_DESC( aPtr, aDescription ) \
- __STIF_ASSERT_SHARED_DESC( AssertNull( aPtr ), KAssertFailedNull, aDescription );
-
-#define STIF_ASSERT_NOT_NULL( aPtr ) \
- __STIF_ASSERT_SHARED( !AssertNull( aPtr ), KAssertFailedNotNull );
-
-#define STIF_ASSERT_NOT_NULL_DESC( aPtr, aDescription ) \
- __STIF_ASSERT_SHARED_DESC( !AssertNull( aPtr ), KAssertFailedNotNull, aDescription );
-
-#define STIF_ASSERT_SAME( aExpectedPtr, aActualPtr ) \
- __STIF_ASSERT_SHARED( AssertSame( aExpectedPtr, aActualPtr ), KAssertFailedSame );
-
-#define STIF_ASSERT_SAME_DESC( aExpectedPtr, aActualPtr, aDescription ) \
- __STIF_ASSERT_SHARED_DESC( AssertSame( aExpectedPtr, aActualPtr ), KAssertFailedSame, aDescription );
-
-#define STIF_ASSERT_NOT_SAME( aExpectedPtr, aActualPtr) \
- __STIF_ASSERT_SHARED( !AssertSame( aExpectedPtr, aActualPtr ), KAssertFailedNotSame );
-
-#define STIF_ASSERT_NOT_SAME_DESC( aExpectedPtr, aActualPtr, aDescription ) \
- __STIF_ASSERT_SHARED_DESC( !AssertSame( aExpectedPtr, aActualPtr ), KAssertFailedNotSame, aDescription );
-
-#define STIF_ASSERT_TRUE( aCondition ) \
- __STIF_ASSERT_SHARED( AssertTrue( aCondition ), KAssertFailedTrue );
-
-#define STIF_ASSERT_TRUE_DESC( aCondition, aDescription ) \
- __STIF_ASSERT_SHARED_DESC( AssertTrue( aCondition ), KAssertFailedTrue, aDescription );
-
-#define STIF_ASSERT_FALSE( aCondition ) \
- __STIF_ASSERT_SHARED( !AssertTrue( aCondition ), KAssertFailedFalse );
-
-#define STIF_ASSERT_FALSE_DESC( aCondition, aDescription ) \
- __STIF_ASSERT_SHARED_DESC( !AssertTrue( aCondition), KAssertFailedFalse, aDescription );
-
-// Eclosing block is used to create the scope for the __leaveValue
-#define STIF_ASSERT_NOT_LEAVES( aStatement ) \
- { \
- TRAPD( __leaveValue, aStatement ); \
- __STIF_ASSERT_SHARED( AssertEquals( __leaveValue, KErrNone ), KAssertFailedNotLeaves ); \
- }
-
-#define STIF_ASSERT_NOT_LEAVES_DESC( aStatement, aDescription ) \
- { \
- TRAPD( __leaveValue, aStatement ); \
- __STIF_ASSERT_SHARED_DESC( AssertEquals( __leaveValue, KErrNone ), KAssertFailedNotLeaves, aDescription ); \
- }
-
-// Eclosing block is used to create the scope for the __leaveValue
-#define STIF_ASSERT_LEAVES( aStatement ) \
- { \
- TRAPD( __leaveValue, aStatement ); \
- __STIF_ASSERT_SHARED( !AssertEquals( __leaveValue, KErrNone ), KAssertFailedLeaves ); \
- }
-
-#define STIF_ASSERT_LEAVES_DESC( aStatement, aDescription ) \
- { \
- TRAPD( __leaveValue, aStatement ); \
- __STIF_ASSERT_SHARED_DESC( !AssertEquals( __leaveValue, KErrNone ), KAssertFailedLeaves, aDescription ); \
- }
-
-// Eclosing block is used to create the scope for the __leaveValue
-#define STIF_ASSERT_LEAVES_WITH( aLeaveCode, aStatement ) \
- { \
- TRAPD( __leaveValue, aStatement ); \
- __STIF_ASSERT_SHARED( AssertEquals( __leaveValue, aLeaveCode ), KAssertFailedLeaves ); \
- }
-
-#define STIF_ASSERT_LEAVES_WITH_DESC( aLeaveCode, aStatement, aDescription ) \
- { \
- TRAPD( __leaveValue, aStatement ); \
- __STIF_ASSERT_SHARED_DESC( AssertEquals( __leaveValue, aLeaveCode ), KAssertFailedLeaves, aDescription ); \
- }
-
-#define STIF_ASSERT_PANIC( aPanicCode, aStatement ) \
- { \
- TestModuleIf().SetExitReason( CTestModuleIf::EPanic, aPanicCode ); \
- aStatement; \
- }
-
-#define STIF_ASSERT_PANIC_DESC( aPanicCode, aStatement, aDescription ) \
- { \
- TestModuleIf().SetExitReason( CTestModuleIf::EPanic, aPanicCode ); \
- aResult.SetResult(KErrNone, aDescription); \
- aStatement; \
- }
-#include "sitfunitutils.inl"
-
-#endif
--- a/homescreensrv_plat/context_utility_api/tsrc/testbase/sitfunitutils.inl Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,96 +0,0 @@
-/*
-* Copyright (c) 2006 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: inline functions for the STIFUnit utils
-*
-*/
-
-
-template <class T>
-inline TBool AssertEquals(const T& aExpected, const T& aActual)
-/**
- * AssertEquals
- *
- * @prototype
- * @test
- *
- * @param aExpected - Expected result
- * @param aActual - Actual result
- * @return - True if equal
- */
- {
- if( aExpected==aActual )
- {
- return ETrue;
- }
- return EFalse;
- }
-
-template <class T>
-inline TBool AssertNull(const T* aPtr)
-/**
- * AssertNull
- *
- * @prototype
- * @test
- *
- * @param aPtr - Pointer
- * @return - True if NULL
- */
- {
- if( aPtr==NULL )
- {
- return ETrue;
- }
- return EFalse;
- }
-
-template <class T>
-inline TBool AssertSame(const T* aExpectedPtr, const T* aActualPtr)
-/**
- * AssertSame
- *
- * @prototype
- * @test
- *
- * @param aExpectedPtr - Expected pointer
- * @param aActualPtr - Actual pointer
- * @return - True if equal
- */
- {
- if( aExpectedPtr==aActualPtr )
- {
- return ETrue;
- }
- return EFalse;
- }
-
-inline TBool AssertTrue(const TBool& aCondition)
-/**
- * AssertTrue
- *
- * @prototype
- * @test
- *
- * @param aCondition - Condition
- * @return - True if aCondition is true
- */
- {
- if( !aCondition )
- {
- return EFalse;
- }
- return ETrue;
- }
-
-// End of File
--- a/homescreensrv_plat/context_utility_api/ui_context_utility_api.metaxml Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,18 +0,0 @@
-<?xml version="1.0" ?>
-<api id="7e268187c80d6b7d592393c2e770c2c3" dataversion="2.0">
- <name>UI Context Utility API</name>
- <description>Utility API for publishing context to the Context Framework</description>
- <type>c++</type>
- <collection>contextengine</collection>
- <libs>
- <lib name="hgcontextutility.lib" />
- </libs>
- <release category="platform" />
- <attributes>
- <!-- This indicates whether the api provedes separate html documentation -->
- <!-- or is the additional documentation generated from headers. -->
- <!-- If you are unsure then the value is "no" -->
- <htmldocprovided>no</htmldocprovided>
- <adaptation>no</adaptation>
- </attributes>
-</api>
--- a/homescreensrv_plat/group/bld.inf Wed Mar 03 15:38:34 2010 +0200
+++ b/homescreensrv_plat/group/bld.inf Wed May 12 13:36:47 2010 +0300
@@ -22,7 +22,6 @@
#include "../ai_utilities_api/group/bld.inf"
#include "../ai_plugin_management_api/group/bld.inf"
#include "../ai_plugin_information_api/group/bld.inf"
-#include "../ai_shortcut_command_api/group/bld.inf"
#include "../ai_variation_api/group/bld.inf"
#include "../action_handler_plugin_api/group/bld.inf"
#include "../content_harvester_plugin_api/group/bld.inf"
@@ -35,10 +34,8 @@
#include "../sapi_actionhandler/group/bld.inf"
#include "../sapi_homescreenplugin/group/bld.inf"
#include "../sapi_menucontent/group/bld.inf"
-#include "../shortcutplugin_extension_api/group/bld.inf"
#include "../xcfw_api/group/bld.inf"
#include "../idlefw_api/group/bld.inf"
#include "../hs_widget_publisher_api/group/bld.inf"
-#include "../context_utility_api/group/bld.inf"
#include "../hs_settings_api/group/bld.inf"
#include "../hs_content_control_api/group/bld.inf"
--- a/homescreensrv_plat/hs_content_control_api/inc/hscontentcontroller.h Wed Mar 03 15:38:34 2010 +0200
+++ b/homescreensrv_plat/hs_content_control_api/inc/hscontentcontroller.h Wed May 12 13:36:47 2010 +0300
@@ -62,25 +62,48 @@
{
public:
/**
- * Fills an array of CHsContentInfo. Both widget and template types are appended.
- * @param aArray Array of CHsContentInfo
+ * Returns the list of available Home screen widgets
+ * @param aArray List of widgets
+ * @return KErrNone on success, any of system wide error codes
*/
virtual TInt WidgetListL( CHsContentInfoArray& aArray ) = 0;
/**
- * Fills an array of CHsContentInfo. View types are appended.
- * @param aArray Array of CHsContentInfo
+ * Returns the list of Home screen widgets included in an application
+ * configuration or a view
+ * @param aInfo Content info defining the application configuration
+ * or the view which widget list is requested
+ * @param aArray List of widgets
+ * @return KErrNone on success, any of system wide error codes
+ */
+ virtual TInt WidgetListL( CHsContentInfo& aInfo, CHsContentInfoArray& aArray ) = 0;
+
+ /**
+ * Returns the list of available Home screen views
+ * @param aArray List of views
+ * @return KErrNone on success, any of system wide error codes
*/
virtual TInt ViewListL( CHsContentInfoArray& aArray ) = 0;
/**
- *
+ * Returns the list of available Home screen views included in an
+ * application configuration
+ * @param aInfo Content info defining the application configuration
+ * @param aArray List of views
+ * @return KErrNone on success, any of system wide error codes
+ */
+ virtual TInt ViewListL( CHsContentInfo& aInfo, CHsContentInfoArray& aArray ) = 0;
+
+ /**
+ * Returns the list of available Home screen application configurations
+ * @param aArray List of application configurations
+ * @return KErrNone on success, any of system wide error codes
*/
virtual TInt AppListL( CHsContentInfoArray& aArray ) = 0;
/**
- * Adds a widget to the active view.
- * @param aInfo Content info object
+ * Adds a widget to the active Home screen view.
+ * @param aInfo Widget request to be added
* @return KErrNone on success, any of system wide error codes,
* KHsErrorViewFull, KHsErrorMaxInstanceCountExceeded or
* KHsErrorDoesNotFit
@@ -89,37 +112,50 @@
/**
* Removes a widget from the configuration.
- * @param aInfo Content info object
+ * @param aInfo Widget request to be removed
+ * @return KErrNone on success, any of system wide error codes
*/
virtual TInt RemoveWidgetL( CHsContentInfo& aInfo ) = 0;
/**
- *
+ * Adds a view to the active Home screen application configuration.
+ * @param aInfo View request to be added
+ * @return KErrNone on success, any of system wide error codes
*/
virtual TInt AddViewL( CHsContentInfo& aInfo ) = 0;
/**
- *
+ * Removes a view from the configuration.
+ * @param aInfo View request to be removed
+ * @return KErrNone on success, any of system wide error codes
*/
virtual TInt RemoveViewL( CHsContentInfo& aInfo ) = 0;
/**
- *
+ * Activates the Home screen view
+ * @param aInfo View request to be activated
+ * @return KErrNone on success, any of system wide error codes
*/
virtual TInt ActivateViewL( CHsContentInfo& aInfo ) = 0;
/**
- *
+ * Activates the Home screen application configuration
+ * @param aInfo Application configuration request to be activated
+ * @return KErrNone on success, any of system wide error codes
*/
virtual TInt ActivateAppL( CHsContentInfo& aInfo ) = 0;
/**
- *
+ * Returns the active Home screen view
+ * @param aInfo Active view
+ * @return KErrNone on success, any of system wide error codes
*/
virtual TInt ActiveViewL( CHsContentInfo& aInfo ) = 0;
/**
- *
+ * Returns the active Home screen application configuration
+ * @param aInfo Active application configuration
+ * @return KErrNone on success, any of system wide error codes
*/
virtual TInt ActiveAppL( CHsContentInfo& aInfo ) = 0;
--- a/homescreensrv_plat/hs_content_control_api/inc/hscontentinfo.h Wed Mar 03 15:38:34 2010 +0200
+++ b/homescreensrv_plat/hs_content_control_api/inc/hscontentinfo.h Wed May 12 13:36:47 2010 +0300
@@ -333,6 +333,23 @@
IMPORT_C TBool IsWrt() const;
/**
+ * Sets whether an application confguration or a view is full
+ *
+ * @since S60 5.0
+ * @param aIsFull, ETrue if application configuration or a view is full
+ */
+ IMPORT_C void SetIsFull( TBool aIsFull );
+
+ /**
+ * Returns whether an application configuration or a view is full
+ *
+ * @since S60 5.0
+ * @return ETrue if application configuration or view is full,
+ * EFalse otherwise
+ */
+ IMPORT_C TBool IsFull() const;
+
+ /**
* Marshals Content Info data to a descriptor
*
* @since S60 5.0
@@ -407,6 +424,11 @@
* Flag to indicate whether this is a WRT widget
*/
TBool iIsWrt;
+
+ /**
+ * Flag to indicate wheter an application configuration or a view is full
+ */
+ TBool iIsFull;
};
#endif // HSCONTENTINFO_H
--- a/homescreensrv_plat/hs_settings_api/inc/hspluginsettings.h Wed Mar 03 15:38:34 2010 +0200
+++ b/homescreensrv_plat/hs_settings_api/inc/hspluginsettings.h Wed May 12 13:36:47 2010 +0300
@@ -18,7 +18,7 @@
#define C_CHomeScreenSettingsIf_H
#include <e32base.h>
-#include <LiwCommon.h> // for MLiwNotifyCallback
+#include <liwcommon.h> // for MLiwNotifyCallback
#include <mhomescreensettingsif.h>
#include <mhomescreensettingsobserver.h>
@@ -52,39 +52,59 @@
* @lib HomeScreenSettingsIf.lib
* @since S60 v5.0
*/
-class CHomescreenSettings:
+NONSHARABLE_CLASS( CHomescreenSettings ) :
public CBase,
public MLiwNotifyCallback,
public MHomescreenSettingsIf
{
+public: // static methods
+ /**
+ * Get instance to settings API.
+ *
+ * InitializeL must be called before calling this method.
+ * Otherwise NULL is returned. InitializeL and Instance
+ * must be called within same thread since TLS is used
+ * to storage instance data.
+ *
+ * @return CHomescreenSettings* Pointer to settings api.
+ * Can return NULL in case of
+ * error.
+ */
+ IMPORT_C static CHomescreenSettings* Instance();
+
+ /**
+ * Initialize settings api.
+ *
+ * There must be one UnInitialize call for each Initialize call
+ * in order to prevent memory leaking.
+ * (Implementation contains reference counting)
+ */
+ IMPORT_C static void InitializeL( const TDesC8& aAppUid );
+
+ /**
+ * Uninitialize settings api.
+ *
+ * There must be one UnInitialize call for each Initialize call
+ * in order to prevent memory leaking.
+ * (Implementation contains reference counting)
+ */
+ IMPORT_C static void UnInitialize();
+
public:
/**
- * Two-phased constructor.
+ * Add observer
*
- * @param aAppUid Application uid in integer format
- * @param aObserver Observer
+ * @param aObserver Observer to be added.
*/
- IMPORT_C static CHomescreenSettings* NewL(
- const TDesC8& aAppUid,
- const TDesC8& aPluginId,
- MHomeScreenSettingsObserver* aObserver );
+ IMPORT_C void AddObserverL( MHomeScreenSettingsObserver* aObserver );
/**
- * Two-phased constructor.
+ * Remove observer
*
- * @param aAppUid Application uid in integer format
- * @param aObserver Observer
- */
- IMPORT_C static CHomescreenSettings* NewLC(
- const TDesC8& aAppUid,
- const TDesC8& aPluginId,
- MHomeScreenSettingsObserver* aObserver );
+ * @param aObserver Observer to be removed.
+ */
+ IMPORT_C void RemoveObserver( MHomeScreenSettingsObserver* aObserver );
- /**
- * Destructor.
- */
- IMPORT_C virtual ~CHomescreenSettings();
-
public:
/**
* From MHomescreenSettingsIf
@@ -114,19 +134,33 @@
IMPORT_C TInt SetSettingsL(
const TDesC8& aPluginId,
const RPointerArray<CItemMap>& aSettings,
- const TBool aStoringParam );
-
-
+ const TBool aStoringParam );
+
protected:
/**
+ * Two-phased constructor.
+ *
+ * @param aAppUid Application uid in integer format
+ */
+ static CHomescreenSettings* NewL( const TDesC8& aAppUid );
+
+ /**
+ * Two-phased constructor.
+ *
+ * @param aAppUid Application uid in integer format
+ */
+ static CHomescreenSettings* NewLC(
+ const TDesC8& aAppUid );
+
+ /**
+ * Destructor.
+ */
+ virtual ~CHomescreenSettings();
+
+ /**
* Constructor.
- *
- * @param aAppUid Application uid in integer format
- * @param aObserver Observer
*/
- CHomescreenSettings(
- MHomeScreenSettingsObserver* aObserver,
- const TDesC8& aPluginId );
+ CHomescreenSettings();
/**
* Second phase constructor
@@ -182,7 +216,6 @@
const RPointerArray<CItemMap>& aSettings,
const TDesC8& aStoringParam );
-
protected:
/**
* From MLiwNotifyCallback
@@ -210,18 +243,16 @@
* Owned. Provides hsps services.
*/
MLiwInterface* iHspsInterface;
- /**
- * Not owned. Wrapper observer
- */
- MHomeScreenSettingsObserver* iObserver;
+
/*
* Asynchronous service request tarnsaction id
*/
TInt iTransactionId;
- /**
- * Plugin id
- */
- const TDesC8& iPluginId;
+
+ /*
+ * List of observers. Items not owned!
+ */
+ RPointerArray<MHomeScreenSettingsObserver> iObservers;
};
} //namespace HSPluginSettingsIf
--- a/homescreensrv_plat/hs_settings_api/inc/mhomescreensettingsobserver.h Wed Mar 03 15:38:34 2010 +0200
+++ b/homescreensrv_plat/hs_settings_api/inc/mhomescreensettingsobserver.h Wed May 12 13:36:47 2010 +0300
@@ -42,7 +42,7 @@
* @param aPluginUid Plugin uid
* @param aPluginId Plugin id
*/
- virtual TInt SettingsChangedL(
+ virtual void SettingsChangedL(
const TDesC8& aEvent,
const TDesC8& aPluginName,
const TDesC8& aPluginUid,
--- a/homescreensrv_plat/hs_widget_publisher_api/inc/hswidgetpublisher.h Wed Mar 03 15:38:34 2010 +0200
+++ b/homescreensrv_plat/hs_widget_publisher_api/inc/hswidgetpublisher.h Wed May 12 13:36:47 2010 +0300
@@ -203,7 +203,8 @@
/**
* Method publishes the provided widget.
* Widget needs to be published in order for the content
- * to be seen by the HS.
+ * to be seen by the HS. For correct behaviour during publishing, events received
+ * from HS must be handled appropriately.
*
* @code
* HsWidgetPublisher* hsPublisher = new HsWidgetPublisher( dataObserver );
--- a/homescreensrv_plat/hs_widget_publisher_api/inc/hswidgetpublisherimpl.h Wed Mar 03 15:38:34 2010 +0200
+++ b/homescreensrv_plat/hs_widget_publisher_api/inc/hswidgetpublisherimpl.h Wed May 12 13:36:47 2010 +0300
@@ -33,6 +33,7 @@
namespace Hs {
class HsWidget;
+class HsWidgetItem;
typedef std::map<std::string, std::wstring> WidgetContentIdMapType;
@@ -168,7 +169,7 @@
/**
*/
void InsertWidgetDataIdentifiersL( HsWidget& aWidget,
- CLiwDefaultMap* aDataMap );
+ CLiwDefaultMap* aDataMap, const TDesC& aContentType );
/**
*/
@@ -177,7 +178,7 @@
/**
*/
- void InsertWidgetItemsL( HsWidget& aWidget,
+ void InsertWidgetItemL( HsWidgetItem& aWidgetItem,
CLiwDefaultMap* aDataMap );
/**
@@ -190,7 +191,7 @@
/**
*/
- void InsertItemsTriggersL( HsWidget& aWidget,
+ void InsertItemTriggerL( HsWidgetItem& aWidgetItem,
CLiwDefaultMap* aTriggerMap );
/**
--- a/homescreensrv_plat/hs_widget_publisher_api/src/hswidgetpublisherimpl.cpp Wed Mar 03 15:38:34 2010 +0200
+++ b/homescreensrv_plat/hs_widget_publisher_api/src/hswidgetpublisherimpl.cpp Wed May 12 13:36:47 2010 +0300
@@ -198,7 +198,7 @@
{
// remove widget data when widget removed from screen
CLiwDefaultMap* cpdatamap = CLiwDefaultMap::NewLC();
- InsertWidgetDataIdentifiersL( aWidget, cpdatamap );
+ InsertWidgetDataIdentifiersL( aWidget, cpdatamap, KAll );
// removal may fail if the client has already removed the data
TRAP_IGNORE( RemoveFromCpsL( cpdatamap, KCpData ) );
mWidgetContentIds.erase( aWidget.getIdentifier() );
@@ -411,45 +411,55 @@
// ---------------------------------------------------------------------------
//
void HsWidgetPublisherImpl::PublishWidgetDataL( HsWidget& aWidget )
- {
- CLiwGenericParamList* inParam = &(mServiceHandler->InParamListL());
- CLiwGenericParamList* outParam = &(mServiceHandler->OutParamListL());
-
- TLiwGenericParam type(KType, TLiwVariant(KCpData));
- inParam->AppendL(type);
-
- CLiwDefaultMap* cpdatamap = CLiwDefaultMap::NewLC();
- InsertWidgetDataIdentifiersL( aWidget, cpdatamap );
-
- CLiwDefaultMap* datamap = CLiwDefaultMap::NewLC();
- InsertWidgetItemsL( aWidget, datamap );
- cpdatamap->InsertL( KDataMap, TLiwVariant( datamap ) );
- InsertWidgetACLL( cpdatamap );
-
- int count = aWidget.itemsCount();
- if( count > 0 )
- {
- CLiwDefaultMap* triggermap = CLiwDefaultMap::NewLC();
- InsertItemsTriggersL( aWidget, triggermap );
- cpdatamap->InsertL( KActionMap, TLiwVariant( triggermap ) );
- CleanupStack::PopAndDestroy( triggermap );
- }
+ {
+ CLiwGenericParamList* inParam = &(mServiceHandler->InParamListL());
+ CLiwGenericParamList* outParam = &(mServiceHandler->OutParamListL());
+ TLiwGenericParam type(KType, TLiwVariant(KCpData));
+
+ int count = aWidget.itemsCount();
+ for( int i = 0; i < count; i++ )
+ {
+ inParam->AppendL(type);
+ CLiwDefaultMap* cpdatamap = CLiwDefaultMap::NewLC();
- TLiwGenericParam item( KItem, TLiwVariant( cpdatamap ));
- inParam->AppendL( item );
- mServiceInterface->ExecuteCmdL( KAdd,
- *inParam, *outParam);
- TInt ret= ObtainErrorCode( *outParam );
+ HsWidgetItem* const widgetItem = aWidget.getWidgetItem( i );
+
+ // insert widget data identifiers
+ HBufC* itemName = StdStringToUnicodeLC( widgetItem->getItemName());
+ InsertWidgetDataIdentifiersL( aWidget, cpdatamap, *itemName );
+ CleanupStack::PopAndDestroy( itemName );
+
+ // insert widget item
+ CLiwDefaultMap* datamap = CLiwDefaultMap::NewLC();
+ InsertWidgetItemL( *widgetItem, datamap );
+ cpdatamap->InsertL( KDataMap, TLiwVariant( datamap ) );
+
+ // insert widget access control list
+ InsertWidgetACLL( cpdatamap );
+
+ // insert item triggers
+ CLiwDefaultMap* triggermap = CLiwDefaultMap::NewLC();
+ InsertItemTriggerL( *widgetItem, triggermap );
+ cpdatamap->InsertL( KActionMap, TLiwVariant( triggermap ) );
+ CleanupStack::PopAndDestroy( triggermap );
- CleanupStack::PopAndDestroy( datamap );
- CleanupStack::PopAndDestroy( cpdatamap );
-
- item.Reset();
- type.Reset();
- outParam->Reset();
- inParam->Reset();
- User::LeaveIfError( ret );
- }
+ // add to CPS
+ TLiwGenericParam item( KItem, TLiwVariant( cpdatamap ));
+ inParam->AppendL( item );
+ mServiceInterface->ExecuteCmdL( KAdd,
+ *inParam, *outParam);
+ TInt ret= ObtainErrorCode( *outParam );
+
+ CleanupStack::PopAndDestroy( datamap );
+ CleanupStack::PopAndDestroy( cpdatamap );
+
+ item.Reset();
+ outParam->Reset();
+ inParam->Reset();
+ User::LeaveIfError( ret );
+ }
+ type.Reset();
+ }
// ---------------------------------------------------------------------------
//
@@ -562,7 +572,7 @@
CLiwDefaultMap* cpdatamap = CLiwDefaultMap::NewLC();
TRAPD( err,
- InsertWidgetDataIdentifiersL( aWidget, cpdatamap );
+ InsertWidgetDataIdentifiersL( aWidget, cpdatamap, KAll );
RemoveFromCpsL( cpdatamap, KCpData ) );
if ( err != KErrNotFound )
{
@@ -773,7 +783,7 @@
// ---------------------------------------------------------------------------
//
void HsWidgetPublisherImpl::InsertWidgetDataIdentifiersL( HsWidget& aWidget,
- CLiwDefaultMap* aDataMap )
+ CLiwDefaultMap* aDataMap, const TDesC& aContentType )
{
WidgetContentIdMapType::const_iterator contentIdIter =
mWidgetContentIds.find( aWidget.getIdentifier() );
@@ -787,7 +797,7 @@
HBufC* publisherName = StdStringToUnicodeLC( GetPublisherNameL( aWidget ) );
aDataMap->InsertL( KPublisherId, TLiwVariant( *publisherName ) );
- aDataMap->InsertL( KContentType, TLiwVariant( KAll ) );
+ aDataMap->InsertL( KContentType, TLiwVariant( aContentType ) );
aDataMap->InsertL( KContentId, TLiwVariant( contentId ) );
CleanupStack::PopAndDestroy( publisherName );
@@ -809,6 +819,9 @@
aDataMap->InsertL( KWidgetName, TLiwVariant( *widgetName ) );
aDataMap->InsertL( KWidgetMaxInstance, TLiwVariant( 1 ) );
+ // this is needed by chswiplugin:
+ aDataMap->InsertL( KWidgetUid, TLiwVariant( iWidgetUid ));
+
const std::string& widgetDescriptionStd = aWidget.getDescription();
if ( widgetDescriptionStd.length() )
{
@@ -832,31 +845,25 @@
//
// ---------------------------------------------------------------------------
//
-void HsWidgetPublisherImpl::InsertWidgetItemsL ( HsWidget& aWidget,
+void HsWidgetPublisherImpl::InsertWidgetItemL ( HsWidgetItem& aWidgetItem,
CLiwDefaultMap* aDataMap )
{
- int count = aWidget.itemsCount();
- for (int index = 0; index < count; index++)
- {
- HsWidgetItem* const item = aWidget.getWidgetItem( index );
-
- TPtrC8 itemName = ((TUint8*)item->getItemName().c_str());
- if( item->isStringValue() )
- {
- TPtrC8 itemValue = ((TUint8*)item->getItemValue().c_str());
- HBufC* value = HBufC::NewLC( KUnicodeSize * itemValue.Length() );
- TPtr dest( value->Des() );
- CnvUtfConverter::ConvertToUnicodeFromUtf8( dest, itemValue );
-
- aDataMap->InsertL( itemName, TLiwVariant(*value ));
- CleanupStack::PopAndDestroy(value);
- }
- else
- {
- int itemValue = item->getItemValueInt();
- aDataMap->InsertL( itemName, TLiwVariant( TInt32( itemValue ) ));
- }
- }
+ TPtrC8 itemName = ((TUint8*)aWidgetItem.getItemName().c_str());
+ if( aWidgetItem.isStringValue() )
+ {
+ TPtrC8 itemValue = ((TUint8*)aWidgetItem.getItemValue().c_str());
+ HBufC* value = HBufC::NewLC( KUnicodeSize * itemValue.Length() );
+ TPtr dest( value->Des() );
+ CnvUtfConverter::ConvertToUnicodeFromUtf8( dest, itemValue );
+
+ aDataMap->InsertL( itemName, TLiwVariant(*value ));
+ CleanupStack::PopAndDestroy(value);
+ }
+ else
+ {
+ int itemValue = aWidgetItem.getItemValueInt();
+ aDataMap->InsertL( itemName, TLiwVariant( TInt32( itemValue ) ));
+ }
}
// ---------------------------------------------------------------------------
@@ -934,10 +941,9 @@
//
// ---------------------------------------------------------------------------
//
-void HsWidgetPublisherImpl::InsertItemsTriggersL( HsWidget& aWidget,
+void HsWidgetPublisherImpl::InsertItemTriggerL( HsWidgetItem& aWidgetItem,
CLiwDefaultMap* aTriggerMap )
{
- int count = aWidget.itemsCount();
CLiwDefaultMap* activateAction = CLiwDefaultMap::NewLC();
activateAction->InsertL( KPluginId, TLiwVariant( KCASpaAppLauncherPlugin ) );
@@ -948,13 +954,10 @@
activate->InsertL( KApaCommand, TLiwVariant( KApaCommandBackground ) );
activateAction->InsertL( KData, TLiwVariant( activate ) );
-
- for (int index = 0; index < count; index++)
- {
- HsWidgetItem* const item = aWidget.getWidgetItem( index );
- TPtrC8 itemName = ((TUint8*)item->getItemName().c_str());
- aTriggerMap->InsertL( itemName, TLiwVariant( activateAction ));
- }
+
+ TPtrC8 itemName = ((TUint8*)aWidgetItem.getItemName().c_str());
+ aTriggerMap->InsertL( itemName, TLiwVariant( activateAction ));
+
CleanupStack::PopAndDestroy( activate );
CleanupStack::PopAndDestroy( activateAction );
}
--- a/homescreensrv_plat/idlefw_api/group/bld.inf Wed Mar 03 15:38:34 2010 +0200
+++ b/homescreensrv_plat/idlefw_api/group/bld.inf Wed May 12 13:36:47 2010 +0300
@@ -25,8 +25,8 @@
../inc/aiuicontrolleruid.hrh MW_LAYER_PLATFORM_EXPORT_PATH(aiuicontrolleruid.hrh)
../inc/aiconsts.h MW_LAYER_PLATFORM_EXPORT_PATH(aiconsts.h)
../inc/aifweventhandler.h MW_LAYER_PLATFORM_EXPORT_PATH(aifweventhandler.h)
+../inc/aifwstatehandler.h MW_LAYER_PLATFORM_EXPORT_PATH(aifwstatehandler.h)
../inc/aiuicontroller.h MW_LAYER_PLATFORM_EXPORT_PATH(aiuicontroller.h)
-../inc/aiuiframeworkobserver.h MW_LAYER_PLATFORM_EXPORT_PATH(aiuiframeworkobserver.h)
../inc/aiuiidleintegration.h MW_LAYER_PLATFORM_EXPORT_PATH(aiuiidleintegration.h)
../inc/debug.h MW_LAYER_PLATFORM_EXPORT_PATH(debug.h) // needed?
../inc/aifwdefs.h MW_LAYER_PLATFORM_EXPORT_PATH(aifwdefs.h)
--- a/homescreensrv_plat/idlefw_api/inc/aifwdefs.h Wed Mar 03 15:38:34 2010 +0200
+++ b/homescreensrv_plat/idlefw_api/inc/aifwdefs.h Wed May 12 13:36:47 2010 +0300
@@ -16,25 +16,59 @@
*/
-#ifndef AIFWDEFS_H
-#define AIFWDEFS_H
+#ifndef _AIFWDEFS_H
+#define _AIFWDEFS_H
+// System inclides
-#include <e32std.h>
-#include <aipropertyextension.h>
+// User includes
+
+// Type definitions
/**
- * Array of publisher Content publisher info records.
+ * AiFw State definitions.
+ *
+ * @since S60 5.2
*/
-typedef RArray<TAiPublisherInfo> RAiPublisherInfoArray;
-
-_LIT(KOnline_Offline, "online_offline");
+enum TAiFwState
+ {
+ EAiFwBacklightOn = 1,
+ EAiFwBacklightOff,
+ EAiFwForeground,
+ EAiFwBackground,
+ EAiFwBackupRestoreStart,
+ EAiFwBackupRestoreEnd,
+ EAiFwGeneralThemeChange,
+ EAiFwUiStartup,
+ EAiFwUiShutdown,
+ EAiFwOnline,
+ EAiFwOffline
+ };
-enum TAifwStates
- {
- EAifwOffline,
- EAifwOnline,
- EAifwPageSwitch
- };
+/**
+ * AiFw data plugin load reasons.
+ *
+ * @since S60 5.2
+ */
+enum TAiFwLoadReason
+ {
+ EAiFwSystemStartup = 1,
+ EAiFwPageStartup,
+ EAiFwPluginStartup
+ };
-#endif // AIFWDEFS_H
+/**
+ * AiFw data plugin destroy reasons.
+ *
+ * @since S60 5.2
+ */
+enum TAiFwDestroyReason
+ {
+ EAiFwSystemShutdown = 1,
+ EAiFwPageShutdown,
+ EAiFwPluginShutdown
+ };
+
+#endif // _AIFWDEFS_H
+
+// End of file
--- a/homescreensrv_plat/idlefw_api/inc/aifweventhandler.h Wed Mar 03 15:38:34 2010 +0200
+++ b/homescreensrv_plat/idlefw_api/inc/aifweventhandler.h Wed May 12 13:36:47 2010 +0300
@@ -19,11 +19,15 @@
#ifndef M_AIFWEVENTHANDLER_H
#define M_AIFWEVENTHANDLER_H
+// System includes
#include <e32cmn.h>
-#include <aifwdefs.h>
+
+// User includes
+// Forward declarations
class CAiUiController;
-class CAiContentPublisher;
+class CHsContentPublisher;
+class THsPublisherInfo;
/**
* Active Idle Framework internal event handling interface.
@@ -33,56 +37,50 @@
* @since S60 3.2
*/
class MAiFwEventHandler
-{
+ {
public:
+ // new functions
+
/**
* Application environment ready callback. Main UI controller calls this
* method when application framework is initialized.
+ *
+ * @since S60 3.2
*/
virtual void AppEnvReadyL() = 0;
/**
* UI ready event handler.
*
+ * @since S60 3.2
* @param aUiController Active Idle UI Controller which manages the UI
- * that is ready.
+ * that is ready.
*/
virtual void HandleUiReadyEventL( CAiUiController& aUiController ) = 0;
/**
* UI activation event handler.
- *
+ *
+ * @since S60 3.2
*/
virtual void HandleActivateUI() = 0;
/**
* UI shutdown event handler.
*
+ * @since S60 3.2
* @param aUiController Active Idle UI Controller which manages the UI
- * that was shut down.
+ * that was shut down.
*/
virtual void HandleUiShutdown( CAiUiController& aUiController ) = 0;
/**
- * UI has changed, load data plugin.
- *
- * @param aPublisherInfo Publisher info describing plugin to load.
- */
- virtual void HandleLoadPluginL( const TAiPublisherInfo& aPublisherInfo ) = 0;
-
- /**
- * UI has changed, destroy data plugin.
- *
- * @param aPublisherInfo Publisher info describing plugin to destroy.
- */
- virtual void HandleDestroyPluginL( const TAiPublisherInfo& aPublisherInfo ) = 0;
-
- /**
* Active Idle Framework Plug-in event handler. UI controllers forward
* events that are targeted to Active Idle Content Publisher Plug-ins
* to this method.
*
- * @param aParam event parameters from the UI model.
+ * @since S60 3.2
+ * @param aParam event parameters from the UI model.
*/
virtual void HandlePluginEvent( const TDesC& aParam ) = 0;
@@ -91,50 +89,77 @@
* events that are targeted to Active Idle Content Publisher Plug-ins
* to this method.
*
+ * @since S60 5.2
* @param aPublisherInfo publisher info.
* @param aParam event parameters from the UI model.
*/
- virtual void HandlePluginEventL( const TAiPublisherInfo& aPublisherInfo, const TDesC& aParam ) = 0;
+ virtual void HandlePluginEventL(
+ const THsPublisherInfo& aPublisherInfo,
+ const TDesC& aParam ) = 0;
/**
* Queries if a Content Publiseher Plug-in has settings
*
+ * @since S60 5.2
* @param aPublisherInfo publisher info.
* @param aMenuItem menuitem type.
*/
- virtual TBool HasMenuItemL( const TAiPublisherInfo& aPublisherInfo, const TDesC& aMenuItem ) = 0;
+ virtual TBool HasMenuItemL(
+ const THsPublisherInfo& aPublisherInfo,
+ const TDesC& aMenuItem ) = 0;
+
+ /**
+ * Refresh content request. UI controller can use this interface to request
+ * a content publisher plug-in to refresh (re-publish) a specific content
+ * item.
+ *
+ * @since S60 3.2
+ * @param aContentCid Textual identifier of the content to refresh.
+ * @return True if the content publisher plug-in is found and the plugin
+ * will refresh the content by calling its content observer.
+ * False otherwise.
+ */
+ virtual TBool RefreshContent( const TDesC& aContentCid ) = 0;
/**
* Refresh content request. UI controller can use this interface to request
* a content publisher plug-in to refresh (re-publish) a specific content
* item.
*
+ * @since S60 5.2
+ * @param aPublisherInfo publisher info.
* @param aContentCid Textual identifier of the content to refresh.
* @return True if the content publisher plug-in is found and the plugin
* will refresh the content by calling its content observer.
* False otherwise.
*/
- virtual TBool RefreshContent( const TDesC& aContentCid ) = 0;
+ virtual TBool RefreshContent( const THsPublisherInfo& aPublisherInfo,
+ const TDesC& aContentCid ) = 0;
/**
+ * Suspend content request. UI controller can use this interface to request
+ * a content publisher plug-in to suspend a specific content
+ * item.
+ *
+ * @since S60 5.2
+ * @param aPublisherInfo publisher info.
+ * @param aContentCid Textual identifier of the content to refresh.
+ * @return True if the content publisher plug-in is found and the plugin
+ * will refresh the content by calling its content observer.
+ * False otherwise.
+ */
+ virtual TBool SuspendContent( const THsPublisherInfo& aPublisherInfo,
+ const TDesC& aContentCid ) = 0;
+
+ /**
* Service to check if menu is open.
*
+ * @since S60 3.2
* @return ETrue if menu is open, EFalse otherwise
*/
- virtual TBool QueryIsMenuOpen() = 0;
-
- /**
- * Service to process the state changes
- *
- * @param aState changed state
- */
- virtual void ProcessStateChange( TAifwStates aState ) = 0;
-
-protected:
- /**
- * Protected destructor prevents deletion through this interface.
- */
- ~MAiFwEventHandler() { }
+ virtual TBool QueryIsMenuOpen() = 0;
};
#endif // M_AIEVENTHANDLEREXTENSION_H
+
+// End of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreensrv_plat/idlefw_api/inc/aifwstatehandler.h Wed May 12 13:36:47 2010 +0300
@@ -0,0 +1,75 @@
+/*
+* Copyright (c) 2005-2006 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: Active Idle Framework internal state handling interface.
+*
+*/
+
+
+#ifndef M_AIFWSTATEHANDLER_H
+#define M_AIFWSTATEHANDLER_H
+
+// System includes
+
+// User includes
+#include <aifwdefs.h>
+
+// Forward declarations
+class THsPublisherInfo;
+
+/**
+ * Active Idle Framework internal state handling interface.
+ * Events from UI controllers are forwarded to this interface for processing
+ * on the Active Idle Framework side.
+ *
+ * @since S60 5.2
+ */
+class MAiFwStateHandler
+ {
+public:
+ // new functions
+
+ /**
+ * Instructs to load plugin
+ *
+ * @since S60 5.2
+ * @param aPublisherInfo plugin to load
+ * @param aReason startup reason
+ * @return Error code, KErrNone if loaded succesfully.
+ */
+ virtual TInt LoadPlugin( const THsPublisherInfo& aPublisherInfo,
+ TAiFwLoadReason aReason ) = 0;
+
+ /**
+ * Instructs to destroy plugin
+ *
+ * @since S60 5.2
+ * @param aPublisherInfo plugin to destroy
+ * @param aReason shutdown reason
+ */
+ virtual void DestroyPlugin( const THsPublisherInfo& aPublisherInfo,
+ TAiFwDestroyReason aReason ) = 0;
+
+ /**
+ * Instructs to change all plugins' state
+ *
+ * @since S60 5.2
+ * @param aState State to change
+ */
+ virtual void ChangePluginState( TAiFwState aState ) = 0;
+
+ };
+
+#endif // M_AIFWSTATEHANDLER_H
+
+// End of file
--- a/homescreensrv_plat/idlefw_api/inc/aiuicontroller.h Wed Mar 03 15:38:34 2010 +0200
+++ b/homescreensrv_plat/idlefw_api/inc/aiuicontroller.h Wed May 12 13:36:47 2010 +0300
@@ -16,22 +16,25 @@
*/
-#ifndef C_AIUICONTROLLER_H
-#define C_AIUICONTROLLER_H
+#ifndef _AIUICONTROLLER_H
+#define _AIUICONTROLLER_H
+// System includes
#include <ecom/ecom.h>
+
+// User includes
#include "aicontentmodel.h"
-#include "aifwdefs.h"
#include "aiuicontrolleruid.hrh"
#include "aipluginsettings.h"
+// Forward declarations
class MAiContentObserver;
class MAiFwEventHandler;
-class MAiUiFrameworkObserver;
-class CCoeEnv;
-class CAiContentPublisher;
+class MAiFwStateHandler;
class MAiMainUiController;
class MAiSecondaryUiController;
+class THsPublisherInfo;
+class CCoeEnv;
/**
* ECom interface UID for CAiUiContoller
@@ -46,8 +49,7 @@
class CAiUiController : public CBase
{
public:
-
-// Constructors and destructor
+ // Constructors and destructor
/**
* Static factory method.
@@ -56,7 +58,7 @@
* @param ECom implementatoin uid
* @return class instance
*/
- inline static CAiUiController* NewL(TUid aImpUid);
+ inline static CAiUiController* NewL( TUid aImpUid );
/**
* Static factory method.
@@ -65,14 +67,15 @@
* @param mimetype
* @return class instance
*/
- inline static CAiUiController* NewL(const TDesC8& aMime);
+ inline static CAiUiController* NewL( const TDesC8& aMime );
/**
* Destructor.
*/
- inline virtual ~CAiUiController();
+ inline ~CAiUiController();
-// New functions
+public:
+ // New functions
/**
* Instructs this UI controller to load its UI definition.
@@ -82,22 +85,15 @@
virtual void LoadUIDefinitionL() = 0;
/**
- * Retrieves the Content Publisher Plug-in list defined in this UI
- * controller's UI model.
- *
- * @since Series 60 3.2
- */
- virtual void GetPluginsL(RAiPublisherInfoArray& aPlugins) = 0;
-
- /**
* Retrieves plug-in settings specified in this UI controller's UI definition.
*
- * @param aPubInfo Publisher info of the plug-in for which to
- * retrieve settings for.
+ * @param aPublisherInfo Publisher info of the plug-in for which to
+ * retrieve settings for.
* @param aSettings array to get settings items to.
*/
- virtual void GetSettingsL(const TAiPublisherInfo& aPubInfo,
- RAiSettingsItemArray& aSettings) = 0;
+ virtual void GetSettingsL(
+ const THsPublisherInfo& aPublisherInfo,
+ RAiSettingsItemArray& aSettings ) = 0;
/**
* Activate UI managed by this UI controller.
@@ -122,15 +118,16 @@
* Set to NULL to disable event callbacks from this
* UI Controller.
*/
- virtual void SetEventHandler(MAiFwEventHandler& aEventHandler) = 0;
+ virtual void SetEventHandler( MAiFwEventHandler& aEventHandler ) = 0;
/**
- * Remove specified plugin from the UI.
- *
- * @param aPlugin plugin that is removed.
- */
- virtual void RemovePluginFromUI( MAiPropertyExtension& aPlugin ) = 0;
-
+ * Sets plugin state handler
+ *
+ * @since S60 5.2
+ * @param aHandler Plugin State Handler
+ */
+ virtual void SetStateHandler( MAiFwStateHandler& aStateHandler ) = 0;
+
/**
* Returns the main UI Controller interface, or NULL if this is not the
* main UI controller.
@@ -143,32 +140,49 @@
*/
virtual MAiSecondaryUiController* SecondaryInterface() = 0;
-private: // Data
+private:
+ // data
- TUid iDestructKey; // An identifier used during destruction
-
+ /** An identifier used during destruction */
+ TUid iDestructKey;
};
-inline CAiUiController* CAiUiController::NewL(TUid aImplUid)
+// ----------------------------------------------------------------------------
+// CAiUiController::NewL
+//
+// ----------------------------------------------------------------------------
+//
+inline CAiUiController* CAiUiController::NewL( TUid aImplUid )
{
- TAny* ptr = REComSession::CreateImplementationL(aImplUid,
- _FOFF(CAiUiController, iDestructKey));
+ TAny* ptr = REComSession::CreateImplementationL( aImplUid,
+ _FOFF( CAiUiController, iDestructKey ) );
- return reinterpret_cast<CAiUiController*> (ptr);
+ return reinterpret_cast< CAiUiController* >( ptr );
}
-inline CAiUiController* CAiUiController::NewL(const TDesC8& aMime)
+// ----------------------------------------------------------------------------
+// CAiUiController::NewL
+//
+// ----------------------------------------------------------------------------
+//
+inline CAiUiController* CAiUiController::NewL( const TDesC8& aMime )
{
TEComResolverParams params;
- params.SetDataType(aMime);
- TAny* ptr = REComSession::CreateImplementationL(KInterfaceUidUiController,
- _FOFF(CAiUiController, iDestructKey), params);
- return reinterpret_cast<CAiUiController*> (ptr);
+ params.SetDataType( aMime );
+ TAny* ptr = REComSession::CreateImplementationL( KInterfaceUidUiController,
+ _FOFF( CAiUiController, iDestructKey ), params );
+
+ return reinterpret_cast< CAiUiController* >( ptr );
}
+// ----------------------------------------------------------------------------
+// CAiUiController::~CAiUiController
+//
+// ----------------------------------------------------------------------------
+//
inline CAiUiController::~CAiUiController()
{
- REComSession::DestroyedImplementation(iDestructKey);
+ REComSession::DestroyedImplementation( iDestructKey );
}
@@ -181,6 +195,8 @@
class MAiMainUiController
{
public:
+ // new functions
+
/**
* Starts application framework and application event loop.
* This function returns only when the application is shut down.
@@ -194,12 +210,7 @@
* Returns the CONE environment object this main UI controller uses.
*/
virtual CCoeEnv& CoeEnv() = 0;
-
- /**
- * Sets UI framework observer for this main UI controller.
- */
- virtual void SetUiFrameworkObserver( MAiUiFrameworkObserver& aObserver ) = 0;
-
+
/**
* Exits the main ui controller
**/
@@ -220,21 +231,16 @@
class MAiSecondaryUiController
{
public:
+ // new functions
+
/**
* Sets the CONE environment object for this secondary UI controller to use.
*
* @param aCoeEnv the CONE environment object to use.
*/
- virtual void SetCoeEnv( CCoeEnv& aCoeEnv ) = 0;
-
- /**
- * Returns the UI framework observer of this secondary UI controller.
- *
- * @return The UI framework observer, or NULL if observer is not supported.
- */
- virtual MAiUiFrameworkObserver* UiFrameworkObserver() = 0;
+ virtual void SetCoeEnv( CCoeEnv& aCoeEnv ) = 0;
};
-#endif // C_AIUICONTROLLER_H
+#endif // _AIUICONTROLLER_H
// End of File.
--- a/homescreensrv_plat/idlefw_api/inc/aiuiframeworkobserver.h Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,55 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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: Observer interface for UI framework events
-*
-*/
-
-
-#ifndef M_AIUIFRAMEWORKOBSERVER_H
-#define M_AIUIFRAMEWORKOBSERVER_H
-
-#include <e32def.h>
-
-/**
- * MAiUiFrameworkObserver observes UI framework events.
- *
- * @since S60 v3.2
- */
-class MAiUiFrameworkObserver
- {
-
-public:
-
- /**
- * Event handler for resource change in UI framework.
- *
- * @param aType resource change type.
- */
- virtual void HandleResourceChange( TInt aType ) = 0;
-
- /**
- * Event handler for focus change event.
- *
- * @param aForeground ETrue if UI is foreground.
- */
- virtual void HandleForegroundEvent( TBool aForeground ) = 0;
-
-protected:
-
- virtual ~MAiUiFrameworkObserver() {};
-
- };
-
-
-#endif // M_AIUIFRAMEWORKOBSERVER_H
--- a/homescreensrv_plat/sapi_actionhandler/actionhandlerplugins/group/ahplugins.mmp Wed Mar 03 15:38:34 2010 +0200
+++ b/homescreensrv_plat/sapi_actionhandler/actionhandlerplugins/group/ahplugins.mmp Wed May 12 13:36:47 2010 +0300
@@ -56,7 +56,6 @@
LIBRARY apparc.lib
LIBRARY sendui.lib
LIBRARY hlplch.lib
-LIBRARY ws32.lib
-
+LIBRARY ws32.lib
// End of File
--- a/homescreensrv_plat/sapi_actionhandler/actionhandlerplugins/src/ahpapplauncher.cpp Wed Mar 03 15:38:34 2010 +0200
+++ b/homescreensrv_plat/sapi_actionhandler/actionhandlerplugins/src/ahpapplauncher.cpp Wed May 12 13:36:47 2010 +0300
@@ -106,6 +106,7 @@
if ( !ExtractUidL( aMap, appUid, KApplicationUid ) )
{
+ // app not yet running
RApaLsSession appSession;
CleanupClosePushL( appSession );
User::LeaveIfError( appSession.Connect( ) );
@@ -127,6 +128,7 @@
CleanupStack::PopAndDestroy( cmd );
CleanupStack::PopAndDestroy( &appSession );
}
+
return errCode;
}
--- a/homescreensrv_plat/sapi_contentpublishing/inc/cpclient.h Wed Mar 03 15:38:34 2010 +0200
+++ b/homescreensrv_plat/sapi_contentpublishing/inc/cpclient.h Wed May 12 13:36:47 2010 +0300
@@ -114,11 +114,21 @@
*
* @since S6CCPActiveNotifierNotifier v 5.CCPActiveNotifierNotifier
* @param aInParamList input parameter list (filter)
- * @param aOutParamList output action_map
+ * @param aCmdOptions options for the command
*/
- void ExecuteActionL( const CLiwGenericParamList& aInParamList );
+ void ExecuteActionL( const CLiwGenericParamList& aInParamList,
+ TUint aCmdOptions );
/**
+ * Send command to server to ExecuteMultipleActions
+ *
+ * @param aInParamList input parameter list (filter)
+ * @param aCmdOptions options for the command
+ */
+ void ExecuteMultipleActionsL(
+ const CLiwGenericParamList& aInParamList, TUint aCmdOptions);
+
+ /**
* Check second param from IDataSource interface
*
* @since S6CCPActiveNotifierNotifier v 5.CCPActiveNotifierNotifier
@@ -127,7 +137,15 @@
*/
void CheckMapL( const CLiwGenericParamList& aInParamList,
const TDesC8& aKey );
-
+
+ /**
+ * Check proper data is passed as parameter to ExecuteMultipleActions
+ *
+ * @since S6CCPActiveNotifierNotifier v 5.CCPActiveNotifierNotifier
+ * @param aList generic list containing input parameters
+ */
+ void CheckMultiExecuteInputParamsL(const CLiwGenericParamList& aList);
+
private:
/**
--- a/homescreensrv_plat/sapi_contentpublishing/inc/cpclientsession.h Wed Mar 03 15:38:34 2010 +0200
+++ b/homescreensrv_plat/sapi_contentpublishing/inc/cpclientsession.h Wed May 12 13:36:47 2010 +0300
@@ -113,10 +113,21 @@
*
* @since S60 v 5.0
* @param aInParamList const reference to the input list
+ * @param aOptions Command options.
*/
- void ExecuteActionL( const CCPLiwMap& aMap );
+ void ExecuteActionL( const CCPLiwMap& aMap, TUint aOptions = 0 );
/**
+ * Pass ExecuteMultipleActionsL request to the server
+ *
+ * @since S60 v 5.0
+ * @param aList const reference to the input list
+ * @param aOptions Command options.
+ */
+ void ExecuteMultipleActionsL( const CLiwGenericParamList& aList,
+ TUint aOptions = 0 );
+
+ /**
* Pass GetChangeInfoData request to server
* @param aBuf reference to the input list
* @return error code
--- a/homescreensrv_plat/sapi_contentpublishing/src/ccontentpublishinginterface.cpp Wed Mar 03 15:38:34 2010 +0200
+++ b/homescreensrv_plat/sapi_contentpublishing/src/ccontentpublishinginterface.cpp Wed May 12 13:36:47 2010 +0300
@@ -90,12 +90,16 @@
CP_DEBUG( _L8("CContentPublishingInterface::ProcessCommandL") );
if ( aCmdName.CompareF( KExecuteAction ) == 0 )
- {
- iCPClient->ExecuteActionL( aInParamList );
- }
- else
- {
- CDataSourceInterface::ProcessCommandL(aCmdName,
- aInParamList, aOutParamList, aCmdOptions, aCallback);
- }
+ {
+ iCPClient->ExecuteActionL( aInParamList, aCmdOptions );
+ }
+ else if ( aCmdName.CompareF( KExecuteMultipleActions ) == 0 )
+ {
+ iCPClient->ExecuteMultipleActionsL( aInParamList, aCmdOptions );
+ }
+ else
+ {
+ CDataSourceInterface::ProcessCommandL(aCmdName,
+ aInParamList, aOutParamList, aCmdOptions, aCallback);
+ }
}
--- a/homescreensrv_plat/sapi_contentpublishing/src/cpclient.cpp Wed Mar 03 15:38:34 2010 +0200
+++ b/homescreensrv_plat/sapi_contentpublishing/src/cpclient.cpp Wed May 12 13:36:47 2010 +0300
@@ -96,6 +96,7 @@
CLiwGenericParamList& aOutParamList )
{
CP_DEBUG( _L8("CCPClient::GetListL()") );
+ CP_EXTENDED_DEBUG( "GetListL()" , aInParamList );
CheckMapL( aInParamList, KFilter );
CCPLiwMap* inMapForServer = CCPLiwMap::NewL( aInParamList );
inMapForServer->PushL( );
@@ -113,6 +114,7 @@
TUint aCmdOptions )
{
CP_DEBUG( _L8("CCPClient::AddL()") );
+ CP_EXTENDED_DEBUG( "Add()" , aInParamList );
CheckMapL( aInParamList, KItem );
CCPLiwMap* inMapForServer = CCPLiwMap::NewL( aInParamList ) ;
inMapForServer->PushL( );
@@ -128,6 +130,7 @@
void CCPClient::DeleteL( const CLiwGenericParamList& aInParamList )
{
CP_DEBUG( _L8("CCPClient::DeleteL()") );
+ CP_EXTENDED_DEBUG( "Delete()" , aInParamList );
CheckMapL( aInParamList, KData );
CCPLiwMap* inMapForServer = CCPLiwMap::NewL( aInParamList );
inMapForServer->PushL( );
@@ -144,6 +147,7 @@
const CLiwGenericParamList& aInParamList, TInt32 aTransactionId )
{
CP_DEBUG( _L8("CCPClient::RegisterObserverL()") );
+ CP_EXTENDED_DEBUG( "RegisterObserver()" , aInParamList );
CheckMapL( aInParamList, KFilter );
CCPLiwMap* inMapForServer = CCPLiwMap::NewL( aInParamList );
inMapForServer->PushL( );
@@ -163,6 +167,7 @@
void CCPClient::UnregisterObserversL( const CLiwGenericParamList& aInParamList )
{
CP_DEBUG( _L8("CCPClient::UnregisterObservers()") );
+ CP_EXTENDED_DEBUG( "UnregisterObservers()" , aInParamList );
if ( !iActiveNotifier )
{
User::Leave( KErrNotFound );
@@ -195,14 +200,16 @@
//
// -----------------------------------------------------------------------------
//
-void CCPClient::ExecuteActionL( const CLiwGenericParamList& aInParamList )
+void CCPClient::ExecuteActionL( const CLiwGenericParamList& aInParamList,
+ TUint aCmdOptions)
{
- CP_DEBUG( _L8("CCPClient::RegisterObserverL()") );
+ CP_DEBUG( _L8("CCPClient::ExecuteActionL()") );
+ CP_EXTENDED_DEBUG( "ExecuteAction()" , aInParamList );
CheckMapL( aInParamList, KFilter );
CCPLiwMap* inMapForServer = CCPLiwMap::NewL( aInParamList );
inMapForServer->PushL( );
inMapForServer->IsValidForActionL( );
- iServerClient.ExecuteActionL( *inMapForServer );
+ iServerClient.ExecuteActionL( *inMapForServer, aCmdOptions );
CleanupStack::PopAndDestroy( inMapForServer );
}
@@ -210,6 +217,19 @@
//
// -----------------------------------------------------------------------------
//
+void CCPClient::ExecuteMultipleActionsL(
+ const CLiwGenericParamList& aInParamList, TUint aCmdOptions)
+ {
+ CP_DEBUG( _L8("CCPClient::ExecuteMultipleActionsL()") );
+ CP_EXTENDED_DEBUG( "ExecuteMultipleActionsL()" , aInParamList );
+ CheckMultiExecuteInputParamsL(aInParamList);
+ iServerClient.ExecuteMultipleActionsL( aInParamList, aCmdOptions );
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
void CCPClient::CheckMapL( const CLiwGenericParamList& aInParamList,
const TDesC8& aKey )
{
@@ -224,3 +244,20 @@
}
}
}
+
+// -----------------------------------------------------------------------------
+//
+// --------------- --------------------------------------------------------------
+//
+void CCPClient::CheckMultiExecuteInputParamsL(
+ const CLiwGenericParamList& aList)
+ {
+ const TLiwGenericParam* param = NULL;
+ TInt pos(0);
+ param = aList.FindFirst(pos, KFilters);
+ User::LeaveIfError(pos); //leaves if not found
+ if (param->Value().TypeId() != LIW::EVariantTypeList)
+ {
+ User::Leave(KErrBadName);
+ }
+ }
--- a/homescreensrv_plat/sapi_contentpublishing/src/cpclientactivenotifier.cpp Wed Mar 03 15:38:34 2010 +0200
+++ b/homescreensrv_plat/sapi_contentpublishing/src/cpclientactivenotifier.cpp Wed May 12 13:36:47 2010 +0300
@@ -204,8 +204,10 @@
iSizeDes = NULL;
CleanupStack::PopAndDestroy(&outbuf);
}
- RegisterAgainL();
-
+ if (KErrNoMemory!=iStatus.Int())
+ {
+ RegisterAgainL();
+ }
NotifyObserversL(error, eventParamList);
CleanupStack::PopAndDestroy(eventParamList);
}
@@ -292,9 +294,12 @@
//
// ----------------------------------------------------------------------------
//
-TInt CCPActiveNotifier::RunError( TInt /*aError*/)
+TInt CCPActiveNotifier::RunError( TInt aError )
{
- TRAP_IGNORE( RegisterAgainL( ) );
+ if (KErrNoMemory!=aError)
+ {
+ TRAP_IGNORE( RegisterAgainL( ) );
+ }
return KErrNone;
}
// ----------------------------------------------------------------------------
--- a/homescreensrv_plat/sapi_contentpublishing/src/cpclientsession.cpp Wed Mar 03 15:38:34 2010 +0200
+++ b/homescreensrv_plat/sapi_contentpublishing/src/cpclientsession.cpp Wed May 12 13:36:47 2010 +0300
@@ -146,12 +146,13 @@
//
// -----------------------------------------------------------------------------
//
-void RCPServerClient::ExecuteActionL( const CCPLiwMap& aMap )
+void RCPServerClient::ExecuteActionL( const CCPLiwMap& aMap, TUint aOptions )
{
CP_DEBUG( _L8("RCPServerClient::ExecuteActionL()") );
HBufC8 *inbuf = aMap.PackForServerLC( );
TIpcArgs args;
args.Set( KDescriptorPosition, &*inbuf );
+ args.Set( KOptionsPosition, static_cast<TInt>( aOptions ) );
User::LeaveIfError( SendReceive( ECpServerExecuteAction, args ) );
CleanupStack::PopAndDestroy( inbuf );
}
@@ -160,6 +161,29 @@
//
// -----------------------------------------------------------------------------
//
+void RCPServerClient::ExecuteMultipleActionsL(
+ const CLiwGenericParamList& aList, TUint aOptions)
+ {
+ CP_DEBUG( _L8("RCPServerClient::ExecuteMultipleActionsL()") );
+ TIpcArgs args;
+ TInt size = aList.Size();
+ HBufC8* datadesc = HBufC8::NewLC( size );
+ TPtr8 ptr = datadesc->Des();
+ RDesWriteStream datastrm( ptr );
+ CleanupClosePushL(datastrm);
+ aList.ExternalizeL(datastrm);
+ datastrm.CommitL();
+ args.Set( KDescriptorPosition, &*datadesc );
+ args.Set( KOptionsPosition, static_cast<TInt>( aOptions ) );
+ User::LeaveIfError(SendReceive(ECpServerExecuteMultipleActions, args));
+ CleanupStack::PopAndDestroy(&datastrm);
+ CleanupStack::PopAndDestroy(datadesc);
+ }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
void RCPServerClient::DeleteL( const CCPLiwMap& aMap )
{
CP_DEBUG( _L8("RCPServerClient::DeleteL()") );
--- a/homescreensrv_plat/sapi_homescreenplugin/hspsservice/bwins/hspsserviceu.def Wed Mar 03 15:38:34 2010 +0200
+++ b/homescreensrv_plat/sapi_homescreenplugin/hspsservice/bwins/hspsserviceu.def Wed May 12 13:36:47 2010 +0300
@@ -1,25 +1,25 @@
EXPORTS
- ?GetPluginListL@CHspsPersonalisationService@@QAEXAAVTDesC8@@0KAAV?$CArrayPtrFlat@VChspsODT@@@@@Z @ 1 NONAME ; void CHspsPersonalisationService::GetPluginListL(class TDesC8 &, class TDesC8 &, unsigned long, class CArrayPtrFlat<class ChspsODT> &)
+ ?RestoreConfigurationsL@CHspsPersonalisationService@@QAEXHH@Z @ 1 NONAME ; void CHspsPersonalisationService::RestoreConfigurationsL(int, int)
?GetODTL@CHspsConfigurationService@@QAEXH@Z @ 2 NONAME ; void CHspsConfigurationService::GetODTL(int)
?GetAppConfListL@CHspsPersonalisationService@@QAEXHKAAV?$CArrayPtrFlat@VChspsODT@@@@@Z @ 3 NONAME ; void CHspsPersonalisationService::GetAppConfListL(int, unsigned long, class CArrayPtrFlat<class ChspsODT> &)
?SetConfStateL@CHspsPersonalisationService@@QAEXHAAVTDesC8@@00@Z @ 4 NONAME ; void CHspsPersonalisationService::SetConfStateL(int, class TDesC8 &, class TDesC8 &, class TDesC8 &)
?InvalidateODT@CHspsConfigurationService@@QAEXXZ @ 5 NONAME ; void CHspsConfigurationService::InvalidateODT(void)
?RemovePluginL@CHspsPersonalisationService@@QAEXHAAVTDesC8@@@Z @ 6 NONAME ; void CHspsPersonalisationService::RemovePluginL(int, class TDesC8 &)
?SetActiveAppConfL@CHspsPersonalisationService@@QAEXHAAVTDesC8@@@Z @ 7 NONAME ; void CHspsPersonalisationService::SetActiveAppConfL(int, class TDesC8 &)
- ?RestoreActiveAppConfL@CHspsPersonalisationService@@QAEXHAAVTDesC8@@@Z @ 8 NONAME ; void CHspsPersonalisationService::RestoreActiveAppConfL(int, class TDesC8 &)
- ?AddPluginL@CHspsPersonalisationService@@QAEXHAAVTDesC8@@00AAH@Z @ 9 NONAME ; void CHspsPersonalisationService::AddPluginL(int, class TDesC8 &, class TDesC8 &, class TDesC8 &, int &)
- ?SetLogBus@CHspsConfigurationService@@QAEXPAVChspsLogBus@@@Z @ 10 NONAME ; void CHspsConfigurationService::SetLogBus(class ChspsLogBus *)
- ?GetAppUidL@CHspsConfigurationService@@QAEXAAH@Z @ 11 NONAME ; void CHspsConfigurationService::GetAppUidL(int &)
- ?MovePluginsL@CHspsPersonalisationService@@QAEXHAAVTDesC8@@AAV?$CArrayFixFlat@H@@@Z @ 12 NONAME ; void CHspsPersonalisationService::MovePluginsL(int, class TDesC8 &, class CArrayFixFlat<int> &)
- ?RegisterObserverL@CHspsConfigurationService@@QAEHPAVCHspsReqNotifCallback@@@Z @ 13 NONAME ; int CHspsConfigurationService::RegisterObserverL(class CHspsReqNotifCallback *)
- ?GetDOML@CHspsConfigurationService@@QAEAAVChspsDomDocument@@XZ @ 14 NONAME ; class ChspsDomDocument & CHspsConfigurationService::GetDOML(void)
- ?NewL@CHspsConfigurationService@@SAPAV1@XZ @ 15 NONAME ; class CHspsConfigurationService * CHspsConfigurationService::NewL(void)
- ?NewL@CHspsPersonalisationService@@SAPAV1@XZ @ 16 NONAME ; class CHspsPersonalisationService * CHspsPersonalisationService::NewL(void)
- ?SetPluginSettingsL@CHspsPersonalisationService@@QAEXHAAVTDesC8@@AAVChspsDomDocument@@H@Z @ 17 NONAME ; void CHspsPersonalisationService::SetPluginSettingsL(int, class TDesC8 &, class ChspsDomDocument &, int)
- ?GetFamilyL@CHspsConfigurationService@@QAEXAAK@Z @ 18 NONAME ; void CHspsConfigurationService::GetFamilyL(unsigned long &)
- ?ReplacePluginL@CHspsPersonalisationService@@QAEXHABVTDesC8@@0@Z @ 19 NONAME ; void CHspsPersonalisationService::ReplacePluginL(int, class TDesC8 const &, class TDesC8 const &)
- ?GetPluginOdtL@CHspsPersonalisationService@@QAEXHAAVTDesC8@@PAVChspsODT@@@Z @ 20 NONAME ; void CHspsPersonalisationService::GetPluginOdtL(int, class TDesC8 &, class ChspsODT *)
- ?SetActivePluginL@CHspsPersonalisationService@@QAEXHAAVTDesC8@@@Z @ 21 NONAME ; void CHspsPersonalisationService::SetActivePluginL(int, class TDesC8 &)
- ?UnRegisterObserverL@CHspsConfigurationService@@QAEXXZ @ 22 NONAME ; void CHspsConfigurationService::UnRegisterObserverL(void)
- ?RestoreConfigurationsL@CHspsPersonalisationService@@QAEXHH@Z @ 23 NONAME ; void CHspsPersonalisationService::RestoreConfigurationsL(int, int)
+ ?GetPluginListL@CHspsPersonalisationService@@QAEXAAVTDesC8@@0KHAAV?$CArrayPtrFlat@VChspsODT@@@@@Z @ 8 NONAME ; void CHspsPersonalisationService::GetPluginListL(class TDesC8 &, class TDesC8 &, unsigned long, int, class CArrayPtrFlat<class ChspsODT> &)
+ ?RestoreActiveAppConfL@CHspsPersonalisationService@@QAEXHAAVTDesC8@@@Z @ 9 NONAME ; void CHspsPersonalisationService::RestoreActiveAppConfL(int, class TDesC8 &)
+ ?AddPluginL@CHspsPersonalisationService@@QAEXHAAVTDesC8@@00AAH@Z @ 10 NONAME ; void CHspsPersonalisationService::AddPluginL(int, class TDesC8 &, class TDesC8 &, class TDesC8 &, int &)
+ ?SetLogBus@CHspsConfigurationService@@QAEXPAVChspsLogBus@@@Z @ 11 NONAME ; void CHspsConfigurationService::SetLogBus(class ChspsLogBus *)
+ ?GetAppUidL@CHspsConfigurationService@@QAEXAAH@Z @ 12 NONAME ; void CHspsConfigurationService::GetAppUidL(int &)
+ ?MovePluginsL@CHspsPersonalisationService@@QAEXHAAVTDesC8@@AAV?$CArrayFixFlat@H@@@Z @ 13 NONAME ; void CHspsPersonalisationService::MovePluginsL(int, class TDesC8 &, class CArrayFixFlat<int> &)
+ ?RegisterObserverL@CHspsConfigurationService@@QAEHPAVCHspsReqNotifCallback@@@Z @ 14 NONAME ; int CHspsConfigurationService::RegisterObserverL(class CHspsReqNotifCallback *)
+ ?GetDOML@CHspsConfigurationService@@QAEAAVChspsDomDocument@@XZ @ 15 NONAME ; class ChspsDomDocument & CHspsConfigurationService::GetDOML(void)
+ ?NewL@CHspsConfigurationService@@SAPAV1@XZ @ 16 NONAME ; class CHspsConfigurationService * CHspsConfigurationService::NewL(void)
+ ?NewL@CHspsPersonalisationService@@SAPAV1@XZ @ 17 NONAME ; class CHspsPersonalisationService * CHspsPersonalisationService::NewL(void)
+ ?SetPluginSettingsL@CHspsPersonalisationService@@QAEXHAAVTDesC8@@AAVChspsDomDocument@@H@Z @ 18 NONAME ; void CHspsPersonalisationService::SetPluginSettingsL(int, class TDesC8 &, class ChspsDomDocument &, int)
+ ?GetFamilyL@CHspsConfigurationService@@QAEXAAK@Z @ 19 NONAME ; void CHspsConfigurationService::GetFamilyL(unsigned long &)
+ ?ReplacePluginL@CHspsPersonalisationService@@QAEXHABVTDesC8@@0@Z @ 20 NONAME ; void CHspsPersonalisationService::ReplacePluginL(int, class TDesC8 const &, class TDesC8 const &)
+ ?GetPluginOdtL@CHspsPersonalisationService@@QAEXHAAVTDesC8@@PAVChspsODT@@@Z @ 21 NONAME ; void CHspsPersonalisationService::GetPluginOdtL(int, class TDesC8 &, class ChspsODT *)
+ ?SetActivePluginL@CHspsPersonalisationService@@QAEXHAAVTDesC8@@@Z @ 22 NONAME ; void CHspsPersonalisationService::SetActivePluginL(int, class TDesC8 &)
+ ?UnRegisterObserverL@CHspsConfigurationService@@QAEXXZ @ 23 NONAME ; void CHspsConfigurationService::UnRegisterObserverL(void)
--- a/homescreensrv_plat/sapi_homescreenplugin/hspsservice/eabi/hspsserviceu.def Wed Mar 03 15:38:34 2010 +0200
+++ b/homescreensrv_plat/sapi_homescreenplugin/hspsservice/eabi/hspsserviceu.def Wed May 12 13:36:47 2010 +0300
@@ -13,17 +13,17 @@
_ZN27CHspsPersonalisationService13GetPluginOdtLEiR6TDesC8P8ChspsODT @ 12 NONAME
_ZN27CHspsPersonalisationService13RemovePluginLEiR6TDesC8 @ 13 NONAME
_ZN27CHspsPersonalisationService13SetConfStateLEiR6TDesC8S1_S1_ @ 14 NONAME
- _ZN27CHspsPersonalisationService14GetPluginListLER6TDesC8S1_mR13CArrayPtrFlatI8ChspsODTE @ 15 NONAME
+ _ZN27CHspsPersonalisationService14GetPluginListLER6TDesC8S1_miR13CArrayPtrFlatI8ChspsODTE @ 15 NONAME
_ZN27CHspsPersonalisationService14ReplacePluginLEiRK6TDesC8S2_ @ 16 NONAME
_ZN27CHspsPersonalisationService15GetAppConfListLEimR13CArrayPtrFlatI8ChspsODTE @ 17 NONAME
_ZN27CHspsPersonalisationService16SetActivePluginLEiR6TDesC8 @ 18 NONAME
_ZN27CHspsPersonalisationService17SetActiveAppConfLEiR6TDesC8 @ 19 NONAME
_ZN27CHspsPersonalisationService18SetPluginSettingsLEiR6TDesC8R16ChspsDomDocumenti @ 20 NONAME
_ZN27CHspsPersonalisationService21RestoreActiveAppConfLEiR6TDesC8 @ 21 NONAME
- _ZN27CHspsPersonalisationService4NewLEv @ 22 NONAME
- _ZTI25CHspsConfigurationService @ 23 NONAME
- _ZTI27CHspsPersonalisationService @ 24 NONAME
- _ZTV25CHspsConfigurationService @ 25 NONAME
- _ZTV27CHspsPersonalisationService @ 26 NONAME
- _ZN27CHspsPersonalisationService22RestoreConfigurationsLEii @ 27 NONAME
+ _ZN27CHspsPersonalisationService22RestoreConfigurationsLEii @ 22 NONAME
+ _ZN27CHspsPersonalisationService4NewLEv @ 23 NONAME
+ _ZTI25CHspsConfigurationService @ 24 NONAME
+ _ZTI27CHspsPersonalisationService @ 25 NONAME
+ _ZTV25CHspsConfigurationService @ 26 NONAME
+ _ZTV27CHspsPersonalisationService @ 27 NONAME
--- a/homescreensrv_plat/sapi_homescreenplugin/hspsservice/inc/hspspersonalisationservice.h Wed Mar 03 15:38:34 2010 +0200
+++ b/homescreensrv_plat/sapi_homescreenplugin/hspsservice/inc/hspspersonalisationservice.h Wed May 12 13:36:47 2010 +0300
@@ -87,12 +87,14 @@
* @param aInterface Interface of the requested plugins.
* @param aType Type of the requested plugins.
* @param aFamily Requested plugin configuration family
+ * @param aCopyLogos Controls whether to copy logos to client's private folder
* @param aList List of plugins ODT headers.
*/
IMPORT_C void GetPluginListL(
TDesC8& aInterface,
TDesC8& aType,
TUint32 aFamily,
+ const TBool aCopyLogos,
CArrayPtrFlat<ChspsODT>& aList
);
--- a/homescreensrv_plat/sapi_homescreenplugin/hspsservice/src/hspspersonalisationservice.cpp Wed Mar 03 15:38:34 2010 +0200
+++ b/homescreensrv_plat/sapi_homescreenplugin/hspsservice/src/hspspersonalisationservice.cpp Wed May 12 13:36:47 2010 +0300
@@ -76,6 +76,7 @@
TDesC8& aInterface,
TDesC8& aType,
TUint32 aFamily,
+ const TBool aCopyLogos,
CArrayPtrFlat<ChspsODT>& aList )
{
// Setup a mask for finding plugins with defined interface
@@ -96,6 +97,7 @@
TInt err = iHspsClient->hspsGetHeaders(
*searchMask,
+ aCopyLogos,
aList );
CleanupStack::PopAndDestroy( searchMask );
@@ -270,6 +272,7 @@
// Get application configurations
User::LeaveIfError( iHspsClient->hspsGetHeaders(
*searchMask,
+ EFalse,
aList ) );
CleanupStack::PopAndDestroy( searchMask );
--- a/homescreensrv_plat/sapi_homescreenplugin/inc/hspsliwvocabulary.hrh Wed Mar 03 15:38:34 2010 +0200
+++ b/homescreensrv_plat/sapi_homescreenplugin/inc/hspsliwvocabulary.hrh Wed May 12 13:36:47 2010 +0300
@@ -87,6 +87,7 @@
_LIT8( KHspsLiwNotification, "notification" );
_LIT8( KHspsLiwId, "id" );
_LIT8( KHspsLiwType, "type" );
+_LIT8( KHspsLiwCopyLogos, "copylogos" );
_LIT8( KHspsLiwInterface, "interface" );
_LIT8( KHspsLiwUid, "uid" );
_LIT8( KHspsLiwName, "name" );
--- a/homescreensrv_plat/sapi_homescreenplugin/src/hspsconfigurationif.cpp Wed Mar 03 15:38:34 2010 +0200
+++ b/homescreensrv_plat/sapi_homescreenplugin/src/hspsconfigurationif.cpp Wed May 12 13:36:47 2010 +0300
@@ -424,8 +424,9 @@
TInt pos;
TPtrC8 interface;
TPtrC8 type;
+ TBool copyLogos = EFalse;
const TLiwGenericParam* inParam;
- TLiwVariant inParamVariant;
+ TLiwVariant inParamVariant;
// Get interface parameter (mandatory)
pos = 0;
@@ -433,43 +434,58 @@
pos,
KHspsLiwInterface );
- if( inParam )
- {
- inParamVariant = inParam->Value();
- interface.Set( inParamVariant.AsData() );
-
- // Get type parameter (optional)
- pos = 0;
- inParam = aInParamList.FindFirst(
- pos,
- KHspsLiwType );
- if ( inParam )
- {
- inParamVariant = inParam->Value();
- type.Set( inParamVariant.AsData() );
- }
-
- // Get headers list of defined interface
- TUint32 family;
- iHspsConfigurationService->GetFamilyL( family );
- CArrayPtrFlat<ChspsODT>* list =
- new ( ELeave )CArrayPtrFlat<ChspsODT>( KHeaderListGranularity );
- CleanupStack::PushL( TCleanupItem( DeleteArrayItems, list ) );
- iHspsPersonalisationService->GetPluginListL(
- interface,
- type,
- family,
- *list );
-
- // Create GetPlugins output parameters
- CHspsLiwUtilities::GetPluginsOutputL( *list, aOutParamList );
- CleanupStack::PopAndDestroy( list );
- }
- else
+ if( !inParam )
{
// Invalid method call
User::Leave( KErrArgument );
}
+
+ inParamVariant = inParam->Value();
+ interface.Set( inParamVariant.AsData() );
+
+ // Get type parameter (optional)
+ pos = 0;
+ inParam = aInParamList.FindFirst(
+ pos,
+ KHspsLiwType );
+ if ( inParam )
+ {
+ inParamVariant = inParam->Value();
+ type.Set( inParamVariant.AsData() );
+ }
+
+ // Get copylogos parameter (optional)
+ pos = 0;
+ inParam = aInParamList.FindFirst(
+ pos,
+ KHspsLiwCopyLogos );
+ if ( inParam )
+ {
+ inParamVariant = inParam->Value();
+ copyLogos = inParamVariant.AsTBool();
+ }
+
+ // Get headers list of defined interface
+ TUint32 family;
+ iHspsConfigurationService->GetFamilyL( family );
+
+ CArrayPtrFlat<ChspsODT>* list =
+ new ( ELeave )CArrayPtrFlat<ChspsODT>( KHeaderListGranularity );
+ CleanupStack::PushL( TCleanupItem( DeleteArrayItems, list ) );
+
+ // Get headers list of defined interface
+ iHspsPersonalisationService->GetPluginListL(
+ interface,
+ type,
+ family,
+ copyLogos,
+ *list );
+
+ // Create GetPlugins output parameters
+ CHspsLiwUtilities::GetPluginsOutputL( *list, aOutParamList );
+
+ CleanupStack::PopAndDestroy( list );
+
}
// -----------------------------------------------------------------------------
@@ -1131,15 +1147,6 @@
{
inParamVariant = inParam->Value();
pluginId.Set( inParamVariant.AsData() );
- // Check that plugin node exists
- ChspsDomNode* node = &( CHspsLiwUtilities::FindRootNodeByIdentifierL(
- KPluginElement,
- pluginId,
- *( iHspsConfigurationService->GetDOML().RootNode() ) ) );
- if ( !node )
- {
- User::Leave( KErrNotFound );
- }
}
else
{
--- a/homescreensrv_plat/sapi_homescreenplugin/tsrc/common/src/mt_hsps.cpp Wed Mar 03 15:38:34 2010 +0200
+++ b/homescreensrv_plat/sapi_homescreenplugin/tsrc/common/src/mt_hsps.cpp Wed May 12 13:36:47 2010 +0300
@@ -36,7 +36,7 @@
_LIT8( KHspsAppUid, "appUid" );
// Heap size for test step thread
-const TUint KDefaultHeapSize = 0x10000;
+const TUint KDefaultHeapSize = 0x100000;
// Test step data
typedef struct
@@ -555,9 +555,9 @@
TInt err = testThread.Create(
_L( "TestStep" ),
HSPSTestStepThread,
- 0x5000, // 20kB
- KDefaultHeapSize,
- KDefaultHeapSize,
+ 0xA000, // 40kB
+ KDefaultHeapSize * 2, // 2 times of base size
+ KDefaultHeapSize * 8, // 8 times of base size - needed by Eunit
( TAny* )&data,
EOwnerProcess );
@@ -595,11 +595,12 @@
User::WaitForRequest( status );
err = status.Int();
- testThread.Close();
-
// Give test thread some time to close
User::After( 2000000 );
-
+
+ // Terminate thread.
+ testThread.Kill( KErrNone );
+ testThread.Close();
}
User::LeaveIfError( err );
--- a/homescreensrv_plat/sapi_homescreenplugin/tsrc/common/src/mt_hspsteststep.cpp Wed Mar 03 15:38:34 2010 +0200
+++ b/homescreensrv_plat/sapi_homescreenplugin/tsrc/common/src/mt_hspsteststep.cpp Wed May 12 13:36:47 2010 +0300
@@ -30,7 +30,7 @@
// ======== LOCAL CONSTANTS ====================================================
// Test step timeout
-const TInt KTestStepTimeout = 5000000;
+const TInt KTestStepTimeout = 15000000;
// Max input
const TInt KTestStepInputSizeMax = 1000;
@@ -327,6 +327,21 @@
exitNow = ETrue;
}
}
+
+ if( exitNow )
+ {
+ logBus->LogText( _L("------------------------------------------") );
+ logBus->LogText( _L("Differences found. Dumping output in full:") );
+ for ( TInt i = 0;
+ i < iOutParams->Length();
+ i++ )
+ {
+ logBus->LogText( _L("[%5d], %3d, '%c'"),
+ i, // index
+ ( TUint16 )aOutPtr[i],
+ ( TUint16 )aOutPtr[i] );
+ }
+ }
CleanupStack::PopAndDestroy( logBus );
}
@@ -386,6 +401,8 @@
RDesReadStream inParamStream;
inParamStream.Open( inParamBufPtr );
+
+ // If this fails, field sizes are invalid in the "LIW" input
CLiwGenericParamList* inParamList =
CLiwGenericParamList::NewL( inParamStream );
inParamStream.Release();
--- a/homescreensrv_plat/sapi_homescreenplugin/tsrc/group/mt_sapi_homescreenplugin_armv5.pkg Wed Mar 03 15:38:34 2010 +0200
+++ b/homescreensrv_plat/sapi_homescreenplugin/tsrc/group/mt_sapi_homescreenplugin_armv5.pkg Wed May 12 13:36:47 2010 +0300
@@ -108,6 +108,7 @@
"../testthemes/finnish_widget/manifest.dat"-"c:/data/mt_hsps/finnish_widget/manifest.dat"
"../testthemes/finnish_widget/widgetconfiguration.xml"-"c:/data/mt_hsps/finnish_widget/widgetconfiguration.xml"
"../testthemes/finnish_widget/common.jpg"-"c:/data/mt_hsps/finnish_widget/common.jpg"
+"../testthemes/finnish_widget/dummy.mif"-"c:/data/mt_hsps/finnish_widget/dummy.mif"
"../testthemes/finnish_widget/0/locale.dtd"-"c:/data/mt_hsps/finnish_widget/0/locale.dtd"
"../testthemes/finnish_widget/9/locale.dtd"-"c:/data/mt_hsps/finnish_widget/9/locale.dtd"
"../testthemes/finnish_widget/0/localizedbg.jpg"-"c:/data/mt_hsps/finnish_widget/0/localizedbg.jpg"
@@ -117,6 +118,7 @@
"../testthemes/installed_widget/manifest.dat"-"c:/data/mt_hsps/installed_widget/manifest.dat"
"../testthemes/installed_widget/plugin_0998_101FB657_2000B133_1.0.dat"-"c:/data/mt_hsps/installed_widget/plugin_0998_101FB657_2000B133_1.0.dat"
"../testthemes/installed_widget/widgetconfiguration.xml"-"c:/data/mt_hsps/installed_widget/widgetconfiguration.xml"
+"../testthemes/installed_widget/widgetconfiguration_customized.xml"-"c:/data/mt_hsps/installed_widget/widgetconfiguration_customized.xml"
"../testthemes/installed_widget/0/locale.dtd"-"c:/data/mt_hsps/installed_widget/0/locale.dtd"
"../testthemes/installed_widget/0/hs_logo.jpg"-"c:/data/mt_hsps/installed_widget/0/hs_logo.jpg"
"../testthemes/installed_widget/0/widget.bmp"-"c:/data/mt_hsps/installed_widget/0/widget.bmp"
--- a/homescreensrv_plat/sapi_homescreenplugin/tsrc/group/mt_sapi_homescreenplugin_winscw.pkg Wed Mar 03 15:38:34 2010 +0200
+++ b/homescreensrv_plat/sapi_homescreenplugin/tsrc/group/mt_sapi_homescreenplugin_winscw.pkg Wed May 12 13:36:47 2010 +0300
@@ -108,6 +108,7 @@
"../testthemes/finnish_widget/manifest.dat"-"c:/data/mt_hsps/finnish_widget/manifest.dat"
"../testthemes/finnish_widget/widgetconfiguration.xml"-"c:/data/mt_hsps/finnish_widget/widgetconfiguration.xml"
"../testthemes/finnish_widget/common.jpg"-"c:/data/mt_hsps/finnish_widget/common.jpg"
+"../testthemes/finnish_widget/dummy.mif"-"c:/data/mt_hsps/finnish_widget/dummy.mif"
"../testthemes/finnish_widget/0/locale.dtd"-"c:/data/mt_hsps/finnish_widget/0/locale.dtd"
"../testthemes/finnish_widget/9/locale.dtd"-"c:/data/mt_hsps/finnish_widget/9/locale.dtd"
"../testthemes/finnish_widget/0/localizedbg.jpg"-"c:/data/mt_hsps/finnish_widget/0/localizedbg.jpg"
@@ -117,6 +118,7 @@
"../testthemes/installed_widget/manifest.dat"-"c:/data/mt_hsps/installed_widget/manifest.dat"
"../testthemes/installed_widget/plugin_0998_101FB657_2000B133_1.0.dat"-"c:/data/mt_hsps/installed_widget/plugin_0998_101FB657_2000B133_1.0.dat"
"../testthemes/installed_widget/widgetconfiguration.xml"-"c:/data/mt_hsps/installed_widget/widgetconfiguration.xml"
+"../testthemes/installed_widget/widgetconfiguration_customized.xml"-"c:/data/mt_hsps/installed_widget/widgetconfiguration_customized.xml"
"../testthemes/installed_widget/0/locale.dtd"-"c:/data/mt_hsps/installed_widget/0/locale.dtd"
"../testthemes/installed_widget/0/hs_logo.jpg"-"c:/data/mt_hsps/installed_widget/0/hs_logo.jpg"
"../testthemes/installed_widget/0/widget.bmp"-"c:/data/mt_hsps/installed_widget/0/widget.bmp"
--- a/homescreensrv_plat/sapi_homescreenplugin/tsrc/group/updatetests.cmd Wed Mar 03 15:38:34 2010 +0200
+++ b/homescreensrv_plat/sapi_homescreenplugin/tsrc/group/updatetests.cmd Wed May 12 13:36:47 2010 +0300
@@ -20,4 +20,5 @@
if exist \epoc32\winscw\c\sys\bin\mt_*.dll del \epoc32\winscw\c\sys\bin\mt_*.dll
if exist \epoc32\winscw\c\sys\hash\mt_*.dll del \epoc32\winscw\c\sys\hash\mt_*.dll
-copy \epoc32\release\winscw\udeb\mt_*.dll \epoc32\release\winscw\udeb\z\sys\bin
\ No newline at end of file
+md \epoc32\winscw\c\sys\bin\
+copy \epoc32\release\winscw\udeb\mt_*.dll \epoc32\winscw\c\sys\bin\
\ No newline at end of file
--- a/homescreensrv_plat/sapi_homescreenplugin/tsrc/hspsconfigurationif/inc/mt_hsps_addplugin_9.h Wed Mar 03 15:38:34 2010 +0200
+++ b/homescreensrv_plat/sapi_homescreenplugin/tsrc/hspsconfigurationif/inc/mt_hsps_addplugin_9.h Wed May 12 13:36:47 2010 +0300
@@ -510,7 +510,117 @@
// - Version 1.0
// - Item count (LE)
10,
-2,0,0,0,
+3,0,0,0,
+// - pluginConf::resources
+// - Version 1.0
+// - List item starts
+10,
+0,0,0,0,
+// - object[0]
+// - Version 1.0
+// - Variant value type, EVariantTypeMap
+10,
+8,
+// - object[0] map
+// - Version 1.0
+// - Item count (LE)
+10,
+4,0,0,0,
+// - object[0]::name
+// - Variant name
+// - Version 1.0
+// - Semantic ID (LE)
+// - Variant name length (LE)
+// - Variant name descriptor maximum length ( ( variant name length * 4 ) + 2 )
+// - Variant name
+10,
+12,0,0,0,
+4,0,0,0,
+18,
+'n','a','m','e',
+// - object[0]::name
+// - Variant value
+// - Version 1.0
+// - Variant value type, EVariantTypeDesC
+// - Variant value length (LE)
+// - Variant value descriptor maximum length ( ( variant value length * 4 ) + 2 )
+// - Variant value
+10,
+5,
+9,0,0,0,
+38,
+'d','u','m','m','y','.','m','i','f',
+// - object[0]::path
+// - Variant name
+// - Version 1.0
+// - Semantic ID (LE)
+// - Variant name length (LE)
+// - Variant name descriptor maximum length ( ( variant name length * 4 ) + 2 )
+// - Variant name
+10,
+12,0,0,0,
+4,0,0,0,
+18,
+'p','a','t','h',
+// - object[0]::path
+// - Variant value
+// - Version 1.0
+// - Variant value type, EVariantTypeDesC
+// - Variant value length (LE)
+// - Variant value descriptor maximum length ( ( variant value length * 4 ) + 2 )
+// - Variant value
+10,
+5,
+37,0,0,0,
+150,
+'2','4','5','6','\\','2','7','0','5','1','3','7','5','1','\\','5','3','6','9','1','6','2','7','4','\\','1','.','0','\\','s','o','u','r','c','e','s','\\',
+// - object[0]::mediatype
+// - Variant name
+// - Version 1.0
+// - Semantic ID (LE)
+// - Variant name length (LE)
+// - Variant name descriptor maximum length ( ( variant name length * 4 ) + 2 )
+// - Variant name
+10,
+12,0,0,0,
+9,0,0,0,
+38,
+'m','e','d','i','a','t','y','p','e',
+// - object[0]::mediatype
+// - Variant value
+// - Version 1.0
+// - Variant value type, EVariantTypeDesC
+// - Variant value length (LE)
+// - Variant value descriptor maximum length ( ( variant value length * 4 ) + 2 )
+// - Variant value
+10,
+5,
+0,0,0,0,
+2,
+// - Object[0]::tag
+// - Variant name
+// - Version 1.0
+// - Semantic ID (LE)
+// - Variant name length (LE)
+// - Variant name descriptor maximum length ( ( variant name length * 4 ) + 2 )
+// - Variant name
+10,
+12,0,0,0,
+3,0,0,0,
+14,
+'t','a','g',
+// - Object[0]::tag
+// - Variant value
+// - Version 1.0
+// - Variant value type, EVariantTypeDesC
+// - Variant value length (LE)
+// - Variant value descriptor maximum length ( ( variant value length * 4 ) + 2 )
+// - Variant value
+10,
+5,
+4,0,0,0,
+18,
+'l','o','g','o',
// - pluginConf::resources
// - Version 1.0
// - List item starts
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreensrv_plat/sapi_homescreenplugin/tsrc/hspsconfigurationif/inc/mt_hsps_customization_1.h Wed May 12 13:36:47 2010 +0300
@@ -0,0 +1,127 @@
+/*
+* 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".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: Test case Customizations(1) test data
+*
+*/
+
+#ifndef MT_HSPS_CUSTOMIZATION_1_H_
+#define MT_HSPS_CUSTOMIZATION_1_H_
+
+/*
+Customizations(1)
+----------------
+
+Test purpose
+
+Verify that customized configurations are shadowing similar files
+in ROM drive. Customized content can written to similar folder
+structure, to any internal drive which users cannot hack (too easily).
+HSPS's ROM installer should then utilize ecplised files from the
+customization folders instead.
+This test utilizes a copy of the orginal xml file, with an
+exception that all the default settings have been removed.
+
+Pre-conditions
+• There must be installed test themes for Active Idle application and
+ Minimal configuration must be set as active. Installed_widget with
+ an 2000B133 UID must be available. Customized configuration file is
+ written to the C's install folder for shadowing purposes.
+
+Test steps
+
+Test step 1:
+• Input:
+ InstallConfigurationL( KHSPSInstallInstalledWidgetConf );
+• Expected output:
+ "Installed_widget" is installed successfully.
+
+Test step 2:
+• Input:
+ GetPluginSettings(“plugin uid”)
+• Expected output:
+ All settings, which were there by default, are now gone.
+
+*/
+
+// Test step 2 method:
+const TUint8 customization_1_ts_2_method[] = "GetPluginSettings";
+
+// Test step 2 input:
+const TUint8 customization_1_ts_2_input[] = {
+// GetPluginSettings(Input)
+// - Version 1.0
+// - Item count (LE)
+10,
+1,0,0,0,
+// - GetPluginSettings(Input)::pluginUid
+// - Variant name
+// - Version 1.0
+// - Semantic ID (LE)
+// - Variant name length (LE)
+// - Variant name descriptor maximum length ( ( variant name length * 4 ) + 2 )
+// - Variant name
+10,
+12,0,0,0,
+9,0,0,0,
+38,
+'p','l','u','g','i','n','U','i','d',
+// - GetPluginSettings(Input)::pluginUid
+// - Variant value
+// - Version 1.0
+// - Variant value type, EVariantTypeDesC
+// - Variant value length (LE)
+// - Variant value descriptor maximum length ( ( variant value length * 4 ) + 2 )
+// - Variant value
+10,
+5,
+10,0,0,0,
+42,
+'0','x','2','0','0','0','B','1','3','3'
+};
+
+// Test step 2 output:
+const TUint8 customization_1_ts_2_output[] = {
+// GetPluginSettings(Output)
+// - Version 1.0
+// - Item count (LE)
+10,
+1,0,0,0,
+// - GetPluginSettings::settings
+// - Variant name
+// - Version 1.0
+// - Semantic ID (LE)
+// - Variant name length (LE)
+// - Variant name descriptor maximum length ( ( variant name length * 4 ) + 2 )
+// - Variant name
+10,
+12,0,0,0,
+8,0,0,0,
+34,
+'s','e','t','t','i','n','g','s',
+// - GetPluginSettings::settings
+// - Variant value
+// - Version 1.0
+// - Variant value type, EVariantTypeList
+10,
+7,
+// - GetPluginSettings::settings
+// - Version 1.0
+// - Item count (LE)
+10,
+0,0,0,0,
+};
+
+
+
+#endif /*MT_HSPS_CUSTOMIZATION_1_H_*/
--- a/homescreensrv_plat/sapi_homescreenplugin/tsrc/hspsconfigurationif/inc/mt_hsps_getplugins_1.h Wed Mar 03 15:38:34 2010 +0200
+++ b/homescreensrv_plat/sapi_homescreenplugin/tsrc/hspsconfigurationif/inc/mt_hsps_getplugins_1.h Wed May 12 13:36:47 2010 +0300
@@ -128,7 +128,7 @@
// - Version 1.0
// - Item count (LE)
10,
-6,0,0,0,
+7,0,0,0,
// - plugins[0]::uid
// - Variant name
// - Version 1.0
@@ -272,6 +272,30 @@
5,
0,0,0,0,
2,
+// - plugins[0]::logo
+// - Variant name
+// - Version 1.0
+// - Semantic ID (LE)
+// - Variant name length (LE)
+// - Variant name descriptor maximum length ( ( variant name length * 4 ) + 2 )
+// - Variant name
+10,
+12,0,0,0,
+4,0,0,0,
+18,
+'l','o','g','o',
+// - plugins[0]::logo
+// - Variant value
+// - Version 1.0
+// - Variant value type, EVariantTypeDesC
+// - Variant value length (LE)
+// - Variant value descriptor maximum length ( ( variant value length * 4 ) + 2 )
+// - Variant value
+10,
+5,
+55,0,0,0,
+222,
+'m','i','f','(','2','4','5','6','\\','2','7','0','5','1','3','7','5','1','\\','5','3','6','9','1','6','2','7','4','\\','1','.','0','\\','s','o','u','r','c','e','s','\\','d','u','m','m','y','.','m','i','f',' ','1',' ','2',')',
// GetPlugins(Output)::plugins
// - Version 1.0
// - List item starts
@@ -452,10 +476,9 @@
// - Variant value
10,
5,
-75,0,0,0,
-93,
-2,
-'m','i','f','(','c',':','\\','p','r','i','v','a','t','e','\\','2','0','0','0','0','F','B','1','\\','2','4','5','6','\\','2','7','0','5','1','3','7','5','1','\\','5','3','6','9','1','6','2','7','3','\\','1','.','0','\\','s','o','u','r','c','e','s','\\','d','u','m','m','y','.','m','i','f',' ','1',' ','2',')',
+55,0,0,0,
+222,
+'m','i','f','(','2','4','5','6','\\','2','7','0','5','1','3','7','5','1','\\','5','3','6','9','1','6','2','7','3','\\','1','.','0','\\','s','o','u','r','c','e','s','\\','d','u','m','m','y','.','m','i','f',' ','1',' ','2',')',
// GetPlugins(Output)::plugins
// - Version 1.0
// - List item starts
--- a/homescreensrv_plat/sapi_homescreenplugin/tsrc/hspsconfigurationif/inc/mt_hsps_getplugins_3.h Wed Mar 03 15:38:34 2010 +0200
+++ b/homescreensrv_plat/sapi_homescreenplugin/tsrc/hspsconfigurationif/inc/mt_hsps_getplugins_3.h Wed May 12 13:36:47 2010 +0300
@@ -321,10 +321,9 @@
// - Variant value
10,
5,
-75,0,0,0,
-93,
-2,
-'m','i','f','(','c',':','\\','p','r','i','v','a','t','e','\\','2','0','0','0','0','F','B','1','\\','2','4','5','6','\\','2','7','0','5','1','3','7','5','1','\\','5','3','6','9','1','6','2','7','3','\\','1','.','0','\\','s','o','u','r','c','e','s','\\','d','u','m','m','y','.','m','i','f',' ','1',' ','2',')',
+55,0,0,0,
+222,
+'m','i','f','(','2','4','5','6','\\','2','7','0','5','1','3','7','5','1','\\','5','3','6','9','1','6','2','7','3','\\','1','.','0','\\','s','o','u','r','c','e','s','\\','d','u','m','m','y','.','m','i','f',' ','1',' ','2',')',
// GetPlugins(Output)::plugins
// - Version 1.0
// - List item starts
--- a/homescreensrv_plat/sapi_homescreenplugin/tsrc/hspsconfigurationif/inc/mt_hsps_getplugins_4.h Wed Mar 03 15:38:34 2010 +0200
+++ b/homescreensrv_plat/sapi_homescreenplugin/tsrc/hspsconfigurationif/inc/mt_hsps_getplugins_4.h Wed May 12 13:36:47 2010 +0300
@@ -150,7 +150,7 @@
// - Version 1.0
// - Item count (LE)
10,
-6,0,0,0,
+7,0,0,0,
// - plugins[0]::uid
// - Variant name
// - Version 1.0
@@ -294,6 +294,30 @@
5,
0,0,0,0,
2,
+// - object[0]::path
+// - Variant name
+// - Version 1.0
+// - Semantic ID (LE)
+// - Variant name length (LE)
+// - Variant name descriptor maximum length ( ( variant name length * 4 ) + 2 )
+// - Variant name
+10,
+12,0,0,0,
+4,0,0,0,
+18,
+'l','o','g','o',
+// - object[0]::path
+// - Variant value
+// - Version 1.0
+// - Variant value type, EVariantTypeDesC
+// - Variant value length (LE)
+// - Variant value descriptor maximum length ( ( variant value length * 4 ) + 2 )
+// - Variant value
+10,
+5,
+55,0,0,0,
+222,
+'m','i','f','(','2','4','5','6','\\','2','7','0','5','1','3','7','5','1','\\','5','3','6','9','1','6','2','7','4','\\','1','.','0','\\','s','o','u','r','c','e','s','\\','d','u','m','m','y','.','m','i','f',' ','1',' ','2',')',
// GetPlugins(Output)::plugins
// - Version 1.0
// - List item starts
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreensrv_plat/sapi_homescreenplugin/tsrc/hspsconfigurationif/inc/mt_hsps_getplugins_8.h Wed May 12 13:36:47 2010 +0300
@@ -0,0 +1,658 @@
+/*
+* 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".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: Test case GetPlugins(8) test data
+*
+*/
+
+
+#ifndef C_MT_HSPS_GETPLUGINS_8_H
+#define C_MT_HSPS_GETPLUGINS_8_H
+
+/*
+GetPlugins(8)
+----------------
+
+Test purpose
+Verify that logo files are copied to client’s private folder.
+
+Pre-conditions
+There must be installed test themes for Active Idle application and Operator configuration must be set as active
+
+Test steps
+Test step 1:
+• Input:
+ GetPlugins(“0x0998”, “widget”,“True” )
+• Expected output
+ Plugin list holding the widget configurations, logo files should exist in the target directory
+*/
+
+// Test step 1 method:
+
+const TUint8 getplugins_8_ts_1_method[] = "GetPlugins";
+
+// Test step 1 input:
+
+const TUint8 getplugins_8_ts_1_input[] = {
+// GetPlugins(Input)
+// - Version 1.0
+// - Item count (LE)
+10,
+3,0,0,0,
+// - GetPlugins(Input)::interface
+// - Variant name
+// - Version 1.0
+// - Semantic ID (LE)
+// - Variant name length (LE)
+// - Variant name descriptor maximum length ( ( variant name length * 4 ) + 2 )
+// - Variant name
+10,
+12,0,0,0,
+9,0,0,0,
+38,
+'i','n','t','e','r','f','a','c','e',
+// - GetPlugins(Input)::interface
+// - Variant value
+// - Version 1.0
+// - Variant value type, EVariantTypeDesC
+// - Variant value length (LE)
+// - Variant value descriptor maximum length ( ( variant value length * 4 ) + 2 )
+// - Variant value
+10,
+5,
+5,0,0,0,
+22,
+'0','x','9','9','8',
+// - GetPlugins(Input)::type
+// - Variant name
+// - Version 1.0
+// - Semantic ID (LE)
+// - Variant name length (LE)
+// - Variant name descriptor maximum length ( ( variant name length * 4 ) + 2 )
+// - Variant name
+10,
+12,0,0,0,
+4,0,0,0,
+18,
+'t','y','p','e',
+// - GetPlugins(Input)::type
+// - Variant value
+// - Version 1.0
+// - Variant value type, EVariantTypeDesC
+// - Variant value length (LE)
+// - Variant value descriptor maximum length ( ( variant value length * 4 ) + 2 )
+// - Variant value
+10,
+5,
+6,0,0,0,
+26,
+'w','i','d','g','e','t',
+// - GetPlugins(Input)::copylogos
+// - Variant name
+// - Version 1.0
+// - Semantic ID (LE)
+// - Variant name length (LE)
+// - Variant name descriptor maximum length ( ( variant name length * 4 ) + 2 )
+// - Variant name
+10,
+12,0,0,0,
+9,0,0,0,
+38,
+'c','o','p','y','l','o','g','o','s',
+// - GetPlugins(Input)::copylogos
+// - Variant value
+// - Version 1.0
+// - Variant value type, EVariantTypeTBool
+// - Variant value length (LE)
+// - Variant value descriptor maximum length ( ( variant value length * 4 ) + 2 )
+// - Variant value
+10,
+11,
+1,0,0,0,
+6,
+'1'
+};
+
+// Test step 1 output:
+
+const TUint8 getplugins_8_ts_1_output[] = {
+// GetPluginConf(Output)
+// - Version 1.0
+// - Item count (LE)
+10,
+1,0,0,0,
+// GetPlugins(Output)::plugins
+// - Variant name
+// - Version 1.0
+// - Semantic ID (LE)
+// - Variant name length (LE)
+// - Variant name descriptor maximum length ( ( variant name length * 4 ) + 2 )
+// - Variant name
+10,
+12,0,0,0,
+7,0,0,0,
+30,
+'p','l','u','g','i','n','s',
+// GetPlugins(Output)::plugins
+// - Variant value
+// - Version 1.0
+// - Variant value type, EVariantTypeList
+10,
+7,
+// GetPlugins(Output)::plugins
+// - Version 1.0
+// - Item count (LE)
+10,
+3,0,0,0,
+// GetPlugins(Output)::plugins
+// - Version 1.0
+// - List item starts
+10,
+0,0,0,0,
+// - plugins[0]
+// - Version 1.0
+// - Variant value type, EVariantTypeMap
+10,
+8,
+// - plugins[0] map
+// - Version 1.0
+// - Item count (LE)
+10,
+7,0,0,0,
+// - plugins[0]::uid
+// - Variant name
+// - Version 1.0
+// - Semantic ID (LE)
+// - Variant name length (LE)
+// - Variant name descriptor maximum length ( ( variant name length * 4 ) + 2 )
+// - Variant name
+10,
+12,0,0,0,
+3,0,0,0,
+14,
+'u','i','d',
+// - plugins[0]::uid
+// - Variant value
+// - Version 1.0
+// - Variant value type, EVariantTypeDesC
+// - Variant value length (LE)
+// - Variant value descriptor maximum length ( ( variant value length * 4 ) + 2 )
+// - Variant value
+10,
+5,
+10,0,0,0,
+42,
+'0','x','2','0','0','0','b','1','3','2',
+// - plugins[0]::interface
+// - Variant name
+// - Version 1.0
+// - Semantic ID (LE)
+// - Variant name length (LE)
+// - Variant name descriptor maximum length ( ( variant name length * 4 ) + 2 )
+// - Variant name
+10,
+12,0,0,0,
+9,0,0,0,
+38,
+'i','n','t','e','r','f','a','c','e',
+// - plugins[0]::interface
+// - Variant value
+// - Version 1.0
+// - Variant value type, EVariantTypeDesC
+// - Variant value length (LE)
+// - Variant value descriptor maximum length ( ( variant value length * 4 ) + 2 )
+// - Variant value
+10,
+5,
+5,0,0,0,
+22,
+'0','x','9','9','8',
+// - plugins[0]::type
+// - Variant name
+// - Version 1.0
+// - Semantic ID (LE)
+// - Variant name length (LE)
+// - Variant name descriptor maximum length ( ( variant name length * 4 ) + 2 )
+// - Variant name
+10,
+12,0,0,0,
+4,0,0,0,
+18,
+'t','y','p','e',
+// - plugins[0]::type
+// - Variant value
+// - Version 1.0
+// - Variant value type, EVariantTypeDesC
+// - Variant value length (LE)
+// - Variant value descriptor maximum length ( ( variant value length * 4 ) + 2 )
+// - Variant value
+10,
+5,
+6,0,0,0,
+26,
+'w','i','d','g','e','t',
+// - plugins[0]::name
+// - Variant name
+// - Version 1.0
+// - Semantic ID (LE)
+// - Variant name length (LE)
+// - Variant name descriptor maximum length ( ( variant name length * 4 ) + 2 )
+// - Variant name
+10,
+12,0,0,0,
+4,0,0,0,
+18,
+'n','a','m','e',
+// - plugins[0]::name
+// - Variant value
+// - Version 1.0
+// - Variant value type, EVariantTypeDesC
+// - Variant value length (LE)
+// - Variant value descriptor maximum length ( ( variant value length * 4 ) + 2 )
+// - Variant value
+10,
+5,
+16,0,0,0,
+66,
+'F','i','n','n','i','s','h',' ','-',' ','W','i','d','g','e','t',
+// - plugins[0]::multiinstance
+// - Variant name
+// - Version 1.0
+// - Semantic ID (LE)
+// - Variant name length (LE)
+// - Variant name descriptor maximum length ( ( variant name length * 4 ) + 2 )
+// - Variant name
+10,
+12,0,0,0,
+13,0,0,0,
+54,
+'m','u','l','t','i','i','n','s','t','a','n','c','e',
+// - plugins[0]::multiinstance
+// - Variant value
+// - Version 1.0
+// - Variant value type, EVariantTypeDesC
+// - Variant value length (LE)
+// - Variant value descriptor maximum length ( ( variant value length * 4 ) + 2 )
+// - Variant value
+10,
+5,
+1,0,0,0,
+6,
+'1',
+// - plugins[0]::description
+// - Variant name
+// - Version 1.0
+// - Semantic ID (LE)
+// - Variant name length (LE)
+// - Variant name descriptor maximum length ( ( variant name length * 4 ) + 2 )
+// - Variant name
+10,
+12,0,0,0,
+4,0,0,0,
+18,
+'d','e','s','c',
+// - plugins[0]::description
+// - Variant value
+// - Version 1.0
+// - Variant value type, EVariantTypeDesC
+// - Variant value length (LE)
+// - Variant value descriptor maximum length ( ( variant value length * 4 ) + 2 )
+// - Variant value
+10,
+5,
+0,0,0,0,
+2,
+// - plugins[0]::logo
+// - Variant name
+// - Version 1.0
+// - Semantic ID (LE)
+// - Variant name length (LE)
+// - Variant name descriptor maximum length ( ( variant name length * 4 ) + 2 )
+// - Variant name
+10,
+12,0,0,0,
+4,0,0,0,
+18,
+'l','o','g','o',
+// - plugins[0]::logo
+// - Variant value
+// - Version 1.0
+// - Variant value type, EVariantTypeDesC
+// - Variant value length (LE)
+// - Variant value descriptor maximum length ( ( variant value length * 4 ) + 2 )
+// - Variant value
+10,
+5,
+75,0,0,0,
+93,
+2,
+'m','i','f','(','c',':','\\','p','r','i','v','a','t','e','\\','2','0','0','0','0','F','B','1','\\','2','4','5','6','\\','2','7','0','5','1','3','7','5','1','\\','5','3','6','9','1','6','2','7','4','\\','1','.','0','\\','s','o','u','r','c','e','s','\\','d','u','m','m','y','.','m','i','f',' ','1',' ','2',')',
+// GetPlugins(Output)::plugins
+// - Version 1.0
+// - List item starts
+10,
+0,0,0,0,
+// - plugins[1]
+// - Version 1.0
+// - Variant value type, EVariantTypeMap
+10,
+8,
+// - plugins[1] map
+// - Version 1.0
+// - Item count (LE)
+10,
+6,0,0,0,
+// - plugins[1]::uid
+// - Variant name
+// - Version 1.0
+// - Semantic ID (LE)
+// - Variant name length (LE)
+// - Variant name descriptor maximum length ( ( variant name length * 4 ) + 2 )
+// - Variant name
+10,
+12,0,0,0,
+3,0,0,0,
+14,
+'u','i','d',
+// - plugins[1]::uid
+// - Variant value
+// - Version 1.0
+// - Variant value type, EVariantTypeDesC
+// - Variant value length (LE)
+// - Variant value descriptor maximum length ( ( variant value length * 4 ) + 2 )
+// - Variant value
+10,
+5,
+10,0,0,0,
+42,
+'0','x','2','0','0','0','b','1','2','0',
+// - plugins[1]::interface
+// - Variant name
+// - Version 1.0
+// - Semantic ID (LE)
+// - Variant name length (LE)
+// - Variant name descriptor maximum length ( ( variant name length * 4 ) + 2 )
+// - Variant name
+10,
+12,0,0,0,
+9,0,0,0,
+38,
+'i','n','t','e','r','f','a','c','e',
+// - plugins[1]::interface
+// - Variant value
+// - Version 1.0
+// - Variant value type, EVariantTypeDesC
+// - Variant value length (LE)
+// - Variant value descriptor maximum length ( ( variant value length * 4 ) + 2 )
+// - Variant value
+10,
+5,
+5,0,0,0,
+22,
+'0','x','9','9','8',
+// - plugins[1]::type
+// - Variant name
+// - Version 1.0
+// - Semantic ID (LE)
+// - Variant name length (LE)
+// - Variant name descriptor maximum length ( ( variant name length * 4 ) + 2 )
+// - Variant name
+10,
+12,0,0,0,
+4,0,0,0,
+18,
+'t','y','p','e',
+// - plugins[1]::type
+// - Variant value
+// - Version 1.0
+// - Variant value type, EVariantTypeDesC
+// - Variant value length (LE)
+// - Variant value descriptor maximum length ( ( variant value length * 4 ) + 2 )
+// - Variant value
+10,
+5,
+6,0,0,0,
+26,
+'w','i','d','g','e','t',
+// - plugins[1]::name
+// - Variant name
+// - Version 1.0
+// - Semantic ID (LE)
+// - Variant name length (LE)
+// - Variant name descriptor maximum length ( ( variant name length * 4 ) + 2 )
+// - Variant name
+10,
+12,0,0,0,
+4,0,0,0,
+18,
+'n','a','m','e',
+// - plugins[1]::name
+// - Variant value
+// - Version 1.0
+// - Variant value type, EVariantTypeDesC
+// - Variant value length (LE)
+// - Variant value descriptor maximum length ( ( variant value length * 4 ) + 2 )
+// - Variant value
+10,
+5,
+16,0,0,0,
+66,
+'T','y','p','i','c','a','l',' ','-',' ','W','i','d','g','e','t',
+// - plugins[1]::multiinstance
+// - Variant name
+// - Version 1.0
+// - Semantic ID (LE)
+// - Variant name length (LE)
+// - Variant name descriptor maximum length ( ( variant name length * 4 ) + 2 )
+// - Variant name
+10,
+12,0,0,0,
+13,0,0,0,
+54,
+'m','u','l','t','i','i','n','s','t','a','n','c','e',
+// - plugins[1]::multiinstance
+// - Variant value
+// - Version 1.0
+// - Variant value type, EVariantTypeDesC
+// - Variant value length (LE)
+// - Variant value descriptor maximum length ( ( variant value length * 4 ) + 2 )
+// - Variant value
+10,
+5,
+1,0,0,0,
+6,
+'1',
+// - plugins[1]::description
+// - Variant name
+// - Version 1.0
+// - Semantic ID (LE)
+// - Variant name length (LE)
+// - Variant name descriptor maximum length ( ( variant name length * 4 ) + 2 )
+// - Variant name
+10,
+12,0,0,0,
+4,0,0,0,
+18,
+'d','e','s','c',
+// - plugins[1]::description
+// - Variant value
+// - Version 1.0
+// - Variant value type, EVariantTypeDesC
+// - Variant value length (LE)
+// - Variant value descriptor maximum length ( ( variant value length * 4 ) + 2 )
+// - Variant value
+10,
+5,
+0,0,0,0,
+2,
+// GetPlugins(Output)::plugins
+// - Version 1.0
+// - List item starts
+10,
+0,0,0,0,
+// - plugins[2]
+// - Version 1.0
+// - Variant value type, EVariantTypeMap
+10,
+8,
+// - plugins[2] map
+// - Version 1.0
+// - Item count (LE)
+10,
+6,0,0,0,
+// - plugins[2]::uid
+// - Variant name
+// - Version 1.0
+// - Semantic ID (LE)
+// - Variant name length (LE)
+// - Variant name descriptor maximum length ( ( variant name length * 4 ) + 2 )
+// - Variant name
+10,
+12,0,0,0,
+3,0,0,0,
+14,
+'u','i','d',
+// - plugins[2]::uid
+// - Variant value
+// - Version 1.0
+// - Variant value type, EVariantTypeDesC
+// - Variant value length (LE)
+// - Variant value descriptor maximum length ( ( variant value length * 4 ) + 2 )
+// - Variant value
+10,
+5,
+10,0,0,0,
+42,
+'0','x','2','0','0','0','b','1','0','2',
+// - plugins[2]::interface
+// - Variant name
+// - Version 1.0
+// - Semantic ID (LE)
+// - Variant name length (LE)
+// - Variant name descriptor maximum length ( ( variant name length * 4 ) + 2 )
+// - Variant name
+10,
+12,0,0,0,
+9,0,0,0,
+38,
+'i','n','t','e','r','f','a','c','e',
+// - plugins[2]::interface
+// - Variant value
+// - Version 1.0
+// - Variant value type, EVariantTypeDesC
+// - Variant value length (LE)
+// - Variant value descriptor maximum length ( ( variant value length * 4 ) + 2 )
+// - Variant value
+10,
+5,
+5,0,0,0,
+22,
+'0','x','9','9','8',
+// - plugins[2]::type
+// - Variant name
+// - Version 1.0
+// - Semantic ID (LE)
+// - Variant name length (LE)
+// - Variant name descriptor maximum length ( ( variant name length * 4 ) + 2 )
+// - Variant name
+10,
+12,0,0,0,
+4,0,0,0,
+18,
+'t','y','p','e',
+// - plugins[2]::type
+// - Variant value
+// - Version 1.0
+// - Variant value type, EVariantTypeDesC
+// - Variant value length (LE)
+// - Variant value descriptor maximum length ( ( variant value length * 4 ) + 2 )
+// - Variant value
+10,
+5,
+6,0,0,0,
+26,
+'w','i','d','g','e','t',
+// - plugins[2]::name
+// - Variant name
+// - Version 1.0
+// - Semantic ID (LE)
+// - Variant name length (LE)
+// - Variant name descriptor maximum length ( ( variant name length * 4 ) + 2 )
+// - Variant name
+10,
+12,0,0,0,
+4,0,0,0,
+18,
+'n','a','m','e',
+// - plugins[2]::name
+// - Variant value
+// - Version 1.0
+// - Variant value type, EVariantTypeDesC
+// - Variant value length (LE)
+// - Variant value descriptor maximum length ( ( variant value length * 4 ) + 2 )
+// - Variant value
+10,
+5,
+14,0,0,0,
+58,
+'W','i','d','g','e','t',' ','C','o','n','f',' ','#','1',
+// - plugins[2]::multiinstance
+// - Variant name
+// - Version 1.0
+// - Semantic ID (LE)
+// - Variant name length (LE)
+// - Variant name descriptor maximum length ( ( variant name length * 4 ) + 2 )
+// - Variant name
+10,
+12,0,0,0,
+13,0,0,0,
+54,
+'m','u','l','t','i','i','n','s','t','a','n','c','e',
+// - plugins[2]::multiinstance
+// - Variant value
+// - Version 1.0
+// - Variant value type, EVariantTypeDesC
+// - Variant value length (LE)
+// - Variant value descriptor maximum length ( ( variant value length * 4 ) + 2 )
+// - Variant value
+10,
+5,
+1,0,0,0,
+6,
+'1',
+// - plugins[2]::description
+// - Variant name
+// - Version 1.0
+// - Semantic ID (LE)
+// - Variant name length (LE)
+// - Variant name descriptor maximum length ( ( variant name length * 4 ) + 2 )
+// - Variant name
+10,
+12,0,0,0,
+4,0,0,0,
+18,
+'d','e','s','c',
+// - plugins[2]::description
+// - Variant value
+// - Version 1.0
+// - Variant value type, EVariantTypeDesC
+// - Variant value length (LE)
+// - Variant value descriptor maximum length ( ( variant value length * 4 ) + 2 )
+// - Variant value
+10,
+5,
+0,0,0,0,
+2
+};
+
+#endif // C_MT_HSPS_GETPLUGINS_8_H
--- a/homescreensrv_plat/sapi_homescreenplugin/tsrc/hspsconfigurationif/inc/mt_hsps_requestnotify_6.h Wed Mar 03 15:38:34 2010 +0200
+++ b/homescreensrv_plat/sapi_homescreenplugin/tsrc/hspsconfigurationif/inc/mt_hsps_requestnotify_6.h Wed May 12 13:36:47 2010 +0300
@@ -339,9 +339,9 @@
// - Variant value
10,
5,
-13,0,0,0,
-54,
-'P','l','u','g','i','n','U','p','d','a','t','e','d',
+15,0,0,0,
+62,
+'P','l','u','g','i','n','I','n','s','t','a','l','l','e','d',
// - Notification(Output)::appConfUid
// - Variant name
// - Version 1.0
@@ -800,8 +800,9 @@
// - Variant value
10,
5,
-0,0,0,0,
-2,
+10,0,0,0,
+42,
+'0','x','2','0','0','0','b','1','1','0',
// - Notification(Output)::origUid
// - Variant name
// - Version 1.0
@@ -846,9 +847,8 @@
// - Variant value
10,
5,
-21,0,0,0,
-86,
-'I','n','s','t','a','l','l','e','d',' ','-',' ','W','i','d','g','e','t',' ','V','2',
+0,0,0,0,
+2,
// - Notification(Output)::pluginUid
// - Variant name
// - Version 1.0
@@ -912,7 +912,7 @@
5,
1,0,0,0,
6,
-'0'
+'9'
};
const TInt requestnotify_6_ts_5_trigger = EHspsTriggerRunUninstallationCase;
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreensrv_plat/sapi_homescreenplugin/tsrc/hspsconfigurationif/inc/mt_hsps_restoreactiveappconf_1.h Wed May 12 13:36:47 2010 +0300
@@ -0,0 +1,580 @@
+/*
+* 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".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: Test case RestoreActiveAppConf(2) test data
+*
+*/
+
+#ifndef MT_HSPS_RESTOREACTIVEAPPCONF_1_H_
+#define MT_HSPS_RESTOREACTIVEAPPCONF_1_H_
+
+/*
+RestoreActiveAppConf(1)
+-------------------
+
+Test purpose:
+
+Verify that Operator configuration gets activated if the active
+application configuration is in error state prior to the GetActiveAppConf request.
+
+Pre-conditions:
+
+• There must be installed test themes for ActiveIdle application and Minimal
+ configuration must be set as active.
+
+Test steps:
+
+Test step 1:
+• Input:
+ SetConfState
+• Expected output:
+ Active application configuration was successfully set to error state
+
+Test step 2:
+• Input:
+ GetActiveAppConf
+• Expected output:
+ Operator configuration in “Confirmed” state
+
+*/
+
+
+// Test step 1 method:
+const TUint8 restoreactiveappconf_1_ts_1_method[] = "SetConfState";
+
+// Test step 1 input:
+const TUint8 restoreactiveappconf_1_ts_1_input[] = {
+// SetConfState(Input)
+// - Version 1.0
+// - Item count (LE)
+10,
+2,0,0,0,
+// - SetConfState(Input)::confid
+// - Variant name
+// - Version 1.0
+// - Semantic ID (LE)
+// - Variant name length (LE)
+// - Variant name descriptor maximum length ( ( variant name length * 4 ) + 2 )
+// - Variant name
+10,
+12,0,0,0,
+6,0,0,0,
+26,
+'c','o','n','f','I','d',
+// - SetConfState(Input)::value
+// - Variant value
+// - Version 1.0
+// - Variant value type, EVariantTypeDesC
+// - Variant value length (LE)
+// - Variant value descriptor maximum length ( ( variant value length * 4 ) + 2 )
+// - Variant value
+10,
+5,
+1,0,0,0,
+6,
+'1',
+// - SetConfState(Input)::state
+// - Variant name
+// - Version 1.0
+// - Semantic ID (LE)
+// - Variant name length (LE)
+// - Variant name descriptor maximum length ( ( variant name length * 4 ) + 2 )
+// - Variant name
+10,
+12,0,0,0,
+5,0,0,0,
+22,
+'s','t','a','t','e',
+// - SetConfState(Input)::value
+// - Variant value
+// - Version 1.0
+// - Variant value type, EVariantTypeDesC
+// - Variant value length (LE)
+// - Variant value descriptor maximum length ( ( variant value length * 4 ) + 2 )
+// - Variant value
+10,
+5,
+5,0,0,0,
+22,
+'e','r','r','o','r'
+};
+
+// Test step 1 expected output:
+const TUint8 restoreactiveappconf_1_ts_1_output[] = {
+// SetConfState(Output)
+// - Version 1.0
+// - Item count (LE)
+10,
+1,0,0,0,
+// - SetConfState(Output)::status
+// - Variant name
+// - Version 1.0
+// - Semantic ID (LE)
+// - Variant name length (LE)
+// - Variant name descriptor maximum length ( ( variant name length * 4 ) + 2 )
+// - Variant name
+10,
+12,0,0,0,
+6,0,0,0,
+26,
+'s','t','a','t','u','s',
+// - SetConfState(Input)::value
+// - Variant value
+// - Version 1.0
+// - Variant value type, EVariantTypeTInt32
+// - Variant value length (LE)
+// - Variant value descriptor maximum length ( ( variant value length * 4 ) + 2 )
+// - Variant value
+10,
+1,
+0,0,0,0
+};
+
+
+
+
+// Test step 2 method:
+const TUint8 restoreactiveappconf_1_ts_2_method[] = "GetActiveAppConf";
+
+
+// Test step 2 input:
+const TUint8 restoreactiveappconf_1_ts_2_input = 0;
+
+
+// Test step 2 expected output:
+const TUint8 restoreactiveappconf_1_ts_2_output[] = {
+// GetActiveAppConf(Output)
+// - Version 1.0
+// - Item count (LE)
+10,
+1,0,0,0,
+// GetActiveAppConf(Output)::appConf
+// - Variant name
+// - Version 1.0
+// - Semantic ID (LE)
+// - Variant name length (LE)
+// - Variant name descriptor maximum length ( ( variant name length * 4 ) + 2 )
+// - Variant name
+10,
+12,0,0,0,
+7,0,0,0,
+30,
+'a','p','p','C','o','n','f',
+// - Variant value
+// - Version 1.0
+// - Variant value type, EVariantTypeMap
+10,
+8,
+// - appConf map
+// - Version 1.0
+// - Item count (LE)
+10,
+12,0,0,0,
+// - appConf::id
+// - Variant name
+// - Version 1.0
+// - Semantic ID (LE)
+// - Variant name length (LE)
+// - Variant name descriptor maximum length ( ( variant name length * 4 ) + 2 )
+// - Variant name
+10,
+12,0,0,0,
+2,0,0,0,
+10,
+'i','d',
+// - appConf::id
+// - Variant value
+// - Version 1.0
+// - Variant value type, EVariantTypeDesC
+// - Variant value length (LE)
+// - Variant value descriptor maximum length ( ( variant value length * 4 ) + 2 )
+// - Variant value
+10,
+5,
+1,0,0,0,
+6,
+'1',
+// - appConf::uid
+// - Variant name
+// - Version 1.0
+// - Semantic ID (LE)
+// - Variant name length (LE)
+// - Variant name descriptor maximum length ( ( variant name length * 4 ) + 2 )
+// - Variant name
+10,
+12,0,0,0,
+3,0,0,0,
+14,
+'u','i','d',
+// - appConf::uid
+// - Variant value
+// - Version 1.0
+// - Variant value type, EVariantTypeDesC
+// - Variant value length (LE)
+// - Variant value descriptor maximum length ( ( variant value length * 4 ) + 2 )
+// - Variant value
+10,
+5,
+10,0,0,0,
+42,
+'0','x','2','0','0','0','B','1','3','0',
+// - appConf::type
+// - Variant name
+// - Version 1.0
+// - Semantic ID (LE)
+// - Variant name length (LE)
+// - Variant name descriptor maximum length ( ( variant name length * 4 ) + 2 )
+// - Variant name
+10,
+12,0,0,0,
+4,0,0,0,
+18,
+'t','y','p','e',
+// - appConf::type
+// - Variant value
+// - Version 1.0
+// - Variant value type, EVariantTypeDesC
+// - Variant value length (LE)
+// - Variant value descriptor maximum length ( ( variant value length * 4 ) + 2 )
+// - Variant value
+10,
+5,
+11,0,0,0,
+46,
+'a','p','p','l','i','c','a','t','i','o','n',
+// - appConf::interface
+// - Variant name
+// - Version 1.0
+// - Semantic ID (LE)
+// - Variant name length (LE)
+// - Variant name descriptor maximum length ( ( variant name length * 4 ) + 2 )
+// - Variant name
+10,
+12,0,0,0,
+9,0,0,0,
+38,
+'i','n','t','e','r','f','a','c','e',
+// - appConf::interface
+// - Variant value
+// - Version 1.0
+// - Variant value type, EVariantTypeDesC
+// - Variant value length (LE)
+// - Variant value descriptor maximum length ( ( variant value length * 4 ) + 2 )
+// - Variant value
+10,
+5,
+10,0,0,0,
+42,
+'0','x','2','0','0','0','0','F','B','1',
+// - appConf::name
+// - Variant name
+// - Version 1.0
+// - Semantic ID (LE)
+// - Variant name length (LE)
+// - Variant name descriptor maximum length ( ( variant name length * 4 ) + 2 )
+// - Variant name
+10,
+12,0,0,0,
+4,0,0,0,
+18,
+'n','a','m','e',
+// - appConf::name
+// - Variant value
+// - Version 1.0
+// - Variant value type, EVariantTypeDesC
+// - Variant value length (LE)
+// - Variant value descriptor maximum length ( ( variant value length * 4 ) + 2 )
+// - Variant value
+10,
+5,
+15,0,0,0,
+62,
+'O','p','e','r','a','t','o','r',' ','-',' ','r','o','o','t',
+// - appConf::multiinstance
+// - Variant name
+// - Version 1.0
+// - Semantic ID (LE)
+// - Variant name length (LE)
+// - Variant name descriptor maximum length ( ( variant name length * 4 ) + 2 )
+// - Variant name
+10,
+12,0,0,0,
+13,0,0,0,
+54,
+'m','u','l','t','i','i','n','s','t','a','n','c','e',
+// - appConf::multiinstance
+// - Variant value
+// - Version 1.0
+// - Variant value type, EVariantTypeDesC
+// - Variant value length (LE)
+// - Variant value descriptor maximum length ( ( variant value length * 4 ) + 2 )
+// - Variant value
+10,
+5,
+1,0,0,0,
+6,
+'1',
+// - appConf::description
+// - Variant name
+// - Version 1.0
+// - Semantic ID (LE)
+// - Variant name length (LE)
+// - Variant name descriptor maximum length ( ( variant name length * 4 ) + 2 )
+// - Variant name
+10,
+12,0,0,0,
+4,0,0,0,
+18,
+'d','e','s','c',
+// - appConf::description
+// - Variant value
+// - Version 1.0
+// - Variant value type, EVariantTypeDesC
+// - Variant value length (LE)
+// - Variant value descriptor maximum length ( ( variant value length * 4 ) + 2 )
+// - Variant value
+10,
+5,
+0,0,0,0,
+2,
+// - appConf::state
+// - Variant name
+// - Version 1.0
+// - Semantic ID (LE)
+// - Variant name length (LE)
+// - Variant name descriptor maximum length ( ( variant name length * 4 ) + 2 )
+// - Variant name
+10,
+12,0,0,0,
+5,0,0,0,
+22,
+'s','t','a','t','e',
+// - appConf::state
+// - Variant value
+// - Version 1.0
+// - Variant value type, EVariantTypeDesC
+// - Variant value length (LE)
+// - Variant value descriptor maximum length ( ( variant value length * 4 ) + 2 )
+// - Variant value
+10,
+5,
+12,0,0,0,
+50,
+'N','o','t','C','o','n','f','i','r','m','e','d',
+// - appConf::max_child
+// - Variant name
+// - Version 1.0
+// - Semantic ID (LE)
+// - Variant name length (LE)
+// - Variant name descriptor maximum length ( ( variant name length * 4 ) + 2 )
+// - Variant name
+10,
+12,0,0,0,
+9,0,0,0,
+38,
+'m','a','x','_','c','h','i','l','d',
+// - appConf::max_child
+// - Variant value
+// - Version 1.0
+// - Variant value type, EVariantTypeDesC
+// - Variant value length (LE)
+// - Variant value descriptor maximum length ( ( variant value length * 4 ) + 2 )
+// - Variant value
+10,
+5,
+1,0,0,0,
+6,
+'6',
+// - appConf::plugins
+// - Variant name
+// - Version 1.0
+// - Semantic ID (LE)
+// - Variant name length (LE)
+// - Variant name descriptor maximum length ( ( variant name length * 4 ) + 2 )
+// - Variant name
+10,
+12,0,0,0,
+7,0,0,0,
+30,
+'p','l','u','g','i','n','s',
+// - appConf::plugins
+// - Variant value
+// - Version 1.0
+// - Variant value type, EVariantTypeList
+10,
+7,
+// - appConf::plugins
+// - Version 1.0
+// - Item count (LE)
+10,
+1,0,0,0,
+// - appConf::plugins
+// - Version 1.0
+// - List item starts
+10,
+0,0,0,0,
+// - appConf::plugins[0]
+// - Version 1.0
+// - Variant value type, EVariantTypeMap
+10,
+8,
+// - plugins[0] map
+// - Version 1.0
+// - Item count (LE)
+10,
+4,0,0,0,
+// - plugins[0]::id
+// - Variant name
+// - Version 1.0
+// - Semantic ID (LE)
+// - Variant name length (LE)
+// - Variant name descriptor maximum length ( ( variant name length * 4 ) + 2 )
+// - Variant name
+10,
+12,0,0,0,
+2,0,0,0,
+10,
+'i','d',
+// - plugins[0]::id
+// - Variant value
+// - Version 1.0
+// - Variant value type, EVariantTypeDesC
+// - Variant value length (LE)
+// - Variant value descriptor maximum length ( ( variant value length * 4 ) + 2 )
+// - Variant value
+10,
+5,
+1,0,0,0,
+6,
+'1',
+// - plugins[0]::uid
+// - Variant name
+// - Version 1.0
+// - Semantic ID (LE)
+// - Variant name length (LE)
+// - Variant name descriptor maximum length ( ( variant name length * 4 ) + 2 )
+// - Variant name
+10,
+12,0,0,0,
+3,0,0,0,
+14,
+'u','i','d',
+// - plugins[0]::uid
+// - Variant value
+// - Version 1.0
+// - Variant value type, EVariantTypeDesC
+// - Variant value length (LE)
+// - Variant value descriptor maximum length ( ( variant value length * 4 ) + 2 )
+// - Variant value
+10,
+5,
+10,0,0,0,
+42,
+'0','x','2','0','0','0','B','1','3','1',
+// - plugins[0]::activationstate
+// - Variant name
+// - Version 1.0
+// - Semantic ID (LE)
+// - Variant name length (LE)
+// - Variant name descriptor maximum length ( ( variant name length * 4 ) + 2 )
+// - Variant name
+10,
+12,0,0,0,
+15,0,0,0,
+62,
+'a','c','t','i','v','a','t','i','o','n','s','t','a','t','e',
+// - plugins[0]::activationstate
+// - Variant value
+// - Version 1.0
+// - Variant value type, EVariantTypeDesC
+// - Variant value length (LE)
+// - Variant value descriptor maximum length ( ( variant value length * 4 ) + 2 )
+// - Variant value
+10,
+5,
+1,0,0,0,
+6,
+'1',
+// - plugins[0]::locking_status
+// - Variant name
+// - Version 1.0
+// - Semantic ID (LE)
+// - Variant name length (LE)
+// - Variant name descriptor maximum length ( ( variant name length * 4 ) + 2 )
+// - Variant name
+10,
+12,0,0,0,
+14,0,0,0,
+58,
+'l','o','c','k','i','n','g','_','s','t','a','t','u','s',
+// - plugins[0]::locking_status
+// - Variant value
+// - Version 1.0
+// - Variant value type, EVariantTypeDesC
+// - Variant value length (LE)
+// - Variant value descriptor maximum length ( ( variant value length * 4 ) + 2 )
+// - Variant value
+10,
+5,
+4,0,0,0,
+18,
+'n','o','n','e',
+// - appConf::settings
+// - Variant name
+// - Version 1.0
+// - Semantic ID (LE)
+// - Variant name length (LE)
+// - Variant name descriptor maximum length ( ( variant name length * 4 ) + 2 )
+// - Variant name
+10,
+12,0,0,0,
+8,0,0,0,
+34,
+'s','e','t','t','i','n','g','s',
+// - appConf::settings
+// - Variant value
+// - Version 1.0
+// - Variant value type, EVariantTypeList
+10,
+7,
+// - appConf::settings
+// - Version 1.0
+// - Item count (LE)
+10,
+0,0,0,0,
+// - appConf::resources
+// - Variant name
+// - Version 1.0
+// - Semantic ID (LE)
+// - Variant name length (LE)
+// - Variant name descriptor maximum length ( ( variant name length * 4 ) + 2 )
+// - Variant name
+10,
+12,0,0,0,
+9,0,0,0,
+38,
+'r','e','s','o','u','r','c','e','s',
+// - appConf::resources
+// - Variant value
+// - Version 1.0
+// - Variant value type, EVariantTypeList
+10,
+7,
+// - appConf::resources
+// - Version 1.0
+// - List item count
+10,
+0,0,0,0
+};
+
+#endif /* MT_HSPS_RESTOREACTIVEAPPCONF_1_H_ */
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreensrv_plat/sapi_homescreenplugin/tsrc/hspsconfigurationif/inc/mt_hsps_restoreactiveappconf_2.h Wed May 12 13:36:47 2010 +0300
@@ -0,0 +1,186 @@
+/*
+* 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".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: Test case RestoreActiveAppConf(2) test data
+*
+*/
+
+#ifndef C_MT_HSPS_RESTOREACTIVEAPPCONF_2_H
+#define C_MT_HSPS_RESTOREACTIVEAPPCONF_2_H
+
+/*
+RestoreActiveAppConf(2)
+-------------------
+
+Test purpose:
+
+Verify that Minimal configuration gets re-installed from ROM
+(due to the statuslicenceerestorable status) if the active application
+configuration is in error state prior to the GetActiveAppConf request.
+
+Pre-conditions:
+
+• There must be installed test themes for ActiveIdle application and Minimal
+ configuration must be set as active.
+
+Test steps:
+
+Test step 1:
+• Input:
+ SetConfState
+• Expected output:
+ Active application configuration was successfully set to error state
+
+Test step 2:
+• Input:
+ GetActiveAppConf
+• Expected output:
+ Minimal configuration with configuration state “Confirmed”
+
+*/
+
+
+// Test step 1 method:
+const TUint8 restoreactiveappconf_2_ts_1_method[] = "SetConfState";
+
+// Test step 1 input:
+const TUint8 restoreactiveappconf_2_ts_1_input[] = {
+// SetConfState(Input)
+// - Version 1.0
+// - Item count (LE)
+10,
+2,0,0,0,
+// - SetConfState(Input)::confid
+// - Variant name
+// - Version 1.0
+// - Semantic ID (LE)
+// - Variant name length (LE)
+// - Variant name descriptor maximum length ( ( variant name length * 4 ) + 2 )
+// - Variant name
+10,
+12,0,0,0,
+6,0,0,0,
+26,
+'c','o','n','f','I','d',
+// - SetConfState(Input)::value
+// - Variant value
+// - Version 1.0
+// - Variant value type, EVariantTypeDesC
+// - Variant value length (LE)
+// - Variant value descriptor maximum length ( ( variant value length * 4 ) + 2 )
+// - Variant value
+10,
+5,
+1,0,0,0,
+6,
+'1',
+// - SetConfState(Input)::state
+// - Variant name
+// - Version 1.0
+// - Semantic ID (LE)
+// - Variant name length (LE)
+// - Variant name descriptor maximum length ( ( variant name length * 4 ) + 2 )
+// - Variant name
+10,
+12,0,0,0,
+5,0,0,0,
+22,
+'s','t','a','t','e',
+// - SetConfState(Input)::value
+// - Variant value
+// - Version 1.0
+// - Variant value type, EVariantTypeDesC
+// - Variant value length (LE)
+// - Variant value descriptor maximum length ( ( variant value length * 4 ) + 2 )
+// - Variant value
+10,
+5,
+5,0,0,0,
+22,
+'e','r','r','o','r'
+};
+
+// Test step 1 expected output:
+const TUint8 restoreactiveappconf_2_ts_1_output[] = {
+// SetConfState(Output)
+// - Version 1.0
+// - Item count (LE)
+10,
+1,0,0,0,
+// - SetConfState(Output)::status
+// - Variant name
+// - Version 1.0
+// - Semantic ID (LE)
+// - Variant name length (LE)
+// - Variant name descriptor maximum length ( ( variant name length * 4 ) + 2 )
+// - Variant name
+10,
+12,0,0,0,
+6,0,0,0,
+26,
+'s','t','a','t','u','s',
+// - SetConfState(Input)::value
+// - Variant value
+// - Version 1.0
+// - Variant value type, EVariantTypeTInt32
+// - Variant value length (LE)
+// - Variant value descriptor maximum length ( ( variant value length * 4 ) + 2 )
+// - Variant value
+10,
+1,
+0,0,0,0
+};
+
+
+
+
+// Test step 2 method:
+const TUint8 restoreactiveappconf_2_ts_2_method[] = "GetActiveAppConf";
+
+
+// Test step 2 input:
+const TUint8 restoreactiveappconf_2_ts_2_input = 0;
+
+
+// Test step 2 expected output:
+const TUint8 restoreactiveappconf_2_ts_2_output[] = {
+// GetActiveAppConf(Output)
+// - Version 1.0
+// - Item count (LE)
+10,
+1,0,0,0,
+// - GetActiveAppConf(Output)::status
+// - Variant name
+// - Version 1.0
+// - Semantic ID (LE)
+// - Variant name length (LE)
+// - Variant name descriptor maximum length ( ( variant name length * 4 ) + 2 )
+// - Variant name
+10,
+12,0,0,0,
+6,0,0,0,
+26,
+'s','t','a','t','u','s',
+// - GetActiveAppConf(Input)::value
+// - Variant value
+// - Version 1.0
+// - Variant value type, EVariantTypeTInt32
+// - Variant value length (LE)
+// - Variant value descriptor maximum length ( ( variant value length * 4 ) + 2 )
+// - Variant value
+10,
+1,
+255,255,255,255
+};
+
+#endif // C_MT_HSPS_RESTOREACTIVEAPPCONF_2_H
--- a/homescreensrv_plat/sapi_homescreenplugin/tsrc/hspsconfigurationif/inc/mt_hsps_restoreconfigurations_1.h Wed Mar 03 15:38:34 2010 +0200
+++ b/homescreensrv_plat/sapi_homescreenplugin/tsrc/hspsconfigurationif/inc/mt_hsps_restoreconfigurations_1.h Wed May 12 13:36:47 2010 +0300
@@ -25,10 +25,7 @@
Test purpose
-Verify that HSPS removes all plugin configurations from the active view
-or that all but one view are removed from the application configuration.
-Activity should be maintained. First locked view should remain or if not found,
-first unlocked view.
+Verify that "restore active" and "restore all" functionality works as specified.
Pre-conditions
• There must be installed test themes for Active Idle application and Typical
@@ -46,14 +43,13 @@
• Input:
GetActiveAppConf
• Expected output:
- There are still two views of which the first view remains active
+ ROM configuration is restored and returned.
Test step 3:
• Input:
GetPluginConf(“Typical - View1”)
• Expected output:
- There are no plugins (widgets) in the first view
-
+ ROM view configuration is returned.
Test step 4:
• Input:
@@ -71,8 +67,7 @@
• Input:
GetPluginConf(“Typical - View1”)
• Expected output:
- There are no plugins (widgets) in the remaining view
-
+ There are no plugins (widgets) in the remaining view
*/
// Test step 1 method:
@@ -1104,7 +1099,340 @@
// - Version 1.0
// - Item count (LE)
10,
+3,0,0,0,
+// - appConf::plugins
+// - Version 1.0
+// - List item starts
+10,
0,0,0,0,
+// - appConf::plugins[0]
+// - Version 1.0
+// - Variant value type, EVariantTypeMap
+10,
+8,
+// - plugins[0] map
+// - Version 1.0
+// - Item count (LE)
+10,
+4,0,0,0,
+// - plugins[0]::id
+// - Variant name
+// - Version 1.0
+// - Semantic ID (LE)
+// - Variant name length (LE)
+// - Variant name descriptor maximum length ( ( variant name length * 4 ) + 2 )
+// - Variant name
+10,
+12,0,0,0,
+2,0,0,0,
+10,
+'i','d',
+// - plugins[0]::id
+// - Variant value
+// - Version 1.0
+// - Variant value type, EVariantTypeDesC
+// - Variant value length (LE)
+// - Variant value descriptor maximum length ( ( variant value length * 4 ) + 2 )
+// - Variant value
+10,
+5,
+1,0,0,0,
+6,
+'2',
+// - plugins[0]::uid
+// - Variant name
+// - Version 1.0
+// - Semantic ID (LE)
+// - Variant name length (LE)
+// - Variant name descriptor maximum length ( ( variant name length * 4 ) + 2 )
+// - Variant name
+10,
+12,0,0,0,
+3,0,0,0,
+14,
+'u','i','d',
+// - plugins[0]::uid
+// - Variant value
+// - Version 1.0
+// - Variant value type, EVariantTypeDesC
+// - Variant value length (LE)
+// - Variant value descriptor maximum length ( ( variant value length * 4 ) + 2 )
+// - Variant value
+10,
+5,
+10,0,0,0,
+42,
+'0','x','2','0','0','0','B','1','2','0',
+// - plugins[0]::activationstate
+// - Variant name
+// - Version 1.0
+// - Semantic ID (LE)
+// - Variant name length (LE)
+// - Variant name descriptor maximum length ( ( variant name length * 4 ) + 2 )
+// - Variant name
+10,
+12,0,0,0,
+15,0,0,0,
+62,
+'a','c','t','i','v','a','t','i','o','n','s','t','a','t','e',
+// - plugins[0]::activationstate
+// - Variant value
+// - Version 1.0
+// - Variant value type, EVariantTypeDesC
+// - Variant value length (LE)
+// - Variant value descriptor maximum length ( ( variant value length * 4 ) + 2 )
+// - Variant value
+10,
+5,
+1,0,0,0,
+6,
+'1',
+// - plugins[0]::locking_status
+// - Variant name
+// - Version 1.0
+// - Semantic ID (LE)
+// - Variant name length (LE)
+// - Variant name descriptor maximum length ( ( variant name length * 4 ) + 2 )
+// - Variant name
+10,
+12,0,0,0,
+14,0,0,0,
+58,
+'l','o','c','k','i','n','g','_','s','t','a','t','u','s',
+// - plugins[0]::locking_status
+// - Variant value
+// - Version 1.0
+// - Variant value type, EVariantTypeDesC
+// - Variant value length (LE)
+// - Variant value descriptor maximum length ( ( variant value length * 4 ) + 2 )
+// - Variant value
+10,
+5,
+4,0,0,0,
+18,
+'n','o','n','e',
+// - appConf::plugins
+// - Version 1.0
+// - List item starts
+10,
+0,0,0,0,
+// - appConf::plugins[1]
+// - Version 1.0
+// - Variant value type, EVariantTypeMap
+10,
+8,
+// - plugins[1] map
+// - Version 1.0
+// - Item count (LE)
+10,
+4,0,0,0,
+// - plugins[1]::id
+// - Variant name
+// - Version 1.0
+// - Semantic ID (LE)
+// - Variant name length (LE)
+// - Variant name descriptor maximum length ( ( variant name length * 4 ) + 2 )
+// - Variant name
+10,
+12,0,0,0,
+2,0,0,0,
+10,
+'i','d',
+// - plugins[1]::id
+// - Variant value
+// - Version 1.0
+// - Variant value type, EVariantTypeDesC
+// - Variant value length (LE)
+// - Variant value descriptor maximum length ( ( variant value length * 4 ) + 2 )
+// - Variant value
+10,
+5,
+1,0,0,0,
+6,
+'3',
+// - plugins[1]::uid
+// - Variant name
+// - Version 1.0
+// - Semantic ID (LE)
+// - Variant name length (LE)
+// - Variant name descriptor maximum length ( ( variant name length * 4 ) + 2 )
+// - Variant name
+10,
+12,0,0,0,
+3,0,0,0,
+14,
+'u','i','d',
+// - plugins[1]::uid
+// - Variant value
+// - Version 1.0
+// - Variant value type, EVariantTypeDesC
+// - Variant value length (LE)
+// - Variant value descriptor maximum length ( ( variant value length * 4 ) + 2 )
+// - Variant value
+10,
+5,
+10,0,0,0,
+42,
+'0','x','2','0','0','0','B','1','2','0',
+// - plugins[1]::activationstate
+// - Variant name
+// - Version 1.0
+// - Semantic ID (LE)
+// - Variant name length (LE)
+// - Variant name descriptor maximum length ( ( variant name length * 4 ) + 2 )
+// - Variant name
+10,
+12,0,0,0,
+15,0,0,0,
+62,
+'a','c','t','i','v','a','t','i','o','n','s','t','a','t','e',
+// - plugins[1]::activationstate
+// - Variant value
+// - Version 1.0
+// - Variant value type, EVariantTypeDesC
+// - Variant value length (LE)
+// - Variant value descriptor maximum length ( ( variant value length * 4 ) + 2 )
+// - Variant value
+10,
+5,
+1,0,0,0,
+6,
+'0',
+// - plugins[1]::locking_status
+// - Variant name
+// - Version 1.0
+// - Semantic ID (LE)
+// - Variant name length (LE)
+// - Variant name descriptor maximum length ( ( variant name length * 4 ) + 2 )
+// - Variant name
+10,
+12,0,0,0,
+14,0,0,0,
+58,
+'l','o','c','k','i','n','g','_','s','t','a','t','u','s',
+// - plugins[1]::locking_status
+// - Variant value
+// - Version 1.0
+// - Variant value type, EVariantTypeDesC
+// - Variant value length (LE)
+// - Variant value descriptor maximum length ( ( variant value length * 4 ) + 2 )
+// - Variant value
+10,
+5,
+4,0,0,0,
+18,
+'n','o','n','e',
+// - appConf::plugins
+// - Version 1.0
+// - List item starts
+10,
+0,0,0,0,
+// - appConf::plugins[2]
+// - Version 1.0
+// - Variant value type, EVariantTypeMap
+10,
+8,
+// - plugins[2] map
+// - Version 1.0
+// - Item count (LE)
+10,
+4,0,0,0,
+// - plugins[2]::id
+// - Variant name
+// - Version 1.0
+// - Semantic ID (LE)
+// - Variant name length (LE)
+// - Variant name descriptor maximum length ( ( variant name length * 4 ) + 2 )
+// - Variant name
+10,
+12,0,0,0,
+2,0,0,0,
+10,
+'i','d',
+// - plugins[2]::id
+// - Variant value
+// - Version 1.0
+// - Variant value type, EVariantTypeDesC
+// - Variant value length (LE)
+// - Variant value descriptor maximum length ( ( variant value length * 4 ) + 2 )
+// - Variant value
+10,
+5,
+1,0,0,0,
+6,
+'4',
+// - plugins[2]::uid
+// - Variant name
+// - Version 1.0
+// - Semantic ID (LE)
+// - Variant name length (LE)
+// - Variant name descriptor maximum length ( ( variant name length * 4 ) + 2 )
+// - Variant name
+10,
+12,0,0,0,
+3,0,0,0,
+14,
+'u','i','d',
+// - plugins[2]::uid
+// - Variant value
+// - Version 1.0
+// - Variant value type, EVariantTypeDesC
+// - Variant value length (LE)
+// - Variant value descriptor maximum length ( ( variant value length * 4 ) + 2 )
+// - Variant value
+10,
+5,
+10,0,0,0,
+42,
+'0','x','2','0','0','0','B','1','2','0',
+// - plugins[2]::activationstate
+// - Variant name
+// - Version 1.0
+// - Semantic ID (LE)
+// - Variant name length (LE)
+// - Variant name descriptor maximum length ( ( variant name length * 4 ) + 2 )
+// - Variant name
+10,
+12,0,0,0,
+15,0,0,0,
+62,
+'a','c','t','i','v','a','t','i','o','n','s','t','a','t','e',
+// - plugins[2]::activationstate
+// - Variant value
+// - Version 1.0
+// - Variant value type, EVariantTypeDesC
+// - Variant value length (LE)
+// - Variant value descriptor maximum length ( ( variant value length * 4 ) + 2 )
+// - Variant value
+10,
+5,
+1,0,0,0,
+6,
+'0',
+// - plugins[2]::locking_status
+// - Variant name
+// - Version 1.0
+// - Semantic ID (LE)
+// - Variant name length (LE)
+// - Variant name descriptor maximum length ( ( variant name length * 4 ) + 2 )
+// - Variant name
+10,
+12,0,0,0,
+14,0,0,0,
+58,
+'l','o','c','k','i','n','g','_','s','t','a','t','u','s',
+// - plugins[2]::locking_status
+// - Variant value
+// - Version 1.0
+// - Variant value type, EVariantTypeDesC
+// - Variant value length (LE)
+// - Variant value descriptor maximum length ( ( variant value length * 4 ) + 2 )
+// - Variant value
+10,
+5,
+4,0,0,0,
+18,
+'n','o','n','e',
// - pluginConf::settings
// - Variant name
// - Version 1.0
@@ -1133,7 +1461,6 @@
// - List item starts
10,
0,0,0,0,
-
// - items[0]
// - Version 1.0
// - Variant value type, EVariantTypeMap
--- a/homescreensrv_plat/sapi_homescreenplugin/tsrc/hspsconfigurationif/inc/mt_hspsconfigurationif.h Wed Mar 03 15:38:34 2010 +0200
+++ b/homescreensrv_plat/sapi_homescreenplugin/tsrc/hspsconfigurationif/inc/mt_hspsconfigurationif.h Wed May 12 13:36:47 2010 +0300
@@ -154,6 +154,11 @@
*/
void GetPlugins_7_L();
/**
+ * Test case function for test case GetPlugins(8)
+ * See HSPS module test specification
+ */
+ void GetPlugins_8_L();
+ /**
* Test case function for test case GetPluginList(1)
* See HSPS module test specification
*/
@@ -448,6 +453,21 @@
* See HSPS module test specification
*/
void RestoreConfigurations_1_L();
+ /**
+ * Test case function for test case Customization(1)
+ * See HSPS module test specification
+ */
+ void Customization_1_L();
+ /**
+ * Test case function for test case RestoreActiveAppConf(1)
+ * See HSPS module test specification
+ */
+ void RestoreActiveAppConf_1_L();
+ /**
+ * Test case function for test case RestoreActiveAppConf(2)
+ * See HSPS module test specification
+ */
+ void RestoreActiveAppConf_2_L();
private: // Data
--- a/homescreensrv_plat/sapi_homescreenplugin/tsrc/hspsconfigurationif/src/mt_hspsconfigurationif.cpp Wed Mar 03 15:38:34 2010 +0200
+++ b/homescreensrv_plat/sapi_homescreenplugin/tsrc/hspsconfigurationif/src/mt_hspsconfigurationif.cpp Wed May 12 13:36:47 2010 +0300
@@ -47,6 +47,7 @@
#include "mt_hsps_getplugins_5.h"
#include "mt_hsps_getplugins_6.h"
#include "mt_hsps_getplugins_7.h"
+#include "mt_hsps_getplugins_8.h"
// get plugin list
#include "mt_hsps_getpluginlist_1.h"
#include "mt_hsps_getpluginlist_2.h"
@@ -116,6 +117,11 @@
#include "mt_hsps_setactiveplugin_6.h"
// restore configurations
#include "mt_hsps_restoreconfigurations_1.h"
+// customizations
+#include "mt_hsps_customization_1.h"
+// restoractiveeappconf
+#include "mt_hsps_restoreactiveappconf_1.h"
+#include "mt_hsps_restoreactiveappconf_2.h"
// ======== LOCAL CONSTANTS ====================================================
@@ -124,6 +130,7 @@
_LIT( KMinimalResourceFile2, "c:\\private\\20000fb1\\2456\\270513751\\536916225\\1.0\\sources\\viewnavigationrules.xml" );
_LIT( KMinimalResourceFile3, "c:\\private\\20000fb1\\2456\\270513751\\536916225\\1.0\\sources\\resource.file" );
_LIT( KMinimalResourceFile4, "c:\\private\\20000fb1\\2456\\270513751\\536916225\\1.0\\sources\\picture.jpeg" );
+_LIT( KFinnishMifLogo, "c:\\private\\20000fb1\\2456\\270513751\\536916274\\1.0\\sources\\dummy.mif" );
// ======== LOCAL FUNCTIONS ====================================================
@@ -222,11 +229,12 @@
installationService->UninstallConfigurationL( KHSPSMTInterfaceUid, KHSPSFinnishWidgetConf );
installationService->UninstallConfigurationL( KHSPSMTInterfaceUid, KHSPSInstalledWidgetConf );
- // Remove test configurations from import folder
+ // Remove test configurations from import & install folder at C drive
CFileMan* fileManager = CFileMan::NewL( iFileserver );
CleanupStack::PushL( fileManager );
fileManager->Delete( _L( "c:\\private\\200159c0\\import\\plugin_0998_101FB657_2000B133.dat" ) );
fileManager->RmDir( _L( "c:\\private\\200159c0\\import\\0998\\" ) );
+ fileManager->RmDir( _L( "d:\\data\\mt_hsps\\installed_widget\\widgetconfiguration.xml" ) );
CleanupStack::PopAndDestroy( fileManager );
// Install test configurations
@@ -810,8 +818,38 @@
( TUint8* )getplugins_7_ts_1_input,
( TUint8* )getplugins_7_ts_1_output );
EUNIT_PRINT( _L8( "Test step passed" ) );
- }
-
+ }
+
+//------------------------------------------------------------------------------
+// Test case: GetPlugins(8)
+//------------------------------------------------------------------------------
+void MT_CHSPSConfigurationIf::GetPlugins_8_L()
+ {
+ // Pre conditions
+ // Set active configuration to Minimal configuration
+ EUNIT_PRINT( _L8( "Pre conditions: Set Active configuration Operator" ) );
+ SetActiveConfigurationL( KHSPSTestAppUid, KHSPSActiveConfOperator );
+ // Attach to HSPS
+ EUNIT_PRINT( _L8( "Pre conditions: Attach to HSPS service IConfiguration interface" ) );
+ AttachServiceL( KHSPS, KHSPSConfigurationIf, KHSPSTestAppUid );
+
+ // Test step 1: fetch widget plugins and copy logos files
+ EUNIT_PRINT( _L8( "Test step 1" ) );
+ RunTestStepSyncL(
+ ( TUint8* )getplugins_8_ts_1_method,
+ ( TUint8* )getplugins_8_ts_1_input,
+ ( TUint8* )getplugins_8_ts_1_output );
+
+ EUNIT_PRINT( _L8( "post condition check for resource file copy" ) );
+ ResetResources();
+ // Check that the logo file was copied
+ AddResourceL( KFinnishMifLogo, 4608 );
+ CheckResourcesL();
+ EUNIT_PRINT( _L8( "post condition check for resource copy passed" ) );
+
+ EUNIT_PRINT( _L8( "Test step passed" ) );
+ }
+
//------------------------------------------------------------------------------
// Test case: GetPluginList(1)
//------------------------------------------------------------------------------
@@ -2645,11 +2683,20 @@
CFileMan::EOverWrite ) );
// Wait until configuration is installed
- User::After( 5000000 );
+ User::After( 8000000 );
// Make sure "InstalledWidget" is installed
if ( !BaflUtils::FileExists( iFileserver, _L( "c:\\private\\200159c0\\themes\\2456\\270513751\\536916275\\1.0\\InstallWidgetConf.o0000" ) ) )
{
+ // Installation failed - remove imports to be able to re-run the test again
+ // The ChspsThemeServer::HandleConfigurationImportsL does handle newly
+ // added files only
+ User::LeaveIfError( fileManager->RmDir( _L( "c:\\private\\200159c0\\import\\0998\\" ) ) );
+ fileManager->Attribs( _L( "c:\\private\\200159c0\\import\\plugin_0998_101FB657_2000B133.dat" ),
+ 0, KEntryAttReadOnly, TTime( 0 ) ); // TTime(0) = preserve original time stamp.
+ User::LeaveIfError( fileManager->Delete( _L( "c:\\private\\200159c0\\import\\plugin_0998_101FB657_2000B133_1.0.dat" ) ) );
+
+ // Leave - the test was not successfull
User::Leave( KErrGeneral );
}
@@ -2667,7 +2714,7 @@
User::LeaveIfError( fileManager->Delete( _L( "c:\\private\\200159c0\\import\\plugin_0998_101FB657_2000B133_1.0.dat" ) ) );
// Removing of *.dat file causes configuration uninstallation
// Wait until configuration is uninstalled
- User::After( 5000000 );
+ User::After( 8000000 );
// Make sure "InstalledWidget" is uninstalled
if ( BaflUtils::FileExists( iFileserver, _L( "c:\\private\\200159c0\\themes\\2456\\270513751\\536916275\\1.0\\InstallWidgetConf.o0000" ) ) )
@@ -2944,6 +2991,113 @@
}
//------------------------------------------------------------------------------
+// Test case: Customization(1)
+//------------------------------------------------------------------------------
+void MT_CHSPSConfigurationIf::Customization_1_L()
+ {
+ // Pre conditions
+
+ EUNIT_PRINT( _L8( "Pre conditions: Set Active configuration Minimal" ) );
+ SetActiveConfigurationL( KHSPSTestAppUid, KHSPSActiveConfMinimal );
+
+ EUNIT_PRINT( _L8( "Pre conditions: Attach to HSPS service IConfiguration interface" ) );
+ AttachServiceL( KHSPS, KHSPSConfigurationIf, KHSPSTestAppUid );
+
+ // Simulate customization by copying configuration files to D drive ("ROM" stuff is on C)
+ CFileMan* fileManager = CFileMan::NewL( iFileserver );
+ CleanupStack::PushL( fileManager );
+ User::LeaveIfError(
+ fileManager->Copy(
+ _L( "c:\\data\\mt_hsps\\installed_widget\\widgetconfiguration_customized.xml" ),
+ _L( "d:\\data\\mt_hsps\\installed_widget\\widgetconfiguration.xml" ),
+ CFileMan::ERecurse|CFileMan::EOverWrite
+ )
+ );
+ CleanupStack::PopAndDestroy( fileManager );
+
+ MT_CHspsInstallationService* installationService = MT_CHspsInstallationService::NewL();
+ CleanupStack::PushL( installationService );
+
+ // Test step 1: install installed_widget which has customized content in D drive
+ EUNIT_PRINT( _L8( "Test step 1" ) );
+ installationService->InstallConfigurationL( KHSPSInstallInstalledWidgetConf );
+ EUNIT_PRINT( _L8( "Test step passed" ) );
+
+ // Test step 2: check settings from the installed_widget, it should hold
+ // settings from the widgetconfiguration_customized.xml file
+ EUNIT_PRINT( _L8( "Test step 2" ) );
+ RunTestStepSyncL(
+ ( TUint8* )customization_1_ts_2_method,
+ ( TUint8* )customization_1_ts_2_input,
+ ( TUint8* )customization_1_ts_2_output );
+ EUNIT_PRINT( _L8( "Test step passed" ) );
+
+ CleanupStack::PopAndDestroy( installationService );
+ }
+
+//------------------------------------------------------------------------------
+// Test case: RestoreActiveAppConf(1)
+//------------------------------------------------------------------------------
+void MT_CHSPSConfigurationIf::RestoreActiveAppConf_1_L()
+ {
+ // Pre conditions: activate configuration which hasn't got statuslicenceerestorable status
+ EUNIT_PRINT( _L8( "Pre conditions: Set Active configuration Minimal" ) );
+ SetActiveConfigurationL( KHSPSTestAppUid, KHSPSActiveConfMinimal );
+
+ // Get ODT and fill in the plugin DOMs
+ EUNIT_PRINT( _L8( "Pre conditions: Attach to HSPS service IConfiguration interface" ) );
+ AttachServiceL( KHSPS, KHSPSConfigurationIf, KHSPSTestAppUid );
+
+ // Test step 1: invalidate state of the active application configuration
+ EUNIT_PRINT( _L8( "Test step 1" ) );
+ RunTestStepSyncL(
+ ( TUint8* )restoreactiveappconf_1_ts_1_method,
+ ( TUint8* )restoreactiveappconf_1_ts_1_input,
+ ( TUint8* )restoreactiveappconf_1_ts_1_output );
+ EUNIT_PRINT( _L8( "Test step passed" ) );
+
+ // Test step 2: retrieve the app conf, Operator configuration should be now active
+ EUNIT_PRINT( _L8( "Test step 2" ) );
+ RunTestStepSyncL(
+ ( TUint8* )restoreactiveappconf_1_ts_2_method,
+ ( TUint8* )restoreactiveappconf_1_ts_2_input,
+ ( TUint8* )restoreactiveappconf_1_ts_2_output );
+ EUNIT_PRINT( _L8( "Test step passed" ) );
+ }
+
+
+//------------------------------------------------------------------------------
+// Test case: RestoreActiveAppConfL(2)
+//------------------------------------------------------------------------------
+void MT_CHSPSConfigurationIf::RestoreActiveAppConf_2_L()
+ {
+ // Pre conditions: activate configuration with a statuslicenceerestorable status
+ EUNIT_PRINT( _L8( "Pre conditions: Set Active configuration Operator" ) );
+ SetActiveConfigurationL( KHSPSTestAppUid, KHSPSActiveConfOperator );
+
+ // Get ODT and fill in the plugin DOMs
+ EUNIT_PRINT( _L8( "Pre conditions: Attach to HSPS service IConfiguration interface" ) );
+ AttachServiceL( KHSPS, KHSPSConfigurationIf, KHSPSTestAppUid );
+
+ // Test step 1: invalidate state of the active application configuration
+ EUNIT_PRINT( _L8( "Test step 1" ) );
+ RunTestStepSyncL(
+ ( TUint8* )restoreactiveappconf_2_ts_1_method,
+ ( TUint8* )restoreactiveappconf_2_ts_1_input,
+ ( TUint8* )restoreactiveappconf_2_ts_1_output );
+ EUNIT_PRINT( _L8( "Test step passed" ) );
+
+ // Test step 2: retrieve the app conf, we should fail installing the Operator
+ // configuration as it is not in ROM
+ EUNIT_PRINT( _L8( "Test step 2" ) );
+ RunTestStepSyncL(
+ ( TUint8* )restoreactiveappconf_2_ts_2_method,
+ ( TUint8* )restoreactiveappconf_2_ts_2_input,
+ ( TUint8* )restoreactiveappconf_2_ts_2_output );
+ EUNIT_PRINT( _L8( "Test step passed" ) );
+ }
+
+//------------------------------------------------------------------------------
// Test case table
//------------------------------------------------------------------------------
EUNIT_BEGIN_TEST_TABLE(
@@ -3059,6 +3213,13 @@
SetupL, GetPlugins_7_L, Teardown )
EUNIT_TEST(
+ "GetPlugins(8)",
+ "IConfiguration",
+ "GetPlugins",
+ "FUNCTIONALITY",
+ SetupL, GetPlugins_8_L, Teardown )
+
+ EUNIT_TEST(
"GetPluginList(1)",
"IConfiguration",
"GetPluginList",
@@ -3470,7 +3631,27 @@
"SetActivePlugin",
"FUNCTIONALITY",
SetupL, RestoreConfigurations_1_L, Teardown )
-
+
+ EUNIT_TEST(
+ "Customization(1)",
+ "IConfiguration",
+ "SetActivePlugin",
+ "FUNCTIONALITY",
+ SetupL, Customization_1_L, Teardown )
+
+ EUNIT_TEST(
+ "RestoreActiveAppConfL(1)",
+ "IConfiguration",
+ "SetActivePlugin",
+ "FUNCTIONALITY",
+ SetupL, RestoreActiveAppConf_1_L, Teardown )
+
+ EUNIT_TEST(
+ "RestoreActiveAppConfL(2)",
+ "IConfiguration",
+ "SetActivePlugin",
+ "FUNCTIONALITY",
+ SetupL, RestoreActiveAppConf_2_L, Teardown )
EUNIT_END_TEST_TABLE
Binary file homescreensrv_plat/sapi_homescreenplugin/tsrc/testthemes/finnish_widget/dummy.mif has changed
--- a/homescreensrv_plat/sapi_homescreenplugin/tsrc/testthemes/finnish_widget/manifest.dat Wed Mar 03 15:38:34 2010 +0200
+++ b/homescreensrv_plat/sapi_homescreenplugin/tsrc/testthemes/finnish_widget/manifest.dat Wed May 12 13:36:47 2010 +0300
@@ -1,5 +1,9 @@
<?xml version="1.0"?>
-<package version="0.3">
+<package version="2.0">
+
+ <!-- Set both two families for unit tests -->
+ <family>qhd_tch</family>
+ <family>vga_tch</family>
<!-- application|view|widget|template -->
<type>widget</type>
@@ -20,6 +24,8 @@
<shortname>FinnishWidget</shortname>
<version>1.0</version>
+ <filelogo>mif(dummy.mif 1 2)</filelogo>
+
<!-- Configuration -->
<filexml>widgetconfiguration.xml</filexml>
@@ -34,4 +40,4 @@
<fileresource>localizedbg.jpg</fileresource>
</localization>
-</package>
\ No newline at end of file
+</package>
--- a/homescreensrv_plat/sapi_homescreenplugin/tsrc/testthemes/installed_widget/manifest.dat Wed Mar 03 15:38:34 2010 +0200
+++ b/homescreensrv_plat/sapi_homescreenplugin/tsrc/testthemes/installed_widget/manifest.dat Wed May 12 13:36:47 2010 +0300
@@ -1,6 +1,10 @@
<?xml version="1.0"?>
-<package version="0.3">
+<package version="2.0">
+ <!-- Set both two families for unit tests -->
+ <family>qhd_tch</family>
+ <family>vga_tch</family>
+
<!-- application|view|widget|template -->
<type>widget</type>
@@ -32,4 +36,4 @@
<fileresource>widget.bmp</fileresource>
</localization>
-</package>
\ No newline at end of file
+</package>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreensrv_plat/sapi_homescreenplugin/tsrc/testthemes/installed_widget/widgetconfiguration_customized.xml Wed May 12 13:36:47 2010 +0300
@@ -0,0 +1,13 @@
+<configuration>
+
+ <control>
+
+ <settings>
+ </settings>
+
+ </control>
+
+ <resources>
+ </resources>
+
+</configuration>
Binary file homescreensrv_plat/sapi_homescreenplugin/tsrc/testthemes/installed_widget_v2/0/hs_logo.jpg has changed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreensrv_plat/sapi_homescreenplugin/tsrc/testthemes/installed_widget_v2/0/locale.dtd Wed May 12 13:36:47 2010 +0300
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+============================================================================
+<FileName: "locale.dtd">
+<PartOf : "HSPS - ELangTest">
+
+<FileDescription: "Localization strings for HSPS">
+<FileVersion : >
+
+<Copyright:
+"Copyright © 2005 Nokia Corporation.
+This material, including documentation and any related
+computer programs, is protected by copyright controlled by
+Nokia Corporation. All rights are reserved. Copying,
+including reproducing, storing, adapting or translating, any
+or all of this material requires the prior written consent of
+Nokia Corporation. This material also contains confidential
+information which may not be disclosed to others without the
+prior written consent of Nokia Corporation.">
+============================================================================
+-->
+
+<!-- LOCALISATION STRINGS -->
+
+<!ENTITY qtn_2000B133_configuration_name "Installed - Widget V2">
+<!ENTITY qtn_2000B133_size "Size">
+
+
+
+<!-- End of File-->
Binary file homescreensrv_plat/sapi_homescreenplugin/tsrc/testthemes/installed_widget_v2/0/widget.bmp has changed
Binary file homescreensrv_plat/sapi_homescreenplugin/tsrc/testthemes/installed_widget_v2/1/hs_logo.jpg has changed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreensrv_plat/sapi_homescreenplugin/tsrc/testthemes/installed_widget_v2/1/locale.dtd Wed May 12 13:36:47 2010 +0300
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+============================================================================
+<FileName: "locale.dtd">
+<PartOf : "HSPS - ELangEnglish">
+
+<FileDescription: "Localization strings for HSPS">
+<FileVersion : >
+
+<Copyright:
+"Copyright © 2005 Nokia Corporation.
+This material, including documentation and any related
+computer programs, is protected by copyright controlled by
+Nokia Corporation. All rights are reserved. Copying,
+including reproducing, storing, adapting or translating, any
+or all of this material requires the prior written consent of
+Nokia Corporation. This material also contains confidential
+information which may not be disclosed to others without the
+prior written consent of Nokia Corporation.">
+============================================================================
+-->
+
+<!-- LOCALISATION STRINGS -->
+
+<!ENTITY qtn_2000B133_configuration_name "Installed - Widget V2">
+<!ENTITY qtn_2000B133_size "Size">
+
+
+
+<!-- End of File-->
Binary file homescreensrv_plat/sapi_homescreenplugin/tsrc/testthemes/installed_widget_v2/1/widget.bmp has changed
Binary file homescreensrv_plat/sapi_homescreenplugin/tsrc/testthemes/installed_widget_v2/9/hs_logo.jpg has changed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreensrv_plat/sapi_homescreenplugin/tsrc/testthemes/installed_widget_v2/9/locale.dtd Wed May 12 13:36:47 2010 +0300
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+============================================================================
+<FileName: "locale.dtd">
+<PartOf : "HSPS - ELangFinnish">
+
+<FileDescription: "Localization strings for HSPS">
+<FileVersion : >
+
+<Copyright:
+"Copyright © 2008 Nokia Corporation.
+This material, including documentation and any related
+computer programs, is protected by copyright controlled by
+Nokia Corporation. All rights are reserved. Copying,
+including reproducing, storing, adapting or translating, any
+or all of this material requires the prior written consent of
+Nokia Corporation. This material also contains confidential
+information which may not be disclosed to others without the
+prior written consent of Nokia Corporation.">
+============================================================================
+-->
+
+<!-- LOCALISATION STRINGS -->
+
+<!ENTITY qtn_2000B133_configuration_name "Installoitu - Widget V2">
+<!ENTITY qtn_2000B133_size "Koko">
+
+<!-- End of File-->
Binary file homescreensrv_plat/sapi_homescreenplugin/tsrc/testthemes/installed_widget_v2/9/widget.bmp has changed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreensrv_plat/sapi_homescreenplugin/tsrc/testthemes/installed_widget_v2/manifest.dat Wed May 12 13:36:47 2010 +0300
@@ -0,0 +1,39 @@
+<?xml version="1.0"?>
+<package version="2.0">
+
+ <!-- Set both two families for unit tests -->
+ <family>qhd_tch</family>
+ <family>vga_tch</family>
+
+ <!-- application|view|widget|template -->
+ <type>widget</type>
+
+ <!-- Interface Uid -->
+ <interfaceuid>0998</interfaceuid>
+
+ <!-- Vendor UID -->
+ <provideruid>101FB657</provideruid>
+
+ <!-- UID -->
+ <configurationuid>2000B133</configurationuid>
+
+ <!-- statusmakeactive|statuslicenceedefault|statuslicenceerestorable|statusoperatordefault|statususerdefault -->
+
+ <!-- Description -->
+ <fullname>&qtn_2000B133_configuration_name;</fullname>
+ <shortname>InstallWidgetConf</shortname>
+ <version>2.0</version>
+
+ <!-- Configuration -->
+ <filexml>widgetconfiguration.xml</filexml>
+
+ <!-- Name of the localization files -->
+ <filedtd>locale.dtd</filedtd>
+
+ <!-- Locale independent/common resources -->
+ <localization>
+ <fileresource>hs_logo.jpg</fileresource>
+ <fileresource>widget.bmp</fileresource>
+ </localization>
+
+</package>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/homescreensrv_plat/sapi_homescreenplugin/tsrc/testthemes/installed_widget_v2/widgetconfiguration.xml Wed May 12 13:36:47 2010 +0300
@@ -0,0 +1,18 @@
+<configuration>
+
+ <control>
+
+ <settings>
+ <item id="size" name="" _name="&qtn_s60shortcut_size;">
+ <property name="heigth" value="20"/>
+ <property name="width" value="240"/>
+ <property name="locked" value="yes"/>
+ </item>
+ </settings>
+
+ </control>
+
+ <resources>
+ </resources>
+
+</configuration>
--- a/homescreensrv_plat/sapi_homescreenplugin/tsrc/testthemes/minimalconf/root/manifest.dat Wed Mar 03 15:38:34 2010 +0200
+++ b/homescreensrv_plat/sapi_homescreenplugin/tsrc/testthemes/minimalconf/root/manifest.dat Wed May 12 13:36:47 2010 +0300
@@ -1,5 +1,9 @@
<?xml version="1.0"?>
-<package version="0.3">
+<package version="2.0">
+
+ <!-- Set both two families for unit tests -->
+ <family>qhd_tch</family>
+ <family>vga_tch</family>
<!-- application|view|widget|template -->
<type>application</type>
@@ -31,4 +35,4 @@
<!-- Locale specific resources -->
-</package>
\ No newline at end of file
+</package>
--- a/homescreensrv_plat/sapi_homescreenplugin/tsrc/testthemes/minimalconf/view/manifest.dat Wed Mar 03 15:38:34 2010 +0200
+++ b/homescreensrv_plat/sapi_homescreenplugin/tsrc/testthemes/minimalconf/view/manifest.dat Wed May 12 13:36:47 2010 +0300
@@ -1,6 +1,10 @@
<?xml version="1.0"?>
-<package version="0.3">
+<package version="2.0">
+ <!-- Set both two families for unit tests -->
+ <family>qhd_tch</family>
+ <family>vga_tch</family>
+
<type>view</type>
<!-- Interface UID -->
@@ -31,4 +35,4 @@
<fileresource mediatype="mime_type">resource.file</fileresource>
<fileresource mediatype="mime_type">picture.jpeg</fileresource>
-</package>
\ No newline at end of file
+</package>
--- a/homescreensrv_plat/sapi_homescreenplugin/tsrc/testthemes/minimalconf/widget/manifest.dat Wed Mar 03 15:38:34 2010 +0200
+++ b/homescreensrv_plat/sapi_homescreenplugin/tsrc/testthemes/minimalconf/widget/manifest.dat Wed May 12 13:36:47 2010 +0300
@@ -1,5 +1,9 @@
<?xml version="1.0"?>
-<package version="0.3">
+<package version="2.0">
+
+ <!-- Set both two families for unit tests -->
+ <family>qhd_tch</family>
+ <family>vga_tch</family>
<type>widget</type>
@@ -27,4 +31,4 @@
<!-- Locale independent/common resources -->
-</package>
\ No newline at end of file
+</package>
--- a/homescreensrv_plat/sapi_homescreenplugin/tsrc/testthemes/operatorconf/root/manifest.dat Wed Mar 03 15:38:34 2010 +0200
+++ b/homescreensrv_plat/sapi_homescreenplugin/tsrc/testthemes/operatorconf/root/manifest.dat Wed May 12 13:36:47 2010 +0300
@@ -1,5 +1,9 @@
<?xml version="1.0"?>
-<package version="0.3">
+<package version="2.0">
+
+ <!-- Set both two families for unit tests -->
+ <family>qhd_tch</family>
+ <family>vga_tch</family>
<!-- application|view|widget|template -->
<type>application</type>
@@ -32,4 +36,4 @@
<!-- Locale specific resources -->
-</package>
\ No newline at end of file
+</package>
--- a/homescreensrv_plat/sapi_homescreenplugin/tsrc/testthemes/operatorconf/view/manifest.dat Wed Mar 03 15:38:34 2010 +0200
+++ b/homescreensrv_plat/sapi_homescreenplugin/tsrc/testthemes/operatorconf/view/manifest.dat Wed May 12 13:36:47 2010 +0300
@@ -1,5 +1,9 @@
<?xml version="1.0"?>
-<package version="0.3">
+<package version="2.0">
+
+ <!-- Set both two families for unit tests -->
+ <family>qhd_tch</family>
+ <family>vga_tch</family>
<type>view</type>
@@ -27,4 +31,4 @@
<!-- Name of the localization files -->
<filedtd>locale.dtd</filedtd>
-</package>
\ No newline at end of file
+</package>
--- a/homescreensrv_plat/sapi_homescreenplugin/tsrc/testthemes/typicalconf/root/manifest.dat Wed Mar 03 15:38:34 2010 +0200
+++ b/homescreensrv_plat/sapi_homescreenplugin/tsrc/testthemes/typicalconf/root/manifest.dat Wed May 12 13:36:47 2010 +0300
@@ -1,5 +1,9 @@
<?xml version="1.0"?>
-<package version="0.3">
+<package version="2.0">
+
+ <!-- Set both two families for unit tests -->
+ <family>qhd_tch</family>
+ <family>vga_tch</family>
<!-- application|view|widget|template -->
<type>application</type>
@@ -33,4 +37,4 @@
<!-- Locale specific resources -->
<localization/>
-</package>
\ No newline at end of file
+</package>
--- a/homescreensrv_plat/sapi_homescreenplugin/tsrc/testthemes/typicalconf/view1/manifest.dat Wed Mar 03 15:38:34 2010 +0200
+++ b/homescreensrv_plat/sapi_homescreenplugin/tsrc/testthemes/typicalconf/view1/manifest.dat Wed May 12 13:36:47 2010 +0300
@@ -1,5 +1,9 @@
<?xml version="1.0"?>
-<package version="0.3">
+<package version="2.0">
+
+ <!-- Set both two families for unit tests -->
+ <family>qhd_tch</family>
+ <family>vga_tch</family>
<!-- application|view|widget|template -->
<type>view</type>
@@ -34,4 +38,4 @@
<fileresource mediatype="mime_type">hs_logoz.jpg</fileresource>
</localization>
-</package>
\ No newline at end of file
+</package>
--- a/homescreensrv_plat/sapi_homescreenplugin/tsrc/testthemes/typicalconf/view2/manifest.dat Wed Mar 03 15:38:34 2010 +0200
+++ b/homescreensrv_plat/sapi_homescreenplugin/tsrc/testthemes/typicalconf/view2/manifest.dat Wed May 12 13:36:47 2010 +0300
@@ -1,5 +1,9 @@
<?xml version="1.0"?>
-<package version="0.3">
+<package version="2.0">
+
+ <!-- Set both two families for unit tests -->
+ <family>qhd_tch</family>
+ <family>vga_tch</family>
<!-- application|view|widget|template -->
<type>view</type>
@@ -30,4 +34,4 @@
<fileresource mediatype="mime_type">view2.bmp</fileresource>
-</package>
\ No newline at end of file
+</package>
--- a/homescreensrv_plat/sapi_homescreenplugin/tsrc/testthemes/typicalconf/widget/manifest.dat Wed Mar 03 15:38:34 2010 +0200
+++ b/homescreensrv_plat/sapi_homescreenplugin/tsrc/testthemes/typicalconf/widget/manifest.dat Wed May 12 13:36:47 2010 +0300
@@ -1,5 +1,9 @@
<?xml version="1.0"?>
-<package version="0.3">
+<package version="2.0">
+
+ <!-- Set both two families for unit tests -->
+ <family>qhd_tch</family>
+ <family>vga_tch</family>
<!-- application|view|widget|template -->
<type>widget</type>
@@ -32,4 +36,4 @@
<!-- Locale specific resources -->
-</package>
\ No newline at end of file
+</package>
--- a/homescreensrv_plat/sapi_menucontent/mcsservice/src/mcsiconutility.cpp Wed Mar 03 15:38:34 2010 +0200
+++ b/homescreensrv_plat/sapi_menucontent/mcsservice/src/mcsiconutility.cpp Wed May 12 13:36:47 2010 +0300
@@ -22,7 +22,7 @@
#include <mcsmenu.h>
#include <mcsmenuitem.h>
#include <mcsmenuutils.h>
-#include <SATDomainPSKeys.h>
+#include <satdomainpskeys.h>
#include <e32property.h>
#include <apgcli.h>
#include <AknInternalIconUtils.h>
--- a/homescreensrv_plat/shortcutplugin_extension_api/group/bld.inf Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,28 +0,0 @@
-/*
-* Copyright (c) 2006 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: File that exports the files belonging to
-: AI Shortcut xSP Extension API
-*
-*/
-
-
-#include <platform_paths.hrh>
-
-PRJ_PLATFORMS
-DEFAULT
-
-PRJ_EXPORTS
-
-../inc/aiscutextserv.h MW_LAYER_PLATFORM_EXPORT_PATH(aiscutextserv.h)
-../inc/aiscutextdefs.h MW_LAYER_PLATFORM_EXPORT_PATH(aiscutextdefs.h)
--- a/homescreensrv_plat/shortcutplugin_extension_api/inc/aiscutextdefs.h Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,54 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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: Common client/server definitions for Shortcut plug-in
-*
-*/
-
-
-#ifndef AISCUTEXTDEFS_H
-#define AISCUTEXTDEFS_H
-
-_LIT( KAiScutExtServerName, "AiScutExtServer" );
-
-const TUint KAiScutExtServMajorVersionNumber = 1;
-const TUint KAiScutExtServMinorVersionNumber = 0;
-const TUint KAiScutExtServBuildVersionNumber = 0;
-
-const TUint KMaxPopupTextLines = 3;
-
-/**
- * xSP extension server requests
- */
-enum TAiScutExtServRequest
- {
- EAiScutExtServSetTargetDefinition = 1,
- EAiScutExtServSetPopupText,
- EAiScutExtServResetPopupText,
- EAiScutExtServSetIcon,
- EAiScutExtServResetIcon,
- EAiScutExtServIsInShortcuts,
- EAiScutExtServIssuePutInShortcuts
- };
-
-/**
- * AiScutExtServer client panic codes
- */
-enum TAiScutExtServerPanic
- {
- EBadRequest = 1
- };
-
-#endif // AISCUTEXTDEFS_H
-
-// End of File.
--- a/homescreensrv_plat/shortcutplugin_extension_api/inc/aiscutextserv.h Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,96 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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 Shortcut xSP Extension API
-*
-*/
-
-
-#ifndef RAISCUTEXTSERV_H
-#define RAISCUTEXTSERV_H
-
-#include <e32std.h>
-#include <bamdesca.h>
-
-class CGulIcon;
-
-/**
- * Active Idle Shortcut Plugin extension client side API.
- * @since S60 v3.2
- */
-class RAiScutExtServ : public RSessionBase
-{
- public:
- /**
- * Connects a client to the AiScut extension server.
- * Target definition is generated automatically from process' uid 3.
- * @return KErrNone, if successful, otherwise one of the other
- * system-wide error codes.
- */
- IMPORT_C TInt Connect();
-
- /**
- * Connects a client to the AiScut extension server.
- * @param aTargetDefinition Target definition string.
- * @return KErrNone, if successful, otherwise one of the other
- * system-wide error codes.
- */
- IMPORT_C TInt Connect( const TDesC& aTargetDefinition );
-
- /**
- * @return The client side version number.
- */
- IMPORT_C TVersion Version() const;
-
- /**
- * Updates a pop-up text box.
- * @param aPopupTextLines Array of lines displayed in pop-up text box.
- * @return KErrNone, if successful, otherwise one of the other system-wide error codes.
- */
- IMPORT_C TInt UpdatePopupTextL( const MDesCArray& aPopupTextLines );
-
- /**
- * Resets a pop-up text box.
- * @return KErrNone, if successful, otherwise one of the other system-wide error codes.
- */
- IMPORT_C TInt ResetPopupText();
-
- /**
- * Updates a shortcut icon.
- * @param aIcon Icon to be shown in shortcut.
- * @return KErrNone, if successful, otherwise one of the other system-wide error codes.
- */
- IMPORT_C TInt UpdateIconL( const CGulIcon& aIcon );
-
- /**
- * Resets a shortcut icon. Default icon will be shown.
- * @return KErrNone, if successful, otherwise one of the other system-wide error codes.
- */
- IMPORT_C TInt ResetIcon();
-
- /**
- * @return ETrue if the shortcut is in shortcuts bar.
- * @return KErrNone, if successful, otherwise one of the other system-wide error codes.
- */
- IMPORT_C TInt IsInShortcuts( TBool& aIsInShortcuts ) const;
-
- /**
- * Launches AiScutPlugin General Settings view.
- * @return KErrNone, if successful, otherwise one of the other system-wide error codes.
- */
- IMPORT_C TInt IssuePutInShortcuts();
-};
-
-#endif // RAISCUTEXTSERV_H
-
-// End of File.
--- a/homescreensrv_plat/shortcutplugin_extension_api/shortcutplugin_extension_api.metaxml Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,18 +0,0 @@
-<?xml version="1.0" ?>
-<api id="c7c71e536333cd0f359b87036b8beea7" dataversion="1.0">
- <name>AI Shortcut xSP Extension API</name>
- <description>Enables client applications to publish dynamic shortcut graphics and tooltips</description>
- <type>c++</type>
- <subsystem>activeidle</subsystem>
- <libs>
- <lib name="aiscutextserv.lib" />
- </libs>
- <release category="domain"/>
- <attributes>
- <!-- This indicates wether the api provedes separate html documentation -->
- <!-- or is the additional documentation generated from headers. -->
- <!-- If you are unsuere then the value is "no" -->
- <htmldocprovided>no</htmldocprovided>
- <adaptation>no</adaptation>
- </attributes>
-</api>
--- a/homescreensrv_plat/xcfw_api/inc/xcfwengine.h Wed Mar 03 15:38:34 2010 +0200
+++ b/homescreensrv_plat/xcfw_api/inc/xcfwengine.h Wed May 12 13:36:47 2010 +0300
@@ -22,7 +22,7 @@
// INCLUDES
#include <s32std.h>
-#include <GMXMLParser.h>
+#include <gmxmlparser.h>
#include <gmxmlcomposer.h>
#include "gecodefaultobjectfactory.h"
Binary file idlefw/conf/activeidle2.confml has changed
Binary file idlefw/conf/activeidle2_10275102.crml has changed
--- a/idlefw/group/aifw.mmp Wed Mar 03 15:38:34 2010 +0200
+++ b/idlefw/group/aifw.mmp Wed May 12 13:36:47 2010 +0300
@@ -28,23 +28,14 @@
// Framework sources
SOURCEPATH ../src/framework
SOURCE aifw.cpp
-SOURCE aicontentpluginmanager.cpp
+SOURCE aieventhandler.cpp
+SOURCE aipluginfactory.cpp
SOURCE aiuicontrollermanager.cpp
-SOURCE aicallstatusobserver.cpp
-SOURCE ailightstatusobserver.cpp
-SOURCE aibackuprestorestatusobserver.cpp
-SOURCE aienvironmentchangeobserver.cpp
-SOURCE aifocusobserver.cpp
-SOURCE aikeylockobserver.cpp
-SOURCE aipsstatusobserver.cpp
-SOURCE aipluginstatemanager.cpp
-SOURCE aipluginstatemachineimpl.cpp
-SOURCE aistatealive.cpp
-SOURCE aistatesuspended.cpp
-SOURCE aistateidle.cpp
-SOURCE aipluginfactory.cpp
-SOURCE aiuiframeworkobserverimpl.cpp
-SOURCE ainetworklistener.cpp
+SOURCE aistatemanager.cpp
+SOURCE aistateprovider.cpp
+SOURCE aiecomobserver.cpp
+SOURCE aicpscommandbuffer.cpp
+SOURCE aicpsexecuteparam.cpp
// Active Idle Framework shared sources
SOURCEPATH ../src/common
@@ -64,6 +55,8 @@
LIBRARY apparc.lib apgrfx.lib
LIBRARY ws32.lib cone.lib commonengine.lib
LIBRARY cenrepnotifhandler.lib
+LIBRARY liwServiceHandler.lib
+LIBRARY swiutils.lib
// S60 Dependencies
LIBRARY avkon.lib
@@ -71,17 +64,14 @@
LIBRARY featmgr.lib
LIBRARY eikcore.lib
LIBRARY hwrmlightclient.lib
-LIBRARY networkhandling.lib
+LIBRARY aknskinsrv.lib
// Active Idle internal dependencies
-LIBRARY aiutils.lib aiidleint.lib
+LIBRARY aiutils.lib
+LIBRARY aiidleint.lib
// Debugging dependencies
-LIBRARY flogger.lib
-
-//++HV
-LIBRARY akntransitionutils.lib
-//--HV
+LIBRARY flogger.lib
DEFFILE aifwu.def
--- a/idlefw/group/aiutils.mmp Wed Mar 03 15:38:34 2010 +0200
+++ b/idlefw/group/aiutils.mmp Wed May 12 13:36:47 2010 +0300
@@ -17,7 +17,6 @@
#include <platform_paths.hrh>
#include <data_caging_paths.hrh>
-//#include <platform/mw/aisystemuids.hrh>
TARGET aiutils.dll
TARGETTYPE dll
@@ -26,11 +25,11 @@
CAPABILITY CAP_GENERAL_DLL
SOURCEPATH ../src/utility
-SOURCE aiutility.cpp
-SOURCE caipspropertyobserver.cpp
-SOURCE caistrparser.cpp
-SOURCE caiplugintool.cpp
-SOURCE caicontentitemarrayiterator.cpp
+SOURCE aiutility.cpp
+SOURCE caipspropertyobserver.cpp
+SOURCE caistrparser.cpp
+SOURCE caiplugintool.cpp
+SOURCE caicontentitemarrayiterator.cpp
SOURCE contentprioritymap.cpp
SOURCE aipluginsettingsimpl.cpp
@@ -40,5 +39,5 @@
MW_LAYER_SYSTEMINCLUDE
LIBRARY euser.lib
-LIBRARY charconv.lib
+LIBRARY charconv.lib
--- a/idlefw/group/bld.inf Wed Mar 03 15:38:34 2010 +0200
+++ b/idlefw/group/bld.inf Wed May 12 13:36:47 2010 +0300
@@ -25,15 +25,14 @@
PRJ_EXPORTS
-../plugins/devicestatus/loc/aidevstaplgres.loc MW_LAYER_LOC_EXPORT_PATH(aidevstaplgres.loc)
-../loc/aifw.loc MW_LAYER_LOC_EXPORT_PATH(aifw.loc)
+../loc/aifw.loc MW_LAYER_LOC_EXPORT_PATH(aifw.loc)
// Generic configuration interface for component cenrep settings
../conf/activeidle2.confml APP_LAYER_CONFML(activeidle2.confml)
../conf/activeidle2_10275102.crml APP_LAYER_CRML(activeidle2_10275102.crml)
-../rom/idlefw.iby CORE_MW_LAYER_IBY_EXPORT_PATH(idlefw.iby)
-../rom/idlefw_resources.iby LANGUAGE_MW_LAYER_IBY_EXPORT_PATH(idlefw_resources.iby)
+../rom/idlefw.iby CORE_MW_LAYER_IBY_EXPORT_PATH(idlefw.iby)
+../rom/idlefw_resources.iby LANGUAGE_MW_LAYER_IBY_EXPORT_PATH(idlefw_resources.iby)
PRJ_MMPFILES
aiutils.mmp
--- a/idlefw/hslaunch/src/hslaunch.cpp Wed Mar 03 15:38:34 2010 +0200
+++ b/idlefw/hslaunch/src/hslaunch.cpp Wed May 12 13:36:47 2010 +0300
@@ -16,6 +16,7 @@
*/
#include <e32property.h>
+#include <e32debug.h>
#include "hslaunch.h"
// ========================= DECLARATIONS ==================================
@@ -260,36 +261,36 @@
// -----------------------------------------------------------------------------
//
void CHsLaunch::ProcessEnded( const TExitType& aExitType,
- const TInt /*aExitReason*/,
+ const TInt aExitReason,
const TExitCategoryName& /*aExitCategory*/ )
{
- // Only respond to panic. EExitTerminate and EExitKill are ignored.
- if( aExitType != EExitPanic )
- {
- return;
- }
-
TInt crashCount = 0;
TInt error = RProperty::Get( KPSCategoryUid,
KPSCrashCountKey,
crashCount );
- if( error == KErrNone )
+ // increment crash count in cenrep if the process has panic'd or killed with
+ // an error code
+ if( aExitType == EExitPanic ||
+ ( aExitType == EExitKill && aExitReason != KErrNone ) )
{
- crashCount++;
- error = RProperty::Set( KPSCategoryUid,
- KPSCrashCountKey,
- crashCount );
- }
-
- if( error == KErrNone )
- {
- User::After( KSleepOnRetry );
- Activate();
- }
- else
- {
- ShutdownApp( error );
+ if( error == KErrNone )
+ {
+ crashCount++;
+ error = RProperty::Set( KPSCategoryUid,
+ KPSCrashCountKey,
+ crashCount );
+ }
+
+ if( error == KErrNone )
+ {
+ User::After( KSleepOnRetry );
+ Activate();
+ }
+ else
+ {
+ ShutdownApp( error );
+ }
}
}
--- a/idlefw/inc/framework/aibackuprestorestatusobserver.h Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,67 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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: Backup / Restore status observer
-*
-*/
-
-
-#ifndef C_AIBACKUPRESTORESTATUSOBSERVER_H
-#define C_AIBACKUPRESTORESTATUSOBSERVER_H
-
-#include <e32base.h>
-#include <e32property.h>
-#include "aipsstatusobserver.h"
-
-class MAiPSPropertyObserver;
-
-/**
- * @ingroup group_aifw
- *
- * Publish and subscribe key observer
- *
- * @lib aifw
- * @since S60 3.2
- */
-
-NONSHARABLE_CLASS( CAiBackupRestoreStatusObserver ) : public CAiPSStatusObserver
- {
-public:
-
-// Construction
-
- static CAiBackupRestoreStatusObserver* NewL( MAiStateManager* aStateManager );
-
- virtual ~CAiBackupRestoreStatusObserver();
-
-// functions from base class CAiPSStatusObserver
-
- TAiStateChanges Status();
-
-private:
-
-// Construction
-
- CAiBackupRestoreStatusObserver();
-
- void ConstructL( MAiStateManager* aStateManager );
-
-// new functions
-
- static TInt HandleBackupOperationEvent( TAny* aPtr );
-
- };
-
-#endif // C_AIBACKUPRESTORESTATUSOBSERVER_H
-
-// End of File.
--- a/idlefw/inc/framework/aicallstatusobserver.h Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,67 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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: Call status observer
-*
-*/
-
-
-#ifndef C_AICALLSTATUSOBSERVER_H
-#define C_AICALLSTATUSOBSERVER_H
-
-#include <e32base.h>
-#include <e32property.h>
-#include "aipsstatusobserver.h"
-
-class MAiPSPropertyObserver;
-
-/**
- * @ingroup group_aifw
- *
- * Publish and subscribe key observer
- *
- * @lib aifw
- * @since S60 3.2
- */
-
-NONSHARABLE_CLASS( CAiCallStatusObserver ) : public CAiPSStatusObserver
- {
-public:
-
-// Construction
-
- static CAiCallStatusObserver* NewL( MAiStateManager* aStateManager );
-
- virtual ~CAiCallStatusObserver();
-
-// functions from base class CAiPSStatusObserver
-
- TAiStateChanges Status();
-
-private:
-
-// Construction
-
- CAiCallStatusObserver();
-
- void ConstructL( MAiStateManager* aStateManager );
-
-// new functions
-
- static TInt HandleCallStateChange( TAny* aPtr );
-
- };
-
-#endif // C_AICALLSTATUSOBSERVER_H
-
-// End of File.
--- a/idlefw/inc/framework/aicontentpluginmanager.h Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,153 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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: Content plugin manager class for Active idle framework.
-*
-*/
-
-
-
-#ifndef C_AICONTENTPLUGINMANAGER_H
-#define C_AICONTENTPLUGINMANAGER_H
-
-#include <e32base.h>
-#include "aicontentmodel.h"
-#include "aicontentpublisher.h"
-#include "aifwdefs.h"
-#include "aipluginsettings.h"
-#include "aipluginfactory.h"
-
-class MAiContentObserver;
-class MAiEventHandlerExtension;
-class MAiPluginTool;
-class CAiContentPublisher;
-class CAiPluginStateManager;
-class CAiUiController;
-class CImplementationInformation;
-
-/**
- * @ingroup group_aifw
- *
- * Content plugin manager class for Active idle framework.
- *
- * @lib aifw
- * @since S60 3.2
- */
-NONSHARABLE_CLASS( CAiContentPluginManager ) : public CBase
-
- {
-public: // Constructor and destructor
-
- static CAiContentPluginManager* NewL();
-
- virtual ~CAiContentPluginManager();
-
-public: // New functions
-
- /**
- * Forward plugin event to plugins.
- *
- * @since S60 3.2
- * @param aParam event string.
- */
- void HandlePluginEvent( const TDesC& aParam );
-
- /**
- * Forward plugin event to plugins.
- *
- * @since S60 5.0
- * @param aPublisherInfo publisher info.
- * @param aParam event string.
- */
- void HandlePluginEventL( const TAiPublisherInfo& aPublisherInfo, const TDesC& aParam );
-
- /**
- * Queries wheter a plugin has settigns or not.
- */
- TBool HasMenuItemL( const TAiPublisherInfo& aPublisherInfo, const TDesC& aMenuItem );
-
- /**
- * Requests a Content publisher plug-in to refresh a content item.
- */
- TBool RefreshContent( const TDesC& aContentCid );
-
- /**
- * Sets plugins to online/offline
- *
- * @since S60 5.0
- * @param aOnline ETrue to set plugins online, EFalse to offline
- * @paran aPublishers List of publishers
- */
- void ProcessOnlineState( TBool aOnline );
-
- /**
- * Gets plugin state manager.
- *
- * @since S60 5.0
- * @return plugin state manager.
- */
- CAiPluginStateManager& StateManager() const;
-
- /**
- * Gets plugin factory.
- *
- * @since S60 5.0
- * @return plugin factory.
- */
- CAiPluginFactory& PluginFactory() const;
-
-
-private: // Constructors
-
- CAiContentPluginManager();
-
- void ConstructL();
-
-private: // New functions
-
- void GetIdL( CAiContentPublisher& aContentPublisher,
- TAiPublisherProperty aProperty,
- const TDesC& aName, TInt& aId );
-
- TInt RefreshContentL( const TDesC& aContentCid );
-
-private: // Data
-
- /**
- * Plugins array.
- * Owned.
- */
- RPointerArray< CAiContentPublisher > iPlugins;
-
- /**
- * Plugin factory.
- * Owned.
- */
- CAiPluginFactory* iPluginFactory;
-
- /**
- * System state observer.
- * Owned.
- */
- CAiPluginStateManager* iStateManager;
-
- /**
- * Plugin tool from utility lib.
- * Owned.
- */
- MAiPluginTool* iPluginTool;
- };
-
-#endif // C_AICONTENTPLUGINMANAGER_H
-
-// End of File.
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/idlefw/inc/framework/aicpsexecuteparam.h Wed May 12 13:36:47 2010 +0300
@@ -0,0 +1,141 @@
+/*
+* 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: CPS Execute parameter
+ *
+*/
+
+
+#ifndef AICPSEXECUTEPARAM_H
+#define AICPSEXECUTEPARAM_H
+
+// System includes
+#include <e32base.h>
+
+// User includes
+
+// Forward declarations
+class CLiwGenericParamList;
+// Constants
+
+/**
+ * CPS Execute Command Parameter
+ *
+ * @since S60 5.2
+ */
+
+/**
+ * Holds parameters to execute the CPS excute command
+ *
+ * @since S60 5.2
+ */
+NONSHARABLE_CLASS( CAiCpsExecuteParam ) : public CBase
+ {
+public:
+ // constructors and destructor
+
+ /**
+ * Two-phased constructors.
+ */
+ static CAiCpsExecuteParam* NewL( );
+ static CAiCpsExecuteParam* NewLC();
+
+ /**
+ * Destructor.
+ */
+ ~CAiCpsExecuteParam();
+
+private:
+ // constructors
+
+ /**
+ * C++ default constructor
+ */
+ CAiCpsExecuteParam();
+
+ /**
+ * 2nd phase constructor
+ */
+ void ConstructL( );
+
+public:
+ // new functions
+
+ /**
+ * Gets plugin id
+ *
+ * @since S60 5.2
+ * @return plugin id
+ */
+ const TDesC& PluginId() const;
+
+ /**
+ * Returns the input parameter map for Execute command
+ * it will leave the CLiwDefaultMap object in the stack
+ *
+ * @since S60 5.2
+ * @return in param map
+ */
+ CLiwDefaultMap* InParamMapLC();
+
+ /**
+ * Adds a actions to the action list
+ *
+ * @since S60 5.2
+ * @param aAction actions to add
+ */
+ void AddActionL(const TDesC8& aAction);
+
+ /**
+ * Sets the filter values
+ * This method always over write the previous filters vlaues.
+ *
+ * @since S60 5.2
+ * @param aMap filter map
+ */
+ void SetFilterL(CLiwDefaultMap* aMap);
+
+ /**
+ * Sets Registry type
+ * This method always over write the previous retgistry type.
+ *
+ * @since S60 5.2
+ * @param aRegistryType type of cps registry
+ */
+ void SetRegistryTypeL(const TDesC& aRegistryType);
+
+ /**
+ * Sets the plugin id
+ * This method always over write the previous plugin id.
+ *
+ * @since S60 5.2
+ * @param aPluginId actions to add
+ */
+ void SetPluginIdL(const TDesC& aPluginId);
+
+private:
+ // data
+ /** Plugin Id, owned.*/
+ HBufC* iPluginId;
+ /** Registry type, owned. */
+ HBufC* iRegistryType;
+ /** Filters, owned.*/
+ HBufC* iPublisher;
+ HBufC* iContentType;
+ HBufC* iContentId;
+
+ /** action trigger list, owned. */
+ RPointerArray<HBufC8> iActions;
+ };
+
+#endif /* AICPSEXECUTEPARAM_H */
--- a/idlefw/inc/framework/aidevicestatusobserver.h Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,43 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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: Device status observer
-*
-*/
-
-
-#ifndef M_AIDEVICESTATUSOBSERVER_H
-#define M_AIDEVICESTATUSOBSERVER_H
-
-#include "aipluginstatemachine.h"
-
-/**
- * description
- *
- * @lib aifw
- * @since S60 3.2
- */
-class MAiDeviceStatusObserver
- {
-
-public:
-
- virtual ~MAiDeviceStatusObserver(){}
-
- virtual TAiStateChanges Status() = 0;
-
- };
-
-#endif // M_AIDEVICESTATUSOBSERVER_H
-
-// End of File.
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/idlefw/inc/framework/aiecomobserver.h Wed May 12 13:36:47 2010 +0300
@@ -0,0 +1,139 @@
+/*
+* 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: CAiEcomObserver class implementation.
+ *
+*/
+
+
+#ifndef AIECOMOBSERVER_H
+#define AIECOMOBSERVER_H
+
+// System includes
+#include <e32base.h>
+#include <e32std.h>
+#include <ecom/ecom.h>
+
+// User includes
+
+
+// Class declaration
+/**
+ *
+ * Active Idle ECom observer
+ *
+ * @ingroup group_aifw
+ * @lib aifw.lib
+ * @since S60 5.2
+ */
+class MAiEcomObserver
+ {
+public:
+
+ /**
+ * This is called when the IdleFw detects a change in ECom
+ * plugin registrations (adding, removing or upgrading ECOM-plugins).
+ *
+ * @since S60 5.2
+ */
+ virtual void NotifyEcomRegistryChanged() = 0;
+ };
+
+
+// Class declaration
+/**
+ *
+ * Active Idle ECom observer
+ *
+ * @ingroup group_aifw
+ * @lib aifw.lib
+ * @since S60 5.2
+ */
+NONSHARABLE_CLASS( CAiEcomObserver ) : public CActive
+ {
+public:
+ // constructors and destructor
+
+ // Two-phased constructor.
+ static CAiEcomObserver* NewL();
+
+ // Two-phased constructor.
+ static CAiEcomObserver* NewLC();
+
+ // Cancel and destroy
+ ~CAiEcomObserver();
+
+public:
+ // New functions
+
+ /**
+ * Adds a new observer for plugin notifications.
+ * @param aObserver Observer pointer.
+ */
+ void AddObserverL( MAiEcomObserver* aObserver );
+
+private:
+ // new functions
+
+ // Start observing ecom notification
+ void StartObserving();
+
+ // Notifies observers
+ void NotifyObservers();
+
+private:
+ // constructors
+
+ /**
+ * C++ default constructor
+ */
+ CAiEcomObserver();
+
+ /**
+ * 2nd phase constructor
+ */
+ void ConstructL();
+
+private:
+ // from CActive
+
+ /**
+ * @see CActive
+ */
+ void RunL();
+
+ /**
+ * @see CActive
+ */
+ void DoCancel();
+
+private:
+ // data
+
+ /** ECom session handle (must be closed, not deleted), Own */
+ REComSession iEComSession;
+
+ /** Own: Array of Observers - pointer not owned */
+ RPointerArray< MAiEcomObserver > iObservers;
+
+private:
+ // friend classes
+
+#ifdef _AIFW_UNIT_TEST
+ friend class UT_AiEcomObserver;
+#endif
+ };
+
+#endif // AIECOMOBSERVER_H
+
+// End of file
--- a/idlefw/inc/framework/aienvironmentchangeobserver.h Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,80 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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: Environment observer
-*
-*/
-
-
-#ifndef C_AIENVIROMENTCHANGEOBSERVER_H
-#define C_AIENVIROMENTCHANGEOBSERVER_H
-
-#include <e32base.h>
-#include "aidevicestatusobserver.h"
-#include "aiuiframeworkobserver.h"
-
-class MAiStateManager;
-class CEnvironmentChangeNotifier;
-
-/**
- * @ingroup group_aifw
- *
- * System enviroment change observer.
- *
- * @lib aifw
- * @since S60 3.2
- */
-NONSHARABLE_CLASS( CAiEnvironmentChangeObserver ) : public CBase,
- public MAiDeviceStatusObserver
- {
-public:
-
-// Construction
-
- static CAiEnvironmentChangeObserver* NewL( MAiStateManager* aStateManager );
-
- virtual ~CAiEnvironmentChangeObserver();
-
-// functions from base class CAiEnvironmentChangeObserver
-
- TAiStateChanges Status();
-
-// new functions
-
- static TInt EnvironmentChangeCallBack(TAny* aPtr);
-
-private:
-
-// Construction
-
- CAiEnvironmentChangeObserver();
-
- void ConstructL( MAiStateManager* aStateManager );
-
-protected: // Data
-
- /**
- * State manager.
- * Not own.
- */
- MAiStateManager* iStateManager;
-
- /**
- * Enviroment change notifier: time, locale and midnight crossover
- * Own.
- */
- CEnvironmentChangeNotifier* iEnvironmentChangeNotifier;
- };
-
-#endif // C_AIENVIROMENTCHANGEOBSERVER_H
-
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/idlefw/inc/framework/aieventhandler.h Wed May 12 13:36:47 2010 +0300
@@ -0,0 +1,153 @@
+/*
+* Copyright (c) 2005-2006 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: Content plugin event handler class for Active idle framework.
+*
+*/
+
+
+
+#ifndef _AIEVENTHANDLER_H
+#define _AIEVENTHANDLER_H
+
+// System includes
+#include <e32base.h>
+
+// User includes
+#include <hscontentpublisher.h>
+
+// Forward declarations
+class MAiPluginTool;
+class CAiPluginFactory;
+class CHsContentPublisher;
+class THsPublisherInfo;
+
+// Class declaration
+/**
+ * @ingroup group_aifw
+ *
+ * Content plugin eventhandler class for Active idle framework.
+ *
+ * @lib aifw
+ * @since S60 5.2
+ */
+NONSHARABLE_CLASS( CAiEventHandler ) : public CBase
+ {
+public: // Constructor and destructor
+
+ static CAiEventHandler* NewL( CAiPluginFactory& aFactory );
+
+ ~CAiEventHandler();
+
+public: // New functions
+
+ /**
+ * Forward plugin event to plugins.
+ *
+ * @since S60 5.2
+ * @param aParam event string.
+ */
+ void HandlePluginEvent( const TDesC& aParam );
+
+ /**
+ * Forward plugin event to plugins.
+ *
+ * @since S60 5.2
+ * @param aPublisherInfo publisher info.
+ * @param aParam event string.
+ */
+ void HandlePluginEventL(
+ const THsPublisherInfo& aPublisherInfo, const TDesC& aParam );
+
+ /**
+ * Queries wheter a plugin has a menuitem or not.
+ *
+ * @since S60 5.2
+ * @param aPublisherInfo publisher info.
+ * @param aMenuItem menuitem to query.
+ * @return ETrue if exists, EFalse otherwise
+ */
+ TBool HasMenuItemL(
+ const THsPublisherInfo& aPublisherInfo, const TDesC& aMenuItem );
+
+ /**
+ * Requests a Content publisher plug-in to refresh a content item.
+ *
+ * @since S60 5.2
+ * @param aContentCid Content id to refresh
+ * @return ETrue if succesful, EFalse otherwise
+ */
+ TBool RefreshContent( const TDesC& aContentCid );
+
+ /**
+ * Requests a Content publisher plug-in to refresh a content item.
+ *
+ * @since S60 5.2
+ * @param aPublisherInfo publisher info.
+ * @param aContentCid Content id to refresh
+ * @return ETrue if succesful, EFalse otherwise
+ */
+ TBool RefreshContent(
+ const THsPublisherInfo& aPublisherInfo, const TDesC& aContentCid );
+
+ /**
+ * Requests a Content publisher plug-in to suspend a content item.
+ *
+ * @since S60 5.2
+ * @param aPublisherInfo publisher info.
+ * @param aContentCid Content id to suspend
+ * @return ETrue if succesful, EFalse otherwise
+ */
+ TBool SuspendContent(
+ const THsPublisherInfo& aPublisherInfo, const TDesC& aContentCid );
+
+private:
+ // Constructors
+
+ /**
+ * C++ default contructor
+ */
+ CAiEventHandler( CAiPluginFactory& aFactory );
+
+ /**
+ * 2nd phase contructor
+ */
+ void ConstructL();
+
+private:
+ // new functions
+
+ void GetIdL( CHsContentPublisher& aContentPublisher,
+ CHsContentPublisher::TProperty aProperty, const TDesC& aName, TInt& aId );
+
+ TInt RefreshContentL( const TDesC& aContentCid );
+
+private:
+ // data
+
+ /** Plugin factory, Not owned */
+ CAiPluginFactory& iFactory;
+ /** Plugin tool from utility lib, Owned */
+ MAiPluginTool* iPluginTool;
+
+private:
+ // friend classes
+
+#ifdef _AIFW_UNIT_TEST
+ class UT_AiEventHandler;
+#endif
+ };
+
+#endif // _AIEVENTHANDLER_H
+
+// End of File.
--- a/idlefw/inc/framework/aifocusobserver.h Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,86 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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: AI2 focus observer.
-*
-*/
-
-
-#ifndef C_AIFOCUSOBSERVER_H
-#define C_AIFOCUSOBSERVER_H
-
-#include <e32base.h>
-#include <e32property.h>
-//++HV
-#include <akntransitionutils.h>
-//--HV
-#include "aipsstatusobserver.h"
-
-class MAiPSPropertyObserver;
-
-/**
- * @ingroup group_aifw
- *
- * Focus change observer. Using telephony idle visiblity PS.
- *
- * @lib aifw
- * @since S60 3.2
- */
-
-NONSHARABLE_CLASS( CAiFocusObserver ) : public CAiPSStatusObserver
- //++HV
- ,public MAknTransitionUtilsObserver
- //--HV
- {
-public:
-
-// Construction
-
- static CAiFocusObserver* NewL( MAiStateManager* aStateManager );
-
- virtual ~CAiFocusObserver();
-
-// functions from base class CAiPSStatusObserver
-
- TAiStateChanges Status();
-
-private:
-
-// Construction
-
- CAiFocusObserver();
-
- void ConstructL( MAiStateManager* aStateManager );
-
-// new functions
-
- //++HV
-
- static TInt StaticHandleFocusChangeEvent( TAny* aPtr );
- TInt HandleFocusChangeEvent();
-
-
- // From MAknTransitionUtilsObserver
- TInt AknTransitionCallback(TInt aEvent, TInt aState = 0, const TDesC8* aParams = NULL);
-
-
-private:
- TBool iTfxEffectActive;
-
-
- //--HV
- };
-
-#endif // C_AIFOCUSOBSERVER_H
-
-// End of File.
--- a/idlefw/inc/framework/aifw.h Wed Mar 03 15:38:34 2010 +0200
+++ b/idlefw/inc/framework/aifw.h Wed May 12 13:36:47 2010 +0300
@@ -16,38 +16,36 @@
*/
-#ifndef C_AIFW_H
-#define C_AIFW_H
+#ifndef _AIFW_H
+#define _AIFW_H
+// System includes
#include <e32base.h>
-#include <aicontentpublisher.h>
-#include <centralrepository.h>
#include <cenrepnotifyhandler.h>
-#include "aifwdefs.h"
-#include "aicontentmodel.h"
-#include "aifweventhandler.h"
+// User includes
+#include <aifweventhandler.h>
+// Forward declarations
class CAiUiControllerManager;
-class CAiContentPluginManager;
+class CAiStateManager;
+class CAiStateProvider;
+class CAiPluginFactory;
+class CAiEventHandler;
class CAiWsPluginManager;
-class CAiPluginStateManager;
-class RConeResourceLoader;
-class CAiContentPublisher;
-class MAiPSPropertyObserver;
-class CAiNetworkListener;
+class THsPublisherInfo;
+// Class declaration
/**
* @ingroup group_aifw
*
* Active Idle Framework main class.
*/
-NONSHARABLE_CLASS( CAiFw ) :
- public CBase,
- public MAiFwEventHandler,
- public MCenRepNotifyHandlerCallback
+NONSHARABLE_CLASS( CAiFw ) : public CBase, public MAiFwEventHandler,
+ public MCenRepNotifyHandlerCallback
{
-public: // Constructors and destructors
+public:
+ // constructors and destructor
/**
* Creates and returns a new Active Idle Framework object.
@@ -59,6 +57,9 @@
*/
IMPORT_C static CAiFw* NewLC();
+ /**
+ * Destructor
+ */
~CAiFw();
public: // New functions
@@ -72,11 +73,21 @@
*/
IMPORT_C void RunL();
-private: // Constructors
+private:
+ // constructors
+
+ /**
+ * Default C++ constructor
+ */
CAiFw();
+
+ /**
+ * 2nd phase constructor
+ */
void ConstructL();
-private: // From MAiFwEventHandler
+private:
+ // from MAiFwEventHandler
/**
* @see MAiFwEventHandler
@@ -97,17 +108,7 @@
* @see MAiFwEventHandler
*/
void HandleUiShutdown( CAiUiController& aUiController );
-
- /**
- * @see MAiFwEventHandler
- */
- void HandleLoadPluginL( const TAiPublisherInfo& aPublisherInfo );
-
- /**
- * @see MAiFwEventHandler
- */
- void HandleDestroyPluginL( const TAiPublisherInfo& aPublisherInfo );
-
+
/**
* @see MAiFwEventHandler
*/
@@ -116,77 +117,86 @@
/**
* @see MAiFwEventHandler
*/
- void HandlePluginEventL( const TAiPublisherInfo& aPublisherInfo, const TDesC& aParam );
+ void HandlePluginEventL(
+ const THsPublisherInfo& aPublisherInfo,
+ const TDesC& aParam );
/**
* @see MAiFwEventHandler
*/
- TBool HasMenuItemL( const TAiPublisherInfo& aPublisherInfo, const TDesC& aMenuItem );
+ TBool HasMenuItemL(
+ const THsPublisherInfo& aPublisherInfo,
+ const TDesC& aMenuItem );
/**
* @see MAiFwEventHandler
*/
TBool RefreshContent( const TDesC& aContentCid );
+
+ /**
+ * @see MAiFwEventHandler
+ */
+ TBool RefreshContent(
+ const THsPublisherInfo& aPublisherInfo,
+ const TDesC& aContentCid );
+
+ /**
+ * @see MAiFwEventHandler
+ */
+ TBool SuspendContent(
+ const THsPublisherInfo& aPublisherInfo,
+ const TDesC& aContentCid );
/**
* @see MAiFwEventHandler
*/
TBool QueryIsMenuOpen();
-
- /**
- * @see MAiFwEventHandler
- */
- void ProcessStateChange( TAifwStates aState );
-private: // From MCenRepNotifyHandlerCallback
+private:
+ // from MCenRepNotifyHandlerCallback
/**
* @see MCenRepNotifyHandlerCallback
*/
void HandleNotifyInt( TUint32 aId, TInt aNewValue );
-private: // New functions
-
- static TInt HandleFocusChangeEvent( TAny* aSelf );
- static TInt HandleRestartEvent( TAny* aSelf );
- void SwapUiControllerL( TBool aToExtHS );
-
-private: // Data
+public:
+ // new functions
/**
- * UI Controller manager, Owned.
- */
- CAiUiControllerManager* iUiControllerManager;
-
- /**
- * Content plugin manager, Owned.
- */
- CAiContentPluginManager* iPluginManager;
-
- /**
- * Window server plug-in manager, Owned.
- */
- CAiWsPluginManager* iWsPluginManager;
-
- /**
- * Notify handler for cenrep, Owned.
+ * Get repository
+ *
+ * @since S60 5.2
+ * @return Repositury
*/
- CCenRepNotifyHandler* iNotifyHandler;
+ CRepository& Repository() const;
- /**
- * Notify handler for cenrep, Owned.
- */
- CCenRepNotifyHandler* iNotifyHandlerESS;
+private:
+ // new functions
+
+ void SwapUiControllerL( TBool aToExtHS );
- /**
- * Idle repository, Owned.
- */
- CRepository* iAIRepository;
+private:
+ // data
- /**
- * Idle restart PS observer, Owned.
- */
- MAiPSPropertyObserver* iIdleRestartObserver;
+ /** UI Controller manager, Owned. */
+ CAiUiControllerManager* iUiControllerManager;
+ /** Plugin factory, Owned */
+ CAiPluginFactory* iFactory;
+ /** State manager, Owned */
+ CAiStateManager* iStateManager;
+ /** State provider, Owned */
+ CAiStateProvider* iStateProvider;
+ /** Plugin event handler, Owned. */
+ CAiEventHandler* iEventHandler;
+ /** Window server plug-in manager, Owned. */
+ CAiWsPluginManager* iWsPluginManager;
+ /** Notify handler for cenrep, Owned. */
+ CCenRepNotifyHandler* iNotifyHandler;
+ /** Notify handler for cenrep, Owned. */
+ CCenRepNotifyHandler* iNotifyHandlerESS;
+ /** Idle repository, Owned. */
+ CRepository* iRepository;
TBool iLibrariesLoaded;
@@ -195,5 +205,5 @@
RLibrary iLibrary3;
};
-#endif // C_AIFW_H
+#endif // _AIFW_H
--- a/idlefw/inc/framework/aifwstartupscheduler.h Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,59 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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: Custom active scheduler for Active Idle Framework startup.
-*
-*/
-
-
-#ifndef C_AIFWSTARTUPSCHEDULER_H
-#define C_AIFWSTARTUPSCHEDULER_H
-
-
-#include <e32base.h>
-
-/**
- * Custom active scheduler for Active Idle Framework startup.
- */
-NONSHARABLE_CLASS( CAiFwStartupScheduler ) : public CActiveScheduler
- {
-public:
- static CAiFwStartupScheduler* NewLC();
-
- ~CAiFwStartupScheduler();
-
- /**
- * Returns result code from this scheduler's execution.
- *
- * @return - KErrNone if the scheduler loop executed succesfully
- * - Any of the system-wide error codes in case of an error.
- */
- TInt Result();
-
-private:
-// from base class CActiveScheduler
- void Error(TInt aError) const;
-
-// Construction
- CAiFwStartupScheduler();
-private: // data
-
- /**
- * Result code returned by Result().
- */
- mutable TInt iResult;
- };
-
-
-#endif // ? C_AIFWSTARTUPSCHEDULER_H
-
--- a/idlefw/inc/framework/aikeylockobserver.h Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,67 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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: AI2 keylock status observer.
-*
-*/
-
-
-#ifndef C_AIKEYLOCKOBSERVER_H
-#define C_AIKEYLOCKOBSERVER_H
-
-#include <e32base.h>
-#include <e32property.h>
-#include "aipsstatusobserver.h"
-
-class MAiPSPropertyObserver;
-
-/**
- * @ingroup group_aifw
- *
- * Keylock status change observer.
- *
- * @lib aifw
- * @since S60 3.2
- */
-
-NONSHARABLE_CLASS( CAiKeylockObserver ) : public CAiPSStatusObserver
- {
-public:
-
-// Construction
-
- static CAiKeylockObserver* NewL( MAiStateManager* aStateManager );
-
- virtual ~CAiKeylockObserver();
-
-// functions from base class CAiPSStatusObserver
-
- TAiStateChanges Status();
-
-private:
-
-// Construction
-
- CAiKeylockObserver();
-
- void ConstructL( MAiStateManager* aStateManager );
-
-// new functions
-
- static TInt HandleKeylockStatusEvent( TAny* aPtr );
-
- };
-
-#endif // C_AIKEYLOCKOBSERVER_H
-
-// End of File.
--- a/idlefw/inc/framework/ailightstatusobserver.h Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,84 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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: Light status observer
-*
-*/
-
-
-#ifndef C_AILIGHTSTATUSOBSERVER_H
-#define C_AILIGHTSTATUSOBSERVER_H
-
-#include <e32base.h>
-#include <e32property.h>
-#include <hwrmlight.h>
-#include "aidevicestatusobserver.h"
-
-class MAiStateManager;
-
-/**
- * @ingroup group_aifw
- *
- * Publish and subscribe key observer
- *
- * @lib aifw
- * @since S60 3.2
- */
-
-NONSHARABLE_CLASS( CAiLightStatusObserver ) : public CBase,
- public MHWRMLightObserver,
- public MAiDeviceStatusObserver
- {
-public:
-
-// Construction
-
- static CAiLightStatusObserver* NewL( MAiStateManager* aStateManager );
-
- ~CAiLightStatusObserver();
-
-// functions from base class MAiDeviceStatusObserver
-
- TAiStateChanges Status();
-
-private:
-
-// Construction
-
- CAiLightStatusObserver();
-
- void ConstructL( MAiStateManager* aStateManager );
-
-// from MHWRMLightObserver
-
- void LightStatusChanged( TInt aTarget, CHWRMLight::TLightStatus aStatus );
-
-protected: // Data
-
- /**
- * Light client.
- * Own.
- */
- CHWRMLight* iLight;
-
- /**
- * State manager.
- * Not own.
- */
- MAiStateManager* iStateManager;
-
- };
-
-#endif // C_AILIGHTSTATUSOBSERVER_H
-
-// End of File.
--- a/idlefw/inc/framework/ainetworklistener.h Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,141 +0,0 @@
-/*
-* 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: Network info listener
-*
-*/
-
-#ifndef C_NETWORKLISTENER_H
-#define C_NETWORKLISTENER_H
-
-#include <e32base.h>
-#include <NWHandlingEngine.h>
-#include "ainetworkobserver.h"
-
-class MAiNetworkObserver;
-class CNWSession;
-
-/**
- * @ingroup group_xmluicontroller
- *
- * Network info listener.
- *
- * Client can use this object to listen network state changes. Client must implement
- * MAiNetworkObserver interface to retrieve network state changes
- *
- * @since S60 5.0
- */
-NONSHARABLE_CLASS(CAiNetworkListener) : public CBase,
- public MNWMessageObserver
- {
-public:
-
- static CAiNetworkListener* CAiNetworkListener::NewL(MAiNetworkObserver& aNetworkObserver);
-
- virtual ~CAiNetworkListener();
-
- /**
- * Get current network status
- * @return TNetworkState
- */
- MAiNetworkObserver::TNetworkState NetworkState();
-
-// from base class MNWMessageObserver
-
- /**
- * From MNWMessageObserver.
- * Called by network handling engine when network info changes.
- *
- * @since S60 5.0
- * @param aMessage is type of the change.
- */
- void HandleNetworkMessage( const TNWMessages aMessage );
-
- /**
- * From MNWMessageObserver.
- * Called if network handling engine fails.
- *
- * @since S60 5.0
- * @param aOperation is failed operation.
- * @param aErrorCode is fail reason.
- */
- void HandleNetworkError( const TNWOperation aOperation, TInt aErrorCode );
-
-private:
- TBool HasNetworkInfoChanged( const TNWMessages aMessage );
-
- MAiNetworkObserver::TNetworkState InterpretNWMessage(const TNWMessages aMessage, const TNWInfo);
-
- CAiNetworkListener(MAiNetworkObserver& aNetworkObserver);
-
- void ConstructL();
-
-
-private: // data
-
- /**
- * Session to network handling engine.
- * Own.
- */
- CNWSession* iSession;
-
- /**
- * Cached network info structure.
- */
- TNWInfo iInfo;
-
- /**
- * Previous network information.
- */
- TNWInfo iOldInfo;
-
- /**
- * Reference to client observing
- */
- MAiNetworkObserver& iObserver;
-
-
- /**
- * Network related message flags
- */
-
- enum TNetInfoFlags
- {
- ENetworkProviderNameReceived = 0x00000001,
- ENetworkProviderNameOk = 0x00000002,
- EServiceProviderNameReceived = 0x00000004,
- EServiceProviderNameOk = 0x00000008,
- ERegistrationStatusReceived = 0x00000010,
- ENetworkInfoChangeReceived = 0x00000020,
- EProgrammableOperatorInfoReceived = 0x00000040,
- EProgrammableOperatorInfoReceivedOk = 0x00000080
- };
-
- /**
- * Subset of sum of TNetInfoFlags.
- */
- TUint iReceivedMessageFlags;
-
- /**
- * Subset of sum of old TNetInfoFlags.
- */
- TUint iOldReceivedMessageFlags;
-
- /**
- * current state of network
- */
- MAiNetworkObserver::TNetworkState iCurrentNwState;
- };
-//}
-
-#endif // C_AINETWORKINFOLISTENER_H
--- a/idlefw/inc/framework/ainetworkobserver.h Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,64 +0,0 @@
-/*
-* 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: Network info observer
-*
-*/
-
-#ifndef M_NETWORKOBSERVER_H
-#define M_NETWORKOBSERVER_H
-
-#include <e32std.h>
-#include <NWHandlingEngine.h>
-
-/**
- * @ingroup group_xmluicontroller
- *
- * Network info observer.
- *
- * Client gets network state changes through this interface.
- *
- * @since S60 5.0
- */
-class MAiNetworkObserver
- {
-
-public:
- enum TNetworkState
- {
- ENone = 0,
- EHomeNetwork,
- ERoaming
- };
-
-protected:
-
- /**
- * Virtual destructor.
- * Cannot be used to destruct the object.
- */
- virtual ~MAiNetworkObserver() {};
-
-public:
-
- /**
- * Called when network info changes.
- *
- * @since S60 5.0
- * @param aNewState new network state
- */
- virtual void HandleNetworkStateChange( TNetworkState aNewState ) = 0;
-
- };
-
-#endif // M_AINETWORKINFOOBSERVER_H
--- a/idlefw/inc/framework/ainwsdlgcontroller.h Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,147 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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: Network selection dialog controller
-*
-*/
-
-
-#ifndef C_AINWSDLGCONTROLLER_H
-#define C_AINWSDLGCONTROLLER_H
-
-#include <e32base.h>
-#include <AknSoftNotifier.h>
-#include <NWHandlingEngine.h>
-
-class CNWSession;
-
-/**
- * Network Selection Dialog controller.
- */
-NONSHARABLE_CLASS( CAiNwSDlgController ) :
- public CBase,
- public MNWMessageObserver
- {
-public:
-
-// Constructors and destructors
-
- /**
- * Creates a new instance of the class.
- *
- * @return A new instance of the class.
- * @exception Any of the system-wide error codes if instance creation
- * fails due to an unrecoverable error.
- */
- static CAiNwSDlgController* NewL();
-
- ~CAiNwSDlgController();
-
-// from MNWMessageObserver
-
- void HandleNetworkMessage( const TNWMessages aMessage );
- void HandleNetworkError( const TNWOperation aOperation, TInt aErrorCode );
-
-private:
-
-// Constructors
-
- CAiNwSDlgController();
-
- void ConstructL();
-
-private:
-
-// New functions
-
- /**
- * Take action according to current state change.
- */
- void HandleStateChange();
-
- /**
- *
- */
- void HandleNetworkFound();
-
- /**
- *
- */
- void HandleNetworkLost();
-
- /**
- * Opens the network selection dialog.
- */
- void LaunchDialog();
-
- /**
- * Cancels the network selection dialog.
- */
- void CancelDialog();
-
- /**
- * Tests if offline mode is engaged.
- *
- * @return ETrue if offline mode is currently active
- */
- TBool IsOffLineMode() const;
-
- /**
- * Tests if Bluetooth SAP is in connected mode.
- *
- * @return ETrue if Bluetooth SAP is active.
- */
- TBool IsBluetoothSAPConnected() const;
-
- static TInt DelayCallBack(TAny* aParam);
-
-private:
-
-// Data
-
- /**
- * Notifier service
- * Own
- */
- CAknSoftNotifier* iSoftNotifier;
-
- /**
- * Session to network handling engine.
- * Own.
- */
- CNWSession* iSession;
-
- /**
- * Cached network info structure.
- */
- TNWInfo iInfo;
-
- /**
- * A true value if registered to network.
- */
- TBool iRegistered;
-
- /**
- * Profile API.
- */
- CRepository* iProfileApi;
-
- /**
- * Timer object for 1-minute delay
- */
- CPeriodic* iPeriodic;
- };
-
-#endif // C_AINWSDLGCONTROLLER_H
-
-// End of file.
--- a/idlefw/inc/framework/aipluginactivitypstool.h Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,92 +0,0 @@
-/*
-* Copyright (c) 2005-2006 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: Plugin activity PS tool
-*
-*/
-
-
-#ifndef AIPLUGINACTIVITYPSTOOL_H
-#define AIPLUGINACTIVITYPSTOOL_H
-
-#include <e32base.h> // TUid
-#include <e32property.h> // RProperty
-
-struct TAiPublisherInfo;
-
-NONSHARABLE_CLASS(CAiPluginActivityRegistry) : public CBase
- {
- public:
-
- static CAiPluginActivityRegistry* NewL();
-
- TInt SetPluginActive( const TAiPublisherInfo& aPubInfo );
-
- void CleanRegistry();
-
- ~CAiPluginActivityRegistry();
-
- private:
-
- // construction
-
- void ConstructL();
-
- CAiPluginActivityRegistry();
-
- // new methods
-
- /**
- * Update PS registry count register.
- */
- TInt UpdateCountRegister();
-
- /**
- * Update PS registry ordinal register.
- */
- TInt UpdateOrdinalRegister( TInt aPluginUid );
-
- /**
- * Update plugins name register.
- */
- TInt UpdateNameRegister( TInt aPluginUid,
- const TDesC& aName );
-
- /**
- * Clean last added entry. In case of failure.
- */
- void CleanLastEntry( TInt aPluginUid,
- TInt aOrdinal,
- TInt aLastCount );
-
- private: // Members
-
- /**
- * Ordinal in registry. Ascending.
- */
- TInt iRegistryOrdinal;
-
- /**
- * Plugin count in registry.
- */
- TInt iPluginCount;
-
- /**
- * PS property that is updated.
- */
- RProperty iProperty;
-
- };
-
-#endif // AIPLUGINACTIVITYPSTOOL_H
-
--- a/idlefw/inc/framework/aipluginfactory.h Wed Mar 03 15:38:34 2010 +0200
+++ b/idlefw/inc/framework/aipluginfactory.h Wed May 12 13:36:47 2010 +0300
@@ -11,134 +11,169 @@
*
* Contributors:
*
-* Description: Content plugin manager class for Active idle framework.
+* Description: Plugin factory class for Active idle framework.
*
*/
-#ifndef C_AIPLUGINASYNCFACTORY_H
-#define C_AIPLUGINASYNCFACTORY_H
+#ifndef _AIPLUGINCFACTORY_H
+#define _AIPLUGINCFACTORY_H
-#include "aicontentpublisher.h"
-#include "aipropertyextension.h"
-#include "aifwdefs.h"
+// System includes
#include <e32base.h>
+#include <ecom/implementationinformation.h>
+
+// User includes
-class MAiContentObserver;
-class MAiEventHandlerExtension;
-class MAiContentItemIterator;
-class CAiContentPublisher;
-class CAiUiController;
-class CAiPluginActivityRegistry;
-class CImplementationInformation;
-class CAiContentPluginManager;
-class MAiPluginTool;
-class MAiPluginLifecycleObserver;
+// Forward declarations
+class CAiUiControllerManager;
+class CAiStateManager;
+class CAiCpsCommandBuffer;
+class CHsContentPublisher;
+class THsPublisherInfo;
+// Class declaration
/**
* @ingroup group_aifw
*
- * Content plugin factory class for Active idle framework.
+ * Plugin factory class for Active idle framework.
*
* @lib aifw
- * @since S60 3.2
+ * @since S60 5.2
*/
NONSHARABLE_CLASS( CAiPluginFactory ) : public CBase
{
- public:
+public:
+ // Constructors and destructor
+
+ /**
+ * Two-phased constructor.
+ */
+ static CAiPluginFactory* NewL( CAiUiControllerManager& aManager );
-// Constructor and destructor
-
- static CAiPluginFactory* NewL( RPointerArray<CAiContentPublisher>& aPlugins,
- CAiContentPluginManager& aManager );
-
- virtual ~CAiPluginFactory();
+ /**
+ * Destructor
+ */
+ ~CAiPluginFactory();
-// New functions
+public:
+ // new functions
- /**
- * Create plugin
- *
- * @since S60 5.0
- * @param aPublisherInfo plugin to load.
- * @param aControllerArray array of active UI controllers.
- */
- void CreatePluginL( const TAiPublisherInfo& aPublisherInfo,
- RPointerArray<CAiUiController>& aControllerArray );
+ /**
+ * Create plugin
+ *
+ * @since S60 5.2
+ * @param aPublisherInfo plugin to create. Factory keeps plugin's ownership.
+ * @return KErrNone if plugin is created succesfully, otherwise system wide error code.
+ */
+ TInt CreatePlugin(
+ const THsPublisherInfo& aPublisherInfo );
+
+ /**
+ * Destroy plugin
+ *
+ * @since S60 5.2
+ * @param aPublisherInfo plugin to destroy.
+ */
+ void DestroyPlugin(
+ const THsPublisherInfo& aPublisherInfo );
- /**
- * Destroy plugin
- *
- * @since S60 5.0
- * @param aPublisherInfo plugin to destroy.
- * @param aControllerArray array of active UI controllers.
- */
- void DestroyPluginL( const TAiPublisherInfo& aPublisherInfo,
- RPointerArray<CAiUiController>& aControllerArray );
+ /**
+ * Destroy plugin
+ *
+ * @since S60 5.2
+ * @param aUid Implementation UID of a plugin to destroy.
+ */
+ void DestroyPlugin(
+ const TUid& aUid );
- /**
- * Destroys all plugins
- *
- * @since S60 5.0
- */
- void DestroyPlugins();
-
-
- void AddLifecycleObserverL( MAiPluginLifecycleObserver& aObserver );
+ /**
+ * Finds plugin by publisher info.
+ *
+ * @since S60 5.2
+ * @param aInfo publisher info.
+ * @return Pointer to plugin, NULL if not found. Factory keeps plugin's ownership.
+ */
+ CHsContentPublisher* PluginByInfo(
+ const THsPublisherInfo& aPublisherInfo ) const;
- /**
- * Finds plugin by publisher info.
- *
- * @since S60 5.0
- * @param aInfo publisher info.
- * @return Pointer to plugin, NULL if not found.
- */
- CAiContentPublisher* PluginByInfoL( const TAiPublisherInfo& aInfo ) const;
+ /**
+ * Finds plugin by uid.
+ *
+ * @since S60 5.2
+ * @param aInfo publisher uid.
+ * @return Pointer to plugin, NULL if not found. Factory keeps plugin's ownership.
+ */
+ CHsContentPublisher* PluginByUid( const TUid& aUid ) const;
+
+ /**
+ * Finds plugin by name.
+ *
+ * @since S60 5.2
+ * @param aInfo publisher info.
+ * @return Pointer to plugin, NULL if not found. Factory keeps plugin's ownership.
+ */
+ CHsContentPublisher* PluginByName( const TDesC& aName ) const;
+
+ /**
+ * Sets cps command buffer
+ *
+ * @since S60 5.2
+ * @param aCommanddBuffer Command buffer
+ */
+ void SetCommandBuffer( CAiCpsCommandBuffer* aCommanddBuffer );
+
+private:
+ // private constructors
- /**
- * Finds plugin by name.
- *
- * @since S60 5.0
- * @param aInfo publisher info.
- * @return Pointer to plugin, NULL if not found.
- */
- CAiContentPublisher* PluginByNameL( const TDesC& aName ) const;
-
- private:
-
-// Constructors
-
- CAiPluginFactory( RPointerArray<CAiContentPublisher>& aPlugins,
- CAiContentPluginManager& aManager );
+ /**
+ * Leaving constructor
+ */
+ void ConstructL();
+
+ /**
+ * C++ default constructor
+ */
+ CAiPluginFactory( CAiUiControllerManager& aManager );
- void ConstructL();
-
-// New functions
-
- CAiContentPublisher* CreatePluginLC( const TAiPublisherInfo& aPluginInfo );
-
- void SubscribeContentObserversL( CAiContentPublisher& aContentPublisher,
- const TAiPublisherInfo& aPublisherInfo,
- RPointerArray<CAiUiController>& aControllerArray );
-
- void ConfigurePluginL( RPointerArray<CAiUiController>& aControllerArray,
- CAiContentPublisher& aContentPublisher,
- const TAiPublisherInfo& aPubInfo );
+private:
+ // new functions
+
+ void CreatePluginL(
+ const THsPublisherInfo& aPublisherInfo );
+
+ void SubscribeContentObserversL(
+ CHsContentPublisher& aContentPublisher,
+ const THsPublisherInfo& aPublisherInfo );
+
+ void ConfigurePluginL(
+ CHsContentPublisher& aContentPublisher,
+ const THsPublisherInfo& aPublisherInfo );
+
+ RPointerArray< CHsContentPublisher >& Publishers() const;
- private: // Data
- // Array of loaded data plugins, Not owned
- RPointerArray<CAiContentPublisher>& iPlugins;
- // Content plugin manager, Not owned
- CAiContentPluginManager& iManager;
- // Ecom implementation info, Owned
- RImplInfoPtrArray iEComPlugins;
- // Plugin tool from utility lib, Owned
- MAiPluginTool* iPluginTool;
- // Life cycle observers, Owned
- RPointerArray<MAiPluginLifecycleObserver> iLifecycleObservers;
+private:
+ // data
+
+ /** UI Controller Manager, Not owned */
+ CAiUiControllerManager& iUiControllerManager;
+ /** Cps command buffer, Not owned */
+ CAiCpsCommandBuffer* iCommandBuffer;
+ /** Array of loaded data plugins, Owned */
+ mutable RPointerArray< CHsContentPublisher > iPublishers;
+ /** Ecom implementation info, Owned */
+ RImplInfoPtrArray iEComPlugins;
+
+private:
+ // friend classes
+ friend class CAiStateManager;
+
+#ifdef _AIFW_UNIT_TEST
+ friend class UT_AiPluginFactory;
+#endif
};
-#endif // C_AIPLUGINASYNCFACTORY_H
+#endif // _AIPLUGINCFACTORY_H
// End of File.
--- a/idlefw/inc/framework/aipluginlifecycleobserver.h Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,82 +0,0 @@
-/*
-* Copyright (c) 2005-2006 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: Plugin lifecycle observer
-*
-*/
-
-
-
-#ifndef M_AIPLUGINLIFECYCLEOBSERVER_H
-#define M_AIPLUGINLIFECYCLEOBSERVER_H
-
-#include "aipropertyextension.h"
-#include <aisystemuids.hrh>
-
-class CAiContentPublisher;
-
-// Unnamed namespace for local definitions
-namespace
- {
- const TInt KAIUidDevStaPlugin = AI_UID_ECOM_IMPLEMENTATION_CONTENTPUBLISHER_DEVSTAPLUGIN;
-
- const TInt KAIUidShortCutPlugin = AI_UID_ECOM_IMPLEMENTATION_CONTENTPUBLISHER_SHORTCUTPLUGIN;
-
- const TInt KAIUidProfilePlugin = AI_UID_ECOM_IMPLEMENTATION_CONTENTPUBLISHER_PROFILEPLUGIN;
-
- const TInt KAIUidSATPlugin = AI_UID_ECOM_IMPLEMENTATION_CONTENTPUBLISHER_SATPLUGIN;
- }
-
-/**
- * Plugin lifecycle observer base class.
- *
- * @lib aifw
- * @since S60 3.2
- */
-class MAiPluginLifecycleObserver
- {
-public:
-
- /**
- * Report plugin created.
- * @param aPlugin reference to the created plugin.
- */
- virtual void PluginCreatedL( CAiContentPublisher& aPlugin ) = 0;
-
- /**
- * Report plugin destroyed.
- * @param aPlugin reference to the dtored plugin.
- */
- virtual void PluginDestroyed( CAiContentPublisher& aPlugin ) = 0;
-
- /**
- * Report all plugins created.
- */
- virtual void AllPluginsCreated() = 0;
-
- /**
- * Report all plugins destroyed.
- */
- virtual void AllPluginsDestroyed() = 0;
-
-protected:
-
- /**
- * Protected destructor prevents deletion through this interface.
- */
- ~MAiPluginLifecycleObserver() { };
- };
-
-#endif // M_AIPLUGINSTATEMANAGER_H
-
-// End of File.
--- a/idlefw/inc/framework/aipluginstate.h Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,74 +0,0 @@
-/*
-* Copyright (c) 2005-2006 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: Plugin state main class
-*
-*/
-
-
-#ifndef M_AIPLUGINSTATE_H
-#define M_AIPLUGINSTATE_H
-
-#include "aipluginstatemachine.h"
-
-/**
- * Plugin state interface.
- *
- * @lib aifw
- * @since S60 3.2
- */
-class MAiPluginState
- {
-public:
-
- /**
- * This method is called when state is entered.
- *
- * @param aStateMachine reference to the owning state machine.
- * @param aStateChange the system state variable change that caused this
- * state change.
- */
- virtual void Enter( MAiPluginStateMachine& aStateMachine,
- TAiStateChanges aStateChange ) = 0;
-
- /**
- * This method handles system state variable state changes
- * handles events in the current state.
- *
- * @param aStateMachine reference to the owning state machine.
- * @param aStateChange the system state variable change that is the cause
- * of this event.
- * @return TBool did the state handle the event.
- */
- virtual TBool HandleEvent( MAiPluginStateMachine& aStateMachine,
- TAiStateChanges aStateChange ) = 0;
-
- /**
- * This method is called when state is exited.
- *
- * @param aStateMachine reference to the owning state machine.
- * @param aStateChange the system state variable change that caused this
- * state change.
- */
- virtual void Exit( MAiPluginStateMachine& aStateMachine,
- TAiStateChanges aStateChange ) = 0;
-
-protected:
-
- ~MAiPluginState()
- {
- };
-
- };
-
-#endif // M_AIPLUGINSTATE_H
--- a/idlefw/inc/framework/aipluginstatemachine.h Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,169 +0,0 @@
-/*
-* Copyright (c) 2005-2006 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: Plugin state mmchine base class
-*
-*/
-
-
-#ifndef M_AIPLUGINSTATEMACHINE_H
-#define M_AIPLUGINSTATEMACHINE_H
-
-#include <aicontentpublisher.h>
-
-class MAiPluginState;
-
-/**
- * TAiStateChanges state change enumeration for each separate monitored state.
- */
-enum TAiStateChanges
- {
- ESMAIInCall,
- ESMAINoCall,
- ESMAIBacklightOn,
- ESMAIBacklightOff,
- ESMAIBackupOn,
- ESMAIBackupOff,
- ESMAIIdleForeground,
- ESMAIIdleBackground,
- ESMAISystemBoot,
- ESMAISystemShutdown,
- ESMAILocaleChanged,
- ESMAITimeChanged,
- ESMAIMidnightCrossover,
- ESMAIReportThemeChangeStarted,
- ESMAIReportThemeChangeReady,
- ESMAIRelayoutScreen,
- ESMAIGeneralThemeChanged,
- ESMAIT1Timeout,
- ESMAIKeylockEnabled,
- ESMAIKeylockDisabled,
- ESMAIUnknownState,
- ESMAIEnterEditMode,
- ESMAIExitEditMode,
- ESMAIOffLine,
- ESMAIOnLine,
- ESMAIPageSwitch
- };
-
-/**
- * Sate variable enumeration for querying the status of the monitored item.
- */
-enum TAiStateVariable
- {
- ESMAICallStatus,
- ESMAILightStatus,
- ESMAIBackupRestoreStatus,
- ESMAIIdleFocusStatus
- };
-
-/**
- * Possible states of the state machine (and plugin).
- */
-enum TAiState
- {
- EAiIdle = 1,
- EAiSuspended,
- EAiAlive,
- EAiAliveActive,
- EAiAliveIncall,
- EAiAliveInactive
- };
-
-/**
- * Sub states of idle state.
- */
-enum TAiIdleSubState
- {
- EAiIdleCreatingPlugins = EAiAliveInactive + 1,
- EAiIdleBackupRestore
- };
-
-/**
- * @ingroup group_aifw
- *
- * Plugin state resource interface.
- *
- * @lib aifw
- * @since S60 3.2
- */
-class MAiPluginStateResources
- {
-public:
-
- /*
- * Check whether the specified state variable is active or not.
- *
- * @param aStateVariable system variable state change that is to be checked.
- */
- virtual TBool StateVariable( TAiStateVariable aStateVariable ) = 0;
-
- /**
- * Translates system state change reason to plugin state state reason.
- *
- * @param aStateChange the system state variable change to be translated.
- * @return TAiTransitionReason plugin state transition reason.
- */
- virtual TAiTransitionReason TranslateReason( TAiStateChanges aStateChange ) = 0;
-
- /**
- * Restart plugin suspend timer.
- */
- virtual void RestartSuspendTimer() = 0;
-
-protected:
- ~MAiPluginStateResources() {}
- };
-
-/**
- * Plugin state machine interface.
- *
- * @lib aifw
- * @since S60 3.2
- */
-class MAiPluginStateMachine : public MAiPluginStateResources
- {
-public:
-
- /*
- * Method that changes this state machine to a state.
- *
- * @param aState state to change to.
- * @param aStateChange system variable state change that is the cause for this call.
- */
- virtual void SwitchToState( TAiState aState,
- TAiStateChanges aStateChange ) = 0;
-
- /*
- * Reference to the plugin that is managed by this state machine.
- *
- * @return CAiContentPublisher reference to the plugin.
- */
- virtual CAiContentPublisher& Plugin() const = 0;
-
- /**
- * Change plugin states.
- *
- * @param aReason for transition
- * @param aStateChangeMethod state change method to call
- * @param aLogOpCode operation code for logging
- */
- virtual void ChangePluginState(
- TAiTransitionReason aReason,
- void (CAiContentPublisher::*aStateChangeMethod)(TAiTransitionReason) ) = 0;
-
-protected:
- ~MAiPluginStateMachine() {}
- };
-
-#endif // M_AIPLUGINSTATEMACHINE_H
--- a/idlefw/inc/framework/aipluginstatemachineimpl.h Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,106 +0,0 @@
-/*
-* Copyright (c) 2005-2006 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: Plugin state machine implementation
-*
-*/
-
-
-#ifndef C_AIPLUGINSTATEMACHINEIMPL_H
-#define C_AIPLUGINSTATEMACHINEIMPL_H
-
-#include <e32base.h>
-#include <aicontentpublisher.h>
-#include "aipluginstatemachine.h"
-#include "aistatealive.h"
-#include "aistatesuspended.h"
-#include "aistateidle.h"
-
-class MAiPluginStateControl;
-class MAiPluginState;
-
-/**
- * Plugin state machine implementation.
- *
- * @lib aifw
- * @since S60 3.2
- */
-NONSHARABLE_CLASS( CAiPluginStateMachine ) : public CBase,
- public MAiPluginStateMachine
- {
-public: // Constructor
-
- CAiPluginStateMachine( MAiPluginStateResources& aPluginStateResource,
- CAiContentPublisher& aPlugin );
-
-public: // from MAiPluginStateMachine
-
- TBool StateVariable( TAiStateVariable aStateVariable );
-
- TAiTransitionReason TranslateReason( TAiStateChanges aStateChange );
-
- void RestartSuspendTimer();
-
- void SwitchToState( TAiState aState, TAiStateChanges aStateChange );
-
- CAiContentPublisher& Plugin() const;
-
- void ChangePluginState( TAiTransitionReason aReason,
- void (CAiContentPublisher::*aStateChangeMethod)(TAiTransitionReason) );
-
-public: // new methods
-
- TBool HandleEvent( TAiStateChanges aStateChange );
-
-private: // data
-
- /**
- * Alive master state.
- */
- TAiStateAlive iAlive;
-
- /**
- * Suspended state.
- */
- TAiStateSuspended iSuspended;
-
- /**
- * Idle master state.
- */
- TAiStateIdle iIdle;
-
- /**
- * Pointer to current state.
- * Not owned.
- */
- MAiPluginState* iCurrentState;
-
- /**
- * Pointer to parent state machine.
- * Not owned.
- */
- MAiPluginStateResources& iPluginStateResource;
-
- /**
- * Pointer to managed plugin.
- * Not owned.
- */
- CAiContentPublisher& iPlugin;
-
- /**
- * Online sub-state
- */
- TBool iOnline;
- };
-
-#endif // C_AIPLUGINSTATEMACHINEIMPL_H
--- a/idlefw/inc/framework/aipluginstatemanager.h Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,242 +0,0 @@
-/*
-* Copyright (c) 2005-2006 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: Plugin state manager
-*
-*/
-
-
-#ifndef C_AIPLUGINSTATEMANAGER_H
-#define C_AIPLUGINSTATEMANAGER_H
-
-#include <e32base.h>
-#include "aistatemanager.h"
-#include "aipluginstatemachine.h"
-#include "aipluginlifecycleobserver.h"
-
-#include "aistatealive.h"
-#include "aistatesuspended.h"
-#include "aistateidle.h"
-#include "aifwdefs.h"
-
-class MAiPSPropertyObserver;
-class MAiDeviceStatusObserver;
-class CAiPluginStateManager;
-class CAiContentPluginManager;
-class CAiPluginStateMachine;
-class CAiUiFrameworkObserverImpl;
-class MAiUiFrameworkObserver;
-
-/**
- * Plugin state manager implementation.
- *
- * @lib aifw
- * @since S60 3.2
- */
-NONSHARABLE_CLASS( CAiPluginStateManager ) : public CBase,
- public MAiStateManager,
- public MAiPluginStateResources,
- public MAiPluginLifecycleObserver
- {
-
-public: // Constructor and destructor
-
- static CAiPluginStateManager* NewL();
-
- virtual ~CAiPluginStateManager();
-
-public: // From MAiStateManager
-
- void ReportStateChange( TAiStateChanges aState );
-
-public: // From MAiPluginStateMachine
-
- TBool StateVariable( TAiStateVariable aStateVariable );
-
- TAiTransitionReason TranslateReason( TAiStateChanges aStateChange );
-
- void RestartSuspendTimer();
-
-public: // From MAiPluginLifecycleObserver
-
- void PluginCreatedL( CAiContentPublisher& aPlugin );
-
- void PluginDestroyed( CAiContentPublisher& aPlugin );
-
- void AllPluginsCreated();
-
- void AllPluginsDestroyed();
-
-public: // new methods
-
- /**
- * Create system status observers (lights/backup/restore etc.).
- */
- void CreateSystemStateObserversL();
-
- /**
- * Destroy system status observers.
- */
- void DestroySystemStateObservers();
-
- /**
- * Provide accessor for fw observer.
- * @return MAiUiFrameworkObserver pointer to fw observer.
- */
- MAiUiFrameworkObserver* UiFwObserver() const;
-
- /**
- * Process online state change for a plugin
- * @param aPlugin plugin
- */
- void ProcessOnlineState( CAiContentPublisher& aPlugin );
-
- /**
- * Process offline state change for a plugin
- * @param aPlugin plugin
- */
- void ProcessOfflineState( CAiContentPublisher& aPlugin );
-
-private: // Constructors
-
- CAiPluginStateManager();
-
- void ConstructL();
-
-private: // New functions
-
- /**
- * Handles Statemachine event event and error array update.
- * @param aState new state.
- * @param aMachine reference to single state machine.
- */
- void ProcessStateChange( TAiStateChanges aState,
- CAiPluginStateMachine& aMachine );
-
- /**
- * Handles Statemachine event event and error array update
- * for all state machines.
- * @param aState new state.
- */
- void ProcessStateChangeForAll( TAiStateChanges aState );
-
- /**
- * Helper to check idle focus status.
- * @return ETrue if idle is focused / foreground app.
- */
- TBool IdleFocused() const;
-
- /**
- * Helper to check backup (or restore) status.
- * @return ETrue if backup (or restore) is ongoing.
- */
- TBool BackupOngoing() const;
-
- /**
- * Helper to check phone lights status.
- * @return ETrue if lights are on.
- */
- TBool LightsOn() const;
-
- /**
- * Helper to check phone call status.
- * @return ETrue if call is ongoing.
- */
- TBool CallOngoing() const;
-
- /**
- * Standard callback for CPeriodic ie. T1 timer.
- */
- static TInt T1TimerCallback( TAny* aPtr );
-
-private: // Data
-
- /**
- * Backup operation state observer.
- * Own.
- */
- MAiDeviceStatusObserver* iBackupOperationObserver;
-
- /**
- * Call state observer.
- * Own.
- */
- MAiDeviceStatusObserver* iCallStateObserver;
-
- /**
- * Light state observer.
- * Own.
- */
- MAiDeviceStatusObserver* iLightStateObserver;
-
- /**
- * Enviroment change observer.
- * Own.
- */
- MAiDeviceStatusObserver* iEnvironmentObserver;
-
- /**
- * Focus change observer. Using telephony idle visiblity PS.
- * Own.
- */
- MAiDeviceStatusObserver* iFocusObserver;
-
- /**
- * Keylock observer.
- * Own.
- */
- MAiDeviceStatusObserver* iKeylockObserver;
-
- /**
- * Enviroment change observer. Full class type is used because
- * we need to provide accessor for implemented type MAiUiFrameworkObserver.
- * Own.
- */
- CAiUiFrameworkObserverImpl* iFrameworkObserver;
-
- /**
- * Timer for suspend, screensaver timout + light fadeout.
- * Own.
- */
- CPeriodic* iT1Timer;
-
- /**
- * Timer for suspend, screensaver timout + light fadeout.
- */
- TInt iT1Delay;
-
- /**
- * New state to be timed.
- */
- TAiState iTimedState;
-
- /**
- * Reason for timers activity.
- */
- TAiTransitionReason iTimedReason;
-
- /**
- * Indicates whether the device has been properly started.
- */
- TBool iIsDeviceStarted;
-
- /**
- * State machines for plugins.
- * Own.
- */
- RPointerArray<CAiPluginStateMachine> iStateMachines;
- };
-
-#endif // C_AIPLUGINSTATEMANAGER_H
-
-// End of File.
--- a/idlefw/inc/framework/aipsstatusobserver.h Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,71 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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: PS status observer
-*
-*/
-
-
-#ifndef C_AIPSSTATUSOBSERVER_H
-#define C_AIPSSTATUSOBSERVER_H
-
-#include <e32base.h>
-#include <e32property.h>
-#include "aidevicestatusobserver.h"
-
-class MAiPSPropertyObserver;
-class MAiStateManager;
-
-/**
- * description
- *
- * @lib aifw
- * @since S60 3.2
- */
-
-NONSHARABLE_CLASS( CAiPSStatusObserver ) : public CBase,
- public MAiDeviceStatusObserver
- {
-
-public:
-
-// Construction
-
- virtual ~CAiPSStatusObserver();
-
-// New functions
-
- virtual TAiStateChanges Status();
-
-protected:
-
-// Construction
-
- CAiPSStatusObserver();
-
- void BaseConstructL( TCallBack aCallBack,
- TUid aCategory,
- TInt aKey,
- MAiStateManager* aStateManager );
-
-protected: // Data
-
- MAiPSPropertyObserver* iObserver;
-
- MAiStateManager* iStateManager;
-
- };
-
-#endif // C_AIPSSTATUSOBSERVER_H
-
-// End of File.
--- a/idlefw/inc/framework/aissaverstatusobserver.h Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,65 +0,0 @@
-/*
-* Copyright (c) 2005-2005 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_AISSAVERSTATUSOBSERVER_H
-#define C_AISSAVERSTATUSOBSERVER_H
-
-#include <e32base.h>
-#include <e32property.h>
-#include "aipsstatusobserver.h"
-
-class MAiPSPropertyObserver;
-
-/**
- * Publish and subscribe key observer
- *
- * @lib aifw
- * @since S60 3.2
- */
-
-NONSHARABLE_CLASS( CAiSSaverStatusObserver ) : public CAiPSStatusObserver
- {
-public:
-
-// Construction
-
- static CAiSSaverStatusObserver* NewL( MAiStateManager* aStateManager );
-
- virtual ~CAiSSaverStatusObserver();
-
-// functions from base class CAiSSaverStatusObserver
-
- TAiStateChanges Status();
-
-private:
-
-// Construction
-
- CAiSSaverStatusObserver();
-
- void ConstructL( MAiStateManager* aStateManager );
-
-// new functions
-
- static TInt HandleScreenSaverStateChanged( TAny* aPtr );
-
- };
-
-#endif // C_AISSAVERSTATUSOBSERVER_H
-
-// End of File.
--- a/idlefw/inc/framework/aistatealive.h Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,169 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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: State alive
-*
-*/
-
-
-#ifndef T_AISTATEALIVE_H
-#define T_AISTATEALIVE_H
-
-#include "aipluginstate.h"
-#include "aipluginstatemachine.h"
-
-/**
- * @ingroup group_aifw
- *
- * Alive active state
- *
- * @lib aifw
- * @since S60 3.2
- */
-NONSHARABLE_CLASS( TAiStateAliveActive ) : public MAiPluginState
- {
-public: // Constructor
-
- TAiStateAliveActive();
-
-public: // from MAiPluginState
-
- void Enter( MAiPluginStateMachine& aStateMachine,
- TAiStateChanges aStateChange );
-
- TBool HandleEvent( MAiPluginStateMachine& aStateMachine,
- TAiStateChanges aStateChange );
-
- void Exit( MAiPluginStateMachine& aStateMachine,
- TAiStateChanges aStateChange );
-
- };
-
-/**
- * Alive inactive state
- *
- * @lib aifw
- * @since S60 3.2
- */
-NONSHARABLE_CLASS( TAiStateAliveInactive ) : public MAiPluginState
- {
-public: // Constructor
-
- TAiStateAliveInactive();
-
-public: // from MAiPluginState
-
- void Enter( MAiPluginStateMachine& aStateMachine,
- TAiStateChanges aStateChange );
-
- TBool HandleEvent( MAiPluginStateMachine& aStateMachine,
- TAiStateChanges aStateChange );
-
- void Exit( MAiPluginStateMachine& aStateMachine,
- TAiStateChanges aStateChange );
- };
-
-/**
- * Alive incall state
- *
- * @lib aifw
- * @since S60 3.2
- */
-NONSHARABLE_CLASS( TAiStateAliveIncall ) : public MAiPluginState
- {
-public: // Constructor
-
- TAiStateAliveIncall();
-
-public: // from MAiPluginState
-
- void Enter( MAiPluginStateMachine& aStateMachine,
- TAiStateChanges aStateChange );
-
- TBool HandleEvent( MAiPluginStateMachine& aStateMachine,
- TAiStateChanges aStateChange );
-
- void Exit( MAiPluginStateMachine& aStateMachine,
- TAiStateChanges aStateChange );
- };
-
-/**
- * Alive switch state
- *
- * @lib aifw
- * @since S60 3.2
- */
-NONSHARABLE_CLASS( TAiStateAlive ) : public MAiPluginState,
- public MAiPluginStateMachine
- {
-public: // Constructor
-
- TAiStateAlive( MAiPluginStateMachine& aParentStateMachine );
-
-public: // from MAiPluginStateMachine
-
- TBool StateVariable( TAiStateVariable aStateVariable );
-
- TAiTransitionReason TranslateReason( TAiStateChanges aStateChange );
-
- void RestartSuspendTimer();
-
- void SwitchToState( TAiState aState, TAiStateChanges aStateChange );
-
- CAiContentPublisher& Plugin() const;
-
- void ChangePluginState( TAiTransitionReason aReason,
- void (CAiContentPublisher::*aStateChangeMethod)(TAiTransitionReason) );
-
-public: // from MAiPluginState
-
- void Enter( MAiPluginStateMachine& aStateMachine,
- TAiStateChanges aStateChange );
-
- TBool HandleEvent( MAiPluginStateMachine& aStateMachine,
- TAiStateChanges aStateChange );
-
- void Exit( MAiPluginStateMachine& aStateMachine,
- TAiStateChanges aStateChange );
-
-private: // data
-
- /**
- * Pointer to current state.
- * Not owned.
- */
- MAiPluginState* iCurrentState;
-
- /**
- * Pointer to parent state machine.
- * Not owned.
- */
- MAiPluginStateMachine* iParentStateMachine;
-
- /**
- * Alive active state.
- */
- TAiStateAliveActive iStateAliveActive;
-
- /**
- * Alive incall state.
- */
- TAiStateAliveIncall iStateAliveIncall;
-
- /**
- * Alive inactive state.
- */
- TAiStateAliveInactive iStateAliveInactive;
- };
-
-#endif // T_AISTATEALIVE_H
--- a/idlefw/inc/framework/aistateidle.h Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,53 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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: State idle
-*
-*/
-
-
-#ifndef T_AISTATEIDLE_H
-#define T_AISTATEIDLE_H
-
-#include "aipluginstate.h"
-#include "aipluginstatemachine.h"
-
-/**
- * @ingroup group_aifw
- *
- * Idle state.
- *
- * @lib aifw
- * @since S60 3.2
- */
-NONSHARABLE_CLASS( TAiStateIdle ) : public MAiPluginState
- {
-public:
- // Construction
-
- TAiStateIdle();
-
- // from MAiPluginState
-
- void Enter( MAiPluginStateMachine& aStateMachine,
- TAiStateChanges aStateChange );
-
- TBool HandleEvent( MAiPluginStateMachine& aStateMachine,
- TAiStateChanges aStateChange );
-
- void Exit( MAiPluginStateMachine& aStateMachine,
- TAiStateChanges aStateChange );
-
- };
-
-#endif // T_AISTATEIDLE_H
--- a/idlefw/inc/framework/aistatemanager.h Wed Mar 03 15:38:34 2010 +0200
+++ b/idlefw/inc/framework/aistatemanager.h Wed May 12 13:36:47 2010 +0300
@@ -1,5 +1,5 @@
/*
-* Copyright (c) 2005-2006 Nokia Corporation and/or its subsidiary(-ies).
+* 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"
@@ -11,41 +11,217 @@
*
* Contributors:
*
-* Description: State manager base class
+* Description: State Manager
*
*/
-#ifndef M_AISTATEMANAGER_H
-#define M_AISTATEMANAGER_H
+#ifndef _AISTATEMANAGER_H
+#define _AISTATEMANAGER_H
+
+// System includes
+#include <e32base.h>
+#include <babitflags.h>
-#include "aipluginstatemachine.h"
+// User includes
+#include <aifwdefs.h>
+#include "aistateobserver.h"
+
+// Forward declarations
+class CAiPluginFactory;
+class CAiCpsCommandBuffer;
+class CHsContentPublisher;
+class THsPublisherInfo;
/**
- * description
+ * State Manager
*
- * @lib aifw
- * @since S60 3.2
+ * @ingroup group_aifw
+ * @lib aifw.lib
+ * @since S60 5.0
*/
-class MAiStateManager
+NONSHARABLE_CLASS( CAiStateManager ) : public CBase,
+ public MAiStateObserver
{
+private:
+ // Data types
+ enum TState
+ {
+ ESuspended = 0,
+ EAlive,
+ };
- public:
+ enum TFlags
+ {
+ EIsForeground = 0,
+ EIsLightsOn,
+ EIsOnline,
+ EShutdown
+ };
+
+public:
+ // Constructors and destructor
+
+ /**
+ * Two-phased constructor.
+ */
+ static CAiStateManager* NewL( CAiPluginFactory& aFactory );
+
+ /**
+ * Two-phased constructor. Leaving on stack
+ */
+ static CAiStateManager* NewLC( CAiPluginFactory& aFactory );
+
+ /**
+ * Destructor
+ */
+ ~CAiStateManager();
+
+private:
+ // private constructors
+
+ /**
+ * Leaving constructor
+ */
+ void ConstructL();
+
+ /**
+ * C++ default constructor
+ */
+ CAiStateManager( CAiPluginFactory& aFactory );
+
+private:
+ // from MAiStateObserver
+
+ /**
+ * @see MAiStateObserver
+ */
+ void NotifyStateChange(
+ TAiFwState aReason );
+
+ /**
+ * @see MAiStateObserver
+ */
+ TInt NotifyLoadPlugin( const THsPublisherInfo& aInfo,
+ TAiFwLoadReason aReason );
+
+ /**
+ * @see MAiStateObserver
+ */
+ void NotifyDestroyPlugin( const THsPublisherInfo& aInfo,
+ TAiFwDestroyReason aReason );
+
+ /**
+ * @see MAiStateObserver
+ */
+ void NotifyReloadPlugins();
- /**
- * System status observers use this method to report status variable
- * changes to state manager.
- *
- * @param TAiStateChanges aState the state that has changed.
- */
- virtual void ReportStateChange( TAiStateChanges aState ) = 0;
+
+ /**
+ * @see MAiStateObserver
+ */
+ void NotifyReleasePlugins( const RArray<TUid>& aUidList );
+
+private:
+ // new functions
+
+ /**
+ * Evaluates next state
+ *
+ * @since S60 5.2
+ * @return Next state
+ */
+ TState EvaluateNextState() const;
+
+ /**
+ * Process state change for all plugins
+ *
+ * @since S60 5.2
+ * @param aNextState Next state where plugins are driven
+ */
+ void ProcessStateChange( TState aNextState );
+
+ /**
+ * Process general theme state change for all plugins
+ *
+ * @since S60 5.2
+ */
+ void ProcessGeneralThemeChange();
+
+ /**
+ * Process backup/restore state change for all plugins
+ *
+ * @since S60 5.2
+ * @param aStarted ETrue when backup started
+ */
+ void ProcessBackupRestore( TBool aStarted );
+
+ /**
+ * Process online / offline state change for all plugins
+ *
+ * @since S60 5.2
+ */
+ void ProcessOnlineStateChange();
- protected:
+ /**
+ * Runs plugin startup sequence
+ *
+ * @since S60 5.2
+ * @param aPlugin Plugin to start
+ * @param aReason Start reason
+ */
+ void StartPlugin( CHsContentPublisher& aPlugin,
+ CHsContentPublisher::TStartReason aReason );
+
+ /**
+ * Runs plugin shutdown sequence
+ *
+ * @since S60 5.2
+ * @param aPlugin Plugin to stop
+ * @param aReason Stop reason
+ */
+ void StopPlugin( CHsContentPublisher& aPlugin,
+ CHsContentPublisher::TStopReason aReason );
+
+ /**
+ * Destroys all plugins from plugin factory
+ *
+ * @since S60 5.2
+ */
+ void DestroyPlugins();
+
+ /**
+ * Flushes cps command buffer
+ *
+ * @since S60 5.2
+ */
+ void FlushCommandBuffer();
- ~MAiStateManager(){}
+private:
+ // data
+ /** Plugin Factory, Not owned */
+ CAiPluginFactory& iFactory;
+ /** CPS Command buffer, Owned */
+ CAiCpsCommandBuffer* iCommandBuffer;
+ /** Current state */
+ TState iCurrentState;
+ /** Flags */
+ TBitFlags32 iFlags;
+ /** Halted flag */
+ TBool iHalt;
+ /** List of plugins which should be reloaded */
+ RArray<THsPublisherInfo> iReloadPlugins;
+
+private:
+ // friend classes
+
+#ifdef _AIFW_UNIT_TEST
+ friend class UT_AiStateManager;
+#endif
};
-
-#endif // M_AISTATEMANAGER_H
+
+#endif // _AISTATEMANAGER_H
-// End of File.
+// End of file
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/idlefw/inc/framework/aistateobserver.h Wed May 12 13:36:47 2010 +0300
@@ -0,0 +1,88 @@
+/*
+* 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".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: State Observer
+*
+*/
+
+
+#ifndef _AISTATEOBSERVER_H
+#define _AISTATEOBSERVER_H
+
+// System includes
+
+// User includes
+#include <aifwdefs.h>
+
+// Forward declarations
+class THsPublisherInfo;
+
+/**
+ * State Observer
+ *
+ * @ingroup group_aifw
+ * @lib aifw.lib
+ * @since S60 5.2
+ */
+class MAiStateObserver
+ {
+public:
+ /**
+ * State change notification.
+ *
+ * @since S60 5.2
+ * @param aReason State change.
+ */
+ virtual void NotifyStateChange( TAiFwState aState ) = 0;
+
+ /**
+ * Content publisher load request.
+ *
+ * @since S60 5.2
+ * @param aInfo Publisher Info, which describes the plugin to be loaded.
+ * @param aReason Startup reason, which will be forwarded to the plugin.
+ * @return Error code, KErrNone if succesfully loaded.
+ */
+ virtual TInt NotifyLoadPlugin( const THsPublisherInfo& aInfo,
+ TAiFwLoadReason aReason ) = 0;
+
+ /**
+ * Content publisher destroy request.
+ *
+ * @since S60 5.2
+ * @param aInfo Publisher Info, which describes the plugin to be destroyed.
+ * @param aReason Shutdown reason, which will be forwarded to the plugin.
+ */
+ virtual void NotifyDestroyPlugin( const THsPublisherInfo& aInfo,
+ TAiFwDestroyReason aReason ) = 0;
+
+ /**
+ * Notifies to reload previously released plugins
+ *
+ * @since S60 5.2
+ */
+ virtual void NotifyReloadPlugins() = 0;
+
+ /**
+ * Notifies that defined ECom plugins should be released to enable
+ * plugin upgrade
+ *
+ * @since S60 5.2
+ */
+ virtual void NotifyReleasePlugins( const RArray<TUid>& aUidList ) = 0;
+
+ };
+
+#endif // _AISTATEOBSERVER_H
+
+// End of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/idlefw/inc/framework/aistateprovider.h Wed May 12 13:36:47 2010 +0300
@@ -0,0 +1,205 @@
+/*
+* 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".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: State Provider
+*
+*/
+
+
+#ifndef _AISTATEPROVIDER_H
+#define _AISTATEPROVIDER_H
+
+// System includes
+#include <e32base.h>
+#include <coemain.h>
+#include <hwrmlight.h>
+#include <AknsSrvClient.h>
+
+// User includes
+#include <aifwstatehandler.h>
+#include "aiecomobserver.h"
+
+// Forward declarations
+class MAiPSPropertyObserver;
+class MAiStateObserver;
+class THsPublisherInfo;
+
+// Class declaration
+
+/**
+ * State Provider
+ *
+ * @ingroup group_aifw
+ * @lib aifw.lib
+ * @since S60 5.2
+ */
+NONSHARABLE_CLASS( CAiStateProvider ) : public CBase,
+ public MCoeMessageMonitorObserver,
+ public MHWRMLightObserver,
+ public MAknsSkinChangeObserver,
+ public MAiEcomObserver,
+ public MAiFwStateHandler
+ {
+public:
+ // Constructors and destructor
+
+ /**
+ * Two-phased constructor.
+ */
+ static CAiStateProvider* NewL( MAiStateObserver& aObserver );
+
+ /**
+ * Two-phased constructor. Leaving on stack
+ */
+ static CAiStateProvider* NewLC( MAiStateObserver& aObserver );
+
+ /**
+ * Destructor
+ */
+ ~CAiStateProvider();
+
+private:
+ // private constructors
+
+ /**
+ * 2nd phase constructor
+ */
+ void ConstructL();
+
+ /**
+ * C++ default constructor
+ */
+ CAiStateProvider( MAiStateObserver& aObserver );
+
+public:
+ // new methods
+
+ /**
+ * Start state providing
+ *
+ * @since S60 5.2
+ * @param aCoeEnv Control environment
+ */
+ void StartL( CCoeEnv& aCoeEnv );
+
+ /**
+ * Stop state providing
+ *
+ * @since S60 5.2
+ */
+ void Stop();
+
+private:
+ // from MCoeMessageMonitorObserver
+
+ /**
+ * @see MCoeMessageMonitorObserver
+ */
+ void MonitorWsMessage( const TWsEvent& aEvent );
+
+private:
+ // from MHWRMLightObserver
+
+ /**
+ * @see MHWRMLightObserver
+ */
+ void LightStatusChanged( TInt aTarget,
+ CHWRMLight::TLightStatus aStatus );
+
+private:
+ // from MAknsSkinChangeObserver
+
+ /**
+ * @see MAknsSkinChangeObserver
+ */
+ void SkinContentChanged();
+
+ /**
+ * @see MAknsSkinChangeObserver
+ */
+ void SkinConfigurationChanged(
+ const TAknsSkinStatusConfigurationChangeReason aReason );
+
+ /**
+ * @see MAknsSkinChangeObserver
+ */
+ void SkinPackageChanged(
+ const TAknsSkinStatusPackageChangeReason aReason );
+
+private:
+ // from MAiEcomObserver
+
+ /**
+ * @see MAiEcomObserver
+ */
+ void NotifyEcomRegistryChanged();
+
+private:
+ // from MAiFwStateHandler
+
+ /**
+ * @see MAiFwStateHandler
+ */
+ TInt LoadPlugin( const THsPublisherInfo& aPublisherInfo,
+ TAiFwLoadReason aReason );
+
+ /**
+ * @see MAiFwStateHandler
+ */
+ void DestroyPlugin( const THsPublisherInfo& aPublisherInfo,
+ TAiFwDestroyReason aReason );
+
+ /**
+ * @see MAiFwStateHandler
+ */
+ void ChangePluginState( TAiFwState aState );
+
+private:
+ // new functions
+
+ static TInt BackupRestoreEvent( TAny* aAny );
+
+ static TInt SwiUidListEvent( TAny* aAny );
+
+private:
+ // data
+
+ /** ECom observer, owned */
+ CAiEcomObserver* iEcomObserver;
+ /** State observer, Not owned */
+ MAiStateObserver& iObserver;
+ /** Control environment, Not owned */
+ CCoeEnv* iCoeEnv;
+ /** Light status observer, Owned */
+ CHWRMLight* iLightObserver;
+ /** Skin server session, Owned */
+ RAknsSrvSession iSkinSrv;
+ /** Backup Restore observer, Owned */
+ MAiPSPropertyObserver* iBackupRestoreObserver;
+ /** Flag to indicate whether state providing is started */
+ TBool iStarted;
+ /** SWI UID list observer, owned */
+ MAiPSPropertyObserver* iSwiUidListObserver;
+
+private:
+ // friend classes
+
+#ifdef _AIFW_UNIT_TEST
+ friend class UT_AiStateProvider;
+#endif
+ };
+
+#endif // _AISTATEPROVIDER_H
+
+// End of file
+
--- a/idlefw/inc/framework/aistatesuspended.h Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,52 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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: State suspended
-*
-*/
-
-
-#ifndef T_AISTATESUSPENDED_H
-#define T_AISTATESUSPENDED_H
-
-#include "aipluginstate.h"
-
-/**
- * @ingroup group_aifw
- *
- * Suspended state
- *
- * @lib aifw
- * @since S60 3.2
- */
-NONSHARABLE_CLASS( TAiStateSuspended ) : public MAiPluginState
- {
-public:
- // Construction
-
- TAiStateSuspended();
-
- // from MAiPluginState
-
- void Enter( MAiPluginStateMachine& aStateMachine,
- TAiStateChanges aStateChange );
-
- TBool HandleEvent( MAiPluginStateMachine& aStateMachine,
- TAiStateChanges aStateChange );
-
- void Exit( MAiPluginStateMachine& aStateMachine,
- TAiStateChanges aStateChange );
-
- };
-
-#endif // T_AISTATESUSPENDED_H
--- a/idlefw/inc/framework/aiuicontrollermanager.h Wed Mar 03 15:38:34 2010 +0200
+++ b/idlefw/inc/framework/aiuicontrollermanager.h Wed May 12 13:36:47 2010 +0300
@@ -16,141 +16,159 @@
*/
-#ifndef C_AIUICONTROLLERMANAGER_H
-#define C_AIUICONTROLLERMANAGER_H
+#ifndef _AIUICONTROLLERMANAGER_H
+#define _AIUICONTROLLERMANAGER_H
-
+// System includes
#include <e32base.h>
-#include "aiuiframeworkobserver.h"
-#include "aicontentmodel.h"
-#include "aifwdefs.h"
+
+// User includes
+// Forward declarations
class CAiUiController;
-class CAiContentPublisher;
class MAiMainUiController;
-class MAiFwEventHandler;
class CRepository;
class CCoeEnv;
+class CAiFw;
+class MAiFwStateHandler;
+// Class declaration
/**
* @ingroup group_aifw
*
* Active Idle UI Controller manager.
*
- * @since S60 3.2
+ * @since S60 5.2
*/
-NONSHARABLE_CLASS( CAiUiControllerManager ) : public CBase,
- public MAiUiFrameworkObserver
+NONSHARABLE_CLASS( CAiUiControllerManager ) : public CBase
{
- public: // Constructors and destructor
+public:
+ // Constructors and destructor
+
+ /**
+ * Two-phased constructor.
+ */
+ static CAiUiControllerManager* NewL( CAiFw* aAiFw );
+
+ /**
+ * Destructor
+ */
+ ~CAiUiControllerManager();
+
+public:
+ // new functions
+
+ /**
+ * Gets UI controllers
+ *
+ * @since S60 5.2
+ * @return Array of UI controllers
+ */
+ RPointerArray< CAiUiController >& UiControllers() const;
+
+ /**
+ * Actives UI by calling ActivateUI() for each UI controller
+ *
+ * @since S60 5.2
+ */
+ void ActivateUI();
+
+ /**
+ * Gets the main UI controller
+ *
+ * @since S60 5.2
+ * @return Main UI controller
+ */
+ MAiMainUiController& MainUiController() const;
+
+ /**
+ * Queries whether aUiController is the main UI controller
+ *
+ * @since S60 5.2
+ * @return ETrue if main UI controller, EFalse otherwise
+ */
+ TBool IsMainUiController( CAiUiController& aUiController ) const;
+
+ /**
+ * Calls RunApplicationL for the main UI controller.
+ *
+ * @since S60 5.2
+ */
+ void RunApplicationL();
+
+ /**
+ * Calls LoadUIDefinitionL for each UI controller.
+ *
+ * @since S60 5.2
+ */
+ void LoadUIDefinition();
+
+ /**
+ * Returns the main UI Controller's CONE environment object.
+ *
+ * @since S60 5.2
+ * @return Control Environment
+ */
+ CCoeEnv& CoeEnv() const;
+
+ /**
+ * Destroys all UI controllers except the main controller.
+ *
+ * @since S60 5.2
+ */
+ void DestroySecondaryUiControllers();
+
+ /**
+ * Exits main UI controller
+ *
+ * @since S60 5.2
+ */
+ void ExitMainController();
+
+ /**
+ * Sets Fw state handler for each UI conttroller
+ *
+ * @since S60 5.2
+ * @param aHandler State handler to set
+ */
+ void SetStateHandler( MAiFwStateHandler& aHandler );
+
+private:
+ // private constructors
- static CAiUiControllerManager* NewL();
- ~CAiUiControllerManager();
-
- public: // New functions
-
- /**
- * Returns all UI controllers in an array.
- */
- RPointerArray< CAiUiController >& UiControllers() const;
-
- /**
- * Calls ActivateUI() for all UI controllers.
- */
- void ActivateUI();
-
- /**
- * Returns the main ui controller object.
- */
- MAiMainUiController& MainUiController() const;
-
- /**
- * Returns true if aUiController is the main UI controller.
- */
- TBool IsMainUiController(CAiUiController& aUiController) const;
-
- /**
- * Sets framework event handler for all UI controllers.
- */
- void SetEventHandler(MAiFwEventHandler& aEventHandler);
-
- /**
- * Calls RunApplicationL for the main UI controller.
- */
- void RunApplicationL();
-
- /**
- * Calls LoadUIDefinitionL for all UI controllers.
- */
- void LoadUIDefinition();
-
- /**
- * Returns the main UI Controller's CONE environment object.
- */
- CCoeEnv& CoeEnv() const;
-
- /**
- * Destroys all UI controllers except the main controller.
- */
- void DestroySecondaryUiControllers();
-
- /**
- * Adds an UI Framework observer. No duplicates are allowed.
- */
- void AddObserverL( MAiUiFrameworkObserver& aUiFwObserver );
-
- /**
- * Removes an UI Framework observer.
- */
- void RemoveObserver( MAiUiFrameworkObserver& aUiFwObserver );
-
- /**
- * Removes plugin from UI.
- */
- void RemovePluginFromUI( CAiContentPublisher& aPlugin );
-
- /**
- * Exits main UI controller
- */
- void ExitMainController();
-
- private: // From MAiUiFrameworkObserver
+ /**
+ * Leaving constructor
+ */
+ void ConstructL( CAiFw* aAiFw );
+
+ /**
+ * C++ default constructor
+ */
+ CAiUiControllerManager();
+
+private:
+ // new functions
+
+ void LoadMainControllerL( CRepository& aRepository );
+ void LoadSecondaryControllersL( CRepository& aRepository );
- void HandleResourceChange( TInt aType );
- void HandleForegroundEvent( TBool aForeground );
-
- private: // Constructors
-
- CAiUiControllerManager();
- void ConstructL();
-
- private: // new functions
-
- void LoadMainControllerL(CRepository& aCenRepConfig);
- void LoadSecondaryControllersL(CRepository& aCenRepConfig);
-
- private: // data
- /**
- * UI controller array.
- * Own.
- */
- mutable RPointerArray<CAiUiController> iUiControllerArray;
-
- /**
- * Main UI controller for app session. Owned in above array.
- */
- MAiMainUiController* iMainUiController;
-
- /**
- * List of UI framework observers to delegate events
- */
- RPointerArray<MAiUiFrameworkObserver> iUiFrameworkObservers;
-
- /**
- * List to check for duplicated creations.
- */
- RArray<TInt> iCreatedUICList;
+private:
+ // data
+
+ /** UI controllers, Owned */
+ mutable RPointerArray< CAiUiController > iUiControllerArray;
+ /** Main UI controller, Owned by the above array */
+ MAiMainUiController* iMainUiController;
+ /** List of created UI controllers */
+ RArray< TInt > iCreatedUICList;
+
+private:
+ // friend class
+
+#ifdef _AIFW_UNIT_TEST
+ friend class UT_AiUiControllerManager;
+#endif
};
-#endif // C_AIUICONTROLLERMANAGER_H
+#endif // _AIUICONTROLLERMANAGER_H
--- a/idlefw/inc/framework/aiuiframeworkobserverimpl.h Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,72 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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: UI Framework observer for Active Idle
-*
-*/
-
-
-#ifndef C_AIUIFRAMEWORKOBSERVERIMPL_H
-#define C_AIUIFRAMEWORKOBSERVERIMPL_H
-
-
-#include <e32base.h>
-#include "aistatemanager.h"
-#include "aiuiframeworkobserver.h"
-#include "aidevicestatusobserver.h"
-
-/**
- * CAiUiFrameworkObserverImpl implements MAiUiFrameworkObserver for
- * Active Idle framework. It is also a bridge between MAiUiFrameworkObserver
- * and Active Idle system state manager.
- *
- * @lib aifw.lib
- * @since S60 3.2
- */
-NONSHARABLE_CLASS( CAiUiFrameworkObserverImpl )
- : public CBase,
- public MAiUiFrameworkObserver,
- public MAiDeviceStatusObserver
- {
-public:
-
- static CAiUiFrameworkObserverImpl* NewL( MAiStateManager& aManager );
-
- virtual ~CAiUiFrameworkObserverImpl();
-
-// from base class MAiDeviceStatusObserver
-
- TAiStateChanges Status();
-
-private:
-
- CAiUiFrameworkObserverImpl( MAiStateManager& aManager );
-
- void ConstructL();
-
-// from base class MAiUiFrameworkObserver
-
- void HandleResourceChange( TInt aType );
-
- void HandleForegroundEvent( TBool aForeground );
-
-private: // data
-
- /**
- * State manager.
- */
- MAiStateManager& iManager;
-
- };
-
-#endif // C_AIUIFRAMEWORKOBSERVERIMPL_H
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/idlefw/inc/framework/caicpscommandbuffer.h Wed May 12 13:36:47 2010 +0300
@@ -0,0 +1,168 @@
+/*
+* 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: Cps command buffer
+*
+*/
+
+
+#ifndef C_CAICPSCOMMANDBUFFER_H
+#define C_CAICPSCOMMANDBUFFER_H
+
+// System includes
+#include <e32base.h>
+
+// User includes
+#include <aicpscommandbuffer.h>
+
+// Forward declarations
+class CLiwGenericParamList;
+class CLiwServiceHandler;
+class CLiwCriteriaItem;
+class CAiCpsExecuteParam;
+class MLiwInterface;
+
+/**
+ * AI Cps command buffer
+ *
+ * @ingroup group_aifw
+ * @lib aifw
+ * @since S60 v5.2
+ */
+NONSHARABLE_CLASS( CAiCpsCommandBuffer ) : public CBase,
+ public MAiCpsCommandBuffer
+ {
+public:
+ // constructors and destructor
+
+ /**
+ * Two-phased constructors.
+ */
+ static CAiCpsCommandBuffer* NewL();
+ static CAiCpsCommandBuffer* NewLC();
+
+ /**
+ * Destructor.
+ */
+ ~CAiCpsCommandBuffer();
+
+private:
+ // constructors
+
+ /**
+ * C++ default constructor
+ */
+ CAiCpsCommandBuffer();
+
+ /**
+ * 2nd phase constructor
+ */
+ void ConstructL();
+
+public:
+ // new function
+
+ /**
+ * Flushes command buffer
+ *
+ * @since S60 v5.2
+ */
+ void Flush();
+
+ /**
+ * Gets the CPS interface
+ *
+ * @since S60 5.2
+ */
+ void GetCPSInterfaceL();
+
+private:
+ // from MAiCpsCommandBuffer
+
+ /**
+ * @see MAiCpsCommandBuffer
+ */
+ void AddCommand( const TDesC& aPluginId, const TDesC& aType,
+ CLiwDefaultMap* aFilter, const TDesC8& aAction);
+
+ /**
+ * @see MAiCpsCommandBuffer
+ */
+ CLiwServiceHandler* ServiceHandler() const;
+
+ /**
+ * @see MAiCpsCommandBuffer
+ */
+ MLiwInterface* CpsInterface() const;
+
+private:
+ // new functions
+
+ /**
+ * Detach the CPS interface
+ *
+ * @since S60 5.2
+ */
+ void DetachL();
+
+ /**
+ * Adds a CPS command execute commnad for a spcific Plugin
+ * Note: aType and Filter will overwrite the previous value
+ *
+ * @since S60 5.2
+ * @param aPluginId plugin id.
+ * @param aType type of the cps registry.
+ * @param aFilter filter values.
+ * @param aAction action trigger.
+ */
+ void DoAddCommandL(const TDesC& aPluginId,const TDesC& aType,
+ CLiwDefaultMap* aFilter, const TDesC8& aAction );
+
+ /**
+ * Flush all the CPS execute commands..
+ *
+ * @since S60 5.2
+ */
+ void DoFlushL();
+
+private:
+ // data
+ /**
+ * SAPI service handler.
+ * Owned.
+ */
+ CLiwServiceHandler* iServiceHandler;
+
+ /**
+ * CPS SAPI service.
+ * Owned.
+ */
+ CLiwCriteriaItem* iCpsService;
+
+ /**
+ * Provides hsps services.
+ * Owned.
+ */
+ MLiwInterface* iCpsInterface;
+
+ /**
+ * Plugins execute parameter array
+ * Owned.
+ */
+ RPointerArray<CAiCpsExecuteParam> iPlugins;
+ };
+
+#endif // C_CAICPSCOMMANDBUFFER_H
+
+// End of file
+
--- a/idlefw/inc/utility/caiplugintool.h Wed Mar 03 15:38:34 2010 +0200
+++ b/idlefw/inc/utility/caiplugintool.h Wed May 12 13:36:47 2010 +0300
@@ -15,18 +15,19 @@
*
*/
-
#ifndef C_AIPLUGINTOOL_H
#define C_AIPLUGINTOOL_H
+// System includes
#include <e32base.h>
+
+// User includes
#include "aiplugintool.h"
-class TAiPublisherInfo;
-class CAiContentPublisher;
+// Forward declarations
+class THsPublisherInfo;
+class CHsContentPublisher;
class MAiContentItemIterator;
-class MAiPropertyExtension;
-class MAiEventHandlerExtension;
/**
* @ingroup group_aiutils
@@ -39,35 +40,34 @@
public CBase, public MAiPluginTool
{
public:
+ // Constructor
static CAiPluginTool* NewL();
private:
-
+ // Constructors
+
+ /**
+ * C++ default contructor
+ */
CAiPluginTool();
+ /**
+ * 2nd phase constructor
+ */
void ConstructL();
+private:
+ // from MAiPluginTool
+
+ MAiContentItemIterator* ContentItemIterator(
+ CHsContentPublisher& aContentPublisher,
+ CHsContentPublisher::TProperty aType = CHsContentPublisher::EPublisherContent );
+
void Release();
-
- const TAiPublisherInfo* PublisherInfoL(
- CAiContentPublisher& aContentPublisher );
-
- MAiContentItemIterator* ContentItemIteratorL(
- CAiContentPublisher& aContentPublisher,
- TInt aContentType = EAiPublisherContent );
-
- MAiPropertyExtension* PropertyExt(
- CAiContentPublisher& aContentPublisher );
-
- MAiEventHandlerExtension* EventHandlerExt(
- CAiContentPublisher& aContentPublisher );
-
};
#endif // M_AIPLUGINTOOL_H
-
+// End of file
-
-
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/idlefw/plugins/devicestatus/data/aidevstaplg.rss Wed May 12 13:36:47 2010 +0300
@@ -0,0 +1,62 @@
+/*
+* Copyright (c) 2005-2006 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:
+*
+*/
+
+
+// INCLUDES
+#include <ecom/registryinfov2.rh>
+#include <hscontentpublisheruid.hrh>
+
+
+// RESOURCE DEFINITIONS
+// -----------------------------------------------------------------------------
+//
+// ?resource_name
+//
+//
+// -----------------------------------------------------------------------------
+//
+RESOURCE REGISTRY_INFO registry_info
+{
+ resource_format_version = RESOURCE_FORMAT_VERSION_2;
+ // UID for the DLL
+ dll_uid = 0x102750F7;
+
+ // Interface info array
+ interfaces =
+ {
+ INTERFACE_INFO
+ {
+ // UID of the implemented interface
+ interface_uid = HS_UID_ECOM_INTERFACE_CONTENTPUBLISHER;
+
+ implementations =
+ {
+ IMPLEMENTATION_INFO
+ {
+ implementation_uid = 0x102750F8;
+ version_no = 1;
+ display_name = "DeviceStatus";
+ default_data = "";
+ opaque_data = "";
+ rom_only = 1;
+ }
+ };
+ }
+ };
+}
+
+// End of File.
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/idlefw/plugins/devicestatus/data/aidevstaplgres.rss Wed May 12 13:36:47 2010 +0300
@@ -0,0 +1,56 @@
+/*
+* Copyright (c) 2005-2006 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: Resource definitions for project ?myapp
+*
+*/
+
+
+
+NAME AIDP
+
+#include <avkon.rh>
+#include <avkon.rsg>
+#include <avkon.mbg>
+#include <eikon.rh>
+#include <eikcore.rsg>
+
+#include <aidevstaplgres.loc>
+
+RESOURCE RSS_SIGNATURE { }
+RESOURCE TBUF { buf=""; }
+
+// ---------------------------------------------------------------------------
+// ?resource_name
+//
+// ---------------------------------------------------------------------------
+//
+RESOURCE TBUF r_activeidle_time_format
+ {
+ buf = qtn_idle_time_format;
+ }
+
+RESOURCE TBUF r_activeidle_bt_sim_access_profile_string
+ {
+ buf = qtn_mode_sap;
+ }
+
+RESOURCE TBUF r_activeidle_cug_indicator_format
+ {
+ buf = qtn_cug_indic_group;
+ }
+
+RESOURCE TBUF r_ai_opn_spn_separator_format
+ {
+ buf = qtn_ai_opn_spn_separator;
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/idlefw/plugins/devicestatus/group/aidevstaplg.mmp Wed May 12 13:36:47 2010 +0300
@@ -0,0 +1,91 @@
+/*
+* Copyright (c) 2002-2005 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: Project definition file for project Devicestatus plugin
+*
+*/
+
+
+#include <platform_paths.hrh>
+#include <data_caging_paths.hrh>
+
+TARGET aidevstaplg.dll
+TARGETTYPE PLUGIN
+UID 0x10009D8D 0x102750F7
+
+VENDORID VID_DEFAULT
+CAPABILITY CAP_ECOM_PLUGIN
+
+SOURCEPATH ../src
+SOURCE aidevicestatusplugin.cpp
+SOURCE aidevicestatuspluginengine.cpp
+SOURCE aimulticontentobserver.cpp
+SOURCE aidatepublisher.cpp
+SOURCE aipublisherfactory.cpp
+SOURCE ainetworkinfolistener.cpp
+SOURCE aioperatornamepublisher.cpp
+SOURCE aibtsappublisher.cpp
+SOURCE aisimregpublisher.cpp
+SOURCE aimcnpublisher.cpp
+SOURCE aicugpublisher.cpp
+SOURCE aicugmcnpublisher.cpp
+SOURCE aivhzpublisher.cpp
+SOURCE aipublishprioritizer.cpp
+SOURCE aicontentobserveroptimizer.cpp
+SOURCE aioperatorlogopublisher.cpp
+SOURCE ainwspublisher.cpp
+
+USERINCLUDE ../inc
+USERINCLUDE ../loc
+USERINCLUDE ../../../inc/common
+USERINCLUDE ../../../cenrep
+
+APP_LAYER_SYSTEMINCLUDE
+
+SOURCEPATH ../data
+START RESOURCE aidevstaplg.rss
+TARGET aidevstaplg.rsc
+END
+
+START RESOURCE aidevstaplgres.rss
+HEADER
+TARGETPATH RESOURCE_FILES_DIR
+LANGUAGE_IDS
+END
+
+LIBRARY euser.lib
+LIBRARY ecom.lib
+LIBRARY avkon.lib
+LIBRARY sssettings.lib
+LIBRARY profileeng.lib
+LIBRARY networkhandling.lib
+LIBRARY phoneclient.lib
+LIBRARY fbscli.lib
+LIBRARY cone.lib
+LIBRARY commonengine.lib
+LIBRARY featmgr.lib
+LIBRARY centralrepository.lib
+LIBRARY cenrepnotifhandler.lib
+LIBRARY egul.lib
+LIBRARY aknlayout2scalable.lib
+LIBRARY cdlengine.lib
+LIBRARY gdi.lib
+LIBRARY bitgdi.lib
+LIBRARY aiutils.lib
+LIBRARY flogger.lib
+LIBRARY bafl.lib
+LIBRARY profileengine.lib
+
+// End of file
+
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/idlefw/plugins/devicestatus/group/bld.inf Wed May 12 13:36:47 2010 +0300
@@ -0,0 +1,35 @@
+/*
+* Copyright (c) 2006 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: The build information file of Devicestatus Plugin
+*
+*/
+
+
+#ifdef RD_CUSTOMIZABLE_AI
+
+PRJ_PLATFORMS
+DEFAULT
+
+PRJ_EXPORTS
+../loc/aidevstaplgres.loc MW_LAYER_LOC_EXPORT_PATH(aidevstaplgres.loc)
+
+../rom/aidevicestatusplugin_resources.iby LANGUAGE_MW_LAYER_IBY_EXPORT_PATH(aidevicestatusplugin_resources.iby)
+../rom/aidevicestatusplugin.iby CORE_MW_LAYER_IBY_EXPORT_PATH(aidevicestatusplugin.iby)
+
+PRJ_MMPFILES
+aidevstaplg.mmp
+
+#endif // RD_CUSTOMIZABLE_AI
+
+// End of File.
--- a/idlefw/plugins/devicestatus/inc/aibtsappublisher.h Wed Mar 03 15:38:34 2010 +0200
+++ b/idlefw/plugins/devicestatus/inc/aibtsappublisher.h Wed May 12 13:36:47 2010 +0300
@@ -20,17 +20,20 @@
#ifndef C_AIBTSAPPUBLISHER_H
#define C_AIBTSAPPUBLISHER_H
-
+// System includes
#include <e32base.h>
#include <coemain.h>
+#include <aidevicestatuscontentmodel.h>
#include <RSSSettings.h>
#include <MSSSettingsObserver.h>
#include <MProfileChangeObserver.h>
+
+// User includes
#include "aidevicestatuspublisher.h"
-#include "aidevicestatuscontentmodel.h"
+// Forward declarations
class MAiDeviceStatusContentObserver;
-class MAiPropertyExtension;
+class CHsContentPublisher;
/**
* @ingroup group_devicestatusplugin
@@ -41,7 +44,8 @@
*
* @since S60 3.2
*/
-class CAiBTSAPPublisher : public CActive, public MAiDeviceStatusPublisher
+NONSHARABLE_CLASS( CAiBTSAPPublisher ) : public CActive,
+ public MAiDeviceStatusPublisher
{
public:
@@ -53,11 +57,12 @@
void ResumeL();
void Subscribe( MAiContentObserver& aObserver,
- MAiPropertyExtension& aExtension,
+ CHsContentPublisher& aExtension,
MAiPublishPrioritizer& aPrioritizer,
MAiPublisherBroadcaster& aBroadcaster );
void RefreshL( TBool aClean );
TBool RefreshL( TInt aContentId, TBool aClean );
+ TBool SuspendL( TInt aContentId, TBool aClean );
TBool RefreshContentWithPriorityL( TInt aContentId, TInt aPriority );
protected:
@@ -78,39 +83,22 @@
private: // data
- /**
- * Property extension.
- * Not own.
- */
- MAiPropertyExtension* iExtension;
-
- /**
- * Content prioritizer.
- * Not own.
- */
- MAiPublishPrioritizer* iPrioritizer;
-
- /**
- * Publish broadcaster.
- * Not own.
- */
- MAiPublisherBroadcaster* iBroadcaster;
-
- /**
- * Publish-subscribe client used to observer BT SAP activation.
- */
+ /** Property extension, not owned */
+ CHsContentPublisher* iExtension;
+ /** Content prioritizer, not owned */
+ MAiPublishPrioritizer* iPrioritizer;
+ /** Publish broadcaster, not owned */
+ MAiPublisherBroadcaster* iBroadcaster;
+ /** Publish-subscribe client used to observer BT SAP activation */
RProperty iPubSub;
-
- /**
- * Variable which tells if publisher has published previously or not.
- */
+ /** Variable which tells if publisher has published previously or not */
TBool iFirstPublish;
-
- /**
- * True if publish was successful.
- */
- TBool iSuccess;
+ /** True if publish was successful */
+ TBool iSuccess;
+ /** True if publisher content is suspended */
+ TBool iSuspended;
};
+#endif // C_AIBTSAPPUBLISHER_H
-#endif // C_AIBTSAPPUBLISHER_H
+// End of file
--- a/idlefw/plugins/devicestatus/inc/aicontentobserveroptimizer.h Wed Mar 03 15:38:34 2010 +0200
+++ b/idlefw/plugins/devicestatus/inc/aicontentobserveroptimizer.h Wed May 12 13:36:47 2010 +0300
@@ -19,10 +19,15 @@
#ifndef C_AIMULTICONTENTOBSERVEROPTIMIZER_H
#define C_AIMULTICONTENTOBSERVEROPTIMIZER_H
-
+// System includes
#include <e32base.h>
+
+// User includes
#include "aicontentobserver.h"
+// Forward declarations
+class CHsContentPublisher;
+
/**
* @ingroup group_devicestatusplugin
*
@@ -34,9 +39,8 @@
* @see MAiContentObserver
* @since S60 3.2
*/
-class CAiContentObserverOptimizer : public CBase
+NONSHARABLE_CLASS( CAiContentObserverOptimizer ) : public CBase
{
-
private:
struct TAiPublishBlackList
{
@@ -80,40 +84,45 @@
/*
* @see MAiContentObserver
*/
- TBool CanPublish( MAiPropertyExtension& aPlugin, TInt aContent, TInt aIndex );
+ TBool CanPublish( CHsContentPublisher& aPlugin, TInt aContent, TInt aIndex );
/**
* @see MAiContentObserver
*/
- TInt Publish( MAiPropertyExtension& aPlugin, TInt aContent,
+ TInt Publish( CHsContentPublisher& aPlugin, TInt aContent,
TInt aResource, TInt aIndex );
/**
* @see MAiContentObserver
*/
- TInt Publish( MAiPropertyExtension& aPlugin, TInt aContent,
+ TInt Publish( CHsContentPublisher& aPlugin, TInt aContent,
const TDesC16& aText, TInt aIndex );
/**
* @see MAiContentObserver
*/
- TInt Publish( MAiPropertyExtension& aPlugin, TInt aContent,
+ TInt Publish( CHsContentPublisher& aPlugin, TInt aContent,
const TDesC8& aBuf, TInt aIndex );
/**
* @see MAiContentObserver
*/
- TInt Publish( MAiPropertyExtension& aPlugin, TInt aContent,
+ TInt Publish( CHsContentPublisher& aPlugin, TInt aContent,
RFile& aFile, TInt aIndex );
/**
* @see MAiContentObserver
*/
- TInt Clean( MAiPropertyExtension& aPlugin, TInt aContent, TInt aIndex );
+ TInt Clean( CHsContentPublisher& aPlugin, TInt aContent, TInt aIndex );
/**
* Returns the actual content observer.
*/
MAiContentObserver& Observer() const;
+ /**
+ * Clears blacklist
+ */
+ void ClearBlackList();
+
private:
CAiContentObserverOptimizer(MAiContentObserver& aObserver);
--- a/idlefw/plugins/devicestatus/inc/aicugmcnpublisher.h Wed Mar 03 15:38:34 2010 +0200
+++ b/idlefw/plugins/devicestatus/inc/aicugmcnpublisher.h Wed May 12 13:36:47 2010 +0300
@@ -19,19 +19,23 @@
#ifndef C_AICUGMCNPUBLISHER_H
#define C_AICUGMCNPUBLISHER_H
-
+// System includes
#include <e32base.h>
+#include <aidevicestatuscontentmodel.h>
#include <RSSSettings.h>
#include <MSSSettingsObserver.h>
+
+// User includes
#include "aidevicestatuspublisher.h"
-#include "aidevicestatuscontentmodel.h"
#include "ainetworkinfoobserver.h"
+// Forward declarations
class MAiDeviceStatusContentObserver;
-class MAiPropertyExtension;
+class CHsContentPublisher;
class CAiNetworkInfoListener;
-const TInt KAnimDelay = 2000000;
+// Constants
+const TInt KAnimDelay( 2000000 );
/**
* @ingroup group_devicestatusplugin
@@ -40,8 +44,10 @@
*
* @since S60 3.2
*/
-class CAiCUGMCNPublisher : public CBase, public MAiDeviceStatusPublisher,
- public MSSSettingsObserver, public MAiNetworkInfoObserver
+NONSHARABLE_CLASS( CAiCUGMCNPublisher ) : public CBase,
+ public MAiDeviceStatusPublisher,
+ public MSSSettingsObserver,
+ public MAiNetworkInfoObserver
{
public:
@@ -55,7 +61,7 @@
void ResumeL();
void Subscribe( MAiContentObserver& aObserver,
- MAiPropertyExtension& aExtension,
+ CHsContentPublisher& aExtension,
MAiPublishPrioritizer& aPrioritizer,
MAiPublisherBroadcaster& aBroadcaster );
void RefreshL( TBool aClean );
@@ -115,7 +121,7 @@
* Property extension.
* Not own.
*/
- MAiPropertyExtension* iExtension;
+ CHsContentPublisher* iExtension;
/**
* SS Settings client. Used to observer CUGMCN changes.
--- a/idlefw/plugins/devicestatus/inc/aicugpublisher.h Wed Mar 03 15:38:34 2010 +0200
+++ b/idlefw/plugins/devicestatus/inc/aicugpublisher.h Wed May 12 13:36:47 2010 +0300
@@ -19,15 +19,18 @@
#ifndef C_AICUGPUBLISHER_H
#define C_AICUGPUBLISHER_H
-
+// System includes
#include <e32base.h>
+#include <aidevicestatuscontentmodel.h>
#include <RSSSettings.h>
#include <MSSSettingsObserver.h>
+
+// User includes
#include "aidevicestatuspublisher.h"
-#include "aidevicestatuscontentmodel.h"
+// Forward declarations
class MAiDeviceStatusContentObserver;
-class MAiPropertyExtension;
+class CHsContentPublisher;
/**
* @ingroup group_devicestatusplugin
@@ -36,8 +39,9 @@
*
* @since S60 3.2
*/
-class CAiCUGPublisher : public CBase, public MAiDeviceStatusPublisher,
- public MSSSettingsObserver
+NONSHARABLE_CLASS( CAiCUGPublisher ): public CBase,
+ public MAiDeviceStatusPublisher,
+ public MSSSettingsObserver
{
public:
@@ -52,7 +56,7 @@
void ResumeL();
void Subscribe( MAiContentObserver& aObserver,
- MAiPropertyExtension& aExtension,
+ CHsContentPublisher& aExtension,
MAiPublishPrioritizer& aPrioritizer,
MAiPublisherBroadcaster& aBroadcaster );
void RefreshL( TBool aClean );
@@ -87,7 +91,7 @@
* Property extension.
* Not own.
*/
- MAiPropertyExtension* iExtension;
+ CHsContentPublisher* iExtension;
/**
* SS Settings client. Used to observer CUG changes.
--- a/idlefw/plugins/devicestatus/inc/aidatepublisher.h Wed Mar 03 15:38:34 2010 +0200
+++ b/idlefw/plugins/devicestatus/inc/aidatepublisher.h Wed May 12 13:36:47 2010 +0300
@@ -19,13 +19,17 @@
#ifndef C_AIDATEPUBLISHER_H
#define C_AIDATEPUBLISHER_H
+// System includes
#include <e32base.h>
#include <coemain.h>
-#include "aidevicestatuspublisher.h"
-#include "aidevicestatuscontentmodel.h"
+#include <aidevicestatuscontentmodel.h>
+// User includes
+#include "aidevicestatuspublisher.h"
+
+// Forward declarations
class MAiDeviceStatusContentObserver;
-class MAiPropertyExtension;
+class CHsContentPublisher;
class CEnvironmentChangeNotifier;
/**
@@ -38,7 +42,8 @@
*
* @since S60 3.2
*/
-class CAiDatePublisher : public CBase, public MAiDeviceStatusPublisher
+NONSHARABLE_CLASS( CAiDatePublisher ) : public CBase,
+ public MAiDeviceStatusPublisher
{
public:
@@ -52,7 +57,7 @@
void ResumeL();
void Subscribe( MAiContentObserver& aObserver,
- MAiPropertyExtension& aExtension,
+ CHsContentPublisher& aExtension,
MAiPublishPrioritizer& aPrioritizer,
MAiPublisherBroadcaster& aBroadcaster );
void RefreshL( TBool aClean );
@@ -90,7 +95,7 @@
* Property extension.
* Not own.
*/
- MAiPropertyExtension* iExtension;
+ CHsContentPublisher* iExtension;
/**
* Content prioritizer.
--- a/idlefw/plugins/devicestatus/inc/aidevicestatuscontentmodel.h Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,164 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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: Device Status plug-in content model
-*
-*/
-
-
-#ifndef AIDEVICESTATUSCONTENTMODEL_H
-#define AIDEVICESTATUSCONTENTMODEL_H
-
-#include <aicontentmodel.h>
-
-/**
- * Content model for Device Status plug-in.
- * This header defines which information Device Status publishes
- */
-
-// ================================= CONTENT ===================================
-
-//content item id's
-enum TAiDeviceStatusContentIds
- {
- EAiDeviceStatusContentNetworkIdentity,
- EAiDeviceStatusContentProfileName,
- EAiDeviceStatusContentGeneralProfileName,
- EAiDeviceStatusContentDate,
- EAiDeviceStatusContentSilentIndicator,
- EAiDeviceStatusContentTimedProfileIndicator,
- EAiDeviceStatusContentSIMRegStatus,
- EAiDeviceStatusContentNWStatus,
- EAiDeviceStatusContentMCNIndicator,
- EAiDeviceStatusContentVHZIndicator,
- EAiDeviceStatusContentCUGIndicator,
- EAiDeviceStatusContentGeneralIndicator,
- EAiDeviceStatusContentVHZText,
- EAiDeviceStatusContentCUGMCNIndicator
- };
-
-
-//content item textual id's
-const wchar_t KAiDeviceStatusContentNetworkIdentity_Cid[] = L"NetworkIdentity";
-const wchar_t KAiDeviceStatusContentProfileName_Cid[] = L"ProfileName";
-const wchar_t KAiDeviceStatusContentGeneralProfileName_Cid[] = L"GeneralProfileName";
-const wchar_t KAiDeviceStatusContentDate_Cid[] = L"Date";
-const wchar_t KAiDeviceStatusContentSilentIndicator_Cid[] = L"SilentIndicator";
-const wchar_t KAiDeviceStatusContentTimedProfileIndicator_Cid[] = L"TimedProfileIndicator";
-const wchar_t KAiDeviceStatusContentSIMRegStatus_Cid[] = L"SIMRegStatus";
-const wchar_t KAiDeviceStatusContentNWStatus_Cid[] = L"NWStatus";
-const wchar_t KAiDeviceStatusContentMCNIndicator_Cid[] = L"MCNIndicator";
-const wchar_t KAiDeviceStatusContentVHZIndicator_Cid[] = L"VHZIndicator";
-const wchar_t KAiDeviceStatusContentCUGIndicator_Cid[] = L"CUGIndicator";
-const wchar_t KAiDeviceStatusContentGeneralIndicator_Cid[] = L"GeneralIndicator";
-const wchar_t KAiDeviceStatusContentVHZText_Cid[] = L"VHZText";
-const wchar_t KAiDeviceStatusContentCUGMCNIndicator_Cid[] = L"CUGMCNIndicator";
-
-
-const char KAiDeviceStatusMimeTypeTextPlain[] = "text/plain";
-
-/**
-* Content what device status plugin publishes
-*/
-
-const TAiContentItem KAiDeviceStatusContent[] =
- {
- //Published data can be service provider name, offline profile,
- //operator logo or anything related to network status
- { EAiDeviceStatusContentNetworkIdentity, KAiDeviceStatusContentNetworkIdentity_Cid,
- KAiDeviceStatusMimeTypeTextPlain },
-
- //Published data is name of the profile from profiles engine
- { EAiDeviceStatusContentProfileName, KAiDeviceStatusContentProfileName_Cid,
- KAiDeviceStatusMimeTypeTextPlain },
-
- //Published data is name of the general profile from profiles engine
- { EAiDeviceStatusContentGeneralProfileName, KAiDeviceStatusContentGeneralProfileName_Cid,
- KAiDeviceStatusMimeTypeTextPlain },
-
- //Published data is current date as a text. Formatted according to current locale
- { EAiDeviceStatusContentDate, KAiDeviceStatusContentDate_Cid,
- KAiDeviceStatusMimeTypeTextPlain },
-
- //Published data silent indicator as a text
- { EAiDeviceStatusContentSilentIndicator, KAiDeviceStatusContentSilentIndicator_Cid,
- KAiDeviceStatusMimeTypeTextPlain },
-
- //Published data timed profile indicator as a text
- { EAiDeviceStatusContentTimedProfileIndicator, KAiDeviceStatusContentTimedProfileIndicator_Cid,
- KAiDeviceStatusMimeTypeTextPlain },
-
- //Published data is resource id
- { EAiDeviceStatusContentSIMRegStatus, KAiDeviceStatusContentSIMRegStatus_Cid,
- KAiDeviceStatusMimeTypeTextPlain },
-
- //Published data is resource id
- { EAiDeviceStatusContentNWStatus, KAiDeviceStatusContentNWStatus_Cid,
- KAiDeviceStatusMimeTypeTextPlain },
-
- //Published data is MCN message
- { EAiDeviceStatusContentMCNIndicator, KAiDeviceStatusContentMCNIndicator_Cid,
- KAiDeviceStatusMimeTypeTextPlain },
-
- //Published data is VHZ name
- { EAiDeviceStatusContentVHZIndicator, KAiDeviceStatusContentVHZIndicator_Cid,
- KAiDeviceStatusMimeTypeTextPlain },
-
- //Published data is localized text, for example "Group 1"
- { EAiDeviceStatusContentCUGIndicator, KAiDeviceStatusContentCUGIndicator_Cid,
- KAiDeviceStatusMimeTypeTextPlain },
-
- //Published data general indicator as a text
- { EAiDeviceStatusContentGeneralIndicator, KAiDeviceStatusContentGeneralIndicator_Cid,
- KAiDeviceStatusMimeTypeTextPlain },
-
- //Published data VHZ text
- { EAiDeviceStatusContentVHZText, KAiDeviceStatusContentVHZText_Cid,
- KAiDeviceStatusMimeTypeTextPlain },
-
- //Published data is localized text, for example "Group 1" or MCN message
- { EAiDeviceStatusContentCUGMCNIndicator, KAiDeviceStatusContentCUGMCNIndicator_Cid,
- KAiDeviceStatusMimeTypeTextPlain }
- };
-
-const TInt KAiDeviceStatusContentCount = sizeof( KAiDeviceStatusContent ) /
- sizeof( KAiDeviceStatusContent[0] );
-
-
-
-//content item id's
-enum TAiDeviceStatusResourceIds
- {
- EAiDeviceStatusResourceSIMRegFail,
- EAiDeviceStatusResourceNWOk,
- EAiDeviceStatusResourceNWLost
- };
-
-const wchar_t KAiDeviceStatusResourceSIMRegFail_Cid[] = L"SIMRegFail";
-const wchar_t KAiDeviceStatusResourceShowNWLost_Cid[] = L"NWLost";
-
-
-const TAiContentItem KAiDeviceStatusResources[] =
-{
- //Published data is resource id
- { EAiDeviceStatusResourceSIMRegFail, KAiDeviceStatusResourceSIMRegFail_Cid,
- KAiDeviceStatusMimeTypeTextPlain },
- { EAiDeviceStatusResourceNWLost, KAiDeviceStatusResourceShowNWLost_Cid,
- KAiDeviceStatusMimeTypeTextPlain },
-};
-
-const TInt KAiDeviceStatusResourceCount = sizeof( KAiDeviceStatusResources ) /
- sizeof( KAiDeviceStatusResources[0] );
-
-
-#endif // AIDEVICESTATUSCONTENTMODEL_H
--- a/idlefw/plugins/devicestatus/inc/aidevicestatusplugin.h Wed Mar 03 15:38:34 2010 +0200
+++ b/idlefw/plugins/devicestatus/inc/aidevicestatusplugin.h Wed May 12 13:36:47 2010 +0300
@@ -19,11 +19,13 @@
#ifndef C_AIDEVICESTATUSPLUGIN_H
#define C_AIDEVICESTATUSPLUGIN_H
+// System includes
-#include <aicontentpublisher.h>
-#include <aipropertyextension.h>
+// User includes
+#include <hscontentpublisher.h>
#include <aicontentrequest.h>
+// Forward declarations
class MAiDeviceStatusPublisher;
class CAiContentItemArrayIterator;
class CAiDeviceStatusPluginEngine;
@@ -40,100 +42,110 @@
*
* @since S60 3.2
*/
-class CAiDeviceStatusPlugin : public CAiContentPublisher,
- public MAiPropertyExtension,
- public MAiContentRequest
+NONSHARABLE_CLASS( CAiDeviceStatusPlugin ) : public CHsContentPublisher,
+ public MAiContentRequest
{
public:
-
+ // constructors and destructor
static CAiDeviceStatusPlugin* NewL();
static CAiDeviceStatusPlugin* NewLC();
virtual ~CAiDeviceStatusPlugin();
protected:
-
-// from base class CAiContentPublisher
- void Resume( TAiTransitionReason aReason );
- void Suspend( TAiTransitionReason aReason );
- void Stop( TAiTransitionReason aReason );
- void SubscribeL(MAiContentObserver& aObserver);
- TAny* Extension(TUid aUid);
- void ConfigureL(RAiSettingsItemArray& aSettings);
+ // from CHsContentPublisher
+
+ /**
+ * @see CHsContentPublisher
+ */
+ void Start( CHsContentPublisher::TStartReason aReason );
-protected:
-
-// from base class MAiPropertyExtension
- TAny* GetPropertyL(TInt aProperty);
- void SetPropertyL(TInt aProperty, TAny* aValue);
-
-// from base class MAiContentRequest
- TBool RefreshContent( TInt aContentId );
-
-
-private:
+ /**
+ * @see CHsContentPublisher
+ */
+ void Stop( CHsContentPublisher::TStopReason aReason );
+
+ /**
+ * @see CHsContentPublisher
+ */
+ void Resume( CHsContentPublisher::TResumeReason aReason );
+
+ /**
+ * @see CHsContentPublisher
+ */
+ void Suspend( CHsContentPublisher::TSuspendReason aReason );
- CAiDeviceStatusPlugin();
- void ConstructL();
-
- void AllocateResourcesL();
- void FreeResources();
- void DoResumeL( TAiTransitionReason aReason );
- TBool IgnoreReason( TAiTransitionReason aReason );
-
- /**
- * Add device status publisher.
+ /**
+ * @see CHsContentPublisher
+ */
+ void SubscribeL( MAiContentObserver& aObserver );
+
+ /**
+ * @see CHsContentPublisher
+ */
+ void ConfigureL( RAiSettingsItemArray& aSettings );
+
+ /**
+ * @see CHsContentPublisher
+ */
+ TAny* GetProperty( CHsContentPublisher::TProperty aProperty );
+
+protected:
+ // from MAiContentRequest
+
+ /**
+ * @see MAiContentRequest
*/
- void AddPublisherL( MAiDeviceStatusPublisher* aPublisher );
-
-private: // data
-
- /**
- * Device Status Plug-in Engine.
- * Own.
- */
- CAiDeviceStatusPluginEngine* iEngine;
+ TBool RefreshContent( TInt aContentId );
/**
- * Content observers.
- * Own.
- */
- CAiMultiContentObserver* iContentObservers;
-
- /**
- * Device Status Plug-in content prioritizer.
- * Own.
- */
- CAiPublishPrioritizer* iPrioritizer;
-
+ * @see MAiContentRequest
+ */
+ TBool SuspendContent( TInt aContentId );
+
+private:
+ // constructors
+
/**
- * Content item array iterator.
- * Own.
+ * C++ default constructor
*/
- MAiContentItemIterator* iContent;
-
- /**
- * Content item array iterator for resources.
- * Own.
- */
- MAiContentItemIterator* iResources;
-
- /**
- * Publisher info.
- */
- TAiPublisherInfo iInfo;
-
- /**
- * Offset of the loaded resource file.
- */
- TInt iResourceOffset;
+ CAiDeviceStatusPlugin();
/**
- * Network info listener.
- * Own.
+ * 2nd phase constructor
*/
+ void ConstructL();
+
+private:
+ // new functions
+
+ void AllocateResourcesL();
+ void FreeResources();
+ void DoResumeL();
+
+ void AddPublisherL( MAiDeviceStatusPublisher* aPublisher );
+
+private:
+ // data
+
+ /** Device Status Plug-in Engine, owned */
+ CAiDeviceStatusPluginEngine* iEngine;
+ /** Content observers, owned */
+ CAiMultiContentObserver* iContentObservers;
+ /** Device Status Plug-in content prioritizer, owned */
+ CAiPublishPrioritizer* iPrioritizer;
+ /** Content item array iterator, owned */
+ MAiContentItemIterator* iContent;
+ /** Content item array iterator for resources, owned */
+ MAiContentItemIterator* iResources;
+ /** Offset of the loaded resource file */
+ TInt iResourceOffset;
+ /** Network info listener, owned */
CAiNetworkInfoListener* iListener;
+ /** Flag to indicate republish need */
+ TBool iRequirePublish;
};
+#endif // C_AIDEVICESTATUSPLUGIN_H
-#endif // C_AIDEVICESTATUSPLUGIN_H
+// End of file
--- a/idlefw/plugins/devicestatus/inc/aidevicestatuspluginengine.h Wed Mar 03 15:38:34 2010 +0200
+++ b/idlefw/plugins/devicestatus/inc/aidevicestatuspluginengine.h Wed May 12 13:36:47 2010 +0300
@@ -19,19 +19,23 @@
#ifndef AIDEVICESTATUSPLUGINENGINE_H
#define AIDEVICESTATUSPLUGINENGINE_H
+// System includes
#include <e32base.h>
+
+// User includes
#include <aisystemuids.hrh>
-
#include "aipublisherbroadcaster.h"
#include "aidevicestatuspublisher.h"
+// Forward declarations
+class CHsContentPublisher;
+class MAiContentObserver;
+class MAiPublishPrioritizer;
+
+// Constants
//device status plugin UI
const TInt KImplUidDevStaPlugin = AI_UID_ECOM_IMPLEMENTATION_CONTENTPUBLISHER_DEVSTAPLUGIN;
-class MAiContentObserver;
-class MAiPropertyExtension;
-class MAiPublishPrioritizer;
-
/**
* @ingroup group_devicestatusplugin
@@ -44,17 +48,20 @@
*
* @since S60 v3.2
*/
-class CAiDeviceStatusPluginEngine : public CBase, public MAiPublisherBroadcaster
+NONSHARABLE_CLASS( CAiDeviceStatusPluginEngine ) : public CBase,
+ public MAiPublisherBroadcaster
{
+public:
+ // constructor and destructor
+
+ static CAiDeviceStatusPluginEngine* NewL( MAiContentObserver& aObserver,
+ CHsContentPublisher& aExtension, MAiPublishPrioritizer& aPrioritizer );
+
+ virtual ~CAiDeviceStatusPluginEngine();
public:
-
- static CAiDeviceStatusPluginEngine* NewL( MAiContentObserver& aObserver,
- MAiPropertyExtension& aExtension,
- MAiPublishPrioritizer& aPrioritizer);
-
- virtual ~CAiDeviceStatusPluginEngine();
-
+ // new functions
+
/**
* Resumes all publishers.
*/
@@ -77,27 +84,41 @@
*/
TBool RefreshPublishersL( TInt aContentId, TBool aClean );
+ /**
+ * Suspends specific publishers.
+ * @param aContentId Indicates which publishers should suspend their
+ * content.
+ * @param aClean Indicates if publishers should clean their content before
+ * suspend.
+ * @return ETrue if publisher informed that publish was successful.
+ */
+ TBool SuspendPublishersL( TInt aContentId, TBool aClean );
+
-public: // from MAiPublisherBroadcaster
+public:
+ // from MAiPublisherBroadcaster
TBool RefreshPriorizedPublishersL( TInt aContentId, TInt aPriority );
private:
+ // constructors
CAiDeviceStatusPluginEngine( MAiContentObserver& aObserver,
- MAiPropertyExtension& aExtension,
- MAiPublishPrioritizer& aPrioritizer);
-
+ CHsContentPublisher& aExtension, MAiPublishPrioritizer& aPrioritizer );
+
void ConstructL();
+private:
+ // new functions
+
/**
* Add Device Status publisher.
*/
void AddPublisherL( MAiDeviceStatusPublisher* aPublisher );
-
-private: // data
+private:
+ // data
/**
* Array of publishers.
@@ -115,7 +136,7 @@
* Property extension.
* Not own.
*/
- MAiPropertyExtension* iExtension;
+ CHsContentPublisher* iExtension;
/**
* Content prioritizer.
@@ -125,3 +146,5 @@
};
#endif // AIDEVICESTATUSPLUGINENGINE_H
+
+// End of file
--- a/idlefw/plugins/devicestatus/inc/aidevicestatuspublisher.h Wed Mar 03 15:38:34 2010 +0200
+++ b/idlefw/plugins/devicestatus/inc/aidevicestatuspublisher.h Wed May 12 13:36:47 2010 +0300
@@ -19,9 +19,14 @@
#ifndef M_AIDEVICESTATUSPUBLISHER_H
#define M_AIDEVICESTATUSPUBLISHER_H
+// System includes
#include <e32std.h>
-#include "aicontentobserver.h"
+
+// User includes
+// Forward declarations
+class CHsContentPublisher;
+class MAiContentObserver;
class MAiPublishPrioritizer;
class MAiPublisherBroadcaster;
@@ -52,7 +57,7 @@
* @param aBroadcaster is reference for publisher broadcaster.
*/
virtual void Subscribe( MAiContentObserver& aObserver,
- MAiPropertyExtension& aExtension,
+ CHsContentPublisher& aExtension,
MAiPublishPrioritizer& aPrioritizer,
MAiPublisherBroadcaster& aBroadcaster ) = 0;
@@ -84,6 +89,16 @@
virtual TBool RefreshL( TInt /*aContentId*/, TBool /*aClean*/ ) { return EFalse; }
/**
+ * Suspends specific content.
+ *
+ * Publisher suspends content publishing specified by aContentId.
+ * @param aContentId Id of the content item that is requested to suspend.
+ * @param aClean ETrue if current content needs to be cleaned.
+ * @return true if content was suspended.
+ */
+ virtual TBool SuspendL( TInt /*aContentId*/, TBool /*aClean*/ ) { return EFalse; }
+
+ /**
* Refresh specific content with specific priority.
*
* This has the same effect as the publisher would get content update from system.
@@ -95,5 +110,6 @@
virtual TBool RefreshContentWithPriorityL( TInt /*aContentId*/, TInt /*aPriority*/ ) { return EFalse; }
};
+#endif // M_AIDEVICESTATUSPUBLISHER_H
-#endif // M_AIDEVICESTATUSPUBLISHER_H
+// End of file
--- a/idlefw/plugins/devicestatus/inc/aimcnpublisher.h Wed Mar 03 15:38:34 2010 +0200
+++ b/idlefw/plugins/devicestatus/inc/aimcnpublisher.h Wed May 12 13:36:47 2010 +0300
@@ -19,14 +19,17 @@
#ifndef C_AIMCNPUBLISHER_H
#define C_AIMCNPUBLISHER_H
-
+// System includes
#include <e32base.h>
+#include <aidevicestatuscontentmodel.h>
+
+// User includes
#include "aidevicestatuspublisher.h"
-#include "aidevicestatuscontentmodel.h"
#include "ainetworkinfoobserver.h"
+// Forward declarations
class MAiDeviceStatusContentObserver;
-class MAiPropertyExtension;
+class CHsContentPublisher;
class CAiNetworkInfoListener;
/**
@@ -39,8 +42,9 @@
*
* @since S60 3.2
*/
-class CAiMCNPublisher : public CBase, public MAiDeviceStatusPublisher,
- public MAiNetworkInfoObserver
+NONSHARABLE_CLASS( CAiMCNPublisher ) : public CBase,
+ public MAiDeviceStatusPublisher,
+ public MAiNetworkInfoObserver
{
public:
@@ -54,7 +58,7 @@
void ResumeL();
void Subscribe( MAiContentObserver& aObserver,
- MAiPropertyExtension& aExtension,
+ CHsContentPublisher& aExtension,
MAiPublishPrioritizer& aPrioritizer,
MAiPublisherBroadcaster& aBroadcaster );
void RefreshL( TBool aClean );
@@ -87,7 +91,7 @@
* Property extension.
* Not own.
*/
- MAiPropertyExtension* iExtension;
+ CHsContentPublisher* iExtension;
/**
* Network info listener.
--- a/idlefw/plugins/devicestatus/inc/aimulticontentobserver.h Wed Mar 03 15:38:34 2010 +0200
+++ b/idlefw/plugins/devicestatus/inc/aimulticontentobserver.h Wed May 12 13:36:47 2010 +0300
@@ -19,13 +19,16 @@
#ifndef C_AIMULTICONTENTOBSERVER_H
#define C_AIMULTICONTENTOBSERVER_H
-
+// System includes
#include <e32base.h>
+
+// User includes
#include "aicontentobserver.h"
-
// Forward declarations
class CAiContentObserverOptimizer;
+class CHsContentPublisher;
+
/**
* @ingroup group_devicestatusplugin
*
@@ -34,9 +37,8 @@
* @see MAiContentObserver
* @since S60 3.2
*/
-class CAiMultiContentObserver :
- public CBase,
- public MAiContentObserver
+NONSHARABLE_CLASS( CAiMultiContentObserver ) : public CBase,
+ public MAiContentObserver
{
public:
static CAiMultiContentObserver* NewL();
@@ -51,30 +53,32 @@
TInt StartTransaction( TInt aTxId );
TInt Commit( TInt aTxId );
TInt CancelTransaction( TInt aTxId );
- TBool CanPublish( MAiPropertyExtension& aPlugin, TInt aContent, TInt aIndex );
- TInt Publish( MAiPropertyExtension& aPlugin, TInt aContent,
+ TBool CanPublish( CHsContentPublisher& aPlugin, TInt aContent, TInt aIndex );
+ TInt Publish( CHsContentPublisher& aPlugin, TInt aContent,
TInt aResource, TInt aIndex );
- TInt Publish( MAiPropertyExtension& aPlugin, TInt aContent,
+ TInt Publish( CHsContentPublisher& aPlugin, TInt aContent,
const TDesC16& aText, TInt aIndex );
- TInt Publish( MAiPropertyExtension& aPlugin, TInt aContent,
+ TInt Publish( CHsContentPublisher& aPlugin, TInt aContent,
const TDesC8& aBuf, TInt aIndex );
- TInt Publish( MAiPropertyExtension& aPlugin, TInt aContent,
+ TInt Publish( CHsContentPublisher& aPlugin, TInt aContent,
RFile& aFile, TInt aIndex );
- TInt Clean( MAiPropertyExtension& aPlugin, TInt aContent, TInt aIndex );
+ TInt Clean( CHsContentPublisher& aPlugin, TInt aContent, TInt aIndex );
TAny* Extension( TUid aUid );
- TBool RequiresSubscription( const TAiPublisherInfo& aPublisherInfo ) const;
+ TBool RequiresSubscription( const THsPublisherInfo& aPublisherInfo ) const;
- TInt SetProperty( MAiPropertyExtension& aPlugin,
+ TInt SetProperty( CHsContentPublisher& aPlugin,
const TDesC8& aElementId,
const TDesC8& aPropertyName,
const TDesC8& aPropertyValue );
- TInt SetProperty( MAiPropertyExtension& aPlugin,
+ TInt SetProperty( CHsContentPublisher& aPlugin,
const TDesC8& aElementId,
const TDesC8& aPropertyName,
const TDesC8& aPropertyValue,
MAiContentObserver::TValueType aValueType);
+ void ClearBlackList();
+
private:
CAiMultiContentObserver();
void ConstructL();
--- a/idlefw/plugins/devicestatus/inc/ainetworkinfolistener.h Wed Mar 03 15:38:34 2010 +0200
+++ b/idlefw/plugins/devicestatus/inc/ainetworkinfolistener.h Wed May 12 13:36:47 2010 +0300
@@ -19,14 +19,17 @@
#ifndef C_AINETWORKINFOLISTENER_H
#define C_AINETWORKINFOLISTENER_H
-
+// System includes
#include <e32base.h>
#include <NWHandlingEngine.h>
+// User includes
+// Forward declarations
class MAiNetworkInfoObserver;
class CNWSession;
+
/**
* @ingroup group_devicestatusplugin
*
@@ -37,7 +40,8 @@
*
* @since S60 3.2
*/
-class CAiNetworkInfoListener : public CBase, public MNWMessageObserver
+NONSHARABLE_CLASS( CAiNetworkInfoListener ) : public CBase,
+ public MNWMessageObserver
{
public:
--- a/idlefw/plugins/devicestatus/inc/ainwspublisher.h Wed Mar 03 15:38:34 2010 +0200
+++ b/idlefw/plugins/devicestatus/inc/ainwspublisher.h Wed May 12 13:36:47 2010 +0300
@@ -19,15 +19,17 @@
#ifndef C_AINWSPUBLISHER_H
#define C_AINWSPUBLISHER_H
-
+// System includes
#include <e32base.h>
+#include <aidevicestatuscontentmodel.h>
+
+// User includes
#include "aidevicestatuspublisher.h"
-#include "aidevicestatuscontentmodel.h"
#include "ainetworkinfoobserver.h"
-
+// Forward declarations
class MAiDeviceStatusContentObserver;
-class MAiPropertyExtension;
+class CHsContentPublisher;
class CAiNetworkInfoListener;
class CRepository;
@@ -38,8 +40,9 @@
*
* @since S60 3.2
*/
-class CAiNwsPublisher : public CBase, public MAiDeviceStatusPublisher,
- public MAiNetworkInfoObserver
+NONSHARABLE_CLASS( CAiNwsPublisher ) : public CBase,
+ public MAiDeviceStatusPublisher,
+ public MAiNetworkInfoObserver
{
public:
@@ -52,7 +55,7 @@
void ResumeL();
void Subscribe( MAiContentObserver& aObserver,
- MAiPropertyExtension& aExtension,
+ CHsContentPublisher& aExtension,
MAiPublishPrioritizer& aPrioritizer,
MAiPublisherBroadcaster& aBroadcaster );
@@ -108,7 +111,7 @@
* Property extension.
* Not own.
*/
- MAiPropertyExtension* iExtension;
+ CHsContentPublisher* iExtension;
/**
* Network info listener.
--- a/idlefw/plugins/devicestatus/inc/aioperatorlogopublisher.h Wed Mar 03 15:38:34 2010 +0200
+++ b/idlefw/plugins/devicestatus/inc/aioperatorlogopublisher.h Wed May 12 13:36:47 2010 +0300
@@ -19,20 +19,24 @@
#ifndef C_AIOPERATORLOGOPUBLISHER_H
#define C_AIOPERATORLOGOPUBLISHER_H
-
+// System includes
#include <e32base.h>
#include <e32property.h>
#include <cenrepnotifyhandler.h>
+
+// User includes
#include <aiutility.h>
#include "aidevicestatuspublisher.h"
#include "ainetworkinfoobserver.h"
+// Forward declarations
class CAiNetworkInfoListener;
class MAiDeviceStatusContentObserver;
-class MAiPropertyExtension;
+class CHsContentPublisher;
class CGulIcon;
class CCenRepNotifyHandler;
+
/**
* @ingroup group_devicestatusplugin
*
@@ -43,9 +47,10 @@
*
* @since S60 3.2
*/
-class CAiOperatorLogoPublisher : public CBase, public MAiDeviceStatusPublisher,
- public MAiNetworkInfoObserver, /*public MAiCenRepNotifierCallBack*/
- public MCenRepNotifyHandlerCallback
+NONSHARABLE_CLASS( CAiOperatorLogoPublisher ) : public CBase,
+ public MAiDeviceStatusPublisher,
+ public MAiNetworkInfoObserver,
+ public MCenRepNotifyHandlerCallback
{
public:
@@ -59,11 +64,12 @@
void ResumeL();
void Subscribe( MAiContentObserver& aObserver,
- MAiPropertyExtension& aExtension,
+ CHsContentPublisher& aExtension,
MAiPublishPrioritizer& aPrioritizer,
MAiPublisherBroadcaster& aBroadcaster );
void RefreshL( TBool aClean );
TBool RefreshL( TInt aContentId, TBool aClean );
+ TBool SuspendL( TInt aContentId, TBool aClean );
TBool RefreshContentWithPriorityL( TInt aContentId, TInt aPriority );
@@ -149,77 +155,39 @@
private: // data
- /**
- * Network info listener.
- * Own.
- */
+ /** Network info listener, owned */
CAiNetworkInfoListener* iListener;
-
- /**
- * Operator logo bitmap and mask.
- * Own.
- */
+ /** Operator logo bitmap and mask, owned */
CGulIcon* iIcon;
-
- /**
- * Content observer.
- * Not own.
- */
+ /** Content observer, not owned */
MAiContentObserver* iContentObserver;
-
- /**
- * Property extension.
- * Not own.
- */
- MAiPropertyExtension* iExtension;
-
- /**
- * Content prioritizer.
- * Not own.
- */
- MAiPublishPrioritizer* iPrioritizer;
-
- /**
- * Publish broadcaster.
- * Not own.
- */
- MAiPublisherBroadcaster* iBroadcaster;
-
- /**
- * Publish-subscribe client.
- */
+ /** Property extension, not owned */
+ CHsContentPublisher* iExtension;
+ /** Content prioritizer, not owned */
+ MAiPublishPrioritizer* iPrioritizer;
+ /** Publish broadcaster, not owned */
+ MAiPublisherBroadcaster* iBroadcaster;
+ /** Publish-subscribe client, owned */
MAiPSPropertyObserver* iOperatorLogoObserver;
-
- /**
- * Central repository client.
- * Own.
- */
+ /** Central repository client, owned */
CRepository* iCenRep;
-
- /**
- * Central repository notifier.
- * Own.
- */
+ /** Central repository notifier, owned */
CCenRepNotifyHandler* iCenRepNotify;
-
- /**
- * Operator logo priority, can have one of the following values:
+ /** Operator logo priority, can have one of the following values:
+ *
* 1) EAiOTAOperatorLogo
* 2) EAiProgOperatorLogo
* 3) EAiInvalidPriority
*/
TInt iPriority;
-
- /**
- * True if publish was successful.
- */
- TBool iSuccess;
-
- /**
- * Show operator indicator.
- */
+ /** True if publish was successful. */
+ TBool iSuccess;
+ /** Flag to indicate if the content is suspended */
+ TBool iSuspended;
+ /** Show operator indicator */
TBool iShowOpInd;
};
+#endif // C_AIOPERATORLOGOPUBLISHER_H
-#endif // C_AIOPERATORLOGOPUBLISHER_H
+// End of file
--- a/idlefw/plugins/devicestatus/inc/aioperatornamepublisher.h Wed Mar 03 15:38:34 2010 +0200
+++ b/idlefw/plugins/devicestatus/inc/aioperatornamepublisher.h Wed May 12 13:36:47 2010 +0300
@@ -19,15 +19,22 @@
#ifndef C_AIOPERATORPROVIDERNAMEPUBLISHER_H
#define C_AIOPERATORPROVIDERNAMEPUBLISHER_H
-
+// System includes
#include <e32base.h>
#include <AknUtils.h>
+#include <MProEngProfileActivationObserver.h>
+
+// User includes
#include "aidevicestatuspublisher.h"
#include "ainetworkinfoobserver.h"
+// Forward declarations
+class MProfileEngine;
+class MProEngNotifyHandler;
class CAiNetworkInfoListener;
class MAiDeviceStatusContentObserver;
-class MAiPropertyExtension;
+class CHsContentPublisher;
+
/**
* @ingroup group_devicestatusplugin
@@ -39,8 +46,10 @@
*
* @since S60 3.2
*/
-class CAiOperatorNamePublisher : public CBase, public MAiDeviceStatusPublisher,
- public MAiNetworkInfoObserver
+NONSHARABLE_CLASS( CAiOperatorNamePublisher ) : public CBase,
+ public MAiDeviceStatusPublisher,
+ public MAiNetworkInfoObserver,
+ public MProEngProfileActivationObserver
{
public:
@@ -52,11 +61,12 @@
void ResumeL();
void Subscribe( MAiContentObserver& aObserver,
- MAiPropertyExtension& aExtension,
+ CHsContentPublisher& aExtension,
MAiPublishPrioritizer& aPrioritizer,
MAiPublisherBroadcaster& aBroadcaster );
void RefreshL( TBool aClean );
TBool RefreshL( TInt aContentId, TBool aClean );
+ TBool SuspendL( TInt aContentId, TBool aClean );
TBool RefreshContentWithPriorityL( TInt aContentId, TInt aPriority );
@@ -72,6 +82,13 @@
const TNWInfo& aInfo,
const TBool aShowOpInd );
+private:
+ // from MProEngProfileActivationObserver
+
+ /**
+ * @see MProEngProfileActivationObserver
+ */
+ void HandleProfileActivatedL( TInt aProfileId );
private:
@@ -141,56 +158,32 @@
private: // data
- /**
- * Network info listener.
- * Own.
- */
+ /** Network info listener, not owned */
CAiNetworkInfoListener* iListener;
-
- /**
- * Property extension.
- * Not own.
- */
- MAiPropertyExtension* iExtension;
-
- /**
- * Content prioritizer.
- * Not own.
- */
- MAiPublishPrioritizer* iPrioritizer;
-
- /**
- * Publish broadcaster.
- * Not own.
- */
- MAiPublisherBroadcaster* iBroadcaster;
-
- /**
- * Used to do delayed clean operation.
- * Own.
- */
- CPeriodic* iPeriodic;
-
- /**
- * True if publish was successful.
- */
- TBool iSuccess;
-
- /**
- * Operator name priority
- */
- TInt iPriority;
-
- /**
- * Show operator indicator.
- */
- TBool iShowOpInd;
-
- /**
- * Network identity name
- */
- TPtrC iNetworkIdentityName;
+ /** Property extension, not owned */
+ CHsContentPublisher* iExtension;
+ /** Content prioritizer, not owned */
+ MAiPublishPrioritizer* iPrioritizer;
+ /** Publish broadcaster, not owned */
+ MAiPublisherBroadcaster* iBroadcaster;
+ /** Used to do delayed clean operation, owned */
+ CPeriodic* iPeriodic;
+ /** True if publish was successful */
+ TBool iSuccess;
+ /** Operator name priority */
+ TInt iPriority;
+ /** Show operator indicator */
+ TBool iShowOpInd;
+ /** Network identity name */
+ TPtrC iNetworkIdentityName;
+ /** Flag to indicate if the content is suspended */
+ TBool iSuspended;
+ /** Profile engine, owned */
+ MProfileEngine* iProfileEngine;
+ /** Profile change notifier, owned */
+ MProEngNotifyHandler* iProfileNotifier;
};
+#endif // C_AIOPERATORPROVIDERNAMEPUBLISHER_H
-#endif // C_AIOPERATORPROVIDERNAMEPUBLISHER_H
+// End of file
--- a/idlefw/plugins/devicestatus/inc/aiprofilepublisher.h Wed Mar 03 15:38:34 2010 +0200
+++ b/idlefw/plugins/devicestatus/inc/aiprofilepublisher.h Wed May 12 13:36:47 2010 +0300
@@ -20,11 +20,11 @@
#define C_AIPROFILEPUBLISHER_H
#include <e32base.h>
+#include <aidevicestatuscontentmodel.h>
#include <RSSSettings.h>
#include <MSSSettingsObserver.h>
#include <MProfileChangeObserver.h>
#include "aidevicestatuspublisher.h"
-#include "aidevicestatuscontentmodel.h"
class MProfileEngine;
class MAiDeviceStatusContentObserver;
--- a/idlefw/plugins/devicestatus/inc/aipublisherfactory.h Wed Mar 03 15:38:34 2010 +0200
+++ b/idlefw/plugins/devicestatus/inc/aipublisherfactory.h Wed May 12 13:36:47 2010 +0300
@@ -34,15 +34,6 @@
public:
/**
- * Create profile publisher.
- *
- * @since S60 3.2
- * @return pointer to publisher or NULL if publisher is not supported
- * by platform.
- */
- static MAiDeviceStatusPublisher* CreateProfilePublisherL();
-
- /**
* Create date profile publisher.
*
* @since S60 3.2
--- a/idlefw/plugins/devicestatus/inc/aipublishprioritizer.h Wed Mar 03 15:38:34 2010 +0200
+++ b/idlefw/plugins/devicestatus/inc/aipublishprioritizer.h Wed May 12 13:36:47 2010 +0300
@@ -19,10 +19,16 @@
#ifndef C_AIPUBLISHPRIORITIZER_H
#define C_AIPUBLISHPRIORITIZER_H
+// System includes
#include <e32def.h>
+
+// User includes
#include "ainwidpriorities.h"
#include "aiprioritizer.h"
-#include "aipropertyextension.h"
+
+// Forward declarations
+class CHsContentPublisher;
+
/**
* @ingroup group_devicestatusplugin
@@ -37,13 +43,13 @@
* @since S60 3.2
*/
-class CAiPublishPrioritizer : public CBase, public MAiPublishPrioritizer
+NONSHARABLE_CLASS( CAiPublishPrioritizer ) : public CBase,
+ public MAiPublishPrioritizer
{
-
public:
static CAiPublishPrioritizer* NewL( MAiContentObserver& aContentObserver,
- MAiPropertyExtension& aPropertyExtension );
+ CHsContentPublisher& aPropertyExtension );
virtual ~CAiPublishPrioritizer();
@@ -75,7 +81,7 @@
private:
CAiPublishPrioritizer( MAiContentObserver& aContentObserver,
- MAiPropertyExtension& aPropertyExtension );
+ CHsContentPublisher& aPropertyExtension );
private: // data
@@ -88,7 +94,7 @@
/**
* Property extension.
*/
- MAiPropertyExtension& iPropertyExtension;
+ CHsContentPublisher& iPropertyExtension;
/// Current priority
TInt iPriority;
--- a/idlefw/plugins/devicestatus/inc/aisimregpublisher.h Wed Mar 03 15:38:34 2010 +0200
+++ b/idlefw/plugins/devicestatus/inc/aisimregpublisher.h Wed May 12 13:36:47 2010 +0300
@@ -19,17 +19,20 @@
#ifndef C_AISIMREGFAILPUBLISHER_H
#define C_AISIMREGFAILPUBLISHER_H
-
+// System includes
#include <e32base.h>
+#include <aidevicestatuscontentmodel.h>
+
+// User includes
#include "aidevicestatuspublisher.h"
-#include "aidevicestatuscontentmodel.h"
#include "ainetworkinfoobserver.h"
-
+// Forward declarations
class MAiDeviceStatusContentObserver;
-class MAiPropertyExtension;
+class CHsContentPublisher;
class CAiNetworkInfoListener;
+
/**
* @ingroup group_devicestatusplugin
*
@@ -37,8 +40,9 @@
*
* @since S60 3.2
*/
-class CAiSimRegPublisher : public CBase, public MAiDeviceStatusPublisher,
- public MAiNetworkInfoObserver
+NONSHARABLE_CLASS( CAiSimRegPublisher ) : public CBase,
+ public MAiDeviceStatusPublisher,
+ public MAiNetworkInfoObserver
{
public:
@@ -50,7 +54,7 @@
void ResumeL();
void Subscribe( MAiContentObserver& aObserver,
- MAiPropertyExtension& aExtension,
+ CHsContentPublisher& aExtension,
MAiPublishPrioritizer& aPrioritizer,
MAiPublisherBroadcaster& aBroadcaster );
void RefreshL( TBool aClean );
@@ -84,7 +88,7 @@
* Property extension.
* Not own.
*/
- MAiPropertyExtension* iExtension;
+ CHsContentPublisher* iExtension;
/**
* Network info listener.
--- a/idlefw/plugins/devicestatus/inc/aivhzpublisher.h Wed Mar 03 15:38:34 2010 +0200
+++ b/idlefw/plugins/devicestatus/inc/aivhzpublisher.h Wed May 12 13:36:47 2010 +0300
@@ -19,14 +19,17 @@
#ifndef C_AIVHZPUBLISHER_H
#define C_AIVHZPUBLISHER_H
-
+// System includes
#include <e32base.h>
+#include <aidevicestatuscontentmodel.h>
+
+// User includes
#include "aidevicestatuspublisher.h"
-#include "aidevicestatuscontentmodel.h"
#include "ainetworkinfoobserver.h"
+// Forward declarations
class MAiDeviceStatusContentObserver;
-class MAiPropertyExtension;
+class CHsContentPublisher;
class CAiNetworkInfoListener;
/**
@@ -39,8 +42,9 @@
*
* @since S60 3.2
*/
-class CAiVHZPublisher : public CBase, public MAiDeviceStatusPublisher,
- public MAiNetworkInfoObserver
+NONSHARABLE_CLASS( CAiVHZPublisher ) : public CBase,
+ public MAiDeviceStatusPublisher,
+ public MAiNetworkInfoObserver
{
public:
@@ -54,7 +58,7 @@
void ResumeL();
void Subscribe( MAiContentObserver& aObserver,
- MAiPropertyExtension& aExtension,
+ CHsContentPublisher& aExtension,
MAiPublishPrioritizer& aPrioritizer,
MAiPublisherBroadcaster& aBroadcaster );
void RefreshL( TBool aClean );
@@ -85,7 +89,7 @@
* Property extension.
* Not own.
*/
- MAiPropertyExtension* iExtension;
+ CHsContentPublisher* iExtension;
/**
* Network info listener.
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/idlefw/plugins/devicestatus/rom/aidevicestatusplugin.iby Wed May 12 13:36:47 2010 +0300
@@ -0,0 +1,31 @@
+/*
+* Copyright (c) 2006 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: IBY file for Devicestatus plug-in
+*
+*/
+
+
+#ifndef AIDEVICESTATUSPLUGIN_IBY
+#define AIDEVICESTATUSPLUGIN_IBY
+
+#include <bldvariant.hrh>
+
+#ifdef RD_CUSTOMIZABLE_AI
+
+ECOM_PLUGIN( aidevstaplg.dll, aidevstaplg.rsc )
+
+#endif // RD_CUSTOMIZABLE_AI
+
+#endif // AIDEVICESTATUSPLUGIN_IBY
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/idlefw/plugins/devicestatus/rom/aidevicestatusplugin_resources.iby Wed May 12 13:36:47 2010 +0300
@@ -0,0 +1,31 @@
+/*
+* Copyright (c) 2005 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: IBY file for Devicestatus plug-in
+*
+*/
+
+
+#ifndef AIDEVICESTATUS_RESOURCES_IBY
+#define AIDEVICESTATUS_RESOURCES_IBY
+
+#include <data_caging_paths_for_iby.hrh>
+
+#ifdef RD_CUSTOMIZABLE_AI
+
+// AI devicestatus plug-in localizable resources
+data=DATAZ_\RESOURCE_FILES_DIR\aidevstaplgres.rsc RESOURCE_FILES_DIR\aidevstaplgres.rsc
+
+#endif // RD_CUSTOMIZABLE_AI
+
+#endif // AIDEVICESTATUS_RESOURCES_IBY
--- a/idlefw/plugins/devicestatus/src/aibtsappublisher.cpp Wed Mar 03 15:38:34 2010 +0200
+++ b/idlefw/plugins/devicestatus/src/aibtsappublisher.cpp Wed May 12 13:36:47 2010 +0300
@@ -82,7 +82,7 @@
void CAiBTSAPPublisher::Subscribe( MAiContentObserver& /*aObserver*/,
- MAiPropertyExtension& aExtension,
+ CHsContentPublisher& aExtension,
MAiPublishPrioritizer& aPrioritizer,
MAiPublisherBroadcaster& aBroadcaster )
{
@@ -95,6 +95,12 @@
void CAiBTSAPPublisher::RefreshL( TBool aClean )
{
iSuccess = EFalse;
+
+ if ( iSuspended )
+ {
+ return;
+ }
+
if( aClean )
{
iPrioritizer->TryToCleanL( *iBroadcaster,
@@ -165,17 +171,32 @@
TBool CAiBTSAPPublisher::RefreshL( TInt aContentId, TBool aClean )
{
- if( aContentId == EAiDeviceStatusContentNetworkIdentity )
+ if ( aContentId == EAiDeviceStatusContentNetworkIdentity )
{
+ iSuspended = EFalse;
+
RefreshL( aClean );
- if( iSuccess )
+
+ if ( iSuccess )
{
return ETrue;
}
}
+
return EFalse;
}
+TBool CAiBTSAPPublisher::SuspendL( TInt aContentId, TBool /*aClean*/ )
+ {
+ if ( aContentId == EAiDeviceStatusContentNetworkIdentity )
+ {
+ iSuspended = ETrue;
+
+ return ETrue;
+ }
+
+ return EFalse;
+ }
TBool CAiBTSAPPublisher::RefreshContentWithPriorityL( TInt aContentId,
TInt aPriority )
--- a/idlefw/plugins/devicestatus/src/aicontentobserveroptimizer.cpp Wed Mar 03 15:38:34 2010 +0200
+++ b/idlefw/plugins/devicestatus/src/aicontentobserveroptimizer.cpp Wed May 12 13:36:47 2010 +0300
@@ -78,14 +78,14 @@
}
-TBool CAiContentObserverOptimizer::CanPublish( MAiPropertyExtension& aPlugin,
+TBool CAiContentObserverOptimizer::CanPublish( CHsContentPublisher& aPlugin,
TInt aContent,
TInt aIndex )
{
return iObserver.CanPublish( aPlugin, aContent, aIndex );
}
-TInt CAiContentObserverOptimizer::Publish( MAiPropertyExtension& aPlugin,
+TInt CAiContentObserverOptimizer::Publish( CHsContentPublisher& aPlugin,
TInt aContent,
TInt aResource,
TInt aIndex )
@@ -111,7 +111,7 @@
}
-TInt CAiContentObserverOptimizer::Publish( MAiPropertyExtension& aPlugin,
+TInt CAiContentObserverOptimizer::Publish( CHsContentPublisher& aPlugin,
TInt aContent,
const TDesC16& aText,
TInt aIndex )
@@ -137,7 +137,7 @@
}
-TInt CAiContentObserverOptimizer::Publish( MAiPropertyExtension& aPlugin,
+TInt CAiContentObserverOptimizer::Publish( CHsContentPublisher& aPlugin,
TInt aContent,
const TDesC8& aBuf,
TInt aIndex )
@@ -164,7 +164,7 @@
}
-TInt CAiContentObserverOptimizer::Publish( MAiPropertyExtension& aPlugin,
+TInt CAiContentObserverOptimizer::Publish( CHsContentPublisher& aPlugin,
TInt aContent,
RFile& aFile,
TInt aIndex )
@@ -190,7 +190,7 @@
}
-TInt CAiContentObserverOptimizer::Clean( MAiPropertyExtension& aPlugin,
+TInt CAiContentObserverOptimizer::Clean( CHsContentPublisher& aPlugin,
TInt aContent,
TInt aIndex )
{
@@ -228,6 +228,11 @@
return EFalse;
}
+void CAiContentObserverOptimizer::ClearBlackList()
+ {
+ iBlackList.Reset();
+ }
+
CAiContentObserverOptimizer::CAiContentObserverOptimizer(MAiContentObserver& aObserver):
iObserver( aObserver )
{
--- a/idlefw/plugins/devicestatus/src/aicugmcnpublisher.cpp Wed Mar 03 15:38:34 2010 +0200
+++ b/idlefw/plugins/devicestatus/src/aicugmcnpublisher.cpp Wed May 12 13:36:47 2010 +0300
@@ -18,8 +18,8 @@
#include <aidevstaplgres.rsg>
#include <StringLoader.h>
+#include <aicontentobserver.h>
#include "aicugmcnpublisher.h"
-#include "aicontentobserver.h"
#include "ainetworkinfolistener.h"
// ======== MEMBER FUNCTIONS ========
@@ -117,7 +117,7 @@
void CAiCUGMCNPublisher::Subscribe( MAiContentObserver& aObserver,
- MAiPropertyExtension& aExtension,
+ CHsContentPublisher& aExtension,
MAiPublishPrioritizer& /*aPrioritizer*/,
MAiPublisherBroadcaster& /*aBroadcaster*/ )
{
--- a/idlefw/plugins/devicestatus/src/aicugpublisher.cpp Wed Mar 03 15:38:34 2010 +0200
+++ b/idlefw/plugins/devicestatus/src/aicugpublisher.cpp Wed May 12 13:36:47 2010 +0300
@@ -18,8 +18,8 @@
#include <aidevstaplgres.rsg>
#include <StringLoader.h>
+#include <aicontentobserver.h>
#include "aicugpublisher.h"
-#include "aicontentobserver.h"
#include "ainetworkinfolistener.h"
@@ -72,7 +72,7 @@
void CAiCUGPublisher::Subscribe( MAiContentObserver& aObserver,
- MAiPropertyExtension& aExtension,
+ CHsContentPublisher& aExtension,
MAiPublishPrioritizer& /*aPrioritizer*/,
MAiPublisherBroadcaster& /*aBroadcaster*/ )
{
--- a/idlefw/plugins/devicestatus/src/aidatepublisher.cpp Wed Mar 03 15:38:34 2010 +0200
+++ b/idlefw/plugins/devicestatus/src/aidatepublisher.cpp Wed May 12 13:36:47 2010 +0300
@@ -21,8 +21,9 @@
#include <AknUtils.h>
#include <aidevstaplgres.rsg>
#include <bacntf.h>
+#include <aicontentobserver.h>
+
#include "aidatepublisher.h"
-#include "aicontentobserver.h"
const TInt KMaxDateStringLength = 100;
@@ -68,7 +69,7 @@
void CAiDatePublisher::Subscribe( MAiContentObserver& aObserver,
- MAiPropertyExtension& aExtension,
+ CHsContentPublisher& aExtension,
MAiPublishPrioritizer& /*aPrioritizer*/,
MAiPublisherBroadcaster& /*aBroadcaster*/ )
{
--- a/idlefw/plugins/devicestatus/src/aidevicestatusplugin.cpp Wed Mar 03 15:38:34 2010 +0200
+++ b/idlefw/plugins/devicestatus/src/aidevicestatusplugin.cpp Wed May 12 13:36:47 2010 +0300
@@ -15,7 +15,7 @@
*
*/
-
+// System includes
#include <ecom/ecom.h>
#include <ecom/implementationproxy.h>
#include <coemain.h>
@@ -23,17 +23,21 @@
#include <bautils.h>
#include <aiutility.h>
#include <featmgr.h>
+#include <aidevicestatuscontentmodel.h>
+
+// User includes
#include "aidevicestatusplugin.h"
#include "aidevicestatuspluginengine.h"
#include "aipublishprioritizer.h"
-#include "aidevicestatuscontentmodel.h"
#include "aimulticontentobserver.h"
#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,153 @@
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*/ )
+ {
+ iRequirePublish = ETrue;
+
+ if ( iContentObservers )
{
- 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 )
+ iContentObservers->ClearBlackList();
+ }
+ }
+
+// ----------------------------------------------------------------------------
+// CAiDeviceStatusPlugin::Stop
+//
+// ----------------------------------------------------------------------------
+//
+void CAiDeviceStatusPlugin::Stop( TStopReason /*aReason*/ )
+ {
+ }
+
+// ----------------------------------------------------------------------------
+// CAiDeviceStatusPlugin::Resume
+//
+// ----------------------------------------------------------------------------
+//
+void CAiDeviceStatusPlugin::Resume( TResumeReason aReason )
+ {
+ if ( aReason == EForeground )
+ {
+ if ( iRequirePublish )
{
- 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 );
- }
+ TRAP_IGNORE( DoResumeL() );
+
+ iRequirePublish = EFalse;
+ }
}
}
-
-
-void CAiDeviceStatusPlugin::DoResumeL(TAiTransitionReason /*aReason*/)
- {
- AllocateResourcesL( );
- iEngine->ResumePublishersL();
- iEngine->RefreshPublishersL( EFalse );
- }
-
-
-TBool CAiDeviceStatusPlugin::IgnoreReason( TAiTransitionReason aReason )
- {
- switch( aReason )
- {
- case EAiBacklightOff:
- return ETrue;
- }
- return EFalse;
- }
-
-
-void CAiDeviceStatusPlugin::Stop(TAiTransitionReason /*aReason*/)
- {
- FreeResources();
- }
-
-
-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
--- a/idlefw/plugins/devicestatus/src/aidevicestatuspluginengine.cpp Wed Mar 03 15:38:34 2010 +0200
+++ b/idlefw/plugins/devicestatus/src/aidevicestatuspluginengine.cpp Wed May 12 13:36:47 2010 +0300
@@ -15,31 +15,37 @@
*
*/
+// System includes
+// User includes
+#include <aicontentobserver.h>
#include "aidevicestatuspluginengine.h"
#include "aipublisherfactory.h"
#include "aidevicestatuspublisher.h"
+// ======== MEMBER FUNCTIONS ========
+// ----------------------------------------------------------------------------
+// CAiDeviceStatusPluginEngine::CAiDeviceStatusPluginEngine
+//
+// ----------------------------------------------------------------------------
+//
CAiDeviceStatusPluginEngine::CAiDeviceStatusPluginEngine(
- MAiContentObserver& aObserver,
- MAiPropertyExtension& aExtension,
- MAiPublishPrioritizer& aPrioritizer )
- : iContentObserver( &aObserver ),
- iExtension( &aExtension ),
- iPrioritizer( &aPrioritizer )
+ MAiContentObserver& aObserver, CHsContentPublisher& aExtension,
+ MAiPublishPrioritizer& aPrioritizer )
+ : iContentObserver( &aObserver ), iExtension( &aExtension ),
+ iPrioritizer( &aPrioritizer )
{
}
-
+// ----------------------------------------------------------------------------
+// CAiDeviceStatusPluginEngine::ConstructL
+//
+// ----------------------------------------------------------------------------
+//
void CAiDeviceStatusPluginEngine::ConstructL()
{
// Instantiate all publishers via factory
- MAiDeviceStatusPublisher* publisher = AiPublisherFactory::CreateProfilePublisherL();
- CleanupStack::PushL( publisher );
- AddPublisherL( publisher );
- CleanupStack::Pop( publisher );
-
- publisher = AiPublisherFactory::CreateDatePublisherL();
+ MAiDeviceStatusPublisher* publisher = AiPublisherFactory::CreateDatePublisherL();
CleanupStack::PushL( publisher );
AddPublisherL( publisher );
CleanupStack::Pop( publisher );
@@ -90,44 +96,54 @@
CleanupStack::Pop( publisher );
// Subscribe all publishers once they are instantiated
- const TInt count = iPublishers.Count();
+ const TInt count( iPublishers.Count() );
- for( TInt i( 0 ); i < count; i++ )
+ for ( TInt i( 0 ); i < count; i++ )
{
- iPublishers[i]->Subscribe( *iContentObserver,
- *iExtension,
- *iPrioritizer,
- *this );
+ iPublishers[i]->Subscribe(
+ *iContentObserver, *iExtension, *iPrioritizer, *this );
}
}
-
+// ----------------------------------------------------------------------------
+// CAiDeviceStatusPluginEngine::NewL
+//
+// ----------------------------------------------------------------------------
+//
CAiDeviceStatusPluginEngine* CAiDeviceStatusPluginEngine::NewL(
- MAiContentObserver& aObserver,
- MAiPropertyExtension& aExtension,
- MAiPublishPrioritizer& aPrioritizer)
+ MAiContentObserver& aObserver, CHsContentPublisher& aExtension,
+ MAiPublishPrioritizer& aPrioritizer )
{
CAiDeviceStatusPluginEngine* self =
- new( ELeave ) CAiDeviceStatusPluginEngine( aObserver,
- aExtension,
- aPrioritizer);
+ new( ELeave ) CAiDeviceStatusPluginEngine( aObserver, aExtension, aPrioritizer );
+
CleanupStack::PushL( self );
self->ConstructL();
CleanupStack::Pop( self );
return self;
}
+// ----------------------------------------------------------------------------
+// CAiDeviceStatusPluginEngine::~CAiDeviceStatusPluginEngine
+//
+// ----------------------------------------------------------------------------
+//
CAiDeviceStatusPluginEngine::~CAiDeviceStatusPluginEngine()
{
iPublishers.ResetAndDestroy();
}
-
-void CAiDeviceStatusPluginEngine::AddPublisherL( MAiDeviceStatusPublisher* aPublisher )
+// ----------------------------------------------------------------------------
+// CAiDeviceStatusPluginEngine::AddPublisherL
+//
+// ----------------------------------------------------------------------------
+//
+void CAiDeviceStatusPluginEngine::AddPublisherL(
+ MAiDeviceStatusPublisher* aPublisher )
{
//Add publisher to list.
- if( aPublisher )
+ if ( aPublisher )
{
CleanupDeletePushL( aPublisher );
User::LeaveIfError( iPublishers.Append( aPublisher ) );
@@ -135,25 +151,33 @@
}
}
-
+// ----------------------------------------------------------------------------
+// CAiDeviceStatusPluginEngine::ResumePublishersL
+//
+// ----------------------------------------------------------------------------
+//
void CAiDeviceStatusPluginEngine::ResumePublishersL()
{
- const TInt count = iPublishers.Count();
+ const TInt count( iPublishers.Count() );
- for( TInt i( 0 ); i < count; i++ )
+ for ( TInt i( 0 ); i < count; i++ )
{
iPublishers[i]->ResumeL();
}
}
-
+// ----------------------------------------------------------------------------
+// CAiDeviceStatusPluginEngine::RefreshPublishersL
+//
+// ----------------------------------------------------------------------------
+//
void CAiDeviceStatusPluginEngine::RefreshPublishersL( TBool aClean )
{
iContentObserver->StartTransaction( KImplUidDevStaPlugin );
- const TInt count = iPublishers.Count();
+ const TInt count( iPublishers.Count() );
- for( TInt i( 0 ); i < count; i++ )
+ for ( TInt i( 0 ); i < count; i++ )
{
iPublishers[i]->RefreshL( aClean );
}
@@ -161,19 +185,23 @@
iContentObserver->Commit( KImplUidDevStaPlugin );
}
-
+// ----------------------------------------------------------------------------
+// CAiDeviceStatusPluginEngine::RefreshPublishersL
+//
+// ----------------------------------------------------------------------------
+//
TBool CAiDeviceStatusPluginEngine::RefreshPublishersL( TInt aContentId,
- TBool aClean )
+ TBool aClean )
{
- TBool success = EFalse;
+ TBool success( EFalse );
iContentObserver->StartTransaction( KImplUidDevStaPlugin );
- const TInt count = iPublishers.Count();
+ const TInt count( iPublishers.Count() );
- for( TInt i( 0 ); i < count; i++ )
+ for ( TInt i( 0 ); i < count; i++ )
{
- if( iPublishers[i]->RefreshL( aContentId, aClean ) )
+ if ( iPublishers[i]->RefreshL( aContentId, aClean ) )
{
success = ETrue;
}
@@ -191,23 +219,54 @@
return success;
}
+// ----------------------------------------------------------------------------
+// CAiDeviceStatusPluginEngine::SuspendPublishersL
+//
+// ----------------------------------------------------------------------------
+//
+TBool CAiDeviceStatusPluginEngine::SuspendPublishersL( TInt aContentId,
+ TBool aClean )
+ {
+ TBool success( EFalse );
+
+ const TInt count( iPublishers.Count() );
+
+ for ( TInt i( 0 ); i < count; i++ )
+ {
+ if ( iPublishers[i]->SuspendL( aContentId, aClean ) )
+ {
+ success = ETrue;
+ }
+ }
+
+ return success;
+ }
+// ----------------------------------------------------------------------------
+// CAiDeviceStatusPluginEngine::RefreshPriorizedPublishersL
+//
+// ----------------------------------------------------------------------------
+//
TBool CAiDeviceStatusPluginEngine::RefreshPriorizedPublishersL( TInt aContentId,
- TInt aPriority )
+ TInt aPriority )
{
iContentObserver->StartTransaction( KImplUidDevStaPlugin );
- TBool success = EFalse;
- const TInt count = iPublishers.Count();
+
+ TBool success( EFalse );
+
+ const TInt count( iPublishers.Count() );
- for( TInt i( 0 ); i < count; i++ )
+ for ( TInt i( 0 ); i < count; i++ )
{
- if( iPublishers[i]->RefreshContentWithPriorityL( aContentId,
- aPriority ) )
+ MAiDeviceStatusPublisher* publisher( iPublishers[i] );
+
+ if( publisher->RefreshContentWithPriorityL( aContentId, aPriority ) )
{
success = ETrue;
break;
}
}
+
if ( success )
{
iContentObserver->Commit( KImplUidDevStaPlugin );
@@ -216,6 +275,8 @@
{
iContentObserver->CancelTransaction( KImplUidDevStaPlugin );
}
+
return success;
}
+// End of file
--- a/idlefw/plugins/devicestatus/src/aidevstaplg.rss Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,61 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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:
-*
-*/
-
-
-// INCLUDES
-#include <ecom/registryinfov2.rh>
-
-
-// RESOURCE DEFINITIONS
-// -----------------------------------------------------------------------------
-//
-// ?resource_name
-//
-//
-// -----------------------------------------------------------------------------
-//
-RESOURCE REGISTRY_INFO registry_info
-{
- resource_format_version = RESOURCE_FORMAT_VERSION_2;
- // UID for the DLL
- dll_uid = 0x102750F7;
-
- // Interface info array
- interfaces =
- {
- INTERFACE_INFO
- {
- // UID of the implemented interface
- interface_uid = 0x102750ED;
-
- implementations =
- {
- IMPLEMENTATION_INFO
- {
- implementation_uid = 0x102750F8;
- version_no = 1;
- display_name = "DeviceStatus";
- default_data = "";
- opaque_data = "";
- rom_only = 1;
- }
- };
- }
- };
-}
-
-// End of File.
--- a/idlefw/plugins/devicestatus/src/aidevstaplgres.rss Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,56 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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: Resource definitions for project ?myapp
-*
-*/
-
-
-
-NAME AIDP
-
-#include <avkon.rh>
-#include <avkon.rsg>
-#include <avkon.mbg>
-#include <eikon.rh>
-#include <eikcore.rsg>
-
-#include <aidevstaplgres.loc>
-
-RESOURCE RSS_SIGNATURE { }
-RESOURCE TBUF { buf=""; }
-
-// ---------------------------------------------------------------------------
-// ?resource_name
-//
-// ---------------------------------------------------------------------------
-//
-RESOURCE TBUF r_activeidle_time_format
- {
- buf = qtn_idle_time_format;
- }
-
-RESOURCE TBUF r_activeidle_bt_sim_access_profile_string
- {
- buf = qtn_mode_sap;
- }
-
-RESOURCE TBUF r_activeidle_cug_indicator_format
- {
- buf = qtn_cug_indic_group;
- }
-
-RESOURCE TBUF r_ai_opn_spn_separator_format
- {
- buf = qtn_ai_opn_spn_separator;
- }
--- a/idlefw/plugins/devicestatus/src/aimcnpublisher.cpp Wed Mar 03 15:38:34 2010 +0200
+++ b/idlefw/plugins/devicestatus/src/aimcnpublisher.cpp Wed May 12 13:36:47 2010 +0300
@@ -15,9 +15,8 @@
*
*/
-
+#include <aicontentobserver.h>
#include "aimcnpublisher.h"
-#include "aicontentobserver.h"
#include "ainetworkinfolistener.h"
@@ -61,7 +60,7 @@
void CAiMCNPublisher::Subscribe( MAiContentObserver& aObserver,
- MAiPropertyExtension& aExtension,
+ CHsContentPublisher& aExtension,
MAiPublishPrioritizer& /*aPrioritizer*/,
MAiPublisherBroadcaster& /*aBroadcaster*/ )
{
--- a/idlefw/plugins/devicestatus/src/aimulticontentobserver.cpp Wed Mar 03 15:38:34 2010 +0200
+++ b/idlefw/plugins/devicestatus/src/aimulticontentobserver.cpp Wed May 12 13:36:47 2010 +0300
@@ -16,7 +16,6 @@
*
*/
-
#include "aimulticontentobserver.h"
#include "aicontentobserveroptimizer.h"
@@ -103,7 +102,7 @@
}
-TBool CAiMultiContentObserver::CanPublish( MAiPropertyExtension& aPlugin,
+TBool CAiMultiContentObserver::CanPublish( CHsContentPublisher& aPlugin,
TInt aContent,
TInt aIndex )
{
@@ -119,7 +118,7 @@
}
-TInt CAiMultiContentObserver::Publish( MAiPropertyExtension& aPlugin,
+TInt CAiMultiContentObserver::Publish( CHsContentPublisher& aPlugin,
TInt aContent,
TInt aResource,
TInt aIndex )
@@ -138,7 +137,7 @@
}
-TInt CAiMultiContentObserver::Publish( MAiPropertyExtension& aPlugin,
+TInt CAiMultiContentObserver::Publish( CHsContentPublisher& aPlugin,
TInt aContent,
const TDesC16& aText,
TInt aIndex )
@@ -157,7 +156,7 @@
}
-TInt CAiMultiContentObserver::Publish( MAiPropertyExtension& aPlugin,
+TInt CAiMultiContentObserver::Publish( CHsContentPublisher& aPlugin,
TInt aContent,
const TDesC8& aBuf,
TInt aIndex )
@@ -176,7 +175,7 @@
}
-TInt CAiMultiContentObserver::Publish( MAiPropertyExtension& aPlugin,
+TInt CAiMultiContentObserver::Publish( CHsContentPublisher& aPlugin,
TInt aContent,
RFile& aFile,
TInt aIndex )
@@ -195,7 +194,7 @@
}
-TInt CAiMultiContentObserver::Clean( MAiPropertyExtension& aPlugin,
+TInt CAiMultiContentObserver::Clean( CHsContentPublisher& aPlugin,
TInt aContent,
TInt aIndex )
{
@@ -219,12 +218,12 @@
}
TBool CAiMultiContentObserver::RequiresSubscription(
- const TAiPublisherInfo& /*aPublisherInfo*/ ) const
+ const THsPublisherInfo& /*aPublisherInfo*/ ) const
{
return ETrue;
}
-TInt CAiMultiContentObserver::SetProperty( MAiPropertyExtension& /*aPlugin*/,
+TInt CAiMultiContentObserver::SetProperty( CHsContentPublisher& /*aPlugin*/,
const TDesC8& /*aElementId*/,
const TDesC8& /*aPropertyName*/,
const TDesC8& /*aPropertyValue*/ )
@@ -232,7 +231,7 @@
return KErrNotSupported;
}
-TInt CAiMultiContentObserver::SetProperty( MAiPropertyExtension& /*aPlugin*/,
+TInt CAiMultiContentObserver::SetProperty( CHsContentPublisher& /*aPlugin*/,
const TDesC8& /*aElementId*/,
const TDesC8& /*aPropertyName*/,
const TDesC8& /*aPropertyValue*/,
@@ -241,7 +240,17 @@
return KErrNotSupported;
}
+void CAiMultiContentObserver::ClearBlackList()
+ {
+ const TInt count = iObserverOptimizers.Count();
+ for ( TInt i = 0; i < count; ++i )
+ {
+ iObserverOptimizers[i]->ClearBlackList();
+ }
+ }
+
CAiMultiContentObserver::CAiMultiContentObserver()
{
}
+// End of file
--- a/idlefw/plugins/devicestatus/src/ainetworkinfolistener.cpp Wed Mar 03 15:38:34 2010 +0200
+++ b/idlefw/plugins/devicestatus/src/ainetworkinfolistener.cpp Wed May 12 13:36:47 2010 +0300
@@ -1,5 +1,5 @@
/*
-* Copyright (c) 2005-2006 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2005-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"
@@ -21,6 +21,8 @@
#include "ainetworkinfolistener.h"
#include "ainetworkinfoobserver.h"
#include "debug.h"
+#include <exterror.h> // for KErrGsmMMNetworkFailure
+#include <featmgr.h> // for FeatureManager
const TInt KAiMessageCacheGranularity = 4;
@@ -39,7 +41,6 @@
//Create network handling engine session.
iSession = CreateL( *this, iInfo );
-
iShowOpInd = EFalse;
//Create message cache
iMessageCache = new( ELeave )CArrayFixFlat
@@ -114,8 +115,7 @@
User::LeaveIfError( iObservers.Insert( &aObserver, freeSlot ) );
}
}
-
-
+
void CAiNetworkInfoListener::RemoveObserver( MAiNetworkInfoObserver& aObserver )
{
//Remove observer, removing is done by replacing it with NULL pointer.
@@ -162,24 +162,19 @@
{
err = KErrNone;
}
-
if( err != KErrNone )
{
- return;
+ return;
}
iShowOpInd = !NotAllowedToDisplayOperatorIndicator( aMessage );
-
-
+
TBool hasNetInfoChanged = HasNetworkInfoChanged( aMessage );
-
if ( !hasNetInfoChanged )
{
return;
}
-
__PRINT(__DBG_FORMAT("XAI: Show operator indicator %d, info changed %d"), iShowOpInd, hasNetInfoChanged );
-
const TInt count( iObservers.Count() );
@@ -206,6 +201,9 @@
void CAiNetworkInfoListener::HandleNetworkError( const TNWOperation aOperation, TInt aErrorCode )
{
__PRINT(__DBG_FORMAT("XAI: Error code %d"), aErrorCode );
+
+ TNWMessages errorCode = TNWMessages( KErrGeneral );
+
switch ( aOperation )
{
case MNWMessageObserver::ENWGetNetworkProviderName:
@@ -228,14 +226,22 @@
iInfo.iPLMNField.Zero();
__PRINTS("XAI: SPN error received");
break;
+ case MNWMessageObserver::ENWNotifyNetworkRegistrationStatusChange:
+ if ( FeatureManager::FeatureSupported( KFeatureIdFfManualSelectionPopulatedPlmnList )
+ && ( KErrGsmMMNetworkFailure == aErrorCode ) )
+ {
+ errorCode = static_cast<TNWMessages>( aErrorCode );
+ }
+ __PRINTS("XAI: ENWNotifyNetworkRegistrationStatusChange error received");
+
+ break;
default:
break;
}
-
- HandleNetworkMessage( TNWMessages( KErrGeneral ) );
+
+ HandleNetworkMessage( errorCode );
}
-
-
+
TBool CAiNetworkInfoListener::NotAllowedToDisplayOperatorIndicator( const TNWMessages aMessage )
{
// Service provider name must have been fetched.
@@ -243,7 +249,8 @@
// Registration status and network information must have been received.
// Operator name information must have been received.
// Device must be camped to a network.
-
+
+ TBool csAlphaFlag( EFalse );
switch ( aMessage )
{
case MNWMessageObserver::ENWMessageNetworkInfoChange:
@@ -277,7 +284,24 @@
iReceivedMessageFlags &=
~( EProgrammableOperatorInfoReceived +
EProgrammableOperatorInfoReceivedOk );
- break;
+ break;
+ case MNWMessageObserver::ENWMessageDynamicCapsChange:
+ TRAPD(fmerr, FeatureManager::InitializeLibL());
+ if ( fmerr == KErrNone )
+ {
+ if( FeatureManager::FeatureSupported(
+ KFeatureIdFfDisplayNetworkNameAfterCsRegistration ))
+ {
+ // CS flag is EFalse, alpha tag should not be shown.
+ if ( !( RPacketService::KCapsRxCSCall &
+ iInfo.iDynamicCapsFlags ) )
+ {
+ csAlphaFlag = ETrue;
+ }
+ }
+ FeatureManager::UnInitializeLib();
+ }
+ break;
default:
break;
}
@@ -298,7 +322,7 @@
!networkProviderNameFetched ||
!( registrationStatusReceived && networkInformationReceived
&& operatorNameInformationReceived ) ||
- !currentNetworkOk;
+ !currentNetworkOk || csAlphaFlag;
}
@@ -309,7 +333,9 @@
// pass through
if ( aMessage == MNWMessageObserver::ENWMessageCurrentHomeZoneMessage ||
aMessage == MNWMessageObserver::ENWMessageNetworkConnectionFailure ||
- aMessage == MNWMessageObserver::ENWMessageCurrentCellInfoMessage )
+ aMessage == MNWMessageObserver::ENWMessageCurrentCellInfoMessage ||
+ aMessage == static_cast<TNWMessages>( KErrGsmMMNetworkFailure )
+ )
{
return result;
}
@@ -337,6 +363,17 @@
iOldInfo.iServiceProviderNameDisplayReq ||
iInfo.iNPName != iOldInfo.iNPName ||
iInfo.iPLMNField != iOldInfo.iPLMNField;
+ TRAPD(fmerr, FeatureManager::InitializeLibL());
+ if ( fmerr == KErrNone )
+ {
+ if( FeatureManager::FeatureSupported(
+ KFeatureIdFfDisplayNetworkNameAfterCsRegistration ))
+ {
+ result = result ||
+ iInfo.iDynamicCapsFlags != iOldInfo.iDynamicCapsFlags;
+ }
+ FeatureManager::UnInitializeLib();
+ }
}
iOldReceivedMessageFlags = iReceivedMessageFlags;
--- a/idlefw/plugins/devicestatus/src/ainwspublisher.cpp Wed Mar 03 15:38:34 2010 +0200
+++ b/idlefw/plugins/devicestatus/src/ainwspublisher.cpp Wed May 12 13:36:47 2010 +0300
@@ -17,7 +17,7 @@
#include "ainwspublisher.h"
-#include "aicontentobserver.h"
+#include <aicontentobserver.h>
#include "ainetworkinfolistener.h"
#include <activeidle2domainpskeys.h>
@@ -73,7 +73,7 @@
void CAiNwsPublisher::Subscribe( MAiContentObserver& aObserver,
- MAiPropertyExtension& aExtension,
+ CHsContentPublisher& aExtension,
MAiPublishPrioritizer& /*aPrioritizer*/,
MAiPublisherBroadcaster& /*aBroadcaster*/ )
{
--- a/idlefw/plugins/devicestatus/src/aioperatorlogopublisher.cpp Wed Mar 03 15:38:34 2010 +0200
+++ b/idlefw/plugins/devicestatus/src/aioperatorlogopublisher.cpp Wed May 12 13:36:47 2010 +0300
@@ -35,9 +35,9 @@
#include <AknStatuspaneUtils.h>
#include <AknUtils.h>
#include <aipspropertyobserver.h>
+#include <aidevicestatuscontentmodel.h>
#include "aioperatorlogopublisher.h"
#include "ainetworkinfolistener.h"
-#include "aidevicestatuscontentmodel.h"
#include "aiprioritizer.h"
#include "ainwidpriorities.h"
#include "debug.h"
@@ -127,16 +127,23 @@
const TBool aShowOpInd )
{
__PRINT(__DBG_FORMAT("CAiOperatorLogoPublisher:: HandleNetworkInfoChange >> aShowOpInd %d "), aShowOpInd);
- if( aShowOpInd )
- {
- TRAP_IGNORE(UpdateOperatorLogoL( ETrue ));
- }
- else
- {
- TRAP_IGNORE (iPrioritizer->TryToCleanL( *iBroadcaster,
- EAiDeviceStatusContentNetworkIdentity,
- iPriority ));
- }
+
+ if ( iSuspended )
+ {
+ __PRINTS("CAiOperatorLogoPublisher:: HandleNetworkInfoChange - suspended <<");
+ return;
+ }
+
+ if( aShowOpInd )
+ {
+ TRAP_IGNORE( UpdateOperatorLogoL( ETrue ) );
+ }
+ else
+ {
+ TRAP_IGNORE (iPrioritizer->TryToCleanL( *iBroadcaster,
+ EAiDeviceStatusContentNetworkIdentity,
+ iPriority ));
+ }
__PRINTS("CAiOperatorLogoPublisher:: HandleNetworkInfoChange <<");
}
@@ -154,7 +161,7 @@
void CAiOperatorLogoPublisher::Subscribe( MAiContentObserver& aObserver,
- MAiPropertyExtension& aExtension,
+ CHsContentPublisher& aExtension,
MAiPublishPrioritizer& aPrioritizer,
MAiPublisherBroadcaster& aBroadcaster )
{
@@ -172,7 +179,6 @@
__PRINTS("CAiOperatorLogoPublisher:: RefresL << ");
}
-
CFbsBitmap* CAiOperatorLogoPublisher::LoadLogoL( TInt aMCC,
TInt aMNC )
{
@@ -233,6 +239,15 @@
{
__PRINT(__DBG_FORMAT("CAiOperatorLogoPublisher:: UpdateOperatorLogoL >> aClean %d"), aClean);
iSuccess = EFalse;
+
+ if ( iSuspended )
+ {
+ // EAiDeviceStatusContentNetworkIdentity is suspended
+
+ __PRINTS("CAiOperatorLogoPublisher:: UpdateOperatorLogoL - suspended <<");
+ return;
+ }
+
if( aClean )
{
iPrioritizer->TryToCleanL( *iBroadcaster,
@@ -493,10 +508,11 @@
TBool CAiOperatorLogoPublisher::RefreshL( TInt aContentId, TBool aClean )
- {
-
- if(aContentId == EAiDeviceStatusContentNetworkIdentity )
+ {
+ if ( aContentId == EAiDeviceStatusContentNetworkIdentity )
{
+ iSuspended = EFalse;
+
__PRINTS("CAiOperatorLogoPublisher:: RefreshL >> ");
RefreshL( aClean );
if( iSuccess )
@@ -506,9 +522,21 @@
}
__PRINTS("CAiOperatorLogoPublisher:: RefreshL << failed ");
}
+
return EFalse;
}
+TBool CAiOperatorLogoPublisher::SuspendL( TInt aContentId, TBool /*aClean*/ )
+ {
+ if ( aContentId == EAiDeviceStatusContentNetworkIdentity )
+ {
+ iSuspended = ETrue;
+
+ return ETrue;
+ }
+
+ return EFalse;
+ }
TInt CAiOperatorLogoPublisher::HandleOperatorLogoUpdateL( TAny *aPtr )
{
--- a/idlefw/plugins/devicestatus/src/aioperatornamepublisher.cpp Wed Mar 03 15:38:34 2010 +0200
+++ b/idlefw/plugins/devicestatus/src/aioperatornamepublisher.cpp Wed May 12 13:36:47 2010 +0300
@@ -20,10 +20,16 @@
#include <centralrepository.h>
#include <avkondomainpskeys.h>
#include <e32property.h>
+#include <aidevicestatuscontentmodel.h>
+#include <ProEngFactory.h>
+#include <MProfileEngine.h>
+#include <MProfile.h>
+#include <MProfileName.h>
+#include <MProEngNotifyHandler.h>
+
#include <aidevstaplgres.rsg>
#include "aioperatornamepublisher.h"
#include "ainetworkinfolistener.h"
-#include "aidevicestatuscontentmodel.h"
#include "aiprioritizer.h"
#include "ainwidpriorities.h"
#include "activeidle2domaincrkeys.h"
@@ -35,6 +41,7 @@
const TInt KBitShiftByFour = 4;
const TInt KIsDigitLowLimit = 0;
const TInt KIsDigitHighLimit = 10;
+const TInt KOfflineProfileId = 5;
LOCAL_C void AppendDigit( TDes& aCode, TInt aValue )
{
@@ -74,6 +81,9 @@
{
iListener = CAiNetworkInfoListener::InstanceL();
iPeriodic = CPeriodic::NewL( CActive::EPriorityStandard );
+ iProfileEngine = CreateProfileEngineL();
+ iProfileNotifier = ProEngFactory::NewNotifyHandlerL();
+ iProfileNotifier->RequestProfileActivationNotificationsL( *this );
}
@@ -99,6 +109,15 @@
iPeriodic->Cancel();
delete iPeriodic;
}
+ if ( iProfileNotifier )
+ {
+ iProfileNotifier->CancelAll();
+ delete iProfileNotifier;
+ }
+ if( iProfileEngine )
+ {
+ iProfileEngine->Release();
+ }
}
@@ -113,23 +132,30 @@
const TNWInfo& /*aInfo*/,
const TBool aShowOpInd )
{
- if( aShowOpInd )
- {
- TRAP_IGNORE ( RefreshL( ETrue ));
- }
- else
- {
- TRAP_IGNORE (
- iPrioritizer->TryToCleanL( *iBroadcaster,
- EAiDeviceStatusContentNetworkIdentity,
- iPriority ));
- }
-
+ if ( iSuspended )
+ {
+ return;
+ }
+
+ if( aShowOpInd )
+ {
+ TRAP_IGNORE ( RefreshL( ETrue ));
+ }
+ else
+ {
+ if ( iProfileEngine->ActiveProfileId() != KOfflineProfileId )
+ {
+ TRAP_IGNORE (
+ iPrioritizer->TryToCleanL( *iBroadcaster,
+ EAiDeviceStatusContentNetworkIdentity,
+ iPriority ));
+ }
+ }
}
void CAiOperatorNamePublisher::Subscribe( MAiContentObserver& /*aObserver*/,
- MAiPropertyExtension& aExtension,
+ CHsContentPublisher& aExtension,
MAiPublishPrioritizer& aPrioritizer,
MAiPublisherBroadcaster& aBroadcaster )
{
@@ -143,6 +169,24 @@
{
iSuccess = EFalse;
+ if ( iSuspended )
+ {
+ return;
+ }
+
+ if ( iProfileEngine->ActiveProfileId() == KOfflineProfileId )
+ {
+ MProfile* profile = iProfileEngine->ActiveProfileLC();
+ const MProfileName& name = profile->ProfileName();
+ iPrioritizer->TryToPublishL( *iBroadcaster,
+ EAiDeviceStatusContentNetworkIdentity,
+ name.Name(),
+ iPriority );
+ iSuccess = ETrue;
+ CleanupStack::PopAndDestroy();//profile
+ return;
+ }
+
if( aClean )
{
iPrioritizer->TryToCleanL( *iBroadcaster,
@@ -610,10 +654,13 @@
TBool CAiOperatorNamePublisher::RefreshL( TInt aContentId, TBool aClean )
{
- if( aContentId == EAiDeviceStatusContentNetworkIdentity )
+ if ( aContentId == EAiDeviceStatusContentNetworkIdentity )
{
+ iSuspended = EFalse;
+
RefreshL( aClean );
- if( iSuccess )
+
+ if ( iSuccess )
{
return ETrue;
}
@@ -622,6 +669,17 @@
return EFalse;
}
+TBool CAiOperatorNamePublisher::SuspendL( TInt aContentId, TBool /*aClean*/ )
+ {
+ if ( aContentId == EAiDeviceStatusContentNetworkIdentity )
+ {
+ iSuspended = ETrue;
+
+ return ETrue;
+ }
+
+ return EFalse;
+ }
TBool CAiOperatorNamePublisher::RefreshContentWithPriorityL(
TInt aContentId,
@@ -708,3 +766,8 @@
}
}
+void CAiOperatorNamePublisher::HandleProfileActivatedL( TInt /*aProfileId*/ )
+ {
+ RefreshL( EFalse );
+ }
+
--- a/idlefw/plugins/devicestatus/src/aipublisherfactory.cpp Wed Mar 03 15:38:34 2010 +0200
+++ b/idlefw/plugins/devicestatus/src/aipublisherfactory.cpp Wed May 12 13:36:47 2010 +0300
@@ -19,7 +19,6 @@
#include "aipublisherfactory.h"
// Publishers
-#include "aiprofilepublisher.h"
#include "aidatepublisher.h"
#include "aioperatorlogopublisher.h"
#include "aioperatornamepublisher.h"
@@ -54,14 +53,6 @@
}
};
-
-MAiDeviceStatusPublisher* AiPublisherFactory::CreateProfilePublisherL()
- {
- TPublisherFactory<CAiProfilePublisher> factory;
- return factory.CreatePublisherL();
- }
-
-
MAiDeviceStatusPublisher* AiPublisherFactory::CreateDatePublisherL()
{
TPublisherFactory<CAiDatePublisher> factory;
--- a/idlefw/plugins/devicestatus/src/aipublishprioritizer.cpp Wed Mar 03 15:38:34 2010 +0200
+++ b/idlefw/plugins/devicestatus/src/aipublishprioritizer.cpp Wed May 12 13:36:47 2010 +0300
@@ -18,16 +18,16 @@
#include "aipublishprioritizer.h"
#include "ainwidpriorities.h"
-#include "aidevicestatuscontentmodel.h"
+#include <aidevicestatuscontentmodel.h>
#include <aicontentrequest.h>
-#include "aipropertyextension.h"
+
#include "aipublisherbroadcaster.h"
#include "debug.h"
CAiPublishPrioritizer::CAiPublishPrioritizer(
MAiContentObserver& aContentObserver,
- MAiPropertyExtension& aPropertyExtension )
+ CHsContentPublisher& aPropertyExtension )
: iContentObserver( aContentObserver ),
iPropertyExtension( aPropertyExtension ),
iPriority( EAiInvalidPriority )
@@ -37,7 +37,7 @@
CAiPublishPrioritizer* CAiPublishPrioritizer::NewL(
MAiContentObserver& aContentObserver,
- MAiPropertyExtension& aPropertyExtension )
+ CHsContentPublisher& aPropertyExtension )
{
return new( ELeave ) CAiPublishPrioritizer( aContentObserver,
aPropertyExtension );
--- a/idlefw/plugins/devicestatus/src/aisimregpublisher.cpp Wed Mar 03 15:38:34 2010 +0200
+++ b/idlefw/plugins/devicestatus/src/aisimregpublisher.cpp Wed May 12 13:36:47 2010 +0300
@@ -17,7 +17,7 @@
#include "aisimregpublisher.h"
-#include "aicontentobserver.h"
+#include <aicontentobserver.h>
#include "ainetworkinfolistener.h"
#include <activeidle2domainpskeys.h>
#include <e32property.h>
@@ -80,7 +80,7 @@
void CAiSimRegPublisher::Subscribe( MAiContentObserver& aObserver,
- MAiPropertyExtension& aExtension,
+ CHsContentPublisher& aExtension,
MAiPublishPrioritizer& /*aPrioritizer*/,
MAiPublisherBroadcaster& /*aBroadcaster*/ )
{
--- a/idlefw/plugins/devicestatus/src/aivhzpublisher.cpp Wed Mar 03 15:38:34 2010 +0200
+++ b/idlefw/plugins/devicestatus/src/aivhzpublisher.cpp Wed May 12 13:36:47 2010 +0300
@@ -19,7 +19,7 @@
#include <centralrepository.h>
#include "activeidle2domaincrkeys.h"
#include "aivhzpublisher.h"
-#include "aicontentobserver.h"
+#include <aicontentobserver.h>
#include "ainetworkinfolistener.h"
@@ -74,7 +74,7 @@
void CAiVHZPublisher::Subscribe( MAiContentObserver& aObserver,
- MAiPropertyExtension& aExtension,
+ CHsContentPublisher& aExtension,
MAiPublishPrioritizer& /*aPrioritizer*/,
MAiPublisherBroadcaster& /*aBroadcaster*/ )
{
--- a/idlefw/plugins/group/aidevstaplg.mmp Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,89 +0,0 @@
-/*
-* Copyright (c) 2002-2005 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 <platform_paths.hrh>
-#include <data_caging_paths.hrh>
-
-TARGET aidevstaplg.dll
-TARGETTYPE PLUGIN
-UID 0x10009D8D 0x102750F7
-VENDORID VID_DEFAULT
-CAPABILITY CAP_ECOM_PLUGIN
-
-SOURCEPATH ../devicestatus/src
-SOURCE aidevicestatusplugin.cpp
-SOURCE aidevicestatuspluginengine.cpp
-SOURCE aimulticontentobserver.cpp
-SOURCE aiprofilepublisher.cpp
-SOURCE aidatepublisher.cpp
-SOURCE aipublisherfactory.cpp
-SOURCE ainetworkinfolistener.cpp
-SOURCE aioperatornamepublisher.cpp
-SOURCE aibtsappublisher.cpp
-SOURCE aisimregpublisher.cpp
-SOURCE aimcnpublisher.cpp
-SOURCE aicugpublisher.cpp
-SOURCE aicugmcnpublisher.cpp
-SOURCE aivhzpublisher.cpp
-SOURCE aipublishprioritizer.cpp
-SOURCE aicontentobserveroptimizer.cpp
-SOURCE aioperatorlogopublisher.cpp
-SOURCE ainwspublisher.cpp
-
-START RESOURCE aidevstaplg.rss
-TARGET aidevstaplg.rsc
-END
-
-START RESOURCE aidevstaplgres.rss
-HEADER
-TARGET aidevstaplgres.rsc
-TARGETPATH APP_RESOURCE_DIR
-LANGUAGE_IDS
-END
-
-USERINCLUDE .
-
-USERINCLUDE ../devicestatus/inc
-USERINCLUDE ../devicestatus/loc
-USERINCLUDE ../../inc/common
-USERINCLUDE ../../cenrep
-
-APP_LAYER_SYSTEMINCLUDE
-
-LIBRARY euser.lib
-LIBRARY ecom.lib
-LIBRARY avkon.lib
-LIBRARY sssettings.lib
-LIBRARY profileeng.lib
-LIBRARY networkhandling.lib
-LIBRARY phoneclient.lib
-LIBRARY fbscli.lib
-LIBRARY cone.lib
-LIBRARY commonengine.lib
-LIBRARY featmgr.lib
-LIBRARY centralrepository.lib
-LIBRARY cenrepnotifhandler.lib
-LIBRARY egul.lib
-LIBRARY aknlayout2scalable.lib
-LIBRARY cdlengine.lib
-LIBRARY gdi.lib
-LIBRARY bitgdi.lib
-LIBRARY aiutils.lib
-LIBRARY flogger.lib
-LIBRARY bafl.lib
-
--- a/idlefw/plugins/group/aiwsplugin.mmp Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,60 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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: This is project specification for idle window server plug-
-* in. The plug-in provides service for routing of numeric key
-* events to Phone application and activation of key lock.
-*
-*/
-
-#include <platform_paths.hrh>
-
-TARGET aiwsplugin.dll
-TARGETTYPE ANI
-UID 0x10003B22 0x10207206
-CAPABILITY CAP_GENERAL_DLL
-VENDORID VID_DEFAULT
-
-USERINCLUDE ../wsplugin/inc
-USERINCLUDE ../../inc/common
-APP_LAYER_SYSTEMINCLUDE
-
-SOURCEPATH ../wsplugin/src
-SOURCE aiwspluginanimdll.cpp
-SOURCE aiwspluginanim.cpp
-SOURCE modifierkeytracker.cpp
-SOURCE keylockhandler.cpp
-SOURCE keylockstates.cpp
-SOURCE keypadsettings.cpp
-SOURCE numerickeyhandler.cpp
-SOURCE logslaunchhandler.cpp
-SOURCE sindlaunchhandler.cpp
-SOURCE keyhandlertimer.cpp
-SOURCE panic.cpp
-
-
-LIBRARY euser.lib
-LIBRARY cone.lib
-LIBRARY ws32.lib
-LIBRARY apgrfx.lib
-LIBRARY centralrepository.lib
-LIBRARY flogger.lib
-
-LIBRARY featmgr.lib
-LIBRARY cenrepnotifhandler.lib
-LIBRARY ptiengine.lib
-LIBRARY keylockpolicyapi.lib
-
-LIBRARY aiutils.lib
-
-// End of File
--- a/idlefw/plugins/group/bld.inf Wed Mar 03 15:38:34 2010 +0200
+++ b/idlefw/plugins/group/bld.inf Wed May 12 13:36:47 2010 +0300
@@ -11,7 +11,7 @@
*
* Contributors:
*
-* Description: Bld.inf for all plugins under ActiveIdle2 project.
+* Description: Bld.inf for all plugins under idlefw project.
*
*/
@@ -22,20 +22,17 @@
DEFAULT
PRJ_MMPFILES
-aidevstaplg.mmp
-aiwsplugin.mmp
PRJ_EXPORTS
-../wsplugin/rom/aiwsplugin.iby CORE_MW_LAYER_IBY_EXPORT_PATH(aiwsplugin.iby)
// Include bld.inf-files of new plugins here
-#include "../shortcutplugin/group/bld.inf"
-//#include "../pslnactiveidleplugin/group/bld.inf"
+#include "../devicestatus/group/bld.inf"
#include "../profileplugin/group/bld.inf"
#include "../sapidataplugin/group/bld.inf"
#include "../wrtdataplugin/group/bld.inf"
#include "../mcsplugin/group/bld.inf"
+#include "../wsplugin/group/bld.inf"
#endif // RD_CUSTOMIZABLE_AI
--- a/idlefw/plugins/mcsplugin/commoninc/mcspluginwatcher.h Wed Mar 03 15:38:34 2010 +0200
+++ b/idlefw/plugins/mcsplugin/commoninc/mcspluginwatcher.h Wed May 12 13:36:47 2010 +0300
@@ -86,15 +86,6 @@
void WatchNotify( MMCSPluginWatcherObserver* aObserver );
/**
- * StopAndWatch
- *
- * @param aOperation
- * @param aWaitScheduler
- */
- void StopAndWatch( CMenuOperation* aOperation,
- CActiveSchedulerWait* aWaitScheduler );
-
- /**
* GetStatus
*/
TInt GetStatus();
@@ -130,12 +121,6 @@
* Owned
*/
CMenuOperation* iOperation;
-
- /**
- * Wait scheduler
- * Not owned
- */
- CActiveSchedulerWait* iWaitScheduler;
/**
* Observer reference
--- a/idlefw/plugins/mcsplugin/commonsrc/mcspluginwatcher.cpp Wed Mar 03 15:38:34 2010 +0200
+++ b/idlefw/plugins/mcsplugin/commonsrc/mcspluginwatcher.cpp Wed May 12 13:36:47 2010 +0300
@@ -79,15 +79,6 @@
SetActive();
}
-void CMCSPluginWatcher::StopAndWatch( CMenuOperation* aOperation,
- CActiveSchedulerWait* aWaitScheduler )
- {
- __ASSERT_DEBUG( KRequestPending == iStatus.Int(), User::Invariant() );
- iWaitScheduler = aWaitScheduler;
- iOperation = aOperation;
- SetActive();
- }
-
// ---------------------------------------------------------------------------
// Inherited from CActive class
// ---------------------------------------------------------------------------
@@ -100,11 +91,7 @@
{
iObserver->HandleNotifyL();
}
- if ( iWaitScheduler && iWaitScheduler->IsStarted() )
- {
- Cancel();
- iWaitScheduler->AsyncStop();
- }
+
//CActiveScheduler::Stop();
}
--- a/idlefw/plugins/mcsplugin/data/mcsplugin.rss Wed Mar 03 15:38:34 2010 +0200
+++ b/idlefw/plugins/mcsplugin/data/mcsplugin.rss Wed May 12 13:36:47 2010 +0300
@@ -18,6 +18,7 @@
// INCLUDES
#include <ecom/registryinfov2.rh>
+#include <hscontentpublisheruid.hrh>
#include "mcspluginuids.hrh"
@@ -41,7 +42,7 @@
INTERFACE_INFO
{
// UID of interface that is implemented
- interface_uid = AI_UID_ECOM_INTERFACE_CONTENTPUBLISHER;
+ interface_uid = HS_UID_ECOM_INTERFACE_CONTENTPUBLISHER;
implementations =
{
--- a/idlefw/plugins/mcsplugin/data/mcspluginres.rss Wed Mar 03 15:38:34 2010 +0200
+++ b/idlefw/plugins/mcsplugin/data/mcspluginres.rss Wed May 12 13:36:47 2010 +0300
@@ -42,7 +42,8 @@
//----------------------------------------------------
// R_MCS_DISABLE_OPEN_ITEM
-// Contains application information.
+// Dialog text: Item cannot be run because of backup
+// state
//----------------------------------------------------
//
RESOURCE TBUF r_mcs_disable_open_item
@@ -51,6 +52,18 @@
}
//----------------------------------------------------
+// R_MCS_DISABLE_OPEN_ITEM_MISSING
+// Dialog text: Item cannot be opened because of it is
+// missing
+//----------------------------------------------------
+//
+RESOURCE TBUF r_mcs_disable_open_item_missing
+{
+ buf = qtn_mcs_disable_open_item_missing;
+}
+
+
+//----------------------------------------------------
// R_MCS_DISABLE_OPEN_ITEM_DLG
// Contains application information.
//----------------------------------------------------
--- a/idlefw/plugins/mcsplugin/data/mcspluginuids.hrh Wed Mar 03 15:38:34 2010 +0200
+++ b/idlefw/plugins/mcsplugin/data/mcspluginuids.hrh Wed May 12 13:36:47 2010 +0300
@@ -19,8 +19,6 @@
#ifndef MCSPLUGINUIDS_HRH
#define MCSPLUGINUIDS_HRH
-#include <platform/mw/aicontentpublisheruid.hrh>
-
/**
* Ecom dll uid for MCS plug-in.
*/
--- a/idlefw/plugins/mcsplugin/group/bld.inf Wed Mar 03 15:38:34 2010 +0200
+++ b/idlefw/plugins/mcsplugin/group/bld.inf Wed May 12 13:36:47 2010 +0300
@@ -46,7 +46,9 @@
OPTION SOURCES -c8,8 qgn_prop_ai_shortcut -c8,8 qgn_menu_url \
-c8,8 qgn_menu_mce_sel_mes -c8,8 qgn_menu_mce_syncmail \
-c8,8 qgn_menu_am -c8,8 qgn_prop_cp_conn_shortcut \
- -c8,8 qgn_prop_psln_ai_sub -c8,8 qgn_mcsplugin_log_out
+ -c8,8 qgn_prop_psln_ai_sub -c8,8 qgn_mcsplugin_log_out \
+ -c8,8 qgn_menu_mce_postcard -c8,8 qgn_menu_mce_email \
+ -c8,8 qgn_menu_mce_audio -c8,8 qgn_menu_mce_gene
END
--- a/idlefw/plugins/mcsplugin/group/mcsplugin.mmp Wed Mar 03 15:38:34 2010 +0200
+++ b/idlefw/plugins/mcsplugin/group/mcsplugin.mmp Wed May 12 13:36:47 2010 +0300
@@ -41,15 +41,15 @@
APP_LAYER_SYSTEMINCLUDE
-SOURCEPATH ../data
-START RESOURCE mcsplugin.rss
-TARGET mcsplugin.rsc
+SOURCEPATH ../data
+START RESOURCE mcsplugin.rss
+TARGET mcsplugin.rsc
END
-START RESOURCE mcspluginres.rss
+START RESOURCE mcspluginres.rss
HEADER
-TARGET mcspluginres.rsc
-TARGETPATH RESOURCE_FILES_DIR
+TARGET mcspluginres.rsc
+TARGETPATH RESOURCE_FILES_DIR
LANGUAGE_IDS
END
LIBRARY euser.lib
@@ -78,9 +78,7 @@
LIBRARY eikdlg.lib
LIBRARY commonengine.lib
LIBRARY favouritesengine.lib
-
+LIBRARY viewcli.lib
LIBRARY gfxtrans.lib
-LIBRARY centralrepository.lib
-
// End of File
--- a/idlefw/plugins/mcsplugin/group/mcspluginhandler.mmp Wed Mar 03 15:38:34 2010 +0200
+++ b/idlefw/plugins/mcsplugin/group/mcspluginhandler.mmp Wed May 12 13:36:47 2010 +0300
@@ -45,6 +45,7 @@
LIBRARY viewcli.lib
LIBRARY apparc.lib
LIBRARY apgrfx.lib
+LIBRARY msgs.lib
SOURCEPATH ../data
START RESOURCE mcspluginhandler.rss
--- a/idlefw/plugins/mcsplugin/group/mcspluginsettings.mmp Wed Mar 03 15:38:34 2010 +0200
+++ b/idlefw/plugins/mcsplugin/group/mcspluginsettings.mmp Wed May 12 13:36:47 2010 +0300
@@ -58,36 +58,27 @@
APP_LAYER_SYSTEMINCLUDE
MW_LAYER_SYSTEMINCLUDE
-LIBRARY euser.lib
-LIBRARY ecom.lib
-LIBRARY avkon.lib
-LIBRARY bafl.lib
-LIBRARY cone.lib
-LIBRARY efsrv.lib
-LIBRARY eikcoctl.lib
-LIBRARY eikcore.lib
-LIBRARY cdlengine.lib
-//LIBRARY centralrepository.lib
-LIBRARY cenrepnotifhandler.lib // CCenRepNotifyHandler
-LIBRARY gsframework.lib // For base classes
-LIBRARY gslistbox.lib // For CGSListBoxItemTextArray
-LIBRARY gsecomplugin.lib
-LIBRARY commonengine.lib // For RConeResourceLoader
-LIBRARY inetprotutil.lib // For TUriParser
-//LIBRARY apgrfx.lib // For RApaLsSession
-//LIBRARY apparc.lib // For TApaAppInfo
-LIBRARY msgs.lib // For Message Server
-LIBRARY platformenv.lib // For PathInfo
-LIBRARY hlplch.lib // for HlpLauncher
-LIBRARY featmgr.lib // For feature manager
-LIBRARY favouritesengine.lib
-//LIBRARY javaregistryclient.lib // For JavaRegistry
-#ifdef __WEB_WIDGETS
-//LIBRARY widgetregistryclient.lib
-#endif
+LIBRARY euser.lib
+LIBRARY ecom.lib
+LIBRARY avkon.lib
+LIBRARY bafl.lib
+LIBRARY cone.lib
+LIBRARY efsrv.lib
+LIBRARY eikcoctl.lib
+LIBRARY eikcore.lib
+LIBRARY cdlengine.lib
+LIBRARY cenrepnotifhandler.lib // CCenRepNotifyHandler
+LIBRARY gsframework.lib // For base classes
+LIBRARY gslistbox.lib // For CGSListBoxItemTextArray
+LIBRARY gsecomplugin.lib
+LIBRARY commonengine.lib // For RConeResourceLoader
+LIBRARY inetprotutil.lib // For TUriParser
+LIBRARY msgs.lib // For Message Server
+LIBRARY platformenv.lib // For PathInfo
+LIBRARY hlplch.lib // for HlpLauncher
+LIBRARY featmgr.lib // For feature manager
+LIBRARY favouritesengine.lib
-// Debugging dependencies
-//LIBRARY flogger.lib
LIBRARY mcsmenu.lib
LIBRARY hspluginsettings.lib
LIBRARY aiutils.lib
--- a/idlefw/plugins/mcsplugin/handler/inc/mcspluginhandler.h Wed Mar 03 15:38:34 2010 +0200
+++ b/idlefw/plugins/mcsplugin/handler/inc/mcspluginhandler.h Wed May 12 13:36:47 2010 +0300
@@ -20,8 +20,10 @@
#include <mcsmenuhandlerplugin.h>
+
#include <e32base.h>
#include <viewcli.h> // For CVwsSessionWrapper
+#include <msvapi.h> // For MMsvSessionObserver
#ifdef SYMBIAN_ENABLE_SPLIT_HEADERS
#include <viewclipartner.h>
#endif
@@ -31,6 +33,7 @@
class CEikonEnv;
class CVwsSessionWrapper;
+class CMsvSession;
/**
* @ingroup group_mcsplugin
@@ -39,7 +42,7 @@
*
* @since S60 9.1
*/
-NONSHARABLE_CLASS( CMCSPluginHandler ): public CMenuHandlerPlugin
+NONSHARABLE_CLASS( CMCSPluginHandler ): public CMenuHandlerPlugin, public MMsvSessionObserver
{
public: // construction
@@ -92,10 +95,29 @@
const TDesC8& aCommand,
const TDesC8& aParams,
TRequestStatus& aStatus );
-
+
+public: // from MMsvSessionObserver
+
+ /**
+ * Handles an event from the message server.
+ * Not used, but must be defined to be able to use the messaging server.
+ *
+ * @since S60 v3.2
+ * @param aEvent Indicates the event type.
+ * @param aArg1 Event type-specific argument value
+ * @param aArg2 Event type-specific argument value
+ * @param aArg3 Event type-specific argument value
+ */
+ void HandleSessionEventL( TMsvSessionEvent aEvent, TAny* aArg1, TAny* aArg2,
+ TAny* aArg3 );
+
+
+
private: // internal
void LaunchShortcutL( CMenuItem& aItem );
+
+ TInt GetEmailAccountCountL();
private: // data
@@ -107,6 +129,12 @@
*/
CVwsSessionWrapper* iVwsSession;
+ /**
+ * Message server session
+ * Own.
+ */
+ CMsvSession* iMsvSession;
+
};
#endif // __MCSPLUGINHANDLER_H__
--- a/idlefw/plugins/mcsplugin/handler/src/mcspluginhandler.cpp Wed Mar 03 15:38:34 2010 +0200
+++ b/idlefw/plugins/mcsplugin/handler/src/mcspluginhandler.cpp Wed May 12 13:36:47 2010 +0300
@@ -15,36 +15,38 @@
*
*/
+// System includes
#include <ecom/implementationproxy.h>
#include <eikenv.h>
#include <sendui.h>
#include <SendUiConsts.h>
-
-#include <mcsmenuutils.h>
-#include <mcsmenuitem.h>
-
#include <viewcli.h> // For CVwsSessionWrapper
#ifdef SYMBIAN_ENABLE_SPLIT_HEADERS
#include <viewclipartner.h>
#endif
#include <vwsdef.h> // For TVwsViewId
+#include <mcsmenuutils.h>
+#include <mcsmenuitem.h>
#include <mcspluginparamval.h>
#include <LogsUiCmdStarter.h>
+// User includes
#include "mcsplugincompletedoperation.h"
#include "mcspluginhandler.h"
#include "mcspluginuids.hrh"
-#include "aiscutdefs.h"
-class CVwsSessionWrapper;
-
+// Constants
_LIT( KMenuTypeShortcut, "menu:shortcut" ); ///< Menu folder type.
_LIT( KMenuAttrParamLogs, "logs:dialed" );
/** Argument value for parameter*/
_LIT( KMenuAttrParam, "param" );
+#define KMCSCmailUidValue 0x2001E277
+#define KMCSCmailMailboxViewIdValue 0x2
+#define KMCSCmailMtmUidValue 0x2001F406
+
const TInt KImplUidMCSPluginHandler = AI_UID_ECOM_IMPLEMENTATION_MCSPLUGIN_HANDLER;
const TImplementationProxy ImplementationTable[] =
@@ -61,6 +63,7 @@
CMCSPluginHandler::~CMCSPluginHandler()
{
delete iVwsSession;
+ delete iMsvSession;
}
// ---------------------------------------------------------
@@ -94,6 +97,7 @@
{
BaseConstructL();
iVwsSession = CVwsSessionWrapper::NewL();
+ iMsvSession = CMsvSession::OpenAsObserverL(*this);
}
// ---------------------------------------------------------
@@ -150,6 +154,20 @@
return NULL;
}
+// ---------------------------------------------------------------------------
+// From class MMsvSessionObserver.
+// Handles an event from the message server.
+// ---------------------------------------------------------------------------
+//
+void CMCSPluginHandler::HandleSessionEventL(
+ TMsvSessionEvent /*aEvent*/,
+ TAny* /*aArg1*/,
+ TAny* /*aArg2*/,
+ TAny* /*aArg3*/ )
+ {
+ // No event handling
+ }
+
// ---------------------------------------------------------
// Handles menu:shortcut specific commands
// Must be extended to launch e.g. MailBoxes
@@ -187,7 +205,15 @@
}
else if ( param == KParamValueEmail ) // New email
{
- sendUi->CreateAndSendMessageL( KSenduiMtmSmtpUid, NULL, KNullUid, EFalse );
+ if ( GetEmailAccountCountL() > 0 )
+ {
+ sendUi->CreateAndSendMessageL( KSenduiMtmSmtpUid, NULL, KNullUid, EFalse );
+ }
+ else
+ {
+ iVwsSession->StartApp( TUid::Uid( KMCSCmailUidValue ) );
+ }
+
}
#ifdef __SYNCML_DS_EMAIL
else if ( param == KParamValueSyncMLMail ) // New SyncML mail
@@ -205,19 +231,14 @@
}
else if ( param.Find( KParamValueMailbox ) != KErrNotFound ) // Mailbox
{
- TBool attrExists = ETrue;
TInt pos = param.Locate( TChar( ':' ) ) + 1;
TPtrC mailboxId = param.Mid( pos );
-
- if ( attrExists )
- {
- TInt number;
- TLex16 lextmp( mailboxId );
- lextmp.Val( number );
- TUid uId = TUid::Uid( number );
- const TVwsViewId viewId( KScutMessagingUid, KScutRemoteMailboxViewId );
- iVwsSession->CreateActivateViewEvent( viewId, uId, KNullDesC8() );
- }
+ TInt number;
+ TLex16 lextmp( mailboxId );
+ lextmp.Val( number );
+ TUid uId = TUid::Uid( number );
+ const TVwsViewId viewId( TUid::Uid( KMCSCmailUidValue ), TUid::Uid( KMCSCmailMailboxViewIdValue ) );
+ iVwsSession->CreateActivateViewEvent( viewId, uId, KNullDesC8() );
}
else if ( param.Find( KMenuAttrParamLogs ) != KErrNotFound )
{
@@ -226,6 +247,37 @@
CleanupStack::PopAndDestroy( sendUi );
}
+// ---------------------------------------------------------------------------
+// Returns count of Email accounts
+// ---------------------------------------------------------------------------
+//
+TInt CMCSPluginHandler::GetEmailAccountCountL()
+ {
+ CMsvEntry* rootEntry = iMsvSession->GetEntryL( KMsvRootIndexEntryIdValue );
+ CleanupStack::PushL(rootEntry);
+
+ TInt cnt = rootEntry->Count();
+ if ( cnt > 0 )
+ {
+ cnt = 0;
+ rootEntry->SetSortTypeL( TMsvSelectionOrdering(
+ KMsvGroupByType | KMsvGroupByStandardFolders,
+ EMsvSortByDetailsReverse, ETrue ) );
+
+ for ( TInt i = rootEntry->Count(); --i >= 0; )
+ {
+ const TMsvEntry& tentry = (*rootEntry)[i];
+
+ if (tentry.iMtm.iUid == KMCSCmailMtmUidValue )
+ {
+ cnt++;
+ }
+ }
+ }
+ CleanupStack::PopAndDestroy(rootEntry);
+ return cnt;
+ }
+
// ============================ GLOBAL FUNCTIONS ===============================
EXPORT_C const TImplementationProxy* ImplementationGroupProxy( TInt& aTableCount )
Binary file idlefw/plugins/mcsplugin/help/data/xhtml.zip has changed
--- a/idlefw/plugins/mcsplugin/loc/mcsplugin.loc Wed Mar 03 15:38:34 2010 +0200
+++ b/idlefw/plugins/mcsplugin/loc/mcsplugin.loc Wed May 12 13:36:47 2010 +0300
@@ -23,4 +23,12 @@
//
#define qtn_mcs_disable_open_item "Application cannot be opened during backup"
+// d: A dialog which is shown to user when (s)he is trying to
+// d: launch shortcut item which is missing from menu.
+// l: popup_note_window
+// w:
+// r: tb9.2
+//
+#define qtn_mcs_disable_open_item_missing "Shortcut cannot be opened because item is missing. Try to insert memory card which contains the item or reinstall the application."
+
//End file
--- a/idlefw/plugins/mcsplugin/publisher/inc/mcsplugin.h Wed Mar 03 15:38:34 2010 +0200
+++ b/idlefw/plugins/mcsplugin/publisher/inc/mcsplugin.h Wed May 12 13:36:47 2010 +0300
@@ -1,5 +1,5 @@
/*
-* Copyright (c) 2005-2007 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2009-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"
@@ -19,277 +19,138 @@
#ifndef CMCSPLUGIN_H
#define CMCSPLUGIN_H
-#include <aicontentpublisher.h>
-#include <aipropertyextension.h>
+// System includes
+
+// User includes
+#include <hscontentpublisher.h>
#include <aicontentmodel.h>
-#include <aieventhandlerextension.h>
-#include <centralrepository.h>
-#include "mcspluginwatcher.h"
+// Forward declarations
class MAiContentObserver;
class MAiContentItemIterator;
class CMCSPluginEngine;
-class TMCSData;
-//class CMCSPluginData;
+class CMCSData;
-//class RAiSettingsItemArray;
/**
- * @ingroup group_mcsplugin
+ * @ingroup group_mcsplugin
*
- * Plug-in main class
+ * MCS Plug-in main class
*
- * @since S60 v3.2
+ * @since S60 5.2
*/
-class CMCSPlugin : public CAiContentPublisher,
- public MAiPropertyExtension,
- public MAiEventHandlerExtension,
- public MMCSPluginWatcherObserver
+NONSHARABLE_CLASS( CMCSPlugin ) : public CHsContentPublisher
+ {
+public:
+ // constructor and destructor
-
- {
-
-public:
-
- /**
- * Part of the two phased constuction
- *
- * @param none
- * @return none
- */
static CMCSPlugin* NewL();
+ ~CMCSPlugin();
+
+private:
+ // constructors
+
/**
- * CompareItems
- *
- * @param aFirst
- * @param aSecond
- */
- static TInt CompareItems(const MAiPluginSettings& aFirst,
- const MAiPluginSettings& aSecond );
- /**
- * Constructor
- *
- * @param none
- * @return none
+ * C++ default constructor
*/
CMCSPlugin();
-
- /**
- * Destructor
- *
- * @param none
- * @return none
- */
- ~CMCSPlugin();
-
- /**
- * Publishes profile names
- *
- * @param void
- * @return void
- */
- void PublishL();
/**
- * From base class MMCSPluginWatcherObserver
- * .a method for Skin UID cenrep key change handeling
+ * 2nd phase constructor
*/
- void HandleNotifyL();
-
-// from base class CAiContentPublisher
+ void ConstructL();
+
+public:
+ // from CHsContentPublisher
/**
- * 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 );
+ * @see CHsContentPublisher
+ */
+ void Start( TStartReason 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 );
+ * @see CHsContentPublisher
+ */
+ void Stop( TStopReason 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 );
+ * @see CHsContentPublisher
+ */
+ void Resume( TResumeReason 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 );
-
+ * @see CHsContentPublisher
+ */
+ void Suspend( TSuspendReason aReason );
+
/**
- * 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
- */
+ * @see CHsContentPublisher
+ */
+ void SubscribeL( MAiContentObserver& aObserver );
+
+ /**
+ * @see CHsContentPublisher
+ */
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
+ * @see CHsContentPublisher
+ */
+ TAny* GetProperty( TProperty aProperty );
/**
- * From MAiPropertyExtension.
- * Read property of publisher plug-in.
- *
- * @param aProperty - identification of property.
- * @return pointer to property value.
- */
- TAny* GetPropertyL( TInt aProperty );
+ * @see CHsContentPublisher
+ */
+ void HandleEvent( const TDesC& aEventName, const TDesC& aParam );
+
+public:
+ // new functions
/**
- * From MAiPropertyExtension.
- * Write property value.
- *
- * @param aProperty - identification of property.
- * @param aValue - contains pointer to property value.
+ * Publishes data
*/
- 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);
+ void PublishL();
+
+private:
+ // new functions
/**
- * 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.
+ * CompareItems
*/
- void HandleEvent(const TDesC& aEventName, const TDesC& aParam);
-
-protected:
-
-private:
-
- /**
- * 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);
-
+ static TInt CompareItems( const MAiPluginSettings& aFirst,
+ const MAiPluginSettings& aSecond );
+
/**
* Publishes content for one menu item
*/
- void PublishLItemL( MAiContentObserver& aObserver, TMCSData& aDataItem, TInt aIndex );
+ void PublishLItemL( MAiContentObserver& aObserver, CMCSData& aDataItem, TInt aIndex );
/**
- * Free the engine
- *
- * @param void
- * @return void
- */
- void FreeEngine();
-
- /**
* Delete content model
*/
void DeleteContentModel();
-private: // data
-
- // Iterator for plugin content
- // Own
- MAiContentItemIterator* iContent;
-
- // Number of data in the content model.
- TInt iDataCount;
-
- // Dynamic content model
- // Own.
- TAiContentItem* iContentModel;
+ /**
+ * Determines if dirty items exists
+ */
+ TBool PublishRequired() const;
+
+private:
+ // data
- // Plugin engine
- // Own
+ /** Iterator for plugin content, owned */
+ MAiContentItemIterator* iContent;
+ /** Number of data in the content model */
+ TInt iDataCount;
+ /** Dynamic content model, owned */
+ TAiContentItem* iContentModel;
+ /** Plugin engine, owned */
CMCSPluginEngine* iEngine;
-
- // Array of content observers
- // not own
+ /** Array of content observers, not owned */
RPointerArray<MAiContentObserver> iObservers;
-
- // Information about the content publisher (this plug-in)
- TAiPublisherInfo iInfo;
-
- // For accessing central repository keys
- CRepository* iRepository;
-
- // For observing central repository Skin UID key change
- CMCSPluginWatcher* iRepositoryWatcher;
-
};
#endif // CMCSPLUGIN_H
+
+// End of file
--- a/idlefw/plugins/mcsplugin/publisher/inc/mcsplugindata.h Wed Mar 03 15:38:34 2010 +0200
+++ b/idlefw/plugins/mcsplugin/publisher/inc/mcsplugindata.h Wed May 12 13:36:47 2010 +0300
@@ -1,5 +1,5 @@
/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2009 - 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"
@@ -25,22 +25,26 @@
#include <mhomescreensettingsobserver.h>
#include <hspluginsettings.h>
#include <propertymap.h>
+#include <mcsmenu.h>
class TMenuItem;
class CMCSPluginEngine;
-class CMCSPluginWatcher;
-
/**
* @ingroup group_mcsplugin
*
- * TMCData class
+ * Stores the MCS Menu Items and keeps track whether
+ * item needs to be published or not.
*
* @since S60 v9.1
*/
-class TMCSData
+NONSHARABLE_CLASS( CMCSData ) : public CBase
{
public:
+ CMCSData();
+
+ ~CMCSData();
+
/**
* SetMenuItem
*
@@ -54,8 +58,28 @@
* @return TMenuItem
*/
TMenuItem& MenuItem();
+
+ /**
+ * Name of the item.
+ */
+ TDesC& Name();
+
+ /**
+ * Set name of the item,
+ */
+ void SetNameL( const TDesC& aName );
/**
+ * Value of the item. Used for bookmark url.
+ */
+ TDesC& Value();
+
+ /*
+ * Set value of the item.
+ */
+ void SetValueL( const TDesC& aValue );
+
+ /**
* SetDirty
*
* @param aDirty
@@ -75,6 +99,16 @@
* iMenuItem
*/
TMenuItem iMenuItem;
+
+ /**
+ * Item name, own
+ */
+ HBufC* iName;
+
+ /**
+ * Item value, own
+ */
+ HBufC* iValue;
/**
* iDirty
@@ -89,7 +123,7 @@
*
* @since
*/
-class CMCSPluginData : public CBase,
+NONSHARABLE_CLASS( CMCSPluginData ) : public CBase,
public HSPluginSettingsIf::MHomeScreenSettingsObserver
{
@@ -128,23 +162,15 @@
* @param aIndex
* @return TMCSData&
*/
- TMCSData& DataItemL( TInt aIndex );
+ CMCSData& DataItemL( TInt aIndex );
/**
- * ReplaceMenuItemL
+ * Saves 'Undefined' menu item into settings when mailbox is deleted
*
* @param aIndex
* @param aMenuItem
*/
- void ReplaceMenuItemL( const TInt& aIndex, TMenuItem& aMenuItem );
-
- /**
- * SaveSettingsL
- *
- * @param aIndex
- * @param aMenuItem
- */
- void SaveSettingsL( const TInt& aIndex, CMenuItem& aMenuItem );
+ void SaveUndefinedItemL( const TInt& aIndex );
/**
* DataCount
@@ -154,10 +180,15 @@
TInt DataCount(){ return iData.Count();};
/**
- * UpdateDataL
+ * Gets the instance specific settings from HSPS and creates data items
*/
void UpdateDataL();
+ /**
+ * Removes data item from data list and saves new setting into HSPS
+ */
+ void RemoveDataL( TInt aId );
+
// From MHomeScreenSettingsObserver
/**
* SettingsChangedL
@@ -166,9 +197,8 @@
* @param aPluginName
* @param aPluginUid
* @param aPluginId
- * @return TInt
*/
- TInt SettingsChangedL( const TDesC8& aEvent, const TDesC8& aPluginName,
+ void SettingsChangedL( const TDesC8& aEvent, const TDesC8& aPluginName,
const TDesC8& aPluginUid, const TDesC8& aPluginId );
private:
@@ -182,20 +212,51 @@
void ConstructL();
/**
- * CreateMenuItemL
+ * GetMenuDataL
* @param aProperties
* @return TMenuItem
*/
- TMenuItem CreateMenuItemL(
+ CMCSData* GetMenuDataL(
RPointerArray<HSPluginSettingsIf::CPropertyMap>& aProperties );
+
+ /**
+ * Get bookmark data item
+ * @param aView, used for bookmark url
+ * @param aParam, used for bookmark name
+ * @param aData, is filled with appropriate values
+ */
+ void GetBkmDataL( const TDesC8& aView, const TDesC8& aParam, CMCSData& aData );
+
+ /**
+ * Get folder data item
+ * @param aParam, is used for folder id (in MCS)
+ * @param aData, is filled with appropriate values
+ */
+ void GetFolderData( const TDesC8& aParam, CMCSData& aData );
+
+ /**
+ * Get mailbox data item
+ * @param aUid, uid of the mailbox in messaging application
+ * @param aParam, name of the mailbox
+ * @param aData, is filled with appropriate values
+ */
+ void GetMailboxDataL( const TDesC8& aUid, const TDesC8& aParam, CMCSData& aData );
+
+ /**
+ * Get MCS data item
+ * @param aProperties, Properties are used to filter correct item from MCS.
+ * @param aData, is filled with appropriate values
+ */
+ void GetMCSDataL(
+ RPointerArray<HSPluginSettingsIf::CPropertyMap>& aProperties, CMCSData& aData );
private: // data
// Menu items, which are defined in settings
// Own
- RArray<TMCSData> iData;
+ RPointerArray<CMCSData> iData;
- // Plugin settings
+ // Plugin settings. NOT OWNED!
HSPluginSettingsIf::CHomescreenSettings* iPluginSettings;
// Reference to MCS plug-in engine
@@ -203,6 +264,10 @@
// Reference to instance uid of HSPS widget
const TDesC8& iInstanceUid;
+
+ // MCS resource handle, owned
+ RMenu iMenu;
+
};
#endif // CMCSPLUGINDATA_H
--- a/idlefw/plugins/mcsplugin/publisher/inc/mcspluginengine.h Wed Mar 03 15:38:34 2010 +0200
+++ b/idlefw/plugins/mcsplugin/publisher/inc/mcspluginengine.h Wed May 12 13:36:47 2010 +0300
@@ -1,5 +1,5 @@
/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2009 - 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"
@@ -19,43 +19,36 @@
#ifndef CMCSPLUGINENGINE_H
#define CMCSPLUGINENGINE_H
-// INCLUDE FILES
+// System includes
#include <e32base.h>
#include <mcsmenu.h>
+#include <mcsmenuitem.h>
#include <mcsmenunotifier.h>
-#include <favouritesdbobserver.h> // For MFavouritesDbObserver
-#include <favouritesdb.h> // For RFavouritesDb
-#include <msvapi.h> // For MMsvSessionObserver
+#include <msvapi.h>
+// User includes
#include "mcspluginwatcher.h"
+// Forward declarations
class CGulIcon;
class CMCSPluginData;
-class TMCSData;
+class CMCSData;
class CMCSPlugin;
-class CActiveFavouritesDbNotifier;
+
/**
- * @ingroup group_mcsplugin
+ * @ingroup group_mcsplugin
*
- * MCSPluginEngine class
+ * MCSPluginEngine class
*
- * @since S60 9.1
+ * @since S60 5.2
*/
-class CMCSPluginEngine : public CBase, public MMCSPluginWatcherObserver,
- public MFavouritesDbObserver, public MMsvSessionObserver
-{
-
-public: // Constructors and destructor
-
- /**
- * Constructor to use in the object creation. Initializes the necessary
- * data.
- *
- * @param aPlugin
- * @param aInstanceUid
- */
- CMCSPluginEngine( CMCSPlugin& aPlugin, const TDesC8& aInstanceUid );
+NONSHARABLE_CLASS( CMCSPluginEngine ) : public CBase,
+ public MMCSPluginWatcherObserver,
+ public MMsvSessionObserver
+ {
+public:
+ // constructor and destructor
/**
* Part of the two phased constuction
@@ -75,13 +68,29 @@
*/
~CMCSPluginEngine();
+private:
+ // constructors
+
+ /**
+ * C++ default constructor
+ */
+ CMCSPluginEngine( CMCSPlugin& aPlugin, const TDesC8& aInstanceUid );
+
+ /*
+ * 2nd phase constructor
+ */
+ void ConstructL();
+
+public:
+ // new functions
+
/**
* Gets the menu data.
*
* @param aIndex
* @return TMCSData&
*/
- TMCSData& MenuDataL( const TInt& aIndex );
+ CMCSData& MenuDataL( const TInt& aIndex );
/** Gets the menu item count
*
@@ -103,8 +112,8 @@
* @param aMenuItem
* @return CMenuItem*
*/
- CMenuItem* FetchMenuItemL( const TMenuItem& aMenuItem );
-
+ CMenuItem* FetchMenuItemL( CMCSData& aData);
+
/**
* Returns icon for given menu item and given attribute
*
@@ -112,7 +121,7 @@
* @param aAttr
* @return CGulIcon*
*/
- CGulIcon* ItemIconL( CMenuItem& aMenuItem, const TDesC& aAttr );
+ CGulIcon* ItemIconL( CMenuItem* aMenuItem, const TDesC& aAttr );
/**
* Returns text for given menu item and given attribute
@@ -120,7 +129,7 @@
* @param aMenuItem
* @param aAttr
*/
- TPtrC ItemTextL( CMenuItem& aMenuItem, const TDesC& aAttr );
+ TPtrC ItemTextL( CMenuItem* aMenuItem, const TDesC& aAttr );
/**
* Launches menu item
@@ -130,81 +139,52 @@
void LaunchItemL( const TInt& aIndex );
/**
- * Resumes the engine
+ * Set backup/restore state
*
- * @param void
+ * @param aBackupRestore ETrue if backup/restore is ongoing
* @return void
*/
- void ResumeL();
-
- /**
- * Suspends the engine
- *
- * @param void
- * @return void
- */
- void Suspend();
+ void SetBackupRestore( TBool aBackupRestore );
/**
* ShowSettingsL
*/
void ShowSettingsL();
+private:
+ // from MMCSPluginWatcherObserver
+
/**
- * From MMCSPluginWatcherObserver
+ * @see MMCSPluginWatcherObserver
*/
void HandleNotifyL();
- // From MFavouritesDbObserver
- /**
- * Handles database event.
- * @param aEvent Database event.
- */
- void HandleFavouritesDbEventL( RDbNotifier::TEvent aEvent );
+private:
+ // from MMsvSessionObserver
- // from base class MMsvSessionObserver
/**
- * Handles an event from the message server.
- * Not used, but must be defined to be able to use the messaging server.
- *
- * @since S60 v3.2
- * @param aEvent Indicates the event type.
- * @param aArg1 Event type-specific argument value
- * @param aArg2 Event type-specific argument value
- * @param aArg3 Event type-specific argument value
- */
+ * @see MMsvSessionObserver
+ */
void HandleSessionEventL( TMsvSessionEvent aEvent, TAny* aArg1,
TAny* aArg2, TAny* aArg3 );
- /**
- * Called during plugin desctruction
- * Decrements reference counters of all run-time generated items
- * and deletes those which have reference counter == 0
- */
- void CleanMCSItemsL();
-
private:
- /*
- * Part of the two phased construction
- */
- void ConstructL();
+ // new functions
/**
* InitL
*/
void InitL();
-
+
/**
- * Tells the settings container to start observing for changes in favorites
- * database and mailbox db.
- *
+ * Tells the settings container to start observing
+ * for changes in mailbox db and changes in MCS.
*/
void StartObservingL();
/**
- * Tells the settings container to stop observing for changes in favorites
- * database and mailbox db.
- *
+ * Tells the settings container to stop observing
+ * for changes in mailbox db.
*/
void StopObserving();
@@ -215,71 +195,56 @@
* @param aMenuItem
* @return TBool
*/
- TBool ConstructMenuItemForIconL( const TDesC& aPath, CMenuItem& aMenuItem );
+ TBool ConstructMenuItemForIconL(
+ const TDesC& aPath, CMenuItem& aMenuItem );
/**
- * Helper method. Adds a given constant to a value of reference counter
- *
- * @param aItem A Menu Item to update
- * @param aValueToAdd A constant to add
- * @return The actual value of updated reference count
- */
- TInt UpdateMenuItemsRefCountL( CMenuItem* aItem, const TInt aValueToAdd );
-
-protected:
+ * Creates bookmark specific MCS menu item.
+ */
+ CMenuItem* CreateBkmItemL( CMCSData& aData );
+
+ /**
+ * Creates mailbox specific MCS menu item.
+ */
+ CMenuItem* CreateMailboxItemL( CMCSData& aData );
+
+ void LaunchFolderItemL( CMCSData& aData );
+
+ void LaunchBookmarkItemL( CMCSData& aData );
+
+ void LaunchMailboxItemL( CMCSData& aData );
+
+ void LaunchMCSItemL( CMCSData& aData );
private:
-
- /* Plugin data
- * Own
- */
+ // data
+
+ /** Plugin data, owned */
CMCSPluginData* iPluginData;
-
- // MCS resource
+ /** MCS resource handle, owned */
RMenu iMenu;
-
- // MCS change notifier
+ /** MCS change notifier handle, owned */
RMenuNotifier iNotifier;
-
- // MCS asynchronous operation watcher
+ /** MCS asynchronous operation watcher, owned */
CMCSPluginWatcher* iWatcher;
-
- // MCS change notifier watcher
+ /** MCS change notifier watcher, owned */
CMCSPluginWatcher* iNotifyWatcher;
-
- //
+ /** MCS plugin, not owned */
CMCSPlugin& iPlugin;
-
- // Reference to plugin owned instanceUid
+ /** Reference to plugin owned instanceUid */
const TDesC8& iInstanceUid;
- // Indicating that backup is in progress
- TBool iSuspend;
- //Offset of resource file.
+ /** Flag Indicating that backup/restore is in progress */
+ TBool iBackupRestore;
+ /** Offset of resource file */
TInt iResourceOffset;
-
- /**
- * Bookmark database change observer.
- * Own.
- */
- CActiveFavouritesDbNotifier* iBookmarkDbObserver;
-
- /**
- * Bookmark database.
- */
- RFavouritesDb iBookmarkDb;
-
- /**
- * Bookmark database session.
- */
- RFavouritesSession iBookmarkSession;
-
- /**
- * Message server session
- * Own.
- */
- CMsvSession* iMsvSession;
-};
+ /** Message server session, owned */
+ CMsvSession* iMsvSession;
+ /** "Undefined" menu item, owned */
+ CMenuItem* iUndefinedItem;
+ /** "Undefined" menu item header */
+ TMenuItem iUndefinedItemHeader;
+ };
#endif // CMCSPLUGINENGINE_H
-
+// End of file
--- a/idlefw/plugins/mcsplugin/publisher/src/mcsplugin.cpp Wed Mar 03 15:38:34 2010 +0200
+++ b/idlefw/plugins/mcsplugin/publisher/src/mcsplugin.cpp Wed May 12 13:36:47 2010 +0300
@@ -1,5 +1,5 @@
/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2009 - 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"
@@ -15,50 +15,48 @@
*
*/
-
+// System includes
#include <ecom/ecom.h>
#include <ecom/implementationproxy.h>
#include <gulicon.h>
-#include <aicontentobserver.h>
-#include <aiutility.h>
-#include <aistrcnv.h>
#include <mcsmenuitem.h>
-#include <aknskinsinternalcrkeys.h> // For working with settings API
-#include <centralrepository.h> // Headers Used for CRepository
-
+// User includes
+#include <aicontentobserver.h>
+#include <aistrcnv.h>
+#include <aiutility.h>
#include "mcspluginuids.hrh"
#include "mcsplugin.h"
#include "mcsplugindata.h"
#include "mcspluginengine.h"
#include "aipluginsettings.h"
-
+// Constants
const TUint KPluginNameSeprator = '/';
const TInt KImplUidMCSPlugin = AI_UID_ECOM_IMPLEMENTATION_CONTENTPUBLISHER_MCSPLUGIN;
-// CONST CLASS VARIABLES
-const TImplementationProxy KImplementationTable[] =
- {
- IMPLEMENTATION_PROXY_ENTRY( KImplUidMCSPlugin, CMCSPlugin::NewL )
- };
_LIT( KEventNameLaunchByIndex, "LaunchByIndex" );
_LIT( KEventNameShowSettings, "ShowSettings" );
_LIT( KContentItemTypeText, "text" );
_LIT( KContentItemTypeImage, "image" );
+const TImplementationProxy KImplementationTable[] =
+ {
+ IMPLEMENTATION_PROXY_ENTRY( KImplUidMCSPlugin, CMCSPlugin::NewL )
+ };
+
// ======== LOCAL FUNCTIONS ========
// ======== MEMBER FUNCTIONS ========
-
-// ---------------------------------------------------------------------------
-// Symbian 2nd phase constructor can leave
-// ---------------------------------------------------------------------------
+// ----------------------------------------------------------------------------
+// CMCSPlugin::NewL
+//
+// ----------------------------------------------------------------------------
//
CMCSPlugin* CMCSPlugin::NewL()
{
- CMCSPlugin* self = new (ELeave) CMCSPlugin;
+ CMCSPlugin* self = new ( ELeave ) CMCSPlugin;
CleanupStack::PushL( self );
self->ConstructL();
CleanupStack::Pop( self );
@@ -66,123 +64,72 @@
return self;
}
-// ---------------------------------------------------------------------------
-// Default constructor
-// ---------------------------------------------------------------------------
+// ----------------------------------------------------------------------------
+// CMCSPlugin::CMCSPlugin
+//
+// ----------------------------------------------------------------------------
//
CMCSPlugin::CMCSPlugin()
{
}
-// ---------------------------------------------------------------------------
-// Symbian 2nd phase constructor can leave
-// ---------------------------------------------------------------------------
+// ----------------------------------------------------------------------------
+// CMCSPlugin::ConstructL
+//
+// ----------------------------------------------------------------------------
//
void CMCSPlugin::ConstructL()
- {
- iInfo.iUid.iUid = AI_UID_ECOM_IMPLEMENTATION_CONTENTPUBLISHER_MCSPLUGIN;
- // We need to Query Central Repository
- iRepository = CRepository::NewL( KCRUidPersonalisation );
-
- // Setting up watcher which calls HandleNotifyL method
- // everytime the SkinUID changes in central repository
- iRepositoryWatcher = CMCSPluginWatcher::NewL( CMCSPluginWatcher::ENotify );
- iRepository->NotifyRequest( KPslnActiveSkinUid, iRepositoryWatcher->iStatus );
- iRepositoryWatcher->WatchNotify( this );
- }
-
-// ---------------------------------------------------------------------------
-// Handle Skin UID change
-// ---------------------------------------------------------------------------
-//
-void CMCSPlugin::HandleNotifyL()
{
-
- // Skin ID has changed. Set all MenuItems on Widget dirty
- // and re-publish to update icons
- if ( iEngine )
- {
- TInt dataCount = iEngine->MenuItemCount();
- for ( TInt i = 0; i < dataCount; i++ )
- {
- iEngine->MenuDataL( i ).SetDirty( ETrue );
- }
- PublishL();
- }
-
- // Skin ID Notification must be activated again
- iRepositoryWatcher->Cancel();
- iRepository->NotifyRequest( KPslnActiveSkinUid, iRepositoryWatcher->iStatus );
- iRepositoryWatcher->WatchNotify( this );
}
-// ---------------------------------------------------------------------------
+// ----------------------------------------------------------------------------
// Destructor
// Deletes all data created to heap
-// ---------------------------------------------------------------------------
+// ----------------------------------------------------------------------------
//
CMCSPlugin::~CMCSPlugin()
{
- Release( iContent );
-
- if ( iEngine )
- {
- TRAP_IGNORE( iEngine->CleanMCSItemsL() );
- }
-
+ Release( iContent );
+
delete iEngine;
iObservers.Close();
DeleteContentModel();
-
- if ( iRepository )
- {
- delete iRepository;
- iRepository = NULL;
- }
-
- if ( iRepositoryWatcher )
- {
- iRepositoryWatcher->Cancel();
- delete iRepositoryWatcher;
- iRepositoryWatcher = NULL;
- }
}
-// ---------------------------------------------------------------------------
+// ----------------------------------------------------------------------------
+// CMCSPlugin::PublishL
// Publishes the all the items
-// ---------------------------------------------------------------------------
+// ----------------------------------------------------------------------------
//
void CMCSPlugin::PublishL()
- {
-
- if ( !iEngine )
- {
- iEngine = CMCSPluginEngine::NewL( *this, iInfo.iNamespace );
- }
-
+ {
TInt err( KErrNone );
TInt observers( iObservers.Count() );
- TInt transactionId = reinterpret_cast<TInt>( this );
+ TInt transactionId( reinterpret_cast<TInt>( this ) );
TInt menuItems ( iEngine->MenuItemCount() );
for ( TInt i = 0; i < observers; i++ )
{
- MAiContentObserver* observer = iObservers[ i ];
+ MAiContentObserver* observer( iObservers[ i ] );
err = observer->StartTransaction( transactionId );
+
if ( err == KErrNotSupported )
{
return;
}
+
// Publish content to all items
for ( TInt j = 0; j < menuItems; j++ )
{
// Index has to start from 1 ( j + 1 )
PublishLItemL( *observer, iEngine->MenuDataL( j ), ( j + 1 ) );
}// shortcut count
+
if ( err == KErrNone )
{
err = observer->Commit( transactionId );
+
if ( err == KErrNotSupported )
{
return;
@@ -197,20 +144,22 @@
}
}
-// ---------------------------------------------------------------------------
+// ----------------------------------------------------------------------------
+// CMCSPlugin::PublishLItemL
// Publishes one item to given index
-// ---------------------------------------------------------------------------
+// ----------------------------------------------------------------------------
//
-void CMCSPlugin::PublishLItemL( MAiContentObserver& aObserver, TMCSData& aData, TInt aIndex )
+void CMCSPlugin::PublishLItemL( MAiContentObserver& aObserver,
+ CMCSData& aData, TInt aIndex )
{
-
if( !aData.IsDirty() )
{
return;
}
- CMenuItem* item = iEngine->FetchMenuItemL( aData.MenuItem() );
+ CMenuItem* item = iEngine->FetchMenuItemL( aData );
CleanupStack::PushL( item );
+
// One widget item has iDataCount number of elements
for ( TInt i = 0; i < iDataCount; i++ )
{
@@ -219,137 +168,142 @@
//Publish image
if ( aObserver.CanPublish( *this, i, aIndex ) )
{
- CGulIcon* icon = iEngine->ItemIconL( *item, TPtrC16( ( const TText16* ) iContentModel[ i ].cid ) );
+ CGulIcon* icon( iEngine->ItemIconL( item,
+ TPtrC16( ( const TText16* ) iContentModel[ i ].cid ) ) );
+
aObserver.PublishPtr( *this, i, icon , aIndex );
}
}
- else if ( iContentModel[ i ].type == KAiContentTypeText )
+ else if ( iContentModel[i].type == KAiContentTypeText )
{
//Publish text
if ( aObserver.CanPublish( *this, i, aIndex ) )
{
- TPtrC name = iEngine->ItemTextL( *item, TPtrC16( ( const TText16* ) iContentModel[ i ].cid ) );
+ TPtrC name( iEngine->ItemTextL( item,
+ TPtrC16( ( const TText16* ) iContentModel[ i ].cid ) ) );
+
aObserver.Publish( *this, i, name, aIndex );
}
}
}//content items
CleanupStack::PopAndDestroy( item );
-
}
-// ---------------------------------------------------------------------------
-// From class CAiContentPublisher
-// Plug-in is requested to unload its engines due backup operation
-// ---------------------------------------------------------------------------
+// ----------------------------------------------------------------------------
+// CMCSPlugin::Start
+//
+// ----------------------------------------------------------------------------
//
-void CMCSPlugin::Stop( TAiTransitionReason aReason )
+void CMCSPlugin::Start( TStartReason /*aReason*/ )
{
-
- if ( aReason == EAiBackupRestoreStarted )
- {
- Suspend( aReason );
- }
+
+ }
+
+// ----------------------------------------------------------------------------
+// CMCSPlugin::Stop
+//
+// ----------------------------------------------------------------------------
+//
+void CMCSPlugin::Stop( TStopReason /*aReason*/ )
+ {
}
-// ---------------------------------------------------------------------------
-// From class CAiContentPublisher
-// Plug-in is instructed that it is allowed to consume CPU resources
-// ---------------------------------------------------------------------------
+// ----------------------------------------------------------------------------
+// CMCSPlugin::Resume
+//
+// ----------------------------------------------------------------------------
//
-void CMCSPlugin::Resume( TAiTransitionReason aReason )
- {
- if( aReason == EAiIdleBackground )
+void CMCSPlugin::Resume( TResumeReason aReason )
+ {
+ if ( aReason == EForeground )
{
- return;
- }
-
- if ( aReason == EAiBackupRestoreEnded )
- {
- if ( iEngine )
+ iEngine->SetBackupRestore( EFalse );
+
+ if ( PublishRequired() )
{
- TRAP_IGNORE( iEngine->ResumeL() );
- }
- }
-
- TRAP_IGNORE( DoResumeL( aReason ) );
- return;
- }
-
-// ---------------------------------------------------------------------------
-// From class CAiContentPublisher
-// Plug-in is instructed that it is not allowed to consume CPU resources
-// ---------------------------------------------------------------------------
-//
-void CMCSPlugin::Suspend( TAiTransitionReason aReason )
- {
- if ( aReason == EAiBackupRestoreStarted && iEngine )
- {
- iEngine->Suspend();
+ TRAP_IGNORE( PublishL() );
+ }
}
}
-// ---------------------------------------------------------------------------
-// From class CAiContentPublisher
-// The plug-in MUST maintain a registry of subscribers and send
-// notification to all of them whenever the state changes or new content
-// is available
-// ---------------------------------------------------------------------------
+// ----------------------------------------------------------------------------
+// CMCSPlugin::Suspend
+//
+// ----------------------------------------------------------------------------
+//
+void CMCSPlugin::Suspend( TSuspendReason aReason )
+ {
+ if ( aReason == EGeneralThemeChange )
+ {
+ TInt dataCount( iEngine->MenuItemCount() );
+
+ for ( TInt i = 0; i < dataCount; i++ )
+ {
+ TRAP_IGNORE( iEngine->MenuDataL( i ).SetDirty( ETrue ) );
+ }
+ }
+ else if ( aReason == EBackupRestore )
+ {
+ // Prevent item launching during backup / restore
+ iEngine->SetBackupRestore( ETrue );
+ }
+ }
+
+// ----------------------------------------------------------------------------
+// CMCSPlugin::SubscribeL
+//
+// ----------------------------------------------------------------------------
//
void CMCSPlugin::SubscribeL( MAiContentObserver& aObserver )
{
iObservers.AppendL( &aObserver );
}
-// ---------------------------------------------------------------------------
-// Compare method to exclude the similar content items from array.
-// ---------------------------------------------------------------------------
-//
-TInt CMCSPlugin::CompareItems( const MAiPluginSettings& aFirst,
- const MAiPluginSettings& aSecond )
- {
- MAiPluginSettings& first = const_cast<MAiPluginSettings&>(aFirst);
- MAiPluginSettings& second = const_cast<MAiPluginSettings&>(aSecond);
- return first.AiPluginContentItem().Name().CompareC(second.AiPluginContentItem().Name());
- }
-
-// ---------------------------------------------------------------------------
-// From class CAiContentPublisher
-// Plug-ins take ownership of the settings array, so it must either
-// store it in a member or free it.
-// Creates dynamic content model.
-// ---------------------------------------------------------------------------
+// ----------------------------------------------------------------------------
+// CMCSPlugin::ConfigureL
+//
+// ----------------------------------------------------------------------------
//
void CMCSPlugin::ConfigureL( RAiSettingsItemArray& aSettings )
- {
+ {
+ iEngine = CMCSPluginEngine::NewL( *this, PublisherInfo().Namespace() );
TLinearOrder<MAiPluginSettings> sortMethod( CMCSPlugin::CompareItems );
RAiSettingsItemArray contentItemsArr;
- TInt count = aSettings.Count();
+ TInt count( aSettings.Count() );
+
for ( TInt i = 0; i < count; i++ )
{
- MAiPluginSettings* pluginSetting = aSettings[ i ];
- if( pluginSetting->AiPluginItemType() == EAiPluginContentItem )
+ MAiPluginSettings* setting( aSettings[ i ] );
+
+ if( setting->AiPluginItemType() == EAiPluginContentItem )
{
- MAiPluginContentItem& contItem = pluginSetting->AiPluginContentItem();
- TPtrC name = contItem.Name();
- TPtrC type = contItem.Type();
- contentItemsArr.InsertInOrder( pluginSetting, sortMethod );
+ MAiPluginContentItem& contItem( setting->AiPluginContentItem() );
+ TPtrC name( contItem.Name() );
+ TPtrC type( contItem.Type() );
+
+ contentItemsArr.InsertInOrder( setting, sortMethod );
}
-
}
+
iDataCount = contentItemsArr.Count();
+
if ( iDataCount > 0 )
{
// Create the dynamic content Model
DeleteContentModel();
+
iContentModel = new ( ELeave ) TAiContentItem[ iDataCount ];
+
for ( TInt i = 0; i < iDataCount; i++ )
{
iContentModel[i].id = i;
- MAiPluginContentItem& contentItem = ( contentItemsArr[ i ] )->AiPluginContentItem();
+
+ MAiPluginContentItem& contentItem(
+ contentItemsArr[ i ]->AiPluginContentItem() );
if( contentItem.Type() == KContentItemTypeText )
{
@@ -361,153 +315,87 @@
// image
iContentModel[i].type = KAiContentTypeBitmap;
}
- TInt pos = contentItem.Name().Locate( KPluginNameSeprator );
+
+ TInt pos( contentItem.Name().Locate( KPluginNameSeprator ) );
HBufC* contentId = HBufC::NewL( contentItem.Name().Length() );
CleanupStack::PushL( contentId );
- TPtr ptr = contentId->Des();
+
+ TPtr ptr( contentId->Des() );
ptr = contentItem.Name().Mid( pos + 1 );
- TInt sizeOfContentId = ptr.Size() +sizeof( wchar_t );
- iContentModel[i].cid = static_cast<const wchar_t*>( User::AllocL( sizeOfContentId ) );
- Mem::Copy((TAny*)iContentModel[i].cid, ptr.PtrZ(), sizeOfContentId);
+
+ TInt sizeOfContentId( ptr.Size() + sizeof( wchar_t ) );
+
+ iContentModel[i].cid =
+ static_cast<const wchar_t*>( User::AllocL( sizeOfContentId ) );
+
+ Mem::Copy( ( TAny* )iContentModel[i].cid,
+ ptr.PtrZ(), sizeOfContentId );
+
CleanupStack::PopAndDestroy( contentId );
}
- iContent = AiUtility::CreateContentItemArrayIteratorL( iContentModel, iDataCount );
+
+ iContent = AiUtility::CreateContentItemArrayIteratorL(
+ iContentModel, iDataCount );
}
+
contentItemsArr.Reset();
// We own the array so destroy it
aSettings.ResetAndDestroy();
}
-// ---------------------------------------------------------------------------
-// From class CAiContentPublisher
-// Returns the extension interface. Actual type depends on the passed
-// aUid argument.
-// ---------------------------------------------------------------------------
+// ----------------------------------------------------------------------------
+// CMCSPlugin::GetProperty
+//
+// ----------------------------------------------------------------------------
//
-TAny* CMCSPlugin::Extension( TUid aUid )
- {
- if (aUid == KExtensionUidProperty)
- {
- return static_cast<MAiPropertyExtension*>(this);
+TAny* CMCSPlugin::GetProperty( TProperty aProperty )
+ {
+ if( aProperty == EPublisherContent )
+ {
+ return static_cast< MAiContentItemIterator* >( iContent );
}
- else if (aUid == KExtensionUidEventHandler)
- {
- return static_cast<MAiEventHandlerExtension*>(this);
- }
- else
- {
- return NULL;
- }
+
+ return NULL;
}
-
-// ---------------------------------------------------------------------------
-// From class MAiPropertyExtension
-// Read property of publisher plug-in.
-// ---------------------------------------------------------------------------
+
+// ----------------------------------------------------------------------------
+// CMCSPlugin::HandleEvent
+//
+// ----------------------------------------------------------------------------
//
-TAny* CMCSPlugin::GetPropertyL( TInt aProperty )
- {
- TAny* property = NULL;
-
- switch ( aProperty )
+void CMCSPlugin::HandleEvent( const TDesC& aEventName, const TDesC& aParam )
+ {
+ if( aEventName == KEventNameLaunchByIndex )
+ {
+ TInt32 index;
+ AiUtility::ParseInt( index, aParam );
+
+ TRAP_IGNORE( iEngine->LaunchItemL( index - 1 ) );
+ }
+ else if( aEventName == KEventNameShowSettings )
{
- case EAiPublisherInfo:
- {
- property = static_cast<TAiPublisherInfo*>( &iInfo );
- break;
- }
-
- case EAiPublisherContent:
- {
- property = static_cast<MAiContentItemIterator*>( iContent );
- break;
- }
- }
- return property;
+ TRAP_IGNORE( iEngine->ShowSettingsL() );
+ }
}
-// ---------------------------------------------------------------------------
-// From class MAiPropertyExtension
-// Write property value to optimize the content model.
-// ---------------------------------------------------------------------------
+// ----------------------------------------------------------------------------
+// CMCSPlugin::CompareItems
+//
+// ----------------------------------------------------------------------------
//
-void CMCSPlugin::SetPropertyL( TInt aProperty, TAny* aValue )
- {
- 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;
- }
- }
-
-// ---------------------------------------------------------------------------
-// From class MAiEventHandlerExtension.
-// Handles an event sent by the AI framework.
-// ---------------------------------------------------------------------------
-//
-void CMCSPlugin::HandleEvent( TInt /*aEvent*/, const TDesC& /*aParam*/ )
+TInt CMCSPlugin::CompareItems( const MAiPluginSettings& aFirst,
+ const MAiPluginSettings& aSecond )
{
- // We have no way of reporting errors to framework so just ignore them.
- //TRAP_IGNORE( iEngine->HandleEventL(aEvent, aParam ));
- }
-
-// ---------------------------------------------------------------------------
-// From class MAiEventHandlerExtension.
-// Handles an event sent by the AI framework.
-// ---------------------------------------------------------------------------
-//
-void CMCSPlugin::HandleEvent( const TDesC& aEventName, const TDesC& aParam )
- {
- if ( iEngine )
- {
- if( aEventName == KEventNameLaunchByIndex )
- {
- // We have no way of reporting errors to framework so just ignore them.
- TInt32 index;
- AiUtility::ParseInt( index, aParam );
- TRAP_IGNORE( iEngine->LaunchItemL( index - 1 ));
- }
- else if( aEventName == KEventNameShowSettings )
- {
- TRAP_IGNORE( iEngine->ShowSettingsL() );
- }
- }
+ MAiPluginSettings& first = const_cast<MAiPluginSettings&>(aFirst);
+ MAiPluginSettings& second = const_cast<MAiPluginSettings&>(aSecond);
+ return first.AiPluginContentItem().Name().CompareC(second.AiPluginContentItem().Name());
}
-// ---------------------------------------------------------------------------
-// From class CAiContentPublisher
-// framework instructs plug-in that it is allowed to consume CPU resources
-// ---------------------------------------------------------------------------
+// ----------------------------------------------------------------------------
+// CMCSPlugin::DeleteContentModel
//
-void CMCSPlugin::DoResumeL( TAiTransitionReason /*aReason*/ )
- {
- PublishL();
- }
-
-// ---------------------------------------------------------------------------
-// Frees engine resources
-// ---------------------------------------------------------------------------
-//
-void CMCSPlugin::FreeEngine()
- {
- delete iEngine;
- iEngine = NULL;
- }
-
-// ---------------------------------------------------------------------------
-// Delete content model
-// ---------------------------------------------------------------------------
+// ----------------------------------------------------------------------------
//
void CMCSPlugin::DeleteContentModel()
{
@@ -528,11 +416,31 @@
iContentModel = NULL;
}
}
-
+
+// ----------------------------------------------------------------------------
+// CMCSPlugin::PublishRequired
+//
+// ----------------------------------------------------------------------------
+//
+TBool CMCSPlugin::PublishRequired() const
+ {
+ TInt count( iEngine->MenuItemCount() );
+
+ TBool retval( EFalse );
+
+ for ( TInt i = 0; !retval && i < count; i++ )
+ {
+ TRAP_IGNORE( retval = iEngine->MenuDataL( i ).IsDirty() );
+ }
+
+
+ return retval;
+ }
+
// ======== GLOBAL FUNCTIONS ========
-// ---------------------------------------------------------------------------
+// ----------------------------------------------------------------------------
// Constructs and returns an application object.
-// ---------------------------------------------------------------------------
+// ----------------------------------------------------------------------------
//
EXPORT_C const TImplementationProxy* ImplementationGroupProxy(
TInt& aTableCount )
@@ -541,3 +449,5 @@
sizeof( TImplementationProxy );
return KImplementationTable;
}
+
+// End of file
--- a/idlefw/plugins/mcsplugin/publisher/src/mcsplugindata.cpp Wed Mar 03 15:38:34 2010 +0200
+++ b/idlefw/plugins/mcsplugin/publisher/src/mcsplugindata.cpp Wed May 12 13:36:47 2010 +0300
@@ -1,5 +1,5 @@
/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2009 - 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"
@@ -24,48 +24,147 @@
using namespace HSPluginSettingsIf;
-_LIT8( KAppUid, "271012080" );
_LIT( KMenuAttrParam, "param" );
_LIT( KMenuAttrLocked, "locked" );
_LIT8( KProperNameType, "type" );
_LIT8( KProperNameParam, "param" );
_LIT8( KProperNameUid, "uid" );
_LIT8( KProperNameView, "view" );
+_LIT8( KProperNameLocked, "locked" );
_LIT8( KProperValueFolder, "folder" );
_LIT8( KProperValueBookmark, "bookmark" );
_LIT8( KProperValueAppl, "application" );
+_LIT8( KProperValueMailbox, "mailbox" );
+_LIT8( KMenuAttrUndefUid, "0x99999991" );
+
+_LIT( KMyMenuData, "matrixmenudata" );
+_LIT( KMenuTypeMailbox, "menu:mailbox" );
+
+
+#define KMCSCmailMtmUidValue 0x2001F406
// ======== LOCAL FUNCTIONS ========
-static void ItemMapArrayCleanupFunc( TAny* aPointerArray )
+// ----------------------------------------------------------------------------
+// CleanupResetAndDestroy()
+// ----------------------------------------------------------------------------
+//
+template<class T>
+static void CleanupResetAndDestroy( TAny* aObj )
{
- RPointerArray<CItemMap>* p = static_cast<RPointerArray<CItemMap>*>( aPointerArray );
- p->ResetAndDestroy();
- p->Close();
+ if( aObj )
+ {
+ static_cast<T*>( aObj )->ResetAndDestroy();
+ }
+ }
+
+// ----------------------------------------------------------------------------
+// CleanupResetAndDestroyPushL
+// ----------------------------------------------------------------------------
+//
+template<class T>
+static void CleanupResetAndDestroyPushL(T& aArray)
+ {
+ CleanupStack::PushL( TCleanupItem( &CleanupResetAndDestroy<T>, &aArray ) );
}
// ======== MEMBER FUNCTIONS ========
-void TMCSData::SetMenuItem( TMenuItem& aMenuItem )
+// ---------------------------------------------------------------------------
+// Default constructor
+// ---------------------------------------------------------------------------
+//
+CMCSData::CMCSData()
+ {
+ }
+
+// ---------------------------------------------------------------------------
+// Destructor
+// ---------------------------------------------------------------------------
+//
+CMCSData::~CMCSData()
+ {
+ delete iName;
+ delete iValue;
+ }
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+void CMCSData::SetMenuItem( TMenuItem& aMenuItem )
{
iMenuItem = aMenuItem;
}
-TMenuItem& TMCSData::MenuItem()
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+TMenuItem& CMCSData::MenuItem()
{
return iMenuItem;
}
-void TMCSData::SetDirty( TBool aDirty )
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+TDesC& CMCSData::Name()
+ {
+ return *iName;
+ }
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+void CMCSData::SetNameL( const TDesC& aName )
+ {
+ delete iName;
+ iName = NULL;
+ iName = aName.AllocL();
+ }
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+TDesC& CMCSData::Value()
+ {
+ return *iValue;
+ }
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+void CMCSData::SetValueL( const TDesC& aValue )
+ {
+ delete iValue;
+ iValue = NULL;
+ iValue = aValue.AllocL();
+ }
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+void CMCSData::SetDirty( TBool aDirty )
{
iDirty = aDirty;
}
-TBool TMCSData::IsDirty() const
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+TBool CMCSData::IsDirty() const
{
return iDirty;
}
+
// ---------------------------------------------------------------------------
// Symbian 2nd phase constructor can leave
// ---------------------------------------------------------------------------
@@ -95,10 +194,15 @@
//
void CMCSPluginData::ConstructL()
{
- // AILaunch uid in decimal format
- iPluginSettings = CHomescreenSettings::NewL( KAppUid,
- iInstanceUid,
- this );
+ iPluginSettings = CHomescreenSettings::Instance();
+ if( iPluginSettings == NULL )
+ {
+ User::Leave( KErrUnknown );
+ }
+ iPluginSettings->AddObserverL( this );
+
+ iMenu.OpenL( KMyMenuData );
+
UpdateDataL();
}
@@ -107,9 +211,13 @@
// ---------------------------------------------------------------------------
//
CMCSPluginData::~CMCSPluginData()
- {
- iData.Close();
- delete iPluginSettings;
+ {
+ if( iPluginSettings )
+ {
+ iPluginSettings->RemoveObserver( this );
+ }
+ iData.ResetAndDestroy();
+ iMenu.Close();
}
// ---------------------------------------------------------------------------
@@ -119,61 +227,208 @@
void CMCSPluginData::UpdateDataL()
{
RPointerArray<CItemMap> settings;
- TCleanupItem settingsCleanupItem( ItemMapArrayCleanupFunc, &settings );
- CleanupStack::PushL( settingsCleanupItem );
+ CleanupResetAndDestroyPushL( settings );
+
iPluginSettings->GetSettingsL( iInstanceUid, settings );
TInt count = settings.Count();
- for( TInt i = 0; i < count; i++ )
+ TBool wasEmpty = !iData.Count();
+
+ for ( TInt i = 0; i < count; i++ )
{
- CItemMap* itemMap = settings[i];
+ CItemMap* itemMap = settings[ i ];
RPointerArray<HSPluginSettingsIf::CPropertyMap>& properties
= itemMap->Properties();
- TMenuItem item = CreateMenuItemL( properties );
- TMCSData data;
- TInt id = -1;
-
- if ( count == iData.Count() )
+ CMCSData* data = GetMenuDataL( properties );
+
+ if ( wasEmpty )
{
- id = iData[i].MenuItem().Id();
+ // list of shortcut slot was empty
+ // we append the shortcut data slots one-by-one to the list
+ data->SetDirty( ETrue );
+ iData.AppendL( data );
}
-
- if ( id > 0 )
+ else
{
- if ( item.Id() != id )
+ // check for updates in existing shortcut data slot
+ // if menuitem id has changed, replace the item and
+ // set as dirty
+ TInt id = -1;
+ id = iData[ i ]->MenuItem().Id();
+
+ if ( data->MenuItem().Id() != id )
{
- data.SetMenuItem( item );
- data.SetDirty( ETrue );
+ data->SetDirty( ETrue );
+ CMCSData* oldData = iData[i];
iData.Remove( i );
+ delete oldData;
iData.InsertL( data, i );
}
- }
- else
- {
- data.SetMenuItem( item );
- data.SetDirty( ETrue );
- iData.AppendL( data );
- }
+ }
}
-
- CleanupStack::PopAndDestroy(); // settingsCleanupItem
+
+ // Cleanup.
+ CleanupStack::PopAndDestroy(); // settings
}
// ---------------------------------------------------------------------------
-//
+// Removes obsolete data and saves 'Undefined' item to HSPS
+// Used when active mailbox is deleted from system.
// ---------------------------------------------------------------------------
//
-TInt CMCSPluginData::SettingsChangedL( const TDesC8& /*aEvent*/, const TDesC8& /*aPluginName*/,
- const TDesC8& /*aPluginUid*/, const TDesC8& /*aPluginId*/ )
+void CMCSPluginData::RemoveDataL( TInt aId )
{
- UpdateDataL();
- return KErrNone;
+ TInt count = iData.Count();
+ for( TInt i = 0; i < count; i++ )
+ {
+ CMCSData* data = iData[i];
+ if( data->MenuItem().Type() == KMenuTypeMailbox &&
+ data->MenuItem().Id() == aId )
+ {
+ iData[i]->MenuItem().SetId( KErrNotFound );
+ iData[i]->SetDirty( ETrue );
+ SaveUndefinedItemL( i );
+ }
+ }
+ }
+
+// ---------------------------------------------------------------------------
+// Call back from Homescreen settings
+// ---------------------------------------------------------------------------
+//
+void CMCSPluginData::SettingsChangedL( const TDesC8& /*aEvent*/, const TDesC8& /*aPluginName*/,
+ const TDesC8& /*aPluginUid*/, const TDesC8& aPluginId )
+ {
+ if( aPluginId.CompareF( iInstanceUid ) == 0 )
+ {
+ UpdateDataL();
+ }
}
// ---------------------------------------------------------------------------
// Gets the menu item from engine using the setting properties as filter
// ---------------------------------------------------------------------------
//
-TMenuItem CMCSPluginData::CreateMenuItemL( RPointerArray<HSPluginSettingsIf::CPropertyMap>& aProperties )
+CMCSData* CMCSPluginData::GetMenuDataL( RPointerArray<HSPluginSettingsIf::CPropertyMap>& aProperties )
+ {
+ TPtrC8 type;
+ TPtrC8 uid;
+ TPtrC8 view;
+ TPtrC8 param;
+
+ // first we need to check the item type
+ for ( TInt i = 0; i < aProperties.Count(); i++ )
+ {
+ if ( aProperties[i]->Name() == KProperNameType )
+ {
+ type.Set( aProperties[i]->Value());
+ }
+ else if( aProperties[i]->Name() == KProperNameUid)
+ {
+ uid.Set( aProperties[i]->Value());
+ }
+ else if( aProperties[i]->Name() == KProperNameView)
+ {
+ view.Set( aProperties[i]->Value());
+ }
+ else if( aProperties[i]->Name() == KProperNameParam )
+ {
+ param.Set( aProperties[i]->Value());
+ }
+ }
+ CMCSData* data = new ( ELeave ) CMCSData();
+ CleanupStack::PushL( data );
+ if( type == KProperValueBookmark )
+ {
+ GetBkmDataL( view, param, *data );
+ }
+ else if( type == KProperValueFolder )
+ {
+ GetFolderData( param, *data );
+ }
+ else if( type == KProperValueMailbox )
+ {
+ GetMailboxDataL( uid, param, *data );
+ }
+ else
+ {
+ GetMCSDataL( aProperties, *data );
+ }
+ CleanupStack::Pop( data );
+ return data;
+ }
+
+// ---------------------------------------------------------------------------
+// Creates bookmark data item.
+// ---------------------------------------------------------------------------
+//
+void CMCSPluginData::GetBkmDataL( const TDesC8& aView, const TDesC8& aParam, CMCSData& aData )
+ {
+ TMenuItem item;
+ item.SetType( KMenuTypeUrl );
+ aData.SetMenuItem( item );
+
+ HBufC* view( NULL );
+ view = AiUtility::CopyToBufferL( view, aView );
+ CleanupStack::PushL( view );
+ aData.SetValueL( *view );
+ CleanupStack::PopAndDestroy( view );
+
+ HBufC* param( NULL );
+ param = AiUtility::CopyToBufferL( param, aParam );
+ CleanupStack::PushL( param );
+ aData.SetNameL( *param );
+ CleanupStack::PopAndDestroy( param );
+ }
+
+// ---------------------------------------------------------------------------
+// Creates folder data item.
+// ---------------------------------------------------------------------------
+//
+void CMCSPluginData::GetFolderData( const TDesC8& aParam, CMCSData& aData )
+ {
+ // In folder case, we have to extract id from
+ // param attribute and return item with this id
+ // convert id to integer
+ TInt id;
+ TLex8 lextmp( aParam);
+ lextmp.Val( id );
+
+ TMenuItem item;
+ item.SetType( KMenuTypeFolder );
+ item.SetId( id );
+ aData.SetMenuItem( item );
+ }
+
+// ---------------------------------------------------------------------------
+// Creates mailbox data item.
+// ---------------------------------------------------------------------------
+//
+void CMCSPluginData::GetMailboxDataL( const TDesC8& aUid, const TDesC8& aParam, CMCSData& aData )
+ {
+ TInt id( KErrNotFound );
+ TLex8 lextmp( aUid);
+ lextmp.Val( id );
+
+ TMenuItem item;
+ item.SetType( KMenuTypeMailbox );
+ item.SetId( id );
+ aData.SetMenuItem( item );
+
+ HBufC* param( NULL );
+ param = AiUtility::CopyToBufferL( param, aParam );
+ CleanupStack::PushL( param );
+
+ aData.SetNameL( *param );
+
+ CleanupStack::PopAndDestroy( param );
+ }
+
+// ---------------------------------------------------------------------------
+// Gets data item from MCS
+// ---------------------------------------------------------------------------
+//
+void CMCSPluginData::GetMCSDataL( RPointerArray<HSPluginSettingsIf::CPropertyMap>& aProperties,
+ CMCSData& aData)
{
CMenuFilter* filter = CMenuFilter::NewLC();
@@ -181,25 +436,10 @@
// Criterias will be added to filter if setting defines them
filter->DoNotHaveAttributeL( KMenuAttrView );
filter->DoNotHaveAttributeL( KMenuAttrParam );
- TBool isFolder = EFalse;
- // first, we need to check if the item is folder
- for ( TInt i = 0; i < aProperties.Count(); i++ )
- {
- if ( aProperties[i]->Name() == KProperNameType )
- {
- if ( aProperties[i]->Value() == KProperValueFolder )
- {
- isFolder = ETrue;
- }
- break;
- }
- }
-
// then add all property/value pairs to the filter
for ( TInt i = 0; i < aProperties.Count(); i++ )
{
-
// skip the type property
if( aProperties[i]->Name() == KProperNameType )
{
@@ -215,29 +455,7 @@
if ( value->Length() != 0 )
{
- // in case of folder, we just have to extract
- // id from param attribute and return item with this id
- if ( aProperties[i]->Name() == KProperNameParam && isFolder )
- {
- TMenuItem item;
- // convert id to integer
- TInt id;
- TLex16 lextmp( value->Ptr() );
- lextmp.Val( id );
- item.SetType( KMenuTypeFolder );
- item.SetId( id );
-
- CleanupStack::PopAndDestroy( value );
- CleanupStack::PopAndDestroy( name );
- CleanupStack::PopAndDestroy( filter );
-
- return item;
- }
- else
- {
- // otherwise, we just add name/value into filter
- filter->HaveAttributeL( *name, *value );
- }
+ filter->HaveAttributeL( *name, *value );
}
CleanupStack::PopAndDestroy( value );
CleanupStack::PopAndDestroy( name );
@@ -248,118 +466,64 @@
TMenuItem item = iEngine.FindMenuItemL( *filter );
CleanupStack::PopAndDestroy( filter );
- return item;
+ aData.SetMenuItem( item );
}
// ---------------------------------------------------------------------------
// Returns menu item for given index
// ---------------------------------------------------------------------------
//
-TMCSData& CMCSPluginData::DataItemL( TInt aIndex )
+CMCSData& CMCSPluginData::DataItemL( TInt aIndex )
{
if( aIndex < 0 || aIndex >= iData.Count())
{
User::Leave( KErrArgument );
}
- return iData[aIndex];
+ return *iData[aIndex];
}
// ---------------------------------------------------------------------------
-// Replaces menuitem in data instance
+// Save the undefined item.
// ---------------------------------------------------------------------------
//
-void CMCSPluginData::ReplaceMenuItemL( const TInt& aIndex, TMenuItem& aMenuItem )
- {
- TMCSData& data = iData[aIndex];
- data.SetMenuItem( aMenuItem );
- data.SetDirty( ETrue );
- }
-
-// ---------------------------------------------------------------------------
-// Save the setting persistently to HSPS
-// TODO HSPS setting api should be changed so that items and properties can
-// be added/removed dynamically. Now widgetconfiguration.xml must have all the
-// properties for every item even though property is not used.
-// It makes this function more compolicated.
-// ---------------------------------------------------------------------------
-//
-void CMCSPluginData::SaveSettingsL( const TInt& aIndex, CMenuItem& aMenuItem )
+void CMCSPluginData::SaveUndefinedItemL( const TInt& aIndex )
{
RPointerArray<CItemMap> settingItems;
- CleanupClosePushL( settingItems );
+ CleanupResetAndDestroyPushL( settingItems );
+
iPluginSettings->GetSettingsL( iInstanceUid, settingItems );
if ( aIndex >= 0 && aIndex < settingItems.Count() )
{
- TBool exists( EFalse );
- CItemMap* itemMap = settingItems[aIndex];
+ CItemMap* itemMap = settingItems[ aIndex ];
RPointerArray<HSPluginSettingsIf::CPropertyMap> properties;
properties = itemMap->Properties();
- for ( TInt i= 0; i < properties.Count(); i++ )
+ for ( TInt i = 0; i < properties.Count(); i++ )
{
- if ( properties[i]->Name() == KProperNameType )
+ if ( properties[ i ]->Name() == KProperNameType )
{
- TPtrC type = aMenuItem.Type();
- if ( type == KMenuTypeUrl )
- {
- properties[i]->SetValueL( KProperValueBookmark );
- }
- else
- {
- properties[i]->SetValueL( KProperValueAppl );
- }
+ properties[ i ]->SetValueL( KProperValueAppl );
}
- else if ( properties[i]->Name() == KProperNameUid )
+ else if ( properties[ i ]->Name() == KProperNameUid )
{
- TPtrC uid = aMenuItem.GetAttributeL( KMenuAttrUid, exists );
- if ( exists )
- {
- HBufC8* uid8( NULL );
- uid8 = AiUtility::CopyToBufferL( uid8, uid );
- CleanupStack::PushL( uid8 );
- properties[i]->SetValueL( *uid8 );
- CleanupStack::PopAndDestroy( uid8 );
- }
- else
- {
- properties[i]->SetValueL( KNullDesC8 );
- }
+ properties[ i ]->SetValueL( KMenuAttrUndefUid );
}
- else if ( properties[i]->Name() == KProperNameView )
+ else if ( properties[ i ]->Name() == KProperNameView )
{
- TPtrC view = aMenuItem.GetAttributeL( KMenuAttrView, exists );
- if ( exists )
- {
- HBufC8* view8( NULL );
- view8 = AiUtility::CopyToBufferL( view8, view );
- CleanupStack::PushL( view8 );
- properties[i]->SetValueL( *view8 );
- CleanupStack::PopAndDestroy( view8 );
- }
- else
- {
- properties[i]->SetValueL( KNullDesC8 );
- }
+ properties[ i ]->SetValueL( KNullDesC8 );
}
- else if ( properties[i]->Name() == KProperNameParam )
+ else if ( properties[ i ]->Name() == KProperNameParam )
{
- TPtrC param = aMenuItem.GetAttributeL( KMenuAttrParam, exists );
- if ( exists )
- {
- HBufC8* param8( NULL );
- param8 = AiUtility::CopyToBufferL( param8, param );
- CleanupStack::PushL( param8 );
- properties[i]->SetValueL( *param8 );
- CleanupStack::PopAndDestroy( param8 );
- }
- else
- {
- properties[i]->SetValueL( KNullDesC8 );
- }
+ properties[ i ]->SetValueL( KNullDesC8 );
+ }
+ else if ( properties[ i ]->Name() == KProperNameLocked )
+ {
+ properties[i]->SetValueL( KNullDesC8 );
}
}
}
- // ETrue tells that changes are stored also to plugin reference
+ // ETrue tells that modified settings are stored also to plugin reference
iPluginSettings->SetSettingsL( iInstanceUid, settingItems, ETrue );
- CleanupStack::PopAndDestroy( &settingItems );
+ CleanupStack::PopAndDestroy(); // settingItems
}
+// End of file
--- a/idlefw/plugins/mcsplugin/publisher/src/mcspluginengine.cpp Wed Mar 03 15:38:34 2010 +0200
+++ b/idlefw/plugins/mcsplugin/publisher/src/mcspluginengine.cpp Wed May 12 13:36:47 2010 +0300
@@ -1,5 +1,5 @@
/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2009-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"
@@ -15,87 +15,160 @@
*
*/
-
-// INCLUDE FILES
-#include "mcspluginengine.h"
-
+// System includes
#include <gulicon.h>
-#include <AknsItemID.h>
#include <gslauncher.h>
-#include <aisystemuids.hrh>
-
-#include <mcsmenuitem.h>
#include <mcsmenufilter.h>
#include <mcsmenuoperation.h>
#include <mcsmenuiconutility.h>
-#include <activefavouritesdbnotifier.h>
-#include <favouritesitemlist.h>
-
#include <bautils.h>
#include <StringLoader.h>
#include <aknnotedialog.h>
-#include <avkon.rsg>
#include <mcspluginres.rsg>
+#include <apgcli.h>
+#include <apacmdln.h>
+#include <gfxtranseffect/gfxtranseffect.h>
+#include <akntranseffect.h>
+#include <schemehandler.h>
+#include <viewcli.h> // For CVwsSessionWrapper
+#ifdef SYMBIAN_ENABLE_SPLIT_HEADERS
+#include <viewclipartner.h>
+#endif
+#include <aisystemuids.hrh>
+
+// User includes
+#include "mcspluginengine.h"
#include "mcsplugin.h"
#include "mcsplugindata.h"
#include "mcspluginuids.hrh"
-#include <apgtask.h>
-#include <apgcli.h>
-#include <apacmdln.h>
-#include <gfxtranseffect/gfxtranseffect.h> // For Transition effect
-#include <akntranseffect.h>
-
-#include <AknsConstants.h>
+// Constants
_LIT( KMyMenuData, "matrixmenudata" );
_LIT( KSkin, "skin" );
_LIT( KMif, "mif" );
_LIT( KResourceDrive, "Z:" );
_LIT( KResourceFile, "mcspluginres.rsc" );
_LIT( KResPath, "\\resource\\" );
-_LIT( KMenuAttrRefcount, "ref_count" );
_LIT( KMMApplication, "mm://" );
_LIT( KHideExit2, "&exit=hide" );
_LIT( KSetFocusString, "!setfocus?applicationgroup_name=" );
_LIT( KApplicationGroupName, "applicationgroup_name" );
_LIT( KIcon, "icon" );
_LIT( KMenuAttrUndefUid, "0x99999991" );
+_LIT( KMenuIconFile, "aimcsplugin.mif" );
+_LIT( KMenuBookmarkIconId, "16386" );
+_LIT( KMenuBookmarkMaskId, "16387" );
+_LIT( KMenuMailboxIconId, "16388" );
+_LIT( KMenuMailboxMaskId, "16389" );
+_LIT( KMenuTypeMailbox, "menu:mailbox" );
+_LIT( KPrefix, "0x" );
const TUid KHomescreenUid = { AI_UID3_AIFW_COMMON };
const TUid KMMUid = { 0x101F4CD2 };
+const TUid KMCSCmailUidValue = { 0x2001E277 };
+const TUid KMCSCmailMailboxViewIdValue = { 0x2 };
+const TUid KBrowserUid = { 0x10008D39 };
// ======== LOCAL FUNCTIONS ========
-
+// ----------------------------------------------------------------------------
+// NextIdToken
+// ----------------------------------------------------------------------------
+//
static TPtrC NextIdToken( TLex& aLexer )
{
aLexer.SkipSpace();
aLexer.Mark();
+
while( !aLexer.Eos() && !aLexer.Peek().IsSpace() && aLexer.Peek() != ')' )
{
aLexer.Inc();
}
+
return aLexer.MarkedToken();
}
+// ----------------------------------------------------------------------------
+// Shows note dailog, with the given resource.
+// ----------------------------------------------------------------------------
+//
+static void ShowNoteDlgL( TInt aResource )
+ {
+ HBufC* temp = StringLoader::LoadLC( aResource );
+
+ CAknNoteDialog* dialog = new (ELeave) CAknNoteDialog(
+ CAknNoteDialog::EConfirmationTone,
+ CAknNoteDialog::ENoTimeout );
+ CleanupStack::PushL( dialog );
+ dialog->SetTextL( temp->Des() );
+ dialog->ExecuteDlgLD( R_MCS_DISABLE_OPEN_ITEM_DLG );
+ CleanupStack::Pop( dialog );
+ CleanupStack::PopAndDestroy( temp );
+ }
+
+// ----------------------------------------------------------------------------
+// Parses uid in Hexadecimal format from the given string.
+// ----------------------------------------------------------------------------
+//
+TUid ParseHexUidFromString(const TDesC& aUidString )
+ {
+ TUid uid( KNullUid );
+ const TInt pos( aUidString.FindF( KPrefix ) );
+
+ if ( pos != KErrNotFound )
+ {
+ TLex lex( aUidString.Mid( pos + KPrefix().Length() ) );
+
+ // Hex parsing needs unsigned int
+ TUint32 value( 0 );
+ const TInt parseResult( lex.Val( value, EHex ) );
+
+ if ( parseResult == KErrNone )
+ {
+ TInt32 value32( value );
+ uid.iUid = value32;
+ }
+ }
+ return uid;
+ }
+
+// ----------------------------------------------------------------------------
+// Start transition effect. User has launched the application with the given uid.
+// ----------------------------------------------------------------------------
+//
+void StartEffect( TUid aUid )
+ {
+ //start a full screen effect
+ GfxTransEffect::BeginFullScreen(
+ AknTransEffect::EApplicationStart,
+ TRect(),
+ AknTransEffect::EParameterType,
+ AknTransEffect::GfxTransParam( aUid,
+ AknTransEffect::TParameter::EActivateExplicitContinue ));
+ }
+
// ============================ MEMBER FUNCTIONS ===============================
-// ---------------------------------------------------------
-// Default constructor
-// ---------------------------------------------------------
+// ----------------------------------------------------------------------------
+// CMCSPluginEngine::CMCSPluginEngine
//
-CMCSPluginEngine::CMCSPluginEngine( CMCSPlugin& aPlugin, const TDesC8& aInstanceUid )
- : iPlugin( aPlugin ), iInstanceUid( aInstanceUid ),
- iSuspend( EFalse )
+// ----------------------------------------------------------------------------
+//
+CMCSPluginEngine::CMCSPluginEngine( CMCSPlugin& aPlugin,
+ const TDesC8& aInstanceUid )
+ : iPlugin( aPlugin ), iInstanceUid( aInstanceUid )
{
}
-// ---------------------------------------------------------
-// Two-phased constructor.
-// Create instance of concrete ECOM interface implementation
-// ---------------------------------------------------------
+// ----------------------------------------------------------------------------
+// CMCSPluginEngine::NewL
+//
+// ----------------------------------------------------------------------------
//
-CMCSPluginEngine* CMCSPluginEngine::NewL( CMCSPlugin& aPlugin, const TDesC8& aInstanceUid )
+CMCSPluginEngine* CMCSPluginEngine::NewL( CMCSPlugin& aPlugin,
+ const TDesC8& aInstanceUid )
{
- CMCSPluginEngine* self = new( ELeave ) CMCSPluginEngine( aPlugin, aInstanceUid );
+ CMCSPluginEngine* self =
+ new( ELeave ) CMCSPluginEngine( aPlugin, aInstanceUid );
+
CleanupStack::PushL( self );
self->ConstructL();
CleanupStack::Pop( self );
@@ -103,9 +176,10 @@
return self;
}
-// ---------------------------------------------------------
-// Symbian 2nd phase constructor can leave
-// ---------------------------------------------------------
+// ----------------------------------------------------------------------------
+// CMCSPluginEngine::ConstructL
+//
+// ----------------------------------------------------------------------------
//
void CMCSPluginEngine::ConstructL()
{
@@ -119,29 +193,38 @@
CCoeEnv::Static()->AddResourceFileL( resourceFile );
InitL();
StartObservingL();
+
+ // Get "Undefined" item
+ CMenuFilter* filter = CMenuFilter::NewL();
+ CleanupStack::PushL( filter );
+ filter->HaveAttributeL( KMenuAttrUid, KMenuAttrUndefUid );
+ iUndefinedItemHeader = FindMenuItemL( *filter );
+ CleanupStack::PopAndDestroy( filter );
+ iUndefinedItem = CMenuItem::OpenL( iMenu, iUndefinedItemHeader );
}
-
-// ---------------------------------------------------------
-// Destructor.
-// ---------------------------------------------------------
+// ----------------------------------------------------------------------------
+// CMCSPluginEngine::~CMCSPluginEngine
+//
+// ----------------------------------------------------------------------------
//
CMCSPluginEngine::~CMCSPluginEngine()
{
StopObserving();
-
+
delete iPluginData;
- iNotifier.Close();
+
iMenu.Close();
- //iWatcher->Cancel();
delete iWatcher;
- delete iNotifyWatcher;
+
CCoeEnv::Static()->DeleteResourceFile( iResourceOffset );
+
+ delete iUndefinedItem;
}
-
// ---------------------------------------------------------------------------
-//
+// CMCSPluginEngine::InitL
+//
// ---------------------------------------------------------------------------
//
void CMCSPluginEngine::InitL()
@@ -149,69 +232,55 @@
iMenu.OpenL( KMyMenuData );
iPluginData = CMCSPluginData::NewL( *this, iInstanceUid );
iWatcher = CMCSPluginWatcher::NewL( CMCSPluginWatcher::EOperation );
- TInt err = iNotifier.Open( iMenu );
+
+ TInt err( iNotifier.Open( iMenu ) );
+
if ( err == KErrNone )
{
iNotifyWatcher = CMCSPluginWatcher::NewL( CMCSPluginWatcher::ENotify );
+
iNotifier.Notify( 0,
- RMenuNotifier::EItemsAddedRemoved |
- RMenuNotifier::EItemsReordered |
- RMenuNotifier::EItemAttributeChanged,
+ RMenuNotifier::EItemsAddedRemoved,
iNotifyWatcher->iStatus );
iNotifyWatcher->WatchNotify( this );
}
}
// ---------------------------------------------------------------------------
-// Tells the settings container to start observing for changes
+// CMCSPluginEngine::StartObservingL
+//
// ---------------------------------------------------------------------------
//
void CMCSPluginEngine::StartObservingL()
{
- // registering to bookmarks db. changes observing
- User::LeaveIfError( iBookmarkSession.Connect() );
- User::LeaveIfError( iBookmarkDb.Open( iBookmarkSession, KBrowserBookmarks ) );
-
- iBookmarkDbObserver = new (ELeave) CActiveFavouritesDbNotifier(
- iBookmarkDb, *this );
- iBookmarkDbObserver->Start();
-
// registering to mailbox db. changes observing
- iMsvSession = CMsvSession::OpenAsObserverL( *this) ;
+ iMsvSession = CMsvSession::OpenAsObserverL( *this );
}
// ---------------------------------------------------------------------------
-// Tells the settings container to stop observing for changes
+// CMCSPluginEngine::StopObserving
+//
// ---------------------------------------------------------------------------
//
void CMCSPluginEngine::StopObserving()
- {
- if ( iBookmarkDbObserver )
- {
- delete iBookmarkDbObserver;
- iBookmarkDbObserver = NULL;
- }
- iBookmarkDb.Close();
- iBookmarkSession.Close();
-
- if ( iMsvSession )
- {
- delete iMsvSession;
- iMsvSession = NULL;
- }
+ {
+ delete iMsvSession;
+ iMsvSession = NULL;
}
// ---------------------------------------------------------------------------
-//
+// CMCSPluginEngine::MenuDataL
+//
// ---------------------------------------------------------------------------
//
-TMCSData& CMCSPluginEngine::MenuDataL( const TInt& aIndex )
+CMCSData& CMCSPluginEngine::MenuDataL( const TInt& aIndex )
{
return iPluginData->DataItemL( aIndex );
}
// ---------------------------------------------------------------------------
-//
+// CMCSPluginEngine::MenuItemCount
+//
// ---------------------------------------------------------------------------
//
TInt CMCSPluginEngine::MenuItemCount()
@@ -220,364 +289,455 @@
}
// ---------------------------------------------------------------------------
+// CMCSPluginEngine::FindMenuItemL
// Returns the menu item header, which matches the given filter.
// ---------------------------------------------------------------------------
//
TMenuItem CMCSPluginEngine::FindMenuItemL( CMenuFilter& aFilter )
{
TMenuItem item;
- const TInt root = iMenu.RootFolderL();
+ const TInt root( iMenu.RootFolderL() );
+
RArray<TMenuItem> items;
CleanupClosePushL( items );
+
iMenu.GetItemsL( items, root, &aFilter, ETrue );
- if( items.Count() > 0 )
+
+ if ( items.Count() > 0 )
{
-
item = items[0];
}
CleanupStack::PopAndDestroy( &items );
+
return item;
}
// ---------------------------------------------------------------------------
+// CMCSPluginEngine::FetchMenuItemL
// Returns the actual menu item for the given header.
// ---------------------------------------------------------------------------
//
-CMenuItem* CMCSPluginEngine::FetchMenuItemL( const TMenuItem& aMenuItem )
+CMenuItem* CMCSPluginEngine::FetchMenuItemL( CMCSData& aData )
{
- return CMenuItem::OpenL( iMenu, aMenuItem );
+ if( aData.MenuItem().Type() == KMenuTypeUrl )
+ {
+ return CreateBkmItemL( aData );
+ }
+ else if( aData.MenuItem().Type() == KMenuTypeMailbox )
+ {
+ return CreateMailboxItemL( aData);
+ }
+ else
+ {
+ CMenuItem* item = NULL;
+ TRAP_IGNORE( item = CMenuItem::OpenL( iMenu, aData.MenuItem().Id() ) );
+ return item;
+ }
}
// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+CMenuItem* CMCSPluginEngine::CreateBkmItemL( CMCSData& aData )
+ {
+ CMenuItem* item( NULL );
+ if( aData.MenuItem().Id() != KErrNotFound )
+ {
+ item = CMenuItem::CreateL( iMenu, KMenuTypeUrl, 0, 0 );
+ CleanupStack::PushL( item );
+ item->SetAttributeL( KMenuAttrLongName, aData.Name() );
+ item->SetAttributeL( KMenuAttrIconFile, KMenuIconFile );
+ item->SetAttributeL( KMenuAttrIconId, KMenuBookmarkIconId );
+ item->SetAttributeL( KMenuAttrMaskId, KMenuBookmarkMaskId );
+ CleanupStack::Pop( item );
+ }
+ return item;
+ }
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+CMenuItem* CMCSPluginEngine::CreateMailboxItemL( CMCSData& aData )
+ {
+ CMenuItem* item( NULL );
+ if( aData.MenuItem().Id() != KErrNotFound )
+ {
+ item = CMenuItem::CreateL( iMenu, KMenuTypeMailbox, 0, 0 );
+ CleanupStack::PushL( item );
+ item->SetAttributeL( KMenuAttrLongName, aData.Name() );
+ item->SetAttributeL( KMenuAttrIconFile, KMenuIconFile );
+ item->SetAttributeL( KMenuAttrIconId, KMenuMailboxIconId );
+ item->SetAttributeL( KMenuAttrMaskId, KMenuMailboxMaskId );
+ CleanupStack::Pop( item );
+ }
+ return item;
+ }
+
+// ---------------------------------------------------------------------------
+// CMCSPluginEngine::ItemIconL
// Returns MCS default icon if attribute is 'icon' else parses the
// skin definition from attribute and sets attributes to aMenuItem.
// ---------------------------------------------------------------------------
//
-CGulIcon* CMCSPluginEngine::ItemIconL( CMenuItem& aMenuItem, const TDesC& aAttr )
+CGulIcon* CMCSPluginEngine::ItemIconL( CMenuItem* aMenuItem,
+ const TDesC& aAttr )
{
+
+ CMenuItem* menuItem;
+
+ // check if item exists in MCS
+ if ( aMenuItem )
+ {
+ TUint32 flags = aMenuItem->Flags();
+ TUint32 isHidden = flags & TMenuItem::EHidden;
+ TUint32 isMissing = flags & TMenuItem::EMissing;
+
+ if ( iUndefinedItem && ( isHidden || isMissing ) )
+ {
+ menuItem = iUndefinedItem;
+ }
+ else
+ {
+ menuItem = aMenuItem;
+ }
+ }
+ else
+ {
+ // item not found in MCS. Use Undefined Icon
+ menuItem = iUndefinedItem;
+ }
+
CAknIcon* icon( NULL );
CGulIcon* gIcon( NULL );
TBool exists( ETrue );
- if( aAttr != KIcon )
+
+ if ( aAttr != KIcon )
{
// Resolve secondary icon definition from attribute
- TPtrC iconDef = aMenuItem.GetAttributeL( aAttr, exists );
- if( exists )
+ TPtrC iconDef( menuItem->GetAttributeL( aAttr, exists ) );
+
+ if ( exists )
{
- exists = ConstructMenuItemForIconL( iconDef, aMenuItem );
+ exists = ConstructMenuItemForIconL( iconDef, *menuItem );
}
}
- if( exists )
+
+ if ( exists )
{
- icon = MenuIconUtility::GetItemIconL( aMenuItem );
- if( icon )
+ icon = MenuIconUtility::GetItemIconL( *menuItem );
+
+ if ( icon )
{
CleanupStack::PushL( icon );
- gIcon = CGulIcon::NewL(icon->Bitmap(), icon->Mask());
+
+ gIcon = CGulIcon::NewL( icon->Bitmap(), icon->Mask() );
+
// Detach and delete
icon->SetBitmap( NULL );
icon->SetMask( NULL );
+
CleanupStack::PopAndDestroy( icon );
}
}
+
return gIcon;
}
// ---------------------------------------------------------------------------
+// CMCSPluginEngine::ItemTextL
// Returns text string for the given attribute
// ---------------------------------------------------------------------------
//
-TPtrC CMCSPluginEngine::ItemTextL( CMenuItem& aMenuItem, const TDesC& aAttr )
- {
+TPtrC CMCSPluginEngine::ItemTextL( CMenuItem* aMenuItem, const TDesC& aAttr )
+ {
+
+ CMenuItem* menuItem;
+
+ // check if item exists in MCS
+ if ( aMenuItem )
+ {
+ TUint32 flags = aMenuItem->Flags();
+ TUint32 isHidden = flags & TMenuItem::EHidden;
+ TUint32 isMissing = flags & TMenuItem::EMissing;
+
+ // if item is hidden or missing (mmc card removed)
+ // use "Undefined" text instead
+ if ( iUndefinedItem && ( isHidden || isMissing ) )
+ {
+ menuItem = iUndefinedItem;
+ }
+ else
+ {
+ menuItem = aMenuItem;
+ }
+ }
+ else
+ {
+ // item not found in MCS. Use "Undefined" text
+ menuItem = iUndefinedItem;
+ }
+
TBool exists( KErrNotFound );
- TPtrC name = aMenuItem.GetAttributeL( aAttr, exists );
- if( exists )
+
+ TPtrC name( menuItem->GetAttributeL( aAttr, exists ) );
+
+ if ( exists )
{
return name;
}
- else
- {
- return KNullDesC();
- }
+
+ return KNullDesC();
}
// ---------------------------------------------------------------------------
+// CMCSPluginEngine::LaunchItemL
// Calls the open command for the given menu item header
// ---------------------------------------------------------------------------
//
void CMCSPluginEngine::LaunchItemL( const TInt& aIndex )
{
-
- if ( iSuspend )
+ if ( iBackupRestore )
{
- HBufC* temp = StringLoader::LoadLC( R_MCS_DISABLE_OPEN_ITEM );
-
- CAknNoteDialog* dialog = new (ELeave) CAknNoteDialog(
- CAknNoteDialog::EConfirmationTone,
- CAknNoteDialog::ENoTimeout );
- dialog->SetTextL( temp->Des() );
- dialog->ExecuteDlgLD( R_MCS_DISABLE_OPEN_ITEM_DLG );
- CleanupStack::PopAndDestroy( temp );
- return;
- }
- if( iWatcher->IsActive())
- {
+ ShowNoteDlgL( R_MCS_DISABLE_OPEN_ITEM );
return;
}
-
- TMCSData& dataItem = iPluginData->DataItemL( aIndex );
- CMenuItem* item = CMenuItem::OpenL( iMenu, dataItem.MenuItem());
- CleanupStack::PushL( item );
- TPtrC type = item->Type();
+ CMCSData& dataItem( iPluginData->DataItemL( aIndex ) );
+ // run item based on its type
+ TPtrC type( dataItem.MenuItem().Type());
// run folder
if ( type == KMenuTypeFolder )
{
-
- // message for MM application
- HBufC8* message;
-
- // prepare message for launching folder
- TBool hasApplicationGroupName = EFalse;
- TPtrC applicationGroupName = item->GetAttributeL( KApplicationGroupName,
- hasApplicationGroupName );
- if ( !hasApplicationGroupName )
- {
- CleanupStack::PopAndDestroy( item );
- return;
- }
- message = HBufC8::NewLC( KMMApplication().Length() +
- KSetFocusString().Length() +
- applicationGroupName.Length() +
- KHideExit2().Length() );
-
- message->Des().Copy( KMMApplication );
- message->Des().Append( KSetFocusString );
- message->Des().Append( applicationGroupName );
- message->Des().Append( KHideExit2 );
-
- // find MM application
- TApaTaskList taskList( CCoeEnv::Static()->WsSession() );
- TApaTask task = taskList.FindApp( KMMUid );
-
- if ( task.Exists() )
- {
- // MM is already running in background - send APA Message
- task.SendMessage( TUid::Uid( KUidApaMessageSwitchOpenFileValue ), *message );
- }
- else
- {
- // MM not running yet - use Command Line Tail
- RApaLsSession appArcSession;
- CleanupClosePushL( appArcSession );
- User::LeaveIfError( appArcSession.Connect() );
- TApaAppInfo appInfo;
- TInt err = appArcSession.GetAppInfo( appInfo, KMMUid );
- if ( err == KErrNone )
- {
- CApaCommandLine* cmdLine = CApaCommandLine::NewLC();
- cmdLine->SetExecutableNameL( appInfo.iFullName );
- cmdLine->SetCommandL( EApaCommandRun );
- cmdLine->SetTailEndL( *message );
- appArcSession.StartApp( *cmdLine );
- CleanupStack::PopAndDestroy( cmdLine );
- }
- CleanupStack::PopAndDestroy( &appArcSession );
- }
- CleanupStack::PopAndDestroy( message );
+ LaunchFolderItemL( dataItem );
+ }
+ else if( type == KMenuTypeUrl )
+ {
+ LaunchBookmarkItemL( dataItem );
+ }
+ else if( type == KMenuTypeMailbox )
+ {
+ LaunchMailboxItemL( dataItem );
}
else
{
- TBool exists( EFalse );
- TPtrC desc( item->GetAttributeL( KMenuAttrUid, exists ) );
+ LaunchMCSItemL( dataItem );
+ }
+ }
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+void CMCSPluginEngine::LaunchFolderItemL( CMCSData& aData )
+ {
+ CMenuItem* item = NULL;
+ TRAP_IGNORE( item = CMenuItem::OpenL( iMenu, aData.MenuItem().Id() ) );
+
+ // item does not exist at all in MCS
+ if ( item == NULL )
+ {
+ ShowNoteDlgL( R_MCS_DISABLE_OPEN_ITEM_MISSING );
+ return;
+ }
+
+ CleanupStack::PushL( item );
+
+ StartEffect( KMMUid );
+
+ // message for MM application
+ HBufC8* message;
+
+ // prepare message for launching folder
+ TBool hasApplicationGroupName( EFalse );
+
+ TPtrC applicationGroupName( item->GetAttributeL(
+ KApplicationGroupName, hasApplicationGroupName ) );
+
+ if ( !hasApplicationGroupName )
+ {
+ return;
+ }
+
+ message = HBufC8::NewLC( KMMApplication().Length() +
+ KSetFocusString().Length() +
+ applicationGroupName.Length() +
+ KHideExit2().Length() );
+
+ message->Des().Copy( KMMApplication );
+ message->Des().Append( KSetFocusString );
+ message->Des().Append( applicationGroupName );
+ message->Des().Append( KHideExit2 );
+
+ // find MM application
+ TApaTaskList taskList( CCoeEnv::Static()->WsSession() );
+ TApaTask task( taskList.FindApp( KMMUid ) );
+
+ if ( task.Exists() )
+ {
+ // MM is already running in background - send APA Message
+ task.SendMessage(
+ TUid::Uid( KUidApaMessageSwitchOpenFileValue ), *message );
+ }
+ else
+ {
+ // MM not running yet - use Command Line Tail
+ RApaLsSession appArcSession;
+ CleanupClosePushL( appArcSession );
- if( exists )
- {
- _LIT( KPrefix, "0x" );
- const TInt pos( desc.FindF( KPrefix ) );
-
- if( pos != KErrNotFound )
- {
- TLex lex( desc.Mid( pos + KPrefix().Length() ) );
- // Hex parsing needs unsigned int
- TUint32 value = 0;
- const TInt parseResult = lex.Val( value, EHex );
-
- if ( parseResult == KErrNone )
- {
- TUid uid( KNullUid );
- TInt32 value32( value );
- uid.iUid = value32;
-
- if( uid != KNullUid )
- {
- //start a full screen effect
- GfxTransEffect::BeginFullScreen(
- AknTransEffect::EApplicationStart,
- TRect(0,0,0,0),
- AknTransEffect::EParameterType,
- AknTransEffect::GfxTransParam( uid,
- AknTransEffect::TParameter::EActivateExplicitContinue ));
- }
- }
- }
+ User::LeaveIfError( appArcSession.Connect() );
+
+ TApaAppInfo appInfo;
+ TInt err( appArcSession.GetAppInfo( appInfo, KMMUid ) );
+
+ if ( err == KErrNone )
+ {
+ CApaCommandLine* cmdLine = CApaCommandLine::NewLC();
+ cmdLine->SetExecutableNameL( appInfo.iFullName );
+ cmdLine->SetCommandL( EApaCommandRun );
+ cmdLine->SetTailEndL( *message );
+ appArcSession.StartApp( *cmdLine );
+ CleanupStack::PopAndDestroy( cmdLine );
}
-
- // run application/shortcut/bookmark
- CMenuOperation* operation = item->HandleCommandL(
- KMenuCmdOpen, KNullDesC8, iWatcher->iStatus );
- iWatcher->Watch( operation );
+ CleanupStack::PopAndDestroy( &appArcSession );
}
+ CleanupStack::PopAndDestroy( message );
CleanupStack::PopAndDestroy( item );
}
// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+void CMCSPluginEngine::LaunchBookmarkItemL( CMCSData& aData )
+ {
+ StartEffect( KBrowserUid );
+
+ CSchemeHandler* urlHandler = CSchemeHandler::NewL( aData.Value());
+ CleanupStack::PushL( urlHandler );
+ urlHandler->HandleUrlStandaloneL();
+ CleanupStack::PopAndDestroy( urlHandler );
+ }
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+void CMCSPluginEngine::LaunchMailboxItemL( CMCSData& aData )
+ {
+ TInt id( aData.MenuItem().Id());
+ if ( id == KErrNotFound )
+ {
+ ShowNoteDlgL( R_MCS_DISABLE_OPEN_ITEM_MISSING );
+ return;
+ }
+
+ StartEffect( KMCSCmailUidValue );
+
+ TUid uId = TUid::Uid( id );
+ const TVwsViewId viewId( KMCSCmailUidValue, KMCSCmailMailboxViewIdValue );
+ CVwsSessionWrapper* vwsSession = CVwsSessionWrapper::NewL();
+ vwsSession->CreateActivateViewEvent( viewId, uId, KNullDesC8() );
+ delete vwsSession;
+ }
+
+// ---------------------------------------------------------------------------
+//
+// ---------------------------------------------------------------------------
+//
+void CMCSPluginEngine::LaunchMCSItemL( CMCSData& aData )
+ {
+ if( iWatcher->IsActive())
+ {
+ return;
+ }
+ CMenuItem* item = NULL;
+ TRAP_IGNORE( item = CMenuItem::OpenL( iMenu, aData.MenuItem().Id() ) );
+
+ // item does not exist at all in MCS
+ if ( item == NULL )
+ {
+ ShowNoteDlgL( R_MCS_DISABLE_OPEN_ITEM_MISSING );
+ return;
+ }
+
+ CleanupStack::PushL( item );
+
+ TBool attrExists = ETrue;
+ TPtrC uid = item->GetAttributeL( KMenuAttrUid, attrExists );
+
+ // trying to run hidden or missing application (e.g. unistalled app
+ // or app on MMC which was removed )
+ // -> We display a note for a user that this is not possible¨
+ TUint32 isHidden = item->Flags() & TMenuItem::EHidden;
+ TUint32 isMissing = item->Flags() & TMenuItem::EMissing;
+
+ if ( ( attrExists && uid == KMenuAttrUndefUid ) || isHidden || isMissing )
+ {
+ CleanupStack::PopAndDestroy( item );
+ ShowNoteDlgL( R_MCS_DISABLE_OPEN_ITEM_MISSING );
+ return;
+ }
+
+ if ( attrExists )
+ {
+ StartEffect( ParseHexUidFromString( uid ));
+ }
+
+ // run application/shortcut
+ CMenuOperation* operation( item->HandleCommandL(
+ KMenuCmdOpen, KNullDesC8, iWatcher->iStatus ) );
+ iWatcher->Watch( operation );
+ CleanupStack::PopAndDestroy( item );
+ }
+
+// ---------------------------------------------------------------------------
+// CMCSPluginEngine::HandleNotifyL
// Handle the change in Menu Content
// ---------------------------------------------------------------------------
//
void CMCSPluginEngine::HandleNotifyL()
{
- TInt count( iPluginData->DataCount());
- for( TInt i = 0; i < count; i++ )
+ TInt count( iPluginData->DataCount() );
+
+ for ( TInt i = 0; i < count; i++ )
{
- TMCSData& data = iPluginData->DataItemL(i);
- // Check that all the data still exist is MCS, if flag is hidden or
- // missing, we have to remove data from UI
- CMenuItem* menuItem = CMenuItem::OpenL( iMenu, data.MenuItem().Id() );
- CleanupStack::PushL( menuItem );
- if ( !menuItem ||
- ( menuItem->Flags() & TMenuItem::EHidden ) ||
- ( menuItem->Flags() & TMenuItem::EMissing ) )
- {
- // Get the replacement for hidden data
- CMenuFilter* filter = CMenuFilter::NewL();
- CleanupStack::PushL( filter );
- // 'Undefined' item
- filter->HaveAttributeL( KMenuAttrUid, KMenuAttrUndefUid );
- TMenuItem undefItem = FindMenuItemL( *filter );
- iPluginData->ReplaceMenuItemL( i, undefItem );
- iPluginData->SaveSettingsL( i, *FetchMenuItemL(undefItem) );
- CleanupStack::PopAndDestroy( filter );
- }
- CleanupStack::PopAndDestroy( menuItem );
- menuItem = NULL;
+ CMCSData& data( iPluginData->DataItemL( i ) );
+ data.SetDirty( ETrue );
}
+
+ iPlugin.PublishL();
+
// Notification must be activated again
iNotifyWatcher->Cancel();
iNotifier.Notify( 0,
- RMenuNotifier::EItemsAddedRemoved |
- RMenuNotifier::EItemsReordered |
- RMenuNotifier::EItemAttributeChanged,
- iNotifyWatcher->iStatus );
+ RMenuNotifier::EItemsAddedRemoved,
+ iNotifyWatcher->iStatus );
iNotifyWatcher->WatchNotify( this );
- // Publish changed data
- iPlugin.PublishL();
}
// ---------------------------------------------------------------------------
-// From class MMsvSessionObserver.
+// CMCSPluginEngine::HandleSessionEventL
// Handles an event from the message server.
// ---------------------------------------------------------------------------
//
-void CMCSPluginEngine::HandleSessionEventL(
- TMsvSessionEvent aEvent, TAny* /*aArg1*/, TAny* /*aArg2*/, TAny* /*aArg3*/)
- {
- switch ( aEvent )
- {
- case EMsvEntriesDeleted:
- // fall-through intended here
- case EMsvEntriesChanged:
- {
-
- }
- break;
- default:
- break;
- }
- }
-
-// -----------------------------------------------------------------------------
-// From class MFavouritesDbObserver.
-// Handles database event.
-// -----------------------------------------------------------------------------
-//
-void CMCSPluginEngine::HandleFavouritesDbEventL( RDbNotifier::TEvent aEvent )
+void CMCSPluginEngine::HandleSessionEventL( TMsvSessionEvent aEvent,
+ TAny* aArg1, TAny* /*aArg2*/, TAny* /*aArg3*/)
{
switch ( aEvent )
{
- case RDbNotifier::ERollback:
- // fall-through intended here
- case RDbNotifier::ERecover:
- // fall-through intended here
- case RDbNotifier::ECommit:
+ case EMsvEntriesDeleted:
{
- // Get list of favourites bookmarks
- CFavouritesItemList* favItems =
- new (ELeave) CFavouritesItemList();
- CleanupStack::PushL( favItems );
- TInt err = iBookmarkDb.GetAll( *favItems, KFavouritesNullUid,
- CFavouritesItem::EItem );
- if ( err != KErrNone )
- {
- ASSERT(0);
- }
- TInt count_fav = favItems->Count();
-
- // Do for each plugin data (4x times)
- TInt count_data( iPluginData->DataCount() );
- for ( TInt item_index = 0; item_index < count_data; item_index++ )
+ CMsvEntrySelection* sel = static_cast<CMsvEntrySelection*>( aArg1 );
+ TInt count( sel->Count());
+ for( TInt i = 0; i < count; i++ )
{
- // Get item ID and open its menu related item
- TMCSData& data = iPluginData->DataItemL( item_index );
- TInt itemID( data.MenuItem().Id() );
- CMenuItem* menuItem = CMenuItem::OpenL( iMenu, itemID );
- CleanupStack::PushL( menuItem );
-
- // Get URL aatribute
- TBool attrExists = EFalse;
- TPtrC url = menuItem->GetAttributeL( _L("url"), attrExists );
- // If bookmark...
- if ( attrExists )
- {
- // Get bookmark UID
- TPtrC uid_item_ptr = menuItem->GetAttributeL(
- KMenuAttrUid, attrExists );
-
- // Compare with each item in fav. bookmarks list
- TBool itemExists = EFalse;
- for ( TInt fav_index = count_fav - 1; fav_index >= 0; fav_index-- ) // newest on top
- {
- // Get list item UID
- TUid uid_fav = TUid::Uid( favItems->At( fav_index )->Uid() );
- if ( uid_fav.Name() == uid_item_ptr )
- {
- // Bookmark still exist in fav. bookmarks list
- itemExists = ETrue;
- break;
- }
- }
-
- if ( !itemExists )
- {
- // If item not axist any more, replace it by undefined icon
- CMenuFilter* filter = CMenuFilter::NewL();
- CleanupStack::PushL( filter );
- // 'Undefined' item
- filter->HaveAttributeL( KMenuAttrUid,
- KMenuAttrUndefUid );
- TMenuItem undefItem = FindMenuItemL( *filter );
- iPluginData->ReplaceMenuItemL( item_index, undefItem );
- iPluginData->SaveSettingsL( item_index, *FetchMenuItemL(
- undefItem ) );
- CleanupStack::PopAndDestroy( filter );
- }
- }
- CleanupStack::PopAndDestroy( menuItem );
+ iPluginData->RemoveDataL( sel->At( i ) );
}
- CleanupStack::PopAndDestroy( favItems );
}
break;
default:
@@ -586,180 +746,88 @@
}
// ---------------------------------------------------------------------------
-// Resumes the engine
+// CMCSPluginEngine::SetBackupRestore
+//
// ---------------------------------------------------------------------------
//
-void CMCSPluginEngine::ResumeL()
+void CMCSPluginEngine::SetBackupRestore( TBool aBackupRestore )
{
- iSuspend = EFalse;
+ iBackupRestore = aBackupRestore;
}
// ---------------------------------------------------------------------------
-// Suspends the engine
-// ---------------------------------------------------------------------------
-//
-void CMCSPluginEngine::Suspend()
- {
- iSuspend = ETrue;
- }
-
-// ---------------------------------------------------------------------------
+// CMCSPluginEngine::ShowSettingsL
// Launch General Settings plugin
// ---------------------------------------------------------------------------
//
void CMCSPluginEngine::ShowSettingsL()
{
TUid uid = {AI_UID_ECOM_IMPLEMENTATION_SETTINGS_MCSPLUGIN};
- CGSLauncher* l = CGSLauncher::NewLC();
- l->LaunchGSViewL ( uid,
- KHomescreenUid,
- iInstanceUid );
- CleanupStack::PopAndDestroy( l );
+
+ CGSLauncher* launcher = CGSLauncher::NewLC();
+ launcher->LaunchGSViewL ( uid, KHomescreenUid, iInstanceUid );
+ CleanupStack::PopAndDestroy( launcher );
+ }
- }
// ---------------------------------------------------------------------------
-// ResolveSkinItemId
+// CMCSPluginEngine::ConstructMenuItemForIconL
// Syntax: skin(major minor):mif(filename bimapId maskId)
// ---------------------------------------------------------------------------
//
-TBool CMCSPluginEngine::ConstructMenuItemForIconL( const TDesC& aPath, CMenuItem& aMenuItem )
+TBool CMCSPluginEngine::ConstructMenuItemForIconL( const TDesC& aPath,
+ CMenuItem& aMenuItem )
{
- TInt pos = aPath.Locate( ':' );
- if( pos == KErrNotFound )
+ TInt pos( aPath.Locate( ':' ) );
+ if ( pos == KErrNotFound )
{
pos = aPath.Length();
}
- TPtrC skin = aPath.Left( pos );
- TInt sf = skin.FindF( KSkin );
- if( sf == KErrNotFound )
+ TPtrC skin( aPath.Left( pos ) );
+ TInt sf( skin.FindF( KSkin ) );
+
+ if ( sf == KErrNotFound )
{
return EFalse;
}
- TPtrC temp = skin.Mid( sf + KSkin().Length());
- TLex input( temp );
+
+ TPtrC temp( skin.Mid( sf + KSkin().Length() ) );
+ TLex input( temp );
input.SkipSpace();
- if( !input.Eos() && input.Peek() == '(')
+
+ if ( !input.Eos() && input.Peek() == '(' )
{
input.Inc();
}
- TPtrC majorId = NextIdToken( input );
- TPtrC minorId = NextIdToken( input );
+ TPtrC majorId( NextIdToken( input ) );
+ TPtrC minorId( NextIdToken( input ) );
+
aMenuItem.SetAttributeL( KMenuAttrIconSkinMajorId, majorId );
aMenuItem.SetAttributeL( KMenuAttrIconSkinMinorId, minorId );
-
- //TPtrC mif = aPath.Mid( pos + 1 );
- //TInt mf = mif.FindF( KMif );
- if( aPath.Length() > pos && (aPath.Mid( pos + 1 ).FindF( KMif ) != KErrNotFound ))
+
+ if ( aPath.Length() > pos &&
+ ( aPath.Mid( pos + 1 ).FindF( KMif ) != KErrNotFound ) )
{
- TPtrC mif = aPath.Mid( pos + 1 );
- TInt mf = mif.FindF( KMif );
- //TPtrC temp1 = mif.Mid( mf+ KMif().Length());
- TLex input1( mif.Mid( mf+ KMif().Length()) );
+ TPtrC mif( aPath.Mid( pos + 1 ) );
+ TInt mf( mif.FindF( KMif ) );
+
+ TLex input1( mif.Mid( mf + KMif().Length() ) );
input1.SkipSpace();
- if( !input1.Eos() && input1.Peek() == '(')
+
+ if ( !input1.Eos() && input1.Peek() == '(' )
{
input1.Inc();
}
- TPtrC file = NextIdToken( input1 );
- TPtrC bitmapId = NextIdToken( input1 );
- TPtrC maskId = NextIdToken( input1 );
+
+ TPtrC file( NextIdToken( input1 ) );
+ TPtrC bitmapId( NextIdToken( input1 ) );
+ TPtrC maskId( NextIdToken( input1 ) );
+
aMenuItem.SetAttributeL( KMenuAttrIconFile, file );
aMenuItem.SetAttributeL( KMenuAttrIconId, bitmapId );
aMenuItem.SetAttributeL( KMenuAttrMaskId, maskId );
}
+
return ETrue;
}
-// ---------------------------------------------------------------------------
-// Called during plugin desctruction
-// Decrements reference counters of all run-time generated items
-// and deletes those which have reference counter == 0
-// ---------------------------------------------------------------------------
-//
-void CMCSPluginEngine::CleanMCSItemsL()
- {
- const TInt count( iPluginData->DataCount() );
- for( TInt i = 0; i < count; i++ )
- {
- TMCSData& data = iPluginData->DataItemL(i);
-
- CMenuItem* menuItem = CMenuItem::OpenL( iMenu, data.MenuItem().Id() );
- if( !menuItem )
- {
- continue;
- }
- CleanupStack::PushL( menuItem );
-
- // check if ref_count attribute exists
- TBool exists = EFalse;
- TPtrC param = menuItem->GetAttributeL( KMenuAttrRefcount, exists );
- if( exists )
- {
- const TInt references = UpdateMenuItemsRefCountL( menuItem, -1 );
-
- // Create a nested loop inside CActiveScheduler.
- CActiveSchedulerWait* wait = new (ELeave) CActiveSchedulerWait;
- CleanupStack::PushL( wait );
-
- if( references > 0 )
- {
- // if counter is still > 0, update its value in MCS
- CMenuOperation* op = menuItem->SaveL( iWatcher->iStatus );
- iWatcher->StopAndWatch( op, wait );
-
- // Start the nested scheduler loop.
- wait->Start();
- }
- else
- {
- // counter reached 0 -> item is not referenced by any shortcut
- // so remove it from MCS
- if( !iWatcher->IsActive() )
- {
- CMenuOperation* op = iMenu.RemoveL( menuItem->Id(), iWatcher->iStatus );
- iWatcher->StopAndWatch( op, wait );
-
- // Start the nested scheduler loop.
- wait->Start();
- }
- }
-
- CleanupStack::PopAndDestroy( wait );
- wait = NULL;
- }
-
- CleanupStack::PopAndDestroy( menuItem );
- menuItem = NULL;
- }
- }
-
-
-// ---------------------------------------------------------------------------
-// Helper method. Adds a given constant to a value of reference counter
-// ---------------------------------------------------------------------------
-//
-TInt CMCSPluginEngine::UpdateMenuItemsRefCountL( CMenuItem* aItem,
- const TInt aValueToAdd )
- {
- TBool exists = EFalse;
- CleanupStack::PushL( aItem );
- TPtrC param = aItem->GetAttributeL( KMenuAttrRefcount, exists );
- CleanupStack::Pop( aItem );
- if ( exists )
- {
- TInt references;
- TLex16 lextmp( param );
- lextmp.Val( references );
- references += aValueToAdd;
- TBuf<128> buf;
- buf.NumUC( references );
-
- // set new ref_count
- CleanupStack::PushL( aItem );
- aItem->SetAttributeL( KMenuAttrRefcount, buf);
- CleanupStack::Pop( aItem );
- // return new ref_count
- return references;
- }
- return -1;
- }
+// End of file
--- a/idlefw/plugins/mcsplugin/settings/inc/mcspluginsettings.h Wed Mar 03 15:38:34 2010 +0200
+++ b/idlefw/plugins/mcsplugin/settings/inc/mcspluginsettings.h Wed May 12 13:36:47 2010 +0300
@@ -1,5 +1,5 @@
/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2009 - 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"
@@ -122,15 +122,6 @@
*/
CMCSPluginSettingsContainer* Container();
- /**
- * Check if view is activate
- * @since S60 5.1
- * @return ETrue if activated, EFalse otherwise
- */
- TBool Activated() const;
-
-protected:
-
private: // From MEikMenuObserver
/**
@@ -168,15 +159,6 @@
*/
void HandleListBoxSelectionL();
- /**
- * DoHandleListBoxSelectionL
- *
- * @param aAny
- * @return TInt
- */
- static TInt DoHandleListBoxSelectionL( TAny* aAny );
-
-
private: // data
/**
--- a/idlefw/plugins/mcsplugin/settings/inc/mcspluginsettingsapplist.h Wed Mar 03 15:38:34 2010 +0200
+++ b/idlefw/plugins/mcsplugin/settings/inc/mcspluginsettingsapplist.h Wed May 12 13:36:47 2010 +0300
@@ -1,5 +1,5 @@
/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2009 - 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"
@@ -21,55 +21,12 @@
#include <e32base.h>
#include <bamdesca.h> // For MDesCArray
-#include <apgcli.h> // For RApaLsSession
#include <msvapi.h> // For MMsvSessionObserver
-#include <apgnotif.h> // For MApaAppListServObserver
#include <mcsmenu.h> // For MenuContentService
#include <propertymap.h>// For HSPS settings property map
-/**
- * @ingroup group_mcsplugin
- *
- * Observer interface for application list events
- *
- * @since S60 v3.2
- */
-class MMCSPluginListObserver
-{
-public:
-
- /**
- * AppList event codes
- */
- enum TScutListEvent
- {
- EAppListReady,
- EAppListUpdated,
- EBkmListUpdated
- };
-
- /**
- * Callback for application list events
- *
- * @since S60 v3.2
- * @param aEvent AppList event code
- * @param aAdded ETrue if applications were added, EFalse if removed
- */
- virtual void HandleScutListEventL(
- TScutListEvent aEvent, TBool aAdded ) = 0;
-
- // virtual TBool IsHidden(const TUid& aAppUid) const = 0;
-
-};
-
struct TSettingItem;
-/**
- * Application list for settings listbox
- *
- * @since S60 v3.2
- */
-
-class CMCSPluginWatcher;
+class CMenuItem;
/**
* @ingroup group_mcsplugin
@@ -78,7 +35,7 @@
*
* @since S60 v9.1
*/
-class CMCSPluginSettingsAppList : public CBase, //public CActive
+class CMCSPluginSettingsAppList : public CBase,
public MDesCArray, public MMsvSessionObserver
{
@@ -143,14 +100,14 @@
TAny* aArg3 );
/**
- * Starts the asynchronous appliation list initialization
+ * Starts the asynchronous application list initialization
*
* @since S60 v3.2
*/
void StartL();
/**
- * FindItemL
+ * Finds item from item array based on property values.
*
* @since S60
* @param aProperties
@@ -160,21 +117,18 @@
aProperties );
/**
- *
+ * Returns menu item from list, based on given index
*
* @since S60
- * @param
+ * @param aIndex List index
* @return
*/
- CMenuItem& ItemL(const TInt& aIndex );
+ CMenuItem* ItemL(const TInt& aIndex );
+
/**
- * RemoveMenuItemL
- *
- * @param aIndex
+ * Returns title for undefined item
*/
- void RemoveMenuItemL( TInt aIndex );
-
-protected:
+ TPtrC UndefinedText() { return *iUndefinedText; };
private:
/**
@@ -215,20 +169,6 @@
*/
void AddMailboxL( const TDesC& aMailbox, const TDesC& aMailboxId );
- /**
- * GetID of MCS Plugin Folder
- *
- * @return TInt
- */
- TInt GetMCSPluginFolderIdL();
-
- /**
- * Update menu items
- *
- * @return TInt
- */
- TInt UpdateMenuItemsRefCountL( CMenuItem* aItem, TInt aValueToAdd );
-
private: // data
/**
@@ -242,41 +182,20 @@
* Own.
*/
CMsvSession* iMsvSession;
-
- /**
- * Registered observer for application list events
- */
- //MMCSPluginListObserver& iObserver;
-
- /**
- * A flag indicating if the app list should observe changes
- */
- TBool iObserving;
-
/**
* iMenu
*/
RMenu iMenu;
/**
- * iSaveWatcher
- */
- CMCSPluginWatcher* iSaveWatcher;
-
- /**
- * iUpdateWatcher
+ * Name of "Undefined" application, own
*/
- CMCSPluginWatcher* iUpdateWatcher;
-
- /**
- * iRemoveWatcher
+ HBufC* iUndefinedText;
+
+ /*
+ * Undefined MCS item, own
*/
- CMCSPluginWatcher* iRemoveWatcher;
-
- /**
- * iMCSPluginFolderId
- */
- TInt iMCSPluginFolderId;
+ CMenuItem* iUndefinedItem;
};
#endif // CMCSPLUGINSETTINGSAPPLIST_H
--- a/idlefw/plugins/mcsplugin/settings/inc/mcspluginsettingsbkmlist.h Wed Mar 03 15:38:34 2010 +0200
+++ b/idlefw/plugins/mcsplugin/settings/inc/mcspluginsettingsbkmlist.h Wed May 12 13:36:47 2010 +0300
@@ -1,5 +1,5 @@
/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2009 - 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"
@@ -21,15 +21,10 @@
#include <e32base.h>
#include <bamdesca.h> // For MDesCArray
-#include <favouritesdbobserver.h> // For MFavouritesDbObserver
#include <favouritesdb.h> // For RFavouritesDb
-#include <favouritesitemlist.h> // For CFavouritesItemList
#include <mcsmenu.h> // For MenuContentService
+#include <propertymap.h>
-class CActiveFavouritesDbNotifier;
-class CAiScutSettingsItem;
-class CMCSPluginSettingsModel;
-class CMCSPluginWatcher;
struct TSettingItem;
/**
* @ingroup group_mcsplugin
@@ -100,7 +95,7 @@
* @param aIndex Setting item to find
* @return MCS menu item
*/
- CMenuItem& ItemL( TInt aIndex );
+ CMenuItem* ItemL( TInt aIndex );
/**
* Returns target bookmark data from the given index
@@ -110,18 +105,10 @@
* @param aParams On return, the bookmark parameters
* @param aCaption On return, the bookmark caption
* @return KErrNotFound if the bookmark cannot be found, KErrNone otherwise
- */
- //TInt GetDataByIndex(TInt aIndex, TPtrC& aParams, TPtrC& aCaption) const;
-
+ */
TSettingItem FindItemL(
RPointerArray<HSPluginSettingsIf::CPropertyMap>& aProperties );
-
- /**
- * Remove menu item
- *
- * @param aIndex
- */
- void RemoveMenuItemL( TInt aIndex );
+
protected:
@@ -147,13 +134,6 @@
const TDesC& aUrl, TBookmarkType aType );
/**
- * Updates the bookmark list
- *
- * @since S60 v3.2
- */
- void UpdateBkmListL();
-
- /**
* Get bookmarks from favourites
*/
void GetBookmarksFromFavouritesL();
@@ -185,23 +165,6 @@
CMenuItem* MCSMenuItemL( const TDesC& aUid,const TDesC& aName,
const TDesC& aUrl );
- /**
- * GetMCSPluginFolderIdL
- *
- * @return TInt
- */
- TInt GetMCSPluginFolderIdL();
-
- /**
- * UpdateMenuItemsRefCountL
- *
- * @param aItem
- * @param aValueToAdd
- * @return TInt
- */
- TInt UpdateMenuItemsRefCountL( CMenuItem* aItem, TInt aValueToAdd );
-
-
private:
/**
@@ -289,9 +252,6 @@
*/
void ConstructL( const TDesC& aUid, const TDesC& aCaption);
- private: // data
-
-
};
private: // data
@@ -302,15 +262,13 @@
*/
RPointerArray<CBkmListItem> iListItems;
- // Runtime created CMenuItems must be stored, because those are refered
+ /**
+ * Runtime created CMenuItems must be stored,
+ * because those are refered later, own.
+ */
RPointerArray<CMenuItem> iMenuItems;
/**
- * A flag indicating if the bookmark list should observe changes
- */
- TBool iObserving;
-
- /**
* Bookmark database session.
* Own.
*/
@@ -324,30 +282,9 @@
/**
* iMenu
+ * Own.
*/
RMenu iMenu;
-
- /**
- * Save watcher
- */
-
- CMCSPluginWatcher* iSaveWatcher;
-
- /**
- * Update watcher
- */
- CMCSPluginWatcher* iUpdateWatcher;
-
- /**
- * Remove watcher
- */
- CMCSPluginWatcher* iRemoveWatcher;
-
- /**
- * MCS plugin folder ID
- */
- TInt iMCSPluginFolderId;
-
};
#endif // CMCSPLUGINSETTINGSBKMLIST_H
--- a/idlefw/plugins/mcsplugin/settings/inc/mcspluginsettingscontainer.h Wed Mar 03 15:38:34 2010 +0200
+++ b/idlefw/plugins/mcsplugin/settings/inc/mcspluginsettingscontainer.h Wed May 12 13:36:47 2010 +0300
@@ -1,5 +1,5 @@
/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2009 - 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"
@@ -83,13 +83,6 @@
void HandleHelpCommandL();
/**
- * Dialog showing changed
- *
- * @since S60 v3.2
- */
- TBool IsChangeDialogShowing();
-
- /**
* Close change dialog
*
* @since S60 v3.2
@@ -199,7 +192,7 @@
/**
* Checks if there is a need to update the middle softkey label.
*/
- void CheckMiddleSoftkeyLabelL();
+ void CheckMiddleSoftkeyLabel();
// From MFavouritesDbObserver
/**
--- a/idlefw/plugins/mcsplugin/settings/inc/mcspluginsettingsmodel.h Wed Mar 03 15:38:34 2010 +0200
+++ b/idlefw/plugins/mcsplugin/settings/inc/mcspluginsettingsmodel.h Wed May 12 13:36:47 2010 +0300
@@ -1,5 +1,5 @@
/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2009 - 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"
@@ -22,19 +22,16 @@
// External includes
#include <e32base.h>
#include <bamdesca.h> // For MDesCArray
-#include <badesca.h>
-#include <mhomescreensettingsobserver.h>
#include <hspluginsettings.h>
#include <propertymap.h>
-// Internal includes
-#include "mcspluginsettingsapplist.h"
-#include "mcspluginsettingsbkmlist.h"
-
// Forward declaration
class CCoeEnv;
+class CMenuItem;
+class CMCSPluginSettingsAppList;
+class CMCSPluginSettingsBkmList;
+class CMCSPluginSettings;
class CMCSPluginSettingsContainer;
-class CMCSPluginSettings;
class HSPluginSettingsIf::CItemMap;
/**
@@ -43,7 +40,8 @@
enum TSettingType
{
EApplication,
- EBookmark
+ EBookmark,
+ EMailbox
};
/**
@@ -66,7 +64,6 @@
*/
class CMCSPluginSettingsModel : public CBase
, public MDesCArray
- , public HSPluginSettingsIf::MHomeScreenSettingsObserver
{
public:
@@ -155,32 +152,24 @@
/**
* Update application list
*/
- void UpdateAppListL();
+ void UpdateAppListL( TBool aUpdateSettings = ETrue );
/**
* Update bookmark list
*/
- void UpdateBkmListL();
+ void UpdateBkmListL( TBool aUpdateSettings = ETrue );
/**
* Update settings container
*
* @param aPluginId
*/
- void UpdateSettingsContainerL( const TDesC8& aPluginId );
-
- // From MHomeScreenSettingsObserver
+ void SetPluginIdL( const TDesC8& aPluginId );
+
/**
- * Settings changed
- *
- * @param aEvent
- * @param aPluginName
- * @param aPluginUid
- * @param aPluginId
- * @return TInt
+ * Read settings from HSPS and update settings list
*/
- TInt SettingsChangedL( const TDesC8& aEvent, const TDesC8& aPluginName,
- const TDesC8& aPluginUid, const TDesC8& aPluginId );
+ void UpdateSettingsL();
private:
@@ -198,7 +187,7 @@
void ConstructL();
/**
- * ListBoxLineL
+ * ListBoxLine for list
*
* @param aCaption
* @param aIndex
@@ -207,7 +196,7 @@
TPtrC ListBoxLineL( const TDesC& aCaption, TInt aIndex ) const;
/**
- * ItemL
+ * Returns setting item based on properties.
*
* @param aProperties
* @return TSettingItem
@@ -233,15 +222,10 @@
TBool SettingLockedL(
RPointerArray<HSPluginSettingsIf::CPropertyMap>& aProperties );
- /**
- * Update settings
- *
- * @param aPluginId
- */
- void UpdateSettingsL( const TDesC8& aPluginId );
+
/**
- * Save settings
+ * Save settings into HSPS
*
* @param aIndex
* @param aMenuItem
@@ -256,13 +240,20 @@
*/
RArray<TSettingItem> iSettings;
- // Homescreen settings API
+ /**
+ * Homescreen settings API. Not owned.
+ */
HSPluginSettingsIf::CHomescreenSettings* iPluginSettings;
+ /**
+ * HSPS settings id.
+ */
HBufC8* iPluginId;
- // Stores the text which is drawn by listbox
- // Listbox takes only reference
+ /**
+ * Stores the text which is drawn by listbox
+ * Listbox takes only reference, own.
+ */
mutable HBufC* iListBoxLine;
/**
--- a/idlefw/plugins/mcsplugin/settings/src/mcspluginsettings.cpp Wed Mar 03 15:38:34 2010 +0200
+++ b/idlefw/plugins/mcsplugin/settings/src/mcspluginsettings.cpp Wed May 12 13:36:47 2010 +0300
@@ -1,5 +1,5 @@
/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2009 - 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"
@@ -16,19 +16,13 @@
*/
#include <ecom/implementationproxy.h>
-#include <e32std.h>
#include <eikmenup.h>
#include <eikbtgpc.h>
-#include <StringLoader.h>
#include <gsfwviewuids.h>
#include <gsprivatepluginproviderids.h>
-#include <bautils.h>
#include <pathinfo.h>
#include <featmgr.h>
-#include <e32property.h> // For RProperty
-#include <activeidle2domainpskeys.h> // For KPSUidActiveIdle2
-#include <avkon.rsg>
#include <mcspluginsettingsres.rsg>
#include <aisystemuids.hrh>
@@ -156,8 +150,8 @@
case EAknSoftkeyBack:
if (iAppUi->View(KGSMainViewUid))
{
- // if we are in GS activate parent plugin view (standby view)...
- iAppUi->ActivateLocalViewL(KGSPrslnPluginUid);
+ // if we are in GS activate parent plugin view (standby view)...
+ iAppUi->ActivateLocalViewL(KGSPrslnPluginUid);
}
else
{
@@ -181,7 +175,7 @@
// ----------------------------------------------------------------------------
//
void CMCSPluginSettings::DoActivateL(const TVwsViewId& aPrevViewId, TUid aCustomMessageId, const TDesC8& aCustomMessage)
-{
+ {
CEikButtonGroupContainer* cba = Cba();
if (cba)
@@ -197,10 +191,12 @@
cba->DrawDeferred();
}
- CGSBaseView::DoActivateL(aPrevViewId, aCustomMessageId, aCustomMessage);
-
- iModel->UpdateSettingsContainerL( aCustomMessage );
-}
+ iModel->SetPluginIdL( aCustomMessage );
+ iModel->UpdateAppListL( EFalse );
+ iModel->UpdateBkmListL( EFalse );
+ iModel->UpdateSettingsL();
+ CGSBaseView::DoActivateL( aPrevViewId, aCustomMessageId, aCustomMessage );
+ }
// ----------------------------------------------------------------------------
// From CAknView
@@ -208,11 +204,9 @@
// ----------------------------------------------------------------------------
//
void CMCSPluginSettings::DoDeactivate()
-{
+ {
CGSBaseView::DoDeactivate();
-
- iModel->SetContainer(Container());
-}
+ }
// ----------------------------------------------------------------------------
// From MEikMenuObserver
@@ -236,7 +230,7 @@
}
// ---------------------------------------------------------------------------
-// From CGSPluginInterface. 256
+// From CGSPluginInterface
// ---------------------------------------------------------------------------
//
void CMCSPluginSettings::GetCaptionL(TDes& aCaption) const
@@ -295,13 +289,4 @@
Container()->HandleChangeCommandL();
}
-// ---------------------------------------------------------------------------
-// Returns if container exists or not
-// ---------------------------------------------------------------------------
-//
-TBool CMCSPluginSettings::Activated() const
- {
- return iContainer ? ETrue : EFalse;
- }
-
// End of File.
--- a/idlefw/plugins/mcsplugin/settings/src/mcspluginsettingsapplist.cpp Wed Mar 03 15:38:34 2010 +0200
+++ b/idlefw/plugins/mcsplugin/settings/src/mcspluginsettingsapplist.cpp Wed May 12 13:36:47 2010 +0300
@@ -1,5 +1,5 @@
/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2009 - 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"
@@ -15,34 +15,24 @@
*
*/
-
-#include <e32cmn.h>
-#include <msvuids.h> // For KMsvRootIndexEntryIdValue
-#include <SenduiMtmUids.h>
-#include <StringLoader.h>
#include <aistrcnv.h>
-#include <featmgr.h>
#include <mcsmenuitem.h>
#include <mcsmenufilter.h>
#include "mcspluginsettingsapplist.h"
-#include "mcspluginsettingsmodel.h"
-#include "mcspluginwatcher.h"
+#include "mcspluginsettingsmodel.h" // For TSettingItem
_LIT( KMyMenuData, "matrixmenudata" );
_LIT( KMenuTypeShortcut, "menu:shortcut" );
-_LIT( KMenuAttrRefcount, "ref_count" );
-_LIT( KMenuParamMailbox, "mailbox:" );
+_LIT( KMenuTypeMailbox, "menu:mailbox" );
_LIT( KMenuAttrParameter, "param" );
_LIT( KMenuAttrLocked, "locked" );
-_LIT( KMenuIconFile, "aimcsplugin.mif" );
-_LIT( KMenuIconId, "16388" );
-_LIT( KMenuMaskId, "16389" );
-_LIT( KMailboxUid, "0x100058c5" );
-_LIT( KInitialRefCount, "1" );
-_LIT( KMCSFolder, "mcsplugin_folder" );
_LIT8( KItemLocked, "locked");
_LIT8( KProperValueFolder, "folder" );
+_LIT( KMenuAttrUndefUid, "0x99999991" );
+_LIT( KMenuItemLongName, "long_name" );
+
+#define KMCSCmailMtmUidValue 0x2001F406
// ======== MEMBER FUNCTIONS ========
@@ -52,7 +42,6 @@
//
CMCSPluginSettingsAppList::CMCSPluginSettingsAppList()
{
- iMCSPluginFolderId = 0;
}
// ---------------------------------------------------------------------------
@@ -64,9 +53,44 @@
iMsvSession = CMsvSession::OpenAsObserverL(*this);
iMenu.OpenL( KMyMenuData );
- iSaveWatcher = CMCSPluginWatcher::NewL( CMCSPluginWatcher::EOperation );
- iUpdateWatcher = CMCSPluginWatcher::NewL( CMCSPluginWatcher::EOperation );
- iRemoveWatcher = CMCSPluginWatcher::NewL( CMCSPluginWatcher::EOperation );
+
+ // Get "Undefined" icon and text
+ CMenuFilter* filter = CMenuFilter::NewL();
+ CleanupStack::PushL( filter );
+
+ // 'Undefined' item
+ filter->HaveAttributeL( KMenuAttrUid, KMenuAttrUndefUid );
+
+ TMenuItem item;
+ const TInt root = iMenu.RootFolderL();
+ RArray<TMenuItem> items;
+ CleanupClosePushL( items );
+ iMenu.GetItemsL( items, root, filter, ETrue );
+
+ if ( items.Count() > 0 )
+ {
+ iUndefinedItem = CMenuItem::OpenL( iMenu, items[ 0 ] );
+ iUndefinedText = NULL;
+
+ if ( iUndefinedItem )
+ {
+ TBool exists( KErrNotFound );//CleanupStack::PushL( undefinedItem );
+ TPtrC undefined = iUndefinedItem->GetAttributeL( KMenuItemLongName, exists );
+
+ if ( exists )
+ {
+ iUndefinedText = HBufC::NewMaxL( undefined.Length() );
+ iUndefinedText->Des().Copy( undefined );
+ }
+ else
+ {
+ iUndefinedText = KNullDesC().Alloc();
+ }
+ }
+ }
+
+ CleanupStack::PopAndDestroy( &items );
+ CleanupStack::PopAndDestroy( filter );
}
// ---------------------------------------------------------------------------
@@ -92,10 +116,9 @@
iListItems.ResetAndDestroy();
iMenu.Close();
- delete iSaveWatcher;
- delete iUpdateWatcher;
- delete iRemoveWatcher;
+ delete iUndefinedText;
+ delete iUndefinedItem;
}
// ---------------------------------------------------------------------------
@@ -115,17 +138,19 @@
//
TPtrC CMCSPluginSettingsAppList::MdcaPoint( TInt aIndex ) const
{
- if (aIndex < 0 || aIndex >= iListItems.Count())
+ if ( aIndex < 0 || aIndex >= iListItems.Count() )
{
- TPtrC ret(KNullDesC);
+ TPtrC ret( KNullDesC );
return ret;
}
- CMenuItem* item = iListItems[aIndex];
+ CMenuItem* item = iListItems[ aIndex ];
+
TBool attrExists;
- TPtrC itm;
+ TPtrC itm( KNullDesC );
TRAP_IGNORE(
itm.Set( item->GetAttributeL( KMenuAttrLongName, attrExists ) );
)
+
return itm;
}
@@ -171,14 +196,13 @@
{
if( aProperties[j]->Name() == KType )
{
-
if ( aProperties[j]->Value() == KProperValueFolder )
{
isFolder = ETrue;
}
break;
}
- }
+ }
TBool itemFound( EFalse );
@@ -187,7 +211,6 @@
{
TBool match( ETrue );
CMenuItem* item = iListItems[ i ];
-
for ( TInt j = 0; j < aProperties.Count() && match; j++ )
{
// type and locked properties skipped
@@ -244,82 +267,19 @@
return settingItem;
}
-
// ---------------------------------------------------------------------------
-// Returns menuitems at given index. Since this method is called during
-// adding the item to the Desktop widget, we also have to increment
-// ref_count attribute if the item is run-time generated (i.e. Mailbox)
+// Returns menuitems at given index.
// ---------------------------------------------------------------------------
//
-CMenuItem& CMCSPluginSettingsAppList::ItemL( const TInt& aIndex )
+CMenuItem* CMCSPluginSettingsAppList::ItemL( const TInt& aIndex )
{
-
CMenuItem* menuItem( NULL );
-
- // check if index in within the list boundaries
+ // check if index is within the list boundaries
if ( aIndex >= 0 && aIndex < iListItems.Count() )
{
-
menuItem = iListItems[ aIndex ];
-
- TBool hasParam = EFalse;
- CleanupStack::PushL( menuItem );
- TPtrC param = menuItem->GetAttributeL( KMenuAttrParameter, hasParam );
- CleanupStack::Pop( menuItem );
-
- // if item is a mailbox, add it to MCS
- // (if it is not already there)
- if ( hasParam && param.Find( KMenuParamMailbox ) != KErrNotFound )
- {
-
- // set up a filter for finding the mailbox
- // with given ID in MCS
- CMenuFilter* filter = CMenuFilter::NewL();
- CleanupStack::PushL( filter );
-
- filter->SetType( KMenuTypeShortcut );
- filter->HaveAttributeL( KMenuAttrParameter, param );
-
- // search menu from the Root folder with the filter
- const TInt rootId = iMenu.RootFolderL();
- RArray<TMenuItem> itemArray;
- CleanupClosePushL( itemArray );
- iMenu.GetItemsL( itemArray, rootId, filter, ETrue );
-
- // save the number of findings
- TInt count( itemArray.Count() );
-
- // if MenuItem does not exist in MCS
- if ( count == 0 )
- {
- // save the item into Matrixmenudata.xml
- // the "op" variable is cleaned up by iSaveWatcher when asynchronous
- // operation finishes
- CleanupStack::PushL( menuItem );
- CMenuOperation* op = menuItem->SaveL( iSaveWatcher->iStatus );
- CleanupStack::Pop( menuItem );
- iSaveWatcher->Watch( op );
- }
- else
- {
- // Item already exists in MCS
- // If it has reference counter, increment it before returning.
- CMenuItem* itm = CMenuItem::OpenL( iMenu, itemArray[ 0 ] );
-
- TInt newRefCount = UpdateMenuItemsRefCountL( itm, 1 );
- if ( newRefCount > -1 )
- {
- CleanupStack::PushL( itm );
- CMenuOperation* op = itm->SaveL( iSaveWatcher->iStatus );
- CleanupStack::PopAndDestroy( itm );
- iSaveWatcher->Watch( op );
- }
- }
- CleanupStack::PopAndDestroy( &itemArray );
- CleanupStack::PopAndDestroy( filter );
- }
}
- return *menuItem;
+ return menuItem;
}
// ---------------------------------------------------------------------------
@@ -351,8 +311,7 @@
CMenuFilter* filter = CMenuFilter::NewL();
CleanupStack::PushL( filter );
- // skip run-time generated items
- filter->DoNotHaveAttributeL( KMenuAttrRefcount );
+ // skip locked items
filter->DoNotHaveAttributeL( KMenuAttrLocked );
const TInt rootId = iMenu.RootFolderL();
RArray<TMenuItem> itemArray;
@@ -366,15 +325,16 @@
TPtrC type = itemArray[ i ].Type();
// we add applications, shortcuts and folders to the list
- if ( type == KMenuTypeApp || type == KMenuTypeShortcut ||
+ if ( type == KMenuTypeApp ||
+ type == KMenuTypeShortcut ||
type == KMenuTypeFolder )
{
CMenuItem* menuItem = CMenuItem::OpenL( iMenu, itemArray[ i ] );
CleanupStack::PushL( menuItem );
// only non-hidden and non-missing items should be offered to the user
- if ( ( menuItem->Flags() & TMenuItem::EHidden ) == EFalse &&
- ( menuItem->Flags() & TMenuItem::EMissing ) == EFalse )
+ if ( ( menuItem->Flags() & TMenuItem::EHidden ) == 0 &&
+ ( menuItem->Flags() & TMenuItem::EMissing ) == 0 )
{
User::LeaveIfError( iListItems.InsertInOrderAllowRepeats( menuItem, sortMethod ) );
CleanupStack::Pop( menuItem );
@@ -398,7 +358,7 @@
//
CMsvEntry* CMCSPluginSettingsAppList::GetRootEntryL()
{
- return iMsvSession->GetEntryL(KMsvRootIndexEntryIdValue);
+ return iMsvSession->GetEntryL( KMsvRootIndexEntryIdValue );
}
// ---------------------------------------------------------------------------
@@ -407,20 +367,26 @@
//
void CMCSPluginSettingsAppList::AddMailboxesL()
{
-
- iListItems.ResetAndDestroy();
CMsvEntry* rootEntry = GetRootEntryL();
CleanupStack::PushL(rootEntry);
TBuf<255> mailboxId;
- for ( TInt i = rootEntry->Count() - 1; i >= 0; --i )
+ TInt cnt = rootEntry->Count();
+ if ( cnt > 0 )
{
- const TMsvEntry& tentry = (*rootEntry)[i];
-
- if (tentry.iMtm == KSenduiMtmImap4Uid || tentry.iMtm == KSenduiMtmPop3Uid)
+ rootEntry->SetSortTypeL( TMsvSelectionOrdering(
+ KMsvGroupByType | KMsvGroupByStandardFolders,
+ EMsvSortByDetailsReverse, ETrue ) );
+
+ for ( TInt i = rootEntry->Count(); --i >= 0; )
{
- mailboxId.Num( tentry.Id() );
- AddMailboxL( tentry.iDetails, mailboxId );
+ const TMsvEntry& tentry = (*rootEntry)[i];
+
+ if (tentry.iMtm.iUid == KMCSCmailMtmUidValue )
+ {
+ mailboxId.Num( tentry.Id() );
+ AddMailboxL( tentry.iDetails, mailboxId );
+ }
}
}
CleanupStack::PopAndDestroy(rootEntry);
@@ -433,175 +399,19 @@
void CMCSPluginSettingsAppList::AddMailboxL( const TDesC& aMailbox,
const TDesC& aMailboxId )
{
- // prepare param value
- HBufC* params = HBufC::NewLC( KMenuParamMailbox().Length() + aMailboxId.Length() );
- params->Des().Copy( KMenuParamMailbox );
- params->Des().Append( aMailboxId );
- TPtrC paramValue( params->Des() );
-
- TLinearOrder<CMenuItem> sortMethod( CMCSPluginSettingsAppList::CompareNameL );
- CMenuItem* newItem = CMenuItem::CreateL( iMenu,
- KMenuTypeShortcut,
- GetMCSPluginFolderIdL(),
- 0 );
- CleanupStack::PushL( newItem );
+ TLinearOrder<CMenuItem> sortMethod( CMCSPluginSettingsAppList::CompareNameL );
+ CMenuItem* newItem = CMenuItem::CreateL( iMenu, KMenuTypeMailbox, 0, 0 );
+ CleanupStack::PushL( newItem );
- // mailbox is a shortcut item with "mailbox:mailboxID" parameter
- newItem->SetAttributeL( KMenuAttrUid, KMailboxUid );
- newItem->SetAttributeL( KMenuAttrLongName, aMailbox );
- newItem->SetAttributeL( KMenuAttrParameter, paramValue );
- newItem->SetAttributeL( KMenuAttrRefcount, KInitialRefCount );
+ // mailbox is a shortcut item with "mailbox:mailboxID" parameter
+ newItem->SetAttributeL( KMenuAttrUid, aMailboxId );
+ newItem->SetAttributeL( KMenuAttrLongName, aMailbox );
+ // Mailbox name is saved to settings into param field.
+ newItem->SetAttributeL( KMenuAttrParameter, aMailbox );
- // setting icon for the shortcut
- newItem->SetAttributeL( KMenuAttrIconFile, KMenuIconFile );
- newItem->SetAttributeL( KMenuAttrIconId, KMenuIconId );
- newItem->SetAttributeL( KMenuAttrMaskId, KMenuMaskId );
-
- // append the item into iListItems lists
- User::LeaveIfError( iListItems.InsertInOrderAllowRepeats( newItem, sortMethod ) );
- CleanupStack::Pop( newItem );
- CleanupStack::PopAndDestroy( params );
+ // append the item into iListItems lists
+ User::LeaveIfError( iListItems.InsertInOrderAllowRepeats( newItem, sortMethod ) );
+ CleanupStack::Pop( newItem );
}
-// ---------------------------------------------------------------------------
-// Removes run-time generated menuitem (i.e. Mailbox) from MCS
-// If the item at given index is not run-time generated, return
-// ---------------------------------------------------------------------------
-//
-void CMCSPluginSettingsAppList::RemoveMenuItemL( TInt aIndex )
- {
-
- if ( aIndex < 0 || aIndex > iListItems.Count() - 1 )
- {
- return;
- }
-
- CMenuItem* menuItem = iListItems[ aIndex ];
-
- TBool hasParam = ETrue;
- TPtrC param = menuItem->GetAttributeL( KMenuAttrParameter, hasParam );
-
- if ( !hasParam )
- {
- // nothing to do
- return;
- }
-
- // set up a filter for finding the mailbox
- // with given ID in MCS
- CMenuFilter* filter = CMenuFilter::NewL();
- CleanupStack::PushL( filter );
-
- filter->SetType( KMenuTypeShortcut );
- filter->HaveAttributeL( KMenuAttrParameter, param );
-
- // search menu from the Root folder with the filter
- const TInt rootId = iMenu.RootFolderL();
- RArray<TMenuItem> itemArray;
- CleanupClosePushL( itemArray );
- iMenu.GetItemsL( itemArray, rootId, filter, ETrue );
-
- // save the number of findings
- TInt count( itemArray.Count() );
-
- if ( count > 0 )
- {
- // Item already exists in MCS
- // If it has reference counter, increment it before returning.
- CMenuItem* itm = CMenuItem::OpenL( iMenu, itemArray[ 0 ] );
-
- // decrement ref_count attribute
- TInt newRefCount = UpdateMenuItemsRefCountL( itm, -1 );
- if ( newRefCount > 0 )
- {
- CleanupStack::PushL( itm );
- CMenuOperation* op = itm->SaveL( iUpdateWatcher->iStatus );
- CleanupStack::Pop( itm );
- iUpdateWatcher->Watch( op );
- }
- else if ( newRefCount == 0 )
- {
- // counter reached 0 -> item is not referenced by any shortcut
- // so remove it from MCS
- if ( iRemoveWatcher->IsActive() )
- {
- return;
- }
- CMenuOperation* op = iMenu.RemoveL( itm->Id(), iRemoveWatcher->iStatus );
- iRemoveWatcher->Watch( op );
- }
- delete itm;
- }
- CleanupStack::PopAndDestroy( &itemArray );
- CleanupStack::PopAndDestroy( filter );
- }
-
-// ---------------------------------------------------------------------------
-// Gets MCS Plugin folder ID. This hidden folder in matrixmenudata.xml is used
-// for storing run-time generated menuitems
-// ---------------------------------------------------------------------------
-//
-TInt CMCSPluginSettingsAppList::GetMCSPluginFolderIdL()
- {
-
- if ( iMCSPluginFolderId == 0 )
- {
- CMenuItem* item( NULL );
- CMenuFilter* filter = CMenuFilter::NewL();
- CleanupStack::PushL( filter );
- filter->SetType( KMenuTypeFolder );
- filter->HaveAttributeL( KMenuAttrLongName, KMCSFolder );
- const TInt rootId = iMenu.RootFolderL();
- RArray<TMenuItem> itemArray;
- CleanupClosePushL( itemArray );
- iMenu.GetItemsL( itemArray, rootId, filter, ETrue );
- if ( itemArray.Count() > 0 )
- {
- item = CMenuItem::OpenL( iMenu, itemArray[ 0 ] );
- iMCSPluginFolderId = item->Id();
- }
- else
- {
- iMCSPluginFolderId = iMenu.RootFolderL();
- }
- CleanupStack::PopAndDestroy( &itemArray );
- CleanupStack::PopAndDestroy( filter );
- delete item;
- }
- return iMCSPluginFolderId;
-
- }
-
-// ---------------------------------------------------------------------------
-// Helper method for updating ref_count attribute of run-time generated
-// menuitems
-// ---------------------------------------------------------------------------
-//
-TInt CMCSPluginSettingsAppList::UpdateMenuItemsRefCountL( CMenuItem* aItem,
- TInt aValueToAdd )
- {
-
- TBool exists = EFalse;
- CleanupStack::PushL( aItem );
- TPtrC param = aItem->GetAttributeL( KMenuAttrRefcount, exists );
- CleanupStack::Pop( aItem );
- if ( exists )
- {
- TInt references;
- TLex16 lextmp( param );
- lextmp.Val( references );
- references += aValueToAdd;
- TBuf<128> buf;
- buf.NumUC( references );
- // set new ref_count
- CleanupStack::PushL( aItem );
- aItem->SetAttributeL( KMenuAttrRefcount, buf );
- CleanupStack::Pop( aItem );
- // return new ref_count
- return references;
- }
- return -1;
- }
-
-
// End of File.
--- a/idlefw/plugins/mcsplugin/settings/src/mcspluginsettingsbkmlist.cpp Wed Mar 03 15:38:34 2010 +0200
+++ b/idlefw/plugins/mcsplugin/settings/src/mcspluginsettingsbkmlist.cpp Wed May 12 13:36:47 2010 +0300
@@ -1,5 +1,5 @@
/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2009 - 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"
@@ -15,32 +15,19 @@
*
*/
-
-#include <StringLoader.h>
-#include <activefavouritesdbnotifier.h> // For CActiveFavouritesDbNotifier
+#include <favouritesitemlist.h>
#include <aistrcnv.h>
#include <mcsmenufilter.h>
#include <mcsmenuitem.h>
-#include <mcsmenuoperation.h>
-#include <mcspluginsettingsres.rsg>
#include "mcspluginsettingsmodel.h"
-#include "mcspluginsettingsapplist.h"
#include "mcspluginsettingsbkmlist.h"
-#include "mcspluginwatcher.h"
-#include "debug.h"
_LIT( KMyMenuData, "matrixmenudata" );
_LIT( KMenuUrl, "menu:url" );
-_LIT( KMenuIconFile, "aimcsplugin.mif" );
-_LIT( KMenuIconId, "16386" );
-_LIT( KMenuMaskId, "16387" );
_LIT( KUrl, "url" );
_LIT8( KUid, "uid" );
-_LIT( KMenuAttrRefcount, "ref_count" );
-_LIT( KInitialRefCount, "1" );
-_LIT( KMCSFolder, "mcsplugin_folder" );
-
+_LIT( KMenuAttrParameter, "param" );
// ======== MEMBER FUNCTIONS ========
@@ -51,7 +38,6 @@
//
CMCSPluginSettingsBkmList::CMCSPluginSettingsBkmList()
{
- iMCSPluginFolderId = 0;
}
// ---------------------------------------------------------------------------
@@ -64,10 +50,6 @@
User::LeaveIfError(iBookmarkDb.Open(iBookmarkSess, KBrowserBookmarks));
iMenu.OpenL( KMyMenuData );
GetBookmarkListL();
-
- iSaveWatcher = CMCSPluginWatcher::NewL( CMCSPluginWatcher::EOperation );
- iUpdateWatcher = CMCSPluginWatcher::NewL( CMCSPluginWatcher::EOperation );
- iRemoveWatcher = CMCSPluginWatcher::NewL( CMCSPluginWatcher::EOperation );
}
// ---------------------------------------------------------------------------
@@ -94,9 +76,6 @@
iBookmarkDb.Close();
iBookmarkSess.Close();
iMenu.Close();
- delete iSaveWatcher;
- delete iUpdateWatcher;
- delete iRemoveWatcher;
}
// ---------------------------------------------------------------------------
@@ -132,7 +111,7 @@
TSettingItem CMCSPluginSettingsBkmList::FindItemL( RPointerArray<HSPluginSettingsIf::CPropertyMap>& aProperties )
{
TInt index( KErrNotFound );
- TSettingItem settingItem = { KErrNotFound, EBookmark };
+ TSettingItem settingItem = { KErrNotFound, EBookmark, EFalse };
for( TInt i= 0; i < aProperties.Count(); i++ )
{
if( aProperties[i]->Name() == KUid )
@@ -202,7 +181,6 @@
//
void CMCSPluginSettingsBkmList::GetBookmarksFromMCSL()
{
- TBool exists( EFalse );
CMenuFilter* filter = CMenuFilter::NewL();
CleanupStack::PushL( filter );
filter->SetType( KMenuUrl );
@@ -213,26 +191,20 @@
TInt count( itemArray.Count() );
for ( TInt i = 0; i < count; i++ )
{
+ TBool uidExists( EFalse );
+ TBool nameExists( EFalse );
+ TBool urlExists( EFalse );
CMenuItem* menuItem = CMenuItem::OpenL( iMenu, itemArray[i] );
CleanupStack::PushL( menuItem );
- TPtrC uid = menuItem->GetAttributeL( KMenuAttrUid, exists );
- TPtrC name = menuItem->GetAttributeL( KMenuAttrLongName, exists );
- TPtrC url = menuItem->GetAttributeL( KUrl, exists );
-
- // Check if bookmark is already present in Bookmark list.
- // This may happen in case of Favourite Bookmarks that were
- // previously added to MCS.
- // If it is, do not add it to Bookmark list anymore.
-
- TBool isRuntimeGenerated = EFalse;
- menuItem->GetAttributeL( KMenuAttrRefcount, isRuntimeGenerated );
-
- // if is not runtime generated and url exists, add it
- if ( !isRuntimeGenerated && exists )
+ TPtrC uid = menuItem->GetAttributeL( KMenuAttrUid, uidExists );
+ TPtrC name = menuItem->GetAttributeL( KMenuAttrLongName, nameExists );
+ TPtrC url = menuItem->GetAttributeL( KUrl, urlExists );
+ // if all attrib exists, add it ( url ignored )
+ if ( uidExists && uid.Length() > 0 &&
+ nameExists && name.Length() > 0 )
{
AddBookmarkL( uid, name, url, EMCSBookmark );
}
-
CleanupStack::PopAndDestroy( menuItem );
}
@@ -246,68 +218,19 @@
// If predefined bookmark was selected, MCS menu item is retrieved
// ---------------------------------------------------------------------------
//
-CMenuItem& CMCSPluginSettingsBkmList::ItemL( TInt aIndex )
+CMenuItem* CMCSPluginSettingsBkmList::ItemL( TInt aIndex )
{
CMenuItem* menuItem( NULL );
CBkmListItem* listItem = iListItems[aIndex];
if ( listItem->iType == EFavBookmark )
- {
- TPtrC uid = *listItem->iUid;
- TPtrC name = *listItem->iCaption;
- TPtrC url = *listItem->iUrl;
- menuItem = CreateMenuItemL( uid, name, url );
+ {
+ menuItem = CreateMenuItemL( *listItem->iUid, *listItem->iCaption, *listItem->iUrl );
}
else
{
menuItem = MCSMenuItemL( *listItem->iUid, *listItem->iCaption, *listItem->iUrl );
}
- return *menuItem;
- }
-
-// ---------------------------------------------------------------------------
-// Removes the menu item from MCS if it was created in runtime i.e. type is EFavBookmark.
-// Favourite bookmarks have ref_count attribute, which is decremented everytime
-// the bookmark is removed from some shortcut. When this counter reaches 0,
-// its MenuItem is removed from MCS.
-// ---------------------------------------------------------------------------
-//
-void CMCSPluginSettingsBkmList::RemoveMenuItemL( TInt aIndex )
- {
-
- if ( aIndex < 0 || aIndex > iListItems.Count() - 1 )
- {
- return;
- }
-
- CBkmListItem* listItem = iListItems[aIndex];
- if( listItem->iType == EFavBookmark )
- {
- CMenuItem* menuItem = MCSMenuItemL( *listItem->iUid, *listItem->iCaption, *listItem->iUrl );
- if ( !menuItem )
- {
- return;
- }
- // decrement ref_count attribute
- TInt newRefCount = UpdateMenuItemsRefCountL( menuItem, -1 );
- if ( newRefCount > 0 )
- {
- CleanupStack::PushL( menuItem );
- CMenuOperation* op = menuItem->SaveL( iUpdateWatcher->iStatus );
- CleanupStack::Pop( menuItem );
- iUpdateWatcher->Watch( op );
- }
- else if ( newRefCount == 0 )
- {
- // counter reached 0 -> item is not referenced by any shortcut
- // so remove it from MCS
- if ( iRemoveWatcher->IsActive() )
- {
- return;
- }
- CMenuOperation* op = iMenu.RemoveL( menuItem->Id(), iRemoveWatcher->iStatus );
- iRemoveWatcher->Watch( op );
- }
- }
+ return menuItem;
}
// ---------------------------------------------------------------------------
@@ -320,46 +243,15 @@
const TDesC& aName,
const TDesC& aUrl )
{
- // try to search item in MCS
- CMenuItem* item = MCSMenuItemL( aUid, aName, aUrl );
-
- if ( item == NULL )
- {
- // Item does not exist in MCS yet.
- // We will add a new one with reference counter set to 1.
- CMenuItem* newItem = CMenuItem::CreateL( iMenu,
- KMenuTypeUrl,
- GetMCSPluginFolderIdL(), 0 );
- CleanupStack::PushL( newItem );
-
- newItem->SetAttributeL( KMenuAttrUid, aUid );
- newItem->SetAttributeL( KMenuAttrLongName, aName );
- newItem->SetAttributeL( KMenuAttrIconFile, KMenuIconFile );
- newItem->SetAttributeL( KMenuAttrIconId, KMenuIconId );
- newItem->SetAttributeL( KMenuAttrMaskId, KMenuMaskId );
- newItem->SetAttributeL( KMenuAttrRefcount, KInitialRefCount );
- newItem->SetAttributeL( KUrl , aUrl );
-
- CMenuOperation* op = newItem->SaveL( iSaveWatcher->iStatus );
- iSaveWatcher->Watch( op );
- iMenuItems.AppendL( newItem );
- CleanupStack::Pop( newItem );
- return newItem;
- }
- else
- {
- // Item already exists in MCS
- // If it has reference counter, increment it before returning.
- TInt newRefCount = UpdateMenuItemsRefCountL( item, 1 );
- if ( newRefCount > -1 )
- {
- CleanupStack::PushL( item );
- CMenuOperation* op = item->SaveL( iSaveWatcher->iStatus );
- CleanupStack::Pop( item );
- iSaveWatcher->Watch( op );
- }
- }
- return item;
+ CMenuItem* newItem = CMenuItem::CreateL( iMenu, KMenuTypeUrl, 0, 0 );
+ CleanupStack::PushL( newItem );
+ newItem->SetAttributeL( KMenuAttrUid, aUid );
+ newItem->SetAttributeL( KMenuAttrLongName, aName );
+ newItem->SetAttributeL( KMenuAttrView, aUrl );
+ newItem->SetAttributeL( KMenuAttrParameter, aName );
+ iMenuItems.AppendL( newItem );
+ CleanupStack::Pop( newItem );
+ return newItem;
}
// ---------------------------------------------------------------------------
@@ -385,9 +277,12 @@
if( itemArray.Count() > 0 )
{
item = CMenuItem::OpenL( iMenu, itemArray[0] );
- CleanupStack::PushL( item );
- iMenuItems.AppendL( item );
- CleanupStack::Pop( item );
+ if ( item )
+ {
+ CleanupStack::PushL( item );
+ iMenuItems.AppendL( item );
+ CleanupStack::Pop( item );
+ }
}
CleanupStack::PopAndDestroy( &itemArray );
CleanupStack::PopAndDestroy( filter );
@@ -410,21 +305,17 @@
{
listItem->iUrl = aUrl.AllocL();
}
+ else
+ {
+ listItem->iUrl = KNullDesC().AllocL();
+ }
+
TLinearOrder<CBkmListItem> sortMethod(CBkmListItem::CompareCaption);
User::LeaveIfError(iListItems.InsertInOrderAllowRepeats(listItem, sortMethod));
CleanupStack::Pop(listItem);
}
// ---------------------------------------------------------------------------
-// Updates the bookmark list.
-// ---------------------------------------------------------------------------
-//
-void CMCSPluginSettingsBkmList::UpdateBkmListL()
- {
- GetBookmarkListL();
- }
-
-// ---------------------------------------------------------------------------
//Nested class to store individual bookmark list items
// ---------------------------------------------------------------------------
//
@@ -486,70 +377,5 @@
return TPtrC(*iCaption);
}
-// ---------------------------------------------------------------------------
-// Gets MCS Plugin folder ID. This hidden folder in matrixmenudata.xml is used
-// for storing run-time generated menuitems
-// ---------------------------------------------------------------------------
-//
-TInt CMCSPluginSettingsBkmList::GetMCSPluginFolderIdL()
- {
- if ( iMCSPluginFolderId == 0 )
- {
- CMenuItem* item( NULL );
- CMenuFilter* filter = CMenuFilter::NewL();
- CleanupStack::PushL( filter );
- filter->SetType( KMenuTypeFolder );
- filter->HaveAttributeL( KMenuAttrLongName, KMCSFolder );
- const TInt rootId = iMenu.RootFolderL();
- RArray<TMenuItem> itemArray;
- CleanupClosePushL( itemArray );
- iMenu.GetItemsL( itemArray, rootId, filter, ETrue );
- if ( itemArray.Count() > 0 )
- {
- item = CMenuItem::OpenL( iMenu, itemArray[0] );
- iMCSPluginFolderId = item->Id();
- }
- else
- {
- iMCSPluginFolderId = iMenu.RootFolderL();
- }
- CleanupStack::PopAndDestroy( &itemArray );
- CleanupStack::PopAndDestroy( filter );
- delete item;
- }
- return iMCSPluginFolderId;
- }
-
-// ---------------------------------------------------------------------------
-// Helper method for updating ref_count attribute of run-time generated
-// menuitems
-// ---------------------------------------------------------------------------
-//
-TInt CMCSPluginSettingsBkmList::UpdateMenuItemsRefCountL( CMenuItem* aItem,
- TInt aValueToAdd )
- {
-
- TBool exists = EFalse;
- CleanupStack::PushL( aItem );
- TPtrC param = aItem->GetAttributeL( KMenuAttrRefcount, exists );
- CleanupStack::Pop( aItem );
- if ( exists )
- {
- TInt references;
- TLex16 lextmp( param );
- lextmp.Val( references );
- references += aValueToAdd;
- TBuf<128> buf;
- buf.NumUC( references );
-
- // set new ref_count
- CleanupStack::PushL( aItem );
- aItem->SetAttributeL( KMenuAttrRefcount, buf );
- CleanupStack::Pop( aItem );
- // return new ref_count
- return references;
- }
- return -1;
- }
// End of File.
--- a/idlefw/plugins/mcsplugin/settings/src/mcspluginsettingscontainer.cpp Wed Mar 03 15:38:34 2010 +0200
+++ b/idlefw/plugins/mcsplugin/settings/src/mcspluginsettingscontainer.cpp Wed May 12 13:36:47 2010 +0300
@@ -1,5 +1,5 @@
/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2009 - 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"
@@ -15,27 +15,19 @@
*
*/
-
-#include <aknlists.h>
-#include <AknWaitDialog.h>
#include <aknnotewrappers.h>
-#include <eikbtgpc.h>
-#include <gslistbox.h>
-#include <gsfwviewuids.h>
+#include <aknlistquerydialog.h>
+#include <e32cmn.h>
#include <aknradiobuttonsettingpage.h>
-#include <akntextsettingpage.h>
-#include <centralrepository.h>
#include <StringLoader.h>
-
#include <csxhelp/ai.hlp.hrh>
#include <hlplch.h>
-
-// For CActiveFavouritesDbNotifier
-#include <activefavouritesdbnotifier.h>
+#include <activefavouritesdbnotifier.h>
#include <mcspluginsettingsres.rsg>
#include "mcspluginsettingscontainer.h"
#include "mcspluginsettingsmodel.h"
+#include "mcspluginsettingsapplist.h"
#include "mcspluginsettingsbkmlist.h"
#include "mcspluginsettings.hrh"
#include "mcspluginuids.hrh"
@@ -61,7 +53,7 @@
iListBox = new (ELeave) CAknSettingStyleListBox;
BaseConstructL(aRect, R_AI_MCS_SETTINGS_VIEW_TITLE, NULL);
StartObservingL();
- CheckMiddleSoftkeyLabelL();
+ CheckMiddleSoftkeyLabel();
}
// ---------------------------------------------------------------------------
@@ -88,7 +80,7 @@
{
iNotifyWatcher = CMCSPluginWatcher::NewL( CMCSPluginWatcher::ENotify );
iNotifier.Notify( 0,
- RMenuNotifier::EItemsAddedRemoved | RMenuNotifier::EItemsReordered,
+ RMenuNotifier::EItemsAddedRemoved,
iNotifyWatcher->iStatus );
iNotifyWatcher->WatchNotify( this );
}
@@ -236,15 +228,6 @@
}
// ---------------------------------------------------------------------------
-// Helper method which indicates if the Applist or Bkmlist is showing
-// ---------------------------------------------------------------------------
-//
-TBool CMCSPluginSettingsContainer::IsChangeDialogShowing()
-{
- return ( iAppListDialog || iBkmListDialog );
-}
-
-// ---------------------------------------------------------------------------
// Method for closing change dialog (app or bkm) if it is beeing shown
// ---------------------------------------------------------------------------
//
@@ -290,7 +273,7 @@
}
iListBox->SetCurrentItemIndex( aIndex );
- CheckMiddleSoftkeyLabelL();
+ CheckMiddleSoftkeyLabel();
}
// ---------------------------------------------------------------------------
@@ -312,10 +295,6 @@
// fall-through intended here
case EMsvEntriesChanged:
{
- if ( IsChangeDialogShowing() )
- {
- CloseChangeDialog();
- }
iModel->UpdateAppListL();
}
break;
@@ -331,19 +310,15 @@
//
void CMCSPluginSettingsContainer::ConstructListBoxL(TInt /*aResLbxId*/)
{
- iListBox->ConstructL(this, EAknListBoxSelectionList);
-
+ iListBox->ConstructL(this, EAknListBoxSelectionList);
// Set empty listbox's text.
- HBufC* text = iCoeEnv->AllocReadResourceLC(R_AI_MCS_SETTINGS_TXT_ALL_FIXED);
- iListBox->View()->SetListEmptyTextL(*text);
- CleanupStack::PopAndDestroy(text);
-
+ iListBox->View()->SetListEmptyTextL(KNullDesC);
iListBox->Model()->SetItemTextArray(iModel);
iListBox->Model()->SetOwnershipType(ELbmDoesNotOwnItemArray);
}
// ---------------------------------------------------------------------------
-// Chandles a setting change command to select application from a list.
+// Handles a setting change command to select application from a list.
// ---------------------------------------------------------------------------
//
TBool CMCSPluginSettingsContainer::HandleAppListChangeCommandL( const TInt& aIndex,
@@ -365,7 +340,7 @@
if (iAppListDialog->ExecuteLD(CAknSettingPage::EUpdateWhenChanged) &&
index != oldIndex)
{
- changed = iModel->ReplaceItemL( iListBox->CurrentItemIndex(), index , EApplication );
+ changed = iModel->ReplaceItemL( aSettingIndex, index , EApplication );
}
CleanupStack::PopAndDestroy( title );
@@ -396,7 +371,7 @@
if (iBkmListDialog->ExecuteLD(CAknSettingPage::EUpdateWhenChanged) &&
index != oldIndex)
{
- changed = iModel->ReplaceItemL( iListBox->CurrentItemIndex(), index , EBookmark );
+ changed = iModel->ReplaceItemL( aSettingIndex, index , EBookmark );
}
CleanupStack::PopAndDestroy( title );
@@ -444,7 +419,7 @@
// Checks if there is a need to update the middle softkey label.
// ---------------------------------------------------------------------------
//
-void CMCSPluginSettingsContainer::CheckMiddleSoftkeyLabelL()
+void CMCSPluginSettingsContainer::CheckMiddleSoftkeyLabel()
{
CEikButtonGroupContainer* cba = CEikButtonGroupContainer::Current();
if (cba)
@@ -468,10 +443,7 @@
// fall-through intended here
case RDbNotifier::ERollback :
{
- if ( IsChangeDialogShowing() )
- {
- CloseChangeDialog();
- }
+ CloseChangeDialog();
iModel->UpdateBkmListL();
}
break;
@@ -487,16 +459,15 @@
//
void CMCSPluginSettingsContainer::HandleNotifyL()
{
- if ( IsChangeDialogShowing() )
- {
- CloseChangeDialog();
- }
+ CloseChangeDialog();
+
iModel->UpdateAppListL();
+ ResetCurrentListL(0);
// Notification must be activated again
iNotifyWatcher->Cancel();
iNotifier.Notify( 0,
- RMenuNotifier::EItemsAddedRemoved | RMenuNotifier::EItemsReordered,
+ RMenuNotifier::EItemsAddedRemoved,
iNotifyWatcher->iStatus );
iNotifyWatcher->WatchNotify( this );
}
--- a/idlefw/plugins/mcsplugin/settings/src/mcspluginsettingsmodel.cpp Wed Mar 03 15:38:34 2010 +0200
+++ b/idlefw/plugins/mcsplugin/settings/src/mcspluginsettingsmodel.cpp Wed May 12 13:36:47 2010 +0300
@@ -1,5 +1,5 @@
/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2009 - 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"
@@ -18,22 +18,18 @@
#include <eikenv.h>
#include <itemmap.h>
#include <mhomescreensettingsif.h>
-
#include <aistrcnv.h>
#include <StringLoader.h>
#include <uri16.h>
#include <mcspluginsettingsres.rsg>
-
+#include <mcsmenuitem.h>
-#include "mcspluginsettings.h"
#include "mcspluginsettingsmodel.h"
+#include "mcspluginsettingsapplist.h"
+#include "mcspluginsettingsbkmlist.h"
#include "mcspluginsettingscontainer.h"
-#include "debug.h"
-
-#include <mcsmenuitem.h>
-
/**
* Line format for the settings list box
*/
@@ -51,11 +47,38 @@
_LIT8( KProperValueSuite, "suite" );
_LIT8( KProperValueBookmark, "bookmark" );
_LIT8( KProperValueAppl, "application" );
-
-
+_LIT8( KProperValueMailbox, "mailbox" );
+_LIT( KMenuTypeMailbox, "menu:mailbox" );
using namespace HSPluginSettingsIf;
+// ======== LOCAL FUNCTIONS ========
+
+// ----------------------------------------------------------------------------
+// CleanupResetAndDestroy()
+// ----------------------------------------------------------------------------
+//
+template<class T>
+static void CleanupResetAndDestroy( TAny* aObj )
+ {
+ if( aObj )
+ {
+ static_cast<T*>( aObj )->ResetAndDestroy();
+ }
+ }
+
+// ----------------------------------------------------------------------------
+// CleanupResetAndDestroyPushL
+// ----------------------------------------------------------------------------
+//
+template<class T>
+static void CleanupResetAndDestroyPushL(T& aArray)
+ {
+ CleanupStack::PushL( TCleanupItem( &CleanupResetAndDestroy<T>, &aArray ) );
+ }
+
+// ======== MEMBER FUNCTIONS ========
+
// -----------------------------------------------------------------------------
// Creates a formatted listbox line.
// -----------------------------------------------------------------------------
@@ -84,7 +107,9 @@
TInt formatLength = KSettingListboxLineFormat().Length();
HBufC* listBoxLine =
- HBufC::NewLC(title->Length() + caption.Length() + formatLength);
+ HBufC::NewLC( title->Length() +
+ caption.Length() +
+ formatLength );
TPtr ptr = listBoxLine->Des();
ptr.Format(KSettingListboxLineFormat, title, &caption);
@@ -134,10 +159,12 @@
{
delete iAppList;
delete iBkmList;
- iSettings.Reset();
- delete iPluginSettings;
+ iSettings.Reset();
delete iPluginId;
delete iListBoxLine;
+
+ CHomescreenSettings::UnInitialize();
+ iPluginSettings = NULL;
}
// ---------------------------------------------------------------------------
@@ -145,38 +172,39 @@
// ---------------------------------------------------------------------------
//
void CMCSPluginSettingsModel::ConstructL()
-{
- iAppList = CMCSPluginSettingsAppList::NewL();
- iAppList->StartL();
- iBkmList = CMCSPluginSettingsBkmList::NewL();
-}
-
+ {
+ CHomescreenSettings::InitializeL( KAppUid );
+
+ iPluginSettings = CHomescreenSettings::Instance();
+ if( iPluginSettings == NULL )
+ {
+ User::Leave( KErrUnknown );
+ }
+ }
// ---------------------------------------------------------------------------
// Gets the latest settings from HSPS and updates
// ---------------------------------------------------------------------------
//
-void CMCSPluginSettingsModel::UpdateSettingsL( const TDesC8& aPluginId )
+void CMCSPluginSettingsModel::UpdateSettingsL()
{
- if( !iPlugin.Activated() )
+ iSettings.Reset();
+ if( !iPluginId )
{
return;
}
- if( !iPluginSettings )
+
+ if (iContainer)
{
- // AILaunch uid in decimal format
- iPluginSettings = CHomescreenSettings::NewL( KAppUid, aPluginId, this );
- iPluginId = aPluginId.AllocL();
+ iContainer->CloseChangeDialog();
}
-
- iSettings.Reset();
+
RPointerArray<CItemMap> settingItems;
- CleanupClosePushL( settingItems );
+ CleanupResetAndDestroyPushL( settingItems );
iPluginSettings->GetSettingsL( *iPluginId, settingItems );
- TInt count = settingItems.Count();
- for ( TInt i = 0; i < count; i++ )
+ for ( TInt i = 0; i < settingItems.Count(); i++ )
{
CItemMap* itemMap = settingItems[i];
RPointerArray<HSPluginSettingsIf::CPropertyMap> properties;
@@ -184,8 +212,13 @@
TSettingItem item = ItemL( properties );
iSettings.AppendL( item );
}
- CleanupStack::Pop( &settingItems );
- settingItems.ResetAndDestroy();
+
+ CleanupStack::PopAndDestroy(); // settingItems
+
+ if (iContainer)
+ {
+ iContainer->ResetCurrentListL(0);
+ }
}
// ---------------------------------------------------------------------------
@@ -198,11 +231,11 @@
TSettingItem setting = { KErrNotFound, EApplication , EFalse };
TSettingType type = SettingTypeL( aProperties );
- if( type == EApplication )
+ if ( type == EApplication || type == EMailbox )
{
setting = iAppList->FindItemL( aProperties );
}
- else if( type == EBookmark )
+ else if ( type == EBookmark )
{
setting = iBkmList->FindItemL( aProperties );
}
@@ -265,28 +298,62 @@
return EFalse;
}
-
// ---------------------------------------------------------------------------
// Saves menuitem to HSPS to the given shortcut index
// ---------------------------------------------------------------------------
//
void CMCSPluginSettingsModel::SaveSettingsL( const TInt& aIndex,
CMenuItem& aMenuItem )
- {
-
- if ( !iPluginSettings )
+ {
+ if( !iPluginId )
{
return;
}
- RPointerArray<CItemMap> settingItems;
- CleanupClosePushL( settingItems );
+
+ RPointerArray<CItemMap> settingItems;
+ CleanupResetAndDestroyPushL( settingItems );
iPluginSettings->GetSettingsL( *iPluginId, settingItems );
+
if ( aIndex >= 0 && aIndex < settingItems.Count() )
{
TBool exists( EFalse );
CItemMap* itemMap = settingItems[ aIndex ];
RPointerArray<HSPluginSettingsIf::CPropertyMap> properties;
properties = itemMap->Properties();
+
+ const TInt KGranularity = 6;
+ CDesC8Array* propertiesList = new ( ELeave ) CDesC8ArrayFlat( KGranularity );
+ CleanupStack::PushL( propertiesList );
+ propertiesList->AppendL( KProperNameType );
+ propertiesList->AppendL( KProperNameParam );
+ propertiesList->AppendL( KProperNameUid );
+ propertiesList->AppendL( KProperNameView );
+ // skip KProperNameLocked property, attribute may be missing. results into
+ // leave with -1 when saving settings
+
+ // add missing properties
+ for ( TInt i=0; i<propertiesList->Count(); i++ )
+ {
+ TBool found( EFalse );
+ const TPtrC8 namePtr = propertiesList->MdcaPoint( i );
+ for ( TInt j=0; j<properties.Count() && !found; j++ )
+ {
+ found = ( (namePtr == properties[ j ]->Name() ) ? ETrue : EFalse );
+ }
+ if ( !found )
+ {
+ CPropertyMap* property = CPropertyMap::NewLC();
+ property->SetNameL( namePtr );
+ property->SetValueL( KNullDesC8 );
+ itemMap->AddPropertyMapL( property );
+ CleanupStack::Pop( property );
+
+ // get updated list
+ properties = itemMap->Properties();
+ }
+ }
+ CleanupStack::PopAndDestroy( propertiesList );
+
for ( TInt i = 0; i < properties.Count(); i++ )
{
if ( properties[ i ]->Name() == KProperNameType )
@@ -304,6 +371,10 @@
{
properties[ i ]->SetValueL( KProperValueSuite );
}
+ else if( type == KMenuTypeMailbox )
+ {
+ properties[ i ]->SetValueL( KProperValueMailbox );
+ }
else
{
properties[ i ]->SetValueL( KProperValueAppl );
@@ -312,7 +383,7 @@
else if ( properties[ i ]->Name() == KProperNameUid )
{
TPtrC uid = aMenuItem.GetAttributeL( KMenuAttrUid, exists );
- if ( exists )
+ if ( exists && uid.Length() > 0 )
{
HBufC8* uid8( NULL );
uid8 = AiUtility::CopyToBufferL( uid8, uid );
@@ -328,7 +399,7 @@
else if ( properties[ i ]->Name() == KProperNameView )
{
TPtrC view = aMenuItem.GetAttributeL( KMenuAttrView, exists );
- if( exists )
+ if( exists && view.Length() > 0 )
{
HBufC8* view8( NULL );
view8 = AiUtility::CopyToBufferL( view8, view );
@@ -354,7 +425,7 @@
isFolder = ETrue;
}
- if ( exists || isFolder )
+ if ( (exists && param.Length() > 0) || (isFolder) )
{
// the folder id is stored
// in param attribute in HSPS
@@ -379,7 +450,7 @@
else if ( properties[ i ]->Name() == KProperNameLocked )
{
TPtrC locked = aMenuItem.GetAttributeL( KMenuAttrLocked, exists );
- if ( exists )
+ if ( exists && locked.Length() > 0 )
{
HBufC8* locked8( NULL );
locked8 = AiUtility::CopyToBufferL( locked8, locked );
@@ -394,45 +465,21 @@
}
}
}
- // ETrue tells that modified settings are stored also to plugin reference
- iPluginSettings->SetSettingsL( *iPluginId, settingItems, ETrue );
- CleanupStack::Pop( &settingItems );
- settingItems.ResetAndDestroy();
+ // ETrue tells that modified settings are stored also to plugin reference
+ User::LeaveIfError( iPluginSettings->SetSettingsL( *iPluginId, settingItems, ETrue ) );
+ CleanupStack::PopAndDestroy(); // settingItems
}
// ---------------------------------------------------------------------------
// Updates settings container.
// ---------------------------------------------------------------------------
//
-void CMCSPluginSettingsModel::UpdateSettingsContainerL( const TDesC8& aPluginId )
-{
- if (iContainer)
- {
- if (iContainer->IsChangeDialogShowing())
- {
- iContainer->CloseChangeDialog();
- }
- }
-
- UpdateSettingsL( aPluginId );
-
- if (iContainer)
+void CMCSPluginSettingsModel::SetPluginIdL( const TDesC8& aPluginId )
{
- iContainer->ResetCurrentListL(0);
- }
-}
-
-// ---------------------------------------------------------------------------
-// From MHomeScreenSettingsObserver - handler for HSPS setting change
-// ---------------------------------------------------------------------------
-//
-TInt CMCSPluginSettingsModel::SettingsChangedL( const TDesC8& /*aEvent*/,
- const TDesC8& /*aPluginName*/,
- const TDesC8& /*aPluginUid*/,
- const TDesC8& /*aPluginId*/ )
- {
- return KErrNone;
+ delete iPluginId;
+ iPluginId = NULL;
+ iPluginId = aPluginId.AllocL();
}
// ---------------------------------------------------------------------------
@@ -451,27 +498,38 @@
// ---------------------------------------------------------------------------
//
TPtrC CMCSPluginSettingsModel::MdcaPoint( TInt aIndex ) const
-{
+ {
if (aIndex < 0 || aIndex >= iSettings.Count())
- {
+ {
TPtrC ret(KNullDesC);
return ret;
- }
+ }
+
+ TPtrC line( KNullDesC );
if ( iSettings[aIndex].type == EApplication )
{
- const TDesC& caption = iAppList->MdcaPoint( iSettings[aIndex].id );
- TPtrC line;
- TRAP_IGNORE( line.Set( ListBoxLineL( caption, aIndex ) ) )
- return line;
+ // first, we need to check if the item is missing
+ // (application uninstalled or mmc card removed)
+ // If it is, we return "Undefined" application name instead
+ if ( iSettings[ aIndex ].id == KErrNotFound )
+ {
+ const TDesC& caption = iAppList->UndefinedText();
+ TRAP_IGNORE( line.Set( ListBoxLineL( caption, aIndex ) ) )
+ }
+ else
+ {
+ const TDesC& caption = iAppList->MdcaPoint( iSettings[ aIndex ].id );
+ TRAP_IGNORE( line.Set( ListBoxLineL( caption, aIndex ) ) )
+ }
}
else
{
const TDesC& caption = iBkmList->MdcaPoint( iSettings[aIndex].id );
- TPtrC line;
TRAP_IGNORE( line.Set( ListBoxLineL( caption, aIndex ) ) )
- return line;
}
-}
+
+ return line;
+ }
// ---------------------------------------------------------------------------
// Returns a setting ID for the given index.
@@ -511,39 +569,28 @@
TInt aId,
TSettingType aType )
{
+ TBool replaced( EFalse );
if (aSettingIndex >= 0 && aSettingIndex < iSettings.Count())
{
- // Old setting type is bookmark. Remove bookmark item from MCS
- // if it was created in runtime.
- if( iSettings[aSettingIndex].type == EBookmark )
- {
- iBkmList->RemoveMenuItemL( iSettings[aSettingIndex].id );
- }
-
- // Old setting type is application.
- // Remove app item from MCS if it was created in runtime (mailbox).
- if ( iSettings[ aSettingIndex ].type == EApplication )
- {
- iAppList->RemoveMenuItemL( iSettings[ aSettingIndex ].id );
- }
-
- iSettings[aSettingIndex].id = aId;
- iSettings[aSettingIndex].type = aType;
-
+ CMenuItem* item( NULL );
if ( aType == EApplication )
{
- CMenuItem& item = iAppList->ItemL( aId );
- SaveSettingsL( aSettingIndex, item );
+ item = iAppList->ItemL( aId );
}
- else
+ else
{
- CMenuItem& item = iBkmList->ItemL( aId );
- SaveSettingsL( aSettingIndex, item );
+ item = iBkmList->ItemL( aId );
}
-
- return ETrue;
+
+ if ( item )
+ {
+ SaveSettingsL( aSettingIndex, *item );
+ iSettings[ aSettingIndex ].id = aId;
+ iSettings[ aSettingIndex ].type = aType;
+ replaced = ETrue;
+ }
}
- return EFalse;
+ return replaced;
}
// ---------------------------------------------------------------------------
@@ -577,20 +624,32 @@
// Updates application list
// ---------------------------------------------------------------------------
//
-void CMCSPluginSettingsModel::UpdateAppListL()
-{
+void CMCSPluginSettingsModel::UpdateAppListL( TBool aUpdateSettings )
+ {
+ if( !iAppList )
+ {
+ iAppList = CMCSPluginSettingsAppList::NewL();
+ }
iAppList->StartL();
-}
+ if ( aUpdateSettings )
+ {
+ UpdateSettingsL();
+ }
+ }
// ---------------------------------------------------------------------------
// Updates bookmark list
// ---------------------------------------------------------------------------
//
-void CMCSPluginSettingsModel::UpdateBkmListL()
-{
+void CMCSPluginSettingsModel::UpdateBkmListL( TBool aUpdateSettings )
+ {
delete iBkmList;
iBkmList = NULL;
iBkmList = CMCSPluginSettingsBkmList::NewL();
-}
+ if ( aUpdateSettings )
+ {
+ UpdateSettingsL();
+ }
+ }
// End of File.
--- a/idlefw/plugins/profileplugin/data/aiprofileplugin.rss Wed Mar 03 15:38:34 2010 +0200
+++ b/idlefw/plugins/profileplugin/data/aiprofileplugin.rss Wed May 12 13:36:47 2010 +0300
@@ -19,6 +19,7 @@
// INCLUDES
#include <ecom/registryinfov2.rh>
#include <platform/mw/aiprofilepluginuids.hrh>
+#include <hscontentpublisheruid.hrh>
// -----------------------------------------------------------------------------
@@ -41,7 +42,7 @@
INTERFACE_INFO
{
// UID of interface that is implemented
- interface_uid = AI_UID_ECOM_INTERFACE_CONTENTPUBLISHER;
+ interface_uid = HS_UID_ECOM_INTERFACE_CONTENTPUBLISHER;
implementations =
{
--- a/idlefw/plugins/profileplugin/data/aiprofilepluginres.rss Wed Mar 03 15:38:34 2010 +0200
+++ b/idlefw/plugins/profileplugin/data/aiprofilepluginres.rss Wed May 12 13:36:47 2010 +0300
@@ -93,4 +93,15 @@
};
}
+// -----------------------------------------------------------------------------
+//
+// "Insert SIM card and restart"
+//
+// -----------------------------------------------------------------------------
+//
+RESOURCE TBUF r_su_note_insert_sim_and_restart
+ {
+ buf = qtn_su_note_insert_sim_and_restart;
+ }
+
// End of File.
--- a/idlefw/plugins/profileplugin/group/aiprofileplugin.mmp Wed Mar 03 15:38:34 2010 +0200
+++ b/idlefw/plugins/profileplugin/group/aiprofileplugin.mmp Wed May 12 13:36:47 2010 +0300
@@ -51,6 +51,7 @@
LIBRARY ecom.lib
LIBRARY aiutils.lib
LIBRARY sssettings.lib
+LIBRARY profileengine.lib
LIBRARY profileeng.lib
LIBRARY bafl.lib
LIBRARY avkon.lib
--- a/idlefw/plugins/profileplugin/inc/caiprofileengine.h Wed Mar 03 15:38:34 2010 +0200
+++ b/idlefw/plugins/profileplugin/inc/caiprofileengine.h Wed May 12 13:36:47 2010 +0300
@@ -19,17 +19,23 @@
#ifndef CAIPROFILEENGINE_H
#define CAIPROFILEENGINE_H
-// INCLUDE FILES
+// System includes
#include <e32base.h>
#include <badesca.h>
#include <ConeResLoader.h>
#include <MSSSettingsObserver.h>
-#include <MProfileChangeObserver.h>
+#include <MProEngActiveProfileObserver.h>
+#include <MProEngProfileNameArrayObserver.h>
+#include <MProEngProfileActivationObserver.h>
+
+// User includes
#include "maiprofilepluginnotifier.h"
-class MProfileEngine;
-class CProfileChangeNotifyHandler;
-class MProfilesNamesArray;
+// Forward declarations
+class MProEngEngine;
+class MProEngNotifyHandler;
+class MProEngProfileNameArray;
+
class RSSSettings;
/**
@@ -39,21 +45,14 @@
*
* @since S60 v3.2
*/
-class CAiProfileEngine : public CBase,
- public MSSSettingsObserver,
- public MProfileChangeObserver
-{
-
-public: // Constructors and destructor
-
- /**
- * Constructor to use in the object creation. Initializes the necessary data.
- *
- * @param MAiProfilePluginNotifier* aNotifier a pointer to a object implementing MAiProfilePluginNotifier
- (the object ordering a notification of the content status change)
- * @return none
- */
- CAiProfileEngine( MAiProfilePluginNotifier* aProfilePluginNotifier );
+NONSHARABLE_CLASS( CAiProfileEngine ) : public CBase,
+ public MSSSettingsObserver,
+ public MProEngActiveProfileObserver,
+ public MProEngProfileNameArrayObserver,
+ public MProEngProfileActivationObserver
+ {
+public:
+ // constructors and destructor
/**
* Part of the two phased constuction
@@ -71,30 +70,32 @@
* @return none
*/
~CAiProfileEngine();
+
+private:
+ // constructors
/**
- * Resumes the engine
+ * Constructor to use in the object creation. Initializes the necessary data.
*
- * @param void
- * @return void
+ * @param MAiProfilePluginNotifier* aNotifier a pointer to a object implementing MAiProfilePluginNotifier
+ (the object ordering a notification of the content status change)
+ * @return none
*/
- void ResumeL();
-
+ CAiProfileEngine( MAiProfilePluginNotifier* aProfilePluginNotifier );
+
/**
- * Suspends the engine
- *
- * @param void
- * @return void
- */
- void Suspend();
-
+ * 2nd phase constructor
+ */
+ void ConstructL();
+
public:
-
+ // New functions
+
const TDesC& ActiveProfileName() const;
const TDesC& SwapProfileName() const;
- TInt NumberOfProfiles();
+ TInt NumberOfProfiles() const;
const TDesC& ProfileNameByIndex( TInt aIndex ) const;
@@ -102,23 +103,22 @@
void SetActiveProfileL( const TInt aProfileId );
- TBool IsActiveProfileSilentL();
+ TBool IsActiveProfileSilentL() const;
- TBool IsActiveProfileTimedL();
+ TBool IsActiveProfileTimedL() const;
void UpdateProfileNamesL();
- TBool IsOffline();
+ TBool IsOffline() const;
-private:
-
- void ConstructL();
+private:
+ // new functions
void SetActiveProfileNameL( const TDesC& aName );
void SetSwapProfileNameL( const TDesC& aName );
- void SetProfileNameListL( const MProfilesNamesArray& aArray );
+ void SetProfileNameListL( const MProEngProfileNameArray& aArray );
void HandleSwitchByNameL( const TDesC& aParam );
@@ -129,73 +129,69 @@
void HandleEditActiveProfileL();
TBool ShowOfflineMessageL();
-
+
+ void DetermineTimedAndSilentStatesL();
+
+ void NotifyContentUpdate();
-protected:
-
-// from base class MSSSettingsObserver
-
- /**
- * Called when SS Settings changes.
- */
- void PhoneSettingChanged( TSSSettingsSetting aSetting, TInt aNewValue );
-
-
-// from base class MProfileChangeObserver
+private:
+ // from MSSSettingsObserver
/**
- * Called when active profile changes.
+ * @see MSSSettingsObserver
*/
- void HandleActiveProfileEventL( TProfileEvent aProfileEvent, TInt aProfileId );
-
+ void PhoneSettingChanged(
+ TSSSettingsSetting aSetting, TInt aNewValue );
+
private:
- /**
- * Pointer to the class implementing the MAiProfilePluginNotifier interface
- */
- MAiProfilePluginNotifier* iProfilePluginNotifier;
-
- /**
- * Client to listen SS setting changes.
- */
- RSSSettings iSSSettings;
+ // from MProEngActiveProfileObserver
/**
- * Profile engine.
- * Own.
- */
- MProfileEngine* iProfileEngine;
-
- /**
- * Profile change notifier.
- * Own
- */
- CProfileChangeNotifyHandler* iProfileNotifier;
+ * @see MProEngActiveProfileObserver
+ */
+ void HandleActiveProfileModifiedL();
+
+private:
+ // from MProEngProfileNameArrayObserver
- /*
- * Active profile name
- * Own
- */
- HBufC* iActiveProfileName;
+ /**
+ * @see MProEngProfileNameArrayObserver
+ */
+ void HandleProfileNameArrayModificationL();
- /*
- * Swap profile name
- * Own
- */
- HBufC* iSwapProfileName;
+private:
+ // from MProEngProfileActivationObserver
/**
- * Array of Profile Name Pointer.
- * Own.
- */
- RPointerArray<HBufC> iProfileNamePointerArray;
+ * @see MProEngProfileActivationObserver
+ */
+ void HandleProfileActivatedL( TInt aProfileId );
+
+private:
+ // data
- /**
- * Resource loader for own resources.
- */
+ /** MAiProfilePluginNotifier interface, not owned */
+ MAiProfilePluginNotifier* iProfilePluginNotifier;
+ /** Client to listen SS setting changes, owned */
+ RSSSettings iSSSettings;
+ /** Profile engine, owned */
+ MProEngEngine* iProfileEngine;
+ /** Profile change notifier, owned */
+ MProEngNotifyHandler* iProfileNotifier;
+ /** Active profile name, owned */
+ HBufC* iActiveProfileName;
+ /** Swap profile name, owned */
+ HBufC* iSwapProfileName;
+ /** Array of Profile Names, owned */
+ RPointerArray< HBufC > iProfileNamePointerArray;
+ /** Resource loader, owned */
RConeResourceLoader iResourceLoader;
-
-};
+ /** Flag to indicate whether active profile is timed */
+ TBool iTimed;
+ /** Flag to indicate whether active profile is silent */
+ TBool iSilent;
+ };
#endif // CAIPROFILEENGINE_H
-
+// End of file
--- a/idlefw/plugins/profileplugin/inc/caiprofileplugin.h Wed Mar 03 15:38:34 2010 +0200
+++ b/idlefw/plugins/profileplugin/inc/caiprofileplugin.h Wed May 12 13:36:47 2010 +0300
@@ -19,12 +19,14 @@
#ifndef CAIPROFILEPLUGIN_H
#define CAIPROFILEPLUGIN_H
-#include <aicontentpublisher.h>
-#include <aipropertyextension.h>
+// System includes
+
+// User includes
+#include <hscontentpublisher.h>
#include <aicontentmodel.h>
-#include <aieventhandlerextension.h>
#include "maiprofilepluginnotifier.h"
+// Forward declarations
class MAiContentObserver;
class MAiContentItemIterator;
class CAiProfileEngine;
@@ -36,16 +38,12 @@
*
* @since S60 v3.2
*/
-class CAiProfilePlugin : public CAiContentPublisher,
- public MAiPropertyExtension,
- public MAiProfilePluginNotifier,
- public MAiEventHandlerExtension
-
-
+NONSHARABLE_CLASS( CAiProfilePlugin ) : public CHsContentPublisher,
+ public MAiProfilePluginNotifier
{
-
public:
-
+ // constructors and destructor
+
/**
* Part of the two phased constuction
*
@@ -53,7 +51,18 @@
* @return none
*/
static CAiProfilePlugin* NewL();
-
+
+ /**
+ * Destructor
+ *
+ * @param none
+ * @return none
+ */
+ ~CAiProfilePlugin();
+
+private:
+ // constructors
+
/**
* Constructor
*
@@ -63,12 +72,63 @@
CAiProfilePlugin();
/**
- * Destructor
- *
- * @param none
- * @return none
+ * 2nd phase constructor
*/
- ~CAiProfilePlugin();
+ void ConstructL();
+
+public:
+ // from CHsContentPublisher
+
+ /**
+ * @see CHsContentPublisher
+ */
+ void Start( TStartReason aReason );
+
+ /**
+ * @see CHsContentPublisher
+ */
+ void Stop( TStopReason aReason );
+
+ /**
+ * @see CHsContentPublisher
+ */
+ void Resume( TResumeReason aReason );
+
+ /**
+ * @see CHsContentPublisher
+ */
+ void Suspend( TSuspendReason aReason );
+
+ /**
+ * @see CHsContentPublisher
+ */
+ void SubscribeL( MAiContentObserver& aObserver );
+
+ /**
+ * @see CHsContentPublisher
+ */
+ void ConfigureL( RAiSettingsItemArray& aSettings );
+
+ /**
+ * @see CHsContentPublisher
+ */
+ TAny* GetProperty( TProperty aProperty );
+
+ /**
+ * @see CHsContentPublisher
+ */
+ void HandleEvent( TInt aEvent, const TDesC& aParam );
+
+private:
+ // from MAiProfilePluginNotifier
+
+ /**
+ * @see MAiProfilePluginNotifier
+ */
+ void NotifyContentUpdate();
+
+public:
+ // new functions
/**
* Publishes profile names
@@ -77,158 +137,19 @@
* @return void
*/
void PublishL();
-
-// 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 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 base class MAiProfilePluginNotifier
-
- /**
- * Receives a notification of the content update event
- *
- * @param void
- * @return void
- */
- void NotifyContentUpdate();
-protected:
-
private:
-
- /**
- * Part of the two phased construction
- *
- * @param void
- * @return void
- */
- void ConstructL();
+ // new functions
/**
* Resume the plug-in.
*
- * @param aReason reason for state change, see TAiTransitionChange.
+ * @param void
* @return void
*/
- void DoResumeL(TAiTransitionReason aReason);
+ void DoResumeL();
/**
- * Free the engine
- *
- * @param void
- * @return void
- */
- void FreeEngine();
-
- /**
* Clean profile names from published content
*
* @param void
@@ -236,48 +157,33 @@
*/
void CleanPublishedProfileNames();
-private: // data
-
- // Iterator for plugin content
- // Own
- MAiContentItemIterator* iContent;
-
- // Iterator for plugin events
- // Own
- MAiContentItemIterator* iEvents;
-
- // Iterator for plug-in resources.
- // Own
- MAiContentItemIterator* iResources;
-
- // Plugin engine
- // Own
- CAiProfileEngine* iEngine;
+private:
+ // data
- // Array of content observers
- // Own
- RPointerArray<MAiContentObserver> iObservers;
-
- // Information about the content publisher (this plug-in)
- TAiPublisherInfo iInfo;
-
- // Current profile count
+ /** Iterator for plugin content, owned */
+ MAiContentItemIterator* iContent;
+ /** Iterator for plugin events, owned */
+ MAiContentItemIterator* iEvents;
+ /** Iterator for plug-in resources, owned */
+ MAiContentItemIterator* iResources;
+ /** Plugin engine, owned */
+ CAiProfileEngine* iEngine;
+ /** Array of content observers */
+ RPointerArray<MAiContentObserver> iObservers;
+ /** Current profile count */
TInt iCurrentCount;
-
- // Profile count that is used as reference when profile list is updated
- TInt iPreviousCount;
-
- //Plug-in state, suspended or alive.
- TBool iAlive;
-
- // Boolean, which expresses whether the content has been updated
- TBool iIsUpdated;
-
- HBufC *iActiveProfileAndChar;
-
- HBufC *iPreviousProfileNameAndChar;
+ /** Profile count that is used as reference when profile list is updated */
+ TInt iPreviousCount;
+ /** Active profile, owned */
+ HBufC* iActiveProfileAndChar;
+ /** Previous profile, owned */
+ HBufC* iPreviousProfileNameAndChar;
+ /** Flag to indicate whether publish is required */
+ TBool iPublishRequired;
};
#endif // CAIPROFILEPLUGIN_H
+// End of file
+
--- a/idlefw/plugins/profileplugin/inc/maiprofilepluginnotifier.h Wed Mar 03 15:38:34 2010 +0200
+++ b/idlefw/plugins/profileplugin/inc/maiprofilepluginnotifier.h Wed May 12 13:36:47 2010 +0300
@@ -30,15 +30,16 @@
*/
class MAiProfilePluginNotifier
{
- public:
+public:
- /**
- * Virtual method, which the plugin class has to implement.
- * Method is used to send notification of P&S data's change event
- * from engine to plugin.
- *
- */
- inline virtual void NotifyContentUpdate() = 0;
+ /**
+ * Virtual method, which the plugin class has to implement.
+ * Method is used to send notification of P&S data's change event
+ * from engine to plugin.
+ */
+ virtual void NotifyContentUpdate() = 0;
};
-#endif //MAIPROFILEPLUGINNOTIFIER_H
\ No newline at end of file
+#endif // MAIPROFILEPLUGINNOTIFIER_H
+
+// End of file
--- a/idlefw/plugins/profileplugin/src/caiprofileengine.cpp Wed Mar 03 15:38:34 2010 +0200
+++ b/idlefw/plugins/profileplugin/src/caiprofileengine.cpp Wed May 12 13:36:47 2010 +0300
@@ -16,16 +16,16 @@
*/
-// INCLUDE FILES
-#include "caiprofileengine.h"
-#include "maiprofilepluginnotifier.h"
-#include "aiprofileplugincontentmodel.h"
-
+// System includes
#include <w32std.h>
+#include <ProEngFactory.h>
#include <MProfileEngine.h>
#include <MProfile.h>
-#include <MProfilesNamesArray.h>
-#include <MProfileName.h>
+#include <MProEngEngine.h>
+#include <MProEngProfile.h>
+#include <MProEngProfileName.h>
+#include <MProEngProfileNameArray.h>
+#include <MProEngNotifyHandler.h>
#include <Profile.hrh>
#include <CProfileChangeNotifyHandler.h>
#include <PUAcodes.hrh>
@@ -36,12 +36,15 @@
#include <AknQueryDialog.h>
#include <aknnotewrappers.h>
#include <RSSSettings.h>
-
-
-#include <aiprofilepluginres.rsg>
-
#include <startupdomainpskeys.h>
+// User includes
+#include <aiprofilepluginres.rsg>
+#include "caiprofileengine.h"
+#include "maiprofilepluginnotifier.h"
+#include "aiprofileplugincontentmodel.h"
+
+// Constants
const TInt KMaxProfileNameLength( 64 );
const TInt KGeneralProfileId( 0 );
const TInt KSilentProfileId( 1 );
@@ -53,35 +56,41 @@
_LIT( KAiProfilePluginResourceFileName, "z:aiprofilepluginres.rsc");
-// ============================ MEMBER FUNCTIONS ===============================
-// ---------------------------------------------------------
-// Default constructor
-// ---------------------------------------------------------
+// ============================ MEMBER FUNCTIONS ==============================
+// ----------------------------------------------------------------------------
+// CAiProfileEngine::CAiProfileEngine
//
-CAiProfileEngine::CAiProfileEngine( MAiProfilePluginNotifier* aProfilePluginNotifier ) :
- iProfilePluginNotifier ( aProfilePluginNotifier ),
+// ----------------------------------------------------------------------------
+//
+CAiProfileEngine::CAiProfileEngine(
+ MAiProfilePluginNotifier* aProfilePluginNotifier )
+ : iProfilePluginNotifier ( aProfilePluginNotifier ),
iResourceLoader( *CCoeEnv::Static() )
{
}
-// ---------------------------------------------------------
-// Two-phased constructor.
-// Create instance of concrete ECOM interface implementation
-// ---------------------------------------------------------
+// ----------------------------------------------------------------------------
+// CAiProfileEngine::NewL
+//
+// ----------------------------------------------------------------------------
//
-CAiProfileEngine* CAiProfileEngine::NewL( MAiProfilePluginNotifier* aProfilePluginNotifier )
+CAiProfileEngine* CAiProfileEngine::NewL(
+ MAiProfilePluginNotifier* aProfilePluginNotifier )
{
- CAiProfileEngine* self = new( ELeave ) CAiProfileEngine( aProfilePluginNotifier );
+ CAiProfileEngine* self =
+ new( ELeave ) CAiProfileEngine( aProfilePluginNotifier );
CleanupStack::PushL( self );
+
self->ConstructL();
CleanupStack::Pop( self );
return self;
}
-// ---------------------------------------------------------
-// Symbian 2nd phase constructor can leave
-// ---------------------------------------------------------
+// ----------------------------------------------------------------------------
+// CAiProfileEngine::ConstructL
+//
+// ----------------------------------------------------------------------------
//
void CAiProfileEngine::ConstructL()
{
@@ -97,87 +106,154 @@
User::LeaveIfError( iSSSettings.Open() );
- iProfileEngine = CreateProfileEngineL();
- }
+ // Register to listen ALS activation, if ALS status changes,
+ // profile must be republished.
+ TInt err( iSSSettings.Register( ESSSettingsAls, *this ) );
+
+ if( err == KErrNotSupported || err == KErrAlreadyExists )
+ {
+ // ALS not supported or already registered, that's fine
+ err = KErrNone;
+ }
+
+ User::LeaveIfError( err );
+ iProfileEngine = ProEngFactory::NewEngineL();
-// ---------------------------------------------------------
-// Destructor.
-// ---------------------------------------------------------
+ // Start to listen profile changes.
+ iProfileNotifier = ProEngFactory::NewNotifyHandlerL();
+
+ iProfileNotifier->RequestActiveProfileNotificationsL( *this );
+ iProfileNotifier->RequestProfileNameArrayNotificationsL( *this );
+ iProfileNotifier->RequestProfileActivationNotificationsL( *this );
+
+ DetermineTimedAndSilentStatesL();
+ }
+
+// ----------------------------------------------------------------------------
+// CAiProfileEngine::~CAiProfileEngine
+//
+// ----------------------------------------------------------------------------
//
CAiProfileEngine::~CAiProfileEngine()
{
iSSSettings.CancelAll( *this );
iSSSettings.Close();
- delete iProfileNotifier;
+
delete iActiveProfileName;
delete iSwapProfileName;
- if( iProfileNamePointerArray.Count() )
- {
- iProfileNamePointerArray.ResetAndDestroy();
- }
-
+ iProfileNamePointerArray.ResetAndDestroy();
+
+ if ( iProfileNotifier )
+ {
+ iProfileNotifier->CancelAll();
+ }
+
+ delete iProfileNotifier;
+
if( iProfileEngine )
{
iProfileEngine->Release();
}
-
- iResourceLoader.Close();
+
+ iResourceLoader.Close();
}
+
+// ----------------------------------------------------------------------------
+// CAiProfileEngine::DetermineTimedAndSilentStatesL()
+//
+// ----------------------------------------------------------------------------
+//
+void CAiProfileEngine::DetermineTimedAndSilentStatesL()
+ {
+ iTimed = EFalse;
+ iSilent = EFalse;
-// ---------------------------------------------------------
-// Updates profiles
-// ---------------------------------------------------------
+ MProfileEngine* engine = CreateProfileEngineL();
+
+ iTimed = engine->IsActiveProfileTimedL();
+
+ MProfile* profile = engine->ActiveProfileLC();
+
+ iSilent = profile->IsSilent();
+
+ CleanupStack::PopAndDestroy(); // profile
+
+ engine->Release();
+ }
+
+// ----------------------------------------------------------------------------
+// CAiProfileEngine::UpdateProfileNamesL()
+//
+// ----------------------------------------------------------------------------
//
void CAiProfileEngine::UpdateProfileNamesL()
{
- //update active profile name
- HBufC* activeProfileName = NULL;
+ // Update active profile name
+ MProEngProfile* profile( iProfileEngine->ActiveProfileLC() );
- MProfile* profile = iProfileEngine->ActiveProfileLC();
- const MProfileName& name = profile->ProfileName();
- activeProfileName = name.Name().AllocLC();
+ const MProEngProfileName& name( profile->ProfileName() );
+
+ HBufC* activeProfileName( name.Name().AllocLC() );
SetActiveProfileNameL( *activeProfileName );
- //update profile name list
- MProfilesNamesArray* profileNamesArray = iProfileEngine->ProfilesNamesArrayLC();
+ // Update profile name list
+ MProEngProfileNameArray* profileNamesArray(
+ iProfileEngine->ProfileNameArrayLC() );
SetProfileNameListL( *profileNamesArray );
- //update swap profile name
- HBufC* swapProfileName = NULL;
+ // Update swap profile name
+ HBufC* swapProfileName( NULL );
- TInt activeProfileId = iProfileEngine->ActiveProfileId();
+ TInt activeProfileId( iProfileEngine->ActiveProfileId() );
if( activeProfileId == KSilentProfileId )
{
- const MProfileName* generalProfileName = profileNamesArray->ProfileName( KGeneralProfileId );
- swapProfileName = generalProfileName->Name().AllocLC();
+ TInt generalProfileIndex(
+ profileNamesArray->FindById( KGeneralProfileId ) );
+
+ if( generalProfileIndex > KErrNotFound )
+ {
+ swapProfileName =
+ profileNamesArray->MdcaPoint( generalProfileIndex ).AllocLC() ;
+ }
}
else
{
- const MProfileName* silentProfileName = profileNamesArray->ProfileName( KSilentProfileId );
- swapProfileName = silentProfileName->Name().AllocLC();
+ TInt silentProfileIndex(
+ profileNamesArray->FindById( KSilentProfileId ) );
+
+ if( silentProfileIndex > KErrNotFound )
+ {
+ swapProfileName =
+ profileNamesArray->MdcaPoint( silentProfileIndex ).AllocLC() ;
+ }
}
- TPtrC swapProfileNamePtr( *swapProfileName );
- HBufC* activateProfileString = NULL;
- activateProfileString = StringLoader::LoadLC( R_AI_PERS_PROF_TOGGLE, swapProfileNamePtr );
-
- SetSwapProfileNameL( *activateProfileString );
+ if( swapProfileName )
+ {
+ HBufC* activateProfileString( StringLoader::LoadLC(
+ R_AI_PERS_PROF_TOGGLE, swapProfileName->Des() ) );
+
+ SetSwapProfileNameL( *activateProfileString );
+
+ CleanupStack::PopAndDestroy( 2 ); // swapProfileName, activateProfileString
+ }
- CleanupStack::PopAndDestroy( 5 ); //profile, profileName, profileNamesArray, swapProfileName, activateProfileString
+ CleanupStack::PopAndDestroy( 3 ); //profile, profileName, profileNamesArray,
}
-// ---------------------------------------------------------
-// Checks SIM card status
-// ---------------------------------------------------------
+// ----------------------------------------------------------------------------
+// CAiProfileEngine::ShowOfflineMessageL
+//
+// ----------------------------------------------------------------------------
//
TBool CAiProfileEngine::ShowOfflineMessageL()
{
- TInt result = ETrue;
+ TInt result( ETrue );
TInt simCardStatus( ESimNotPresent );
@@ -186,42 +262,51 @@
User::LeaveIfError( simStatus.Get( simCardStatus ) );
simStatus.Close();
- if( simCardStatus == ESimNotPresent )
+ if ( simCardStatus == ESimNotPresent )
{
// SIM card does not exist.
- HBufC* infoNoteText = StringLoader::LoadLC( R_SU_NOTE_INSERT_SIM );
+ HBufC* infoNoteText = StringLoader::LoadLC( R_SU_NOTE_INSERT_SIM_AND_RESTART );
+
CAknInformationNote* note = new( ELeave ) CAknInformationNote( ETrue );
note->ExecuteLD( *infoNoteText );
+
CleanupStack::PopAndDestroy( infoNoteText );
+
result = EFalse;
}
else
{
CAknQueryDialog* dlg = CAknQueryDialog::NewL();
+
result = dlg->ExecuteLD( R_AI_LEAVE_OFFLINE_MODE_QUERY );
}
return result;
}
-
-
-// ---------------------------------------------------------
-//
-// ---------------------------------------------------------
+
+// ----------------------------------------------------------------------------
+// CAiProfileEngine::SetActiveProfileNameL
+//
+// ----------------------------------------------------------------------------
//
void CAiProfileEngine::SetActiveProfileNameL( const TDesC& aName )
{
- HBufC* temp = aName.AllocL();
+ HBufC* temp( aName.AllocL() );
+
+ TPtr profileNamePtr( temp->Des() );
+
+ AknTextUtils::DisplayTextLanguageSpecificNumberConversion( profileNamePtr );
+
delete iActiveProfileName;
iActiveProfileName = NULL;
- TPtr profileNamePtr = temp->Des();
- AknTextUtils::DisplayTextLanguageSpecificNumberConversion( profileNamePtr );
+
iActiveProfileName = temp;
}
-// ---------------------------------------------------------
-//
-// ---------------------------------------------------------
+// ----------------------------------------------------------------------------
+// CAiProfileEngine::ActiveProfileName
+//
+// ----------------------------------------------------------------------------
//
const TDesC& CAiProfileEngine::ActiveProfileName() const
{
@@ -233,23 +318,29 @@
return KNullDesC();
}
-// ---------------------------------------------------------
-//
-// ---------------------------------------------------------
+// ----------------------------------------------------------------------------
+// CAiProfileEngine::SetSwapProfileNameL
+//
+// ----------------------------------------------------------------------------
//
void CAiProfileEngine::SetSwapProfileNameL( const TDesC& aName )
{
- HBufC* temp = aName.AllocL();
- delete iSwapProfileName;
+ HBufC* temp( aName.AllocL() );
+
+ TPtr profileNamePtr( temp->Des() );
+
+ AknTextUtils::DisplayTextLanguageSpecificNumberConversion( profileNamePtr );
+
+ delete iSwapProfileName;
iSwapProfileName = NULL;
- TPtr profileNamePtr = temp->Des();
- AknTextUtils::DisplayTextLanguageSpecificNumberConversion( profileNamePtr );
+
iSwapProfileName = temp;
}
-// ---------------------------------------------------------
-//
-// ---------------------------------------------------------
+// ----------------------------------------------------------------------------
+// CAiProfileEngine::SwapProfileName
+//
+// ----------------------------------------------------------------------------
//
const TDesC& CAiProfileEngine::SwapProfileName() const
{
@@ -261,82 +352,87 @@
return KNullDesC();
}
-
-// ---------------------------------------------------------
-// Set profile names
-// ---------------------------------------------------------
+// ----------------------------------------------------------------------------
+// CAiProfileEngine::SetProfileNameListL
//
-void CAiProfileEngine::SetProfileNameListL( const MProfilesNamesArray& aArray )
+// ----------------------------------------------------------------------------
+//
+void CAiProfileEngine::SetProfileNameListL(
+ const MProEngProfileNameArray& aArray )
{
- if( iProfileNamePointerArray.Count() )
- {
- iProfileNamePointerArray.ResetAndDestroy();
- }
-
- const TInt count = aArray.MdcaCount();
+ iProfileNamePointerArray.ResetAndDestroy();
+
+ const TInt count( aArray.MdcaCount() );
+
TBufC<KMaxProfileNameLength> profileName;
- for( TInt i = 0; i < count; i++ )
+ for ( TInt i = 0; i < count; i++ )
{
profileName = aArray.MdcaPoint( i );
- TPtr profileNamePtr = profileName.Des();
- AknTextUtils::DisplayTextLanguageSpecificNumberConversion( profileNamePtr );
- HBufC* profile = profileNamePtr.AllocLC();
- User::LeaveIfError( iProfileNamePointerArray.Append( profile ));
+
+ TPtr profileNamePtr( profileName.Des() );
+
+ AknTextUtils::DisplayTextLanguageSpecificNumberConversion(
+ profileNamePtr );
+
+ HBufC* profile( profileNamePtr.AllocLC() );
+
+ iProfileNamePointerArray.AppendL( profile );
CleanupStack::Pop( profile );
}
}
-
-// ---------------------------------------------------------
-//
-// ---------------------------------------------------------
+// ----------------------------------------------------------------------------
+// CAiProfileEngine::ProfileNameByIndex
+//
+// ----------------------------------------------------------------------------
//
const TDesC& CAiProfileEngine::ProfileNameByIndex( TInt aIndex ) const
{
- if( iProfileNamePointerArray.Count() )
+ TInt count( iProfileNamePointerArray.Count() );
+
+ if( aIndex < count && aIndex >= 0 )
{
- return *iProfileNamePointerArray[aIndex];
+ return *iProfileNamePointerArray[ aIndex ];
}
return KNullDesC();
}
-// ---------------------------------------------------------
-//
-// ---------------------------------------------------------
+// ----------------------------------------------------------------------------
+// CAiProfileEngine::IsActiveProfileSilentL
//
-TBool CAiProfileEngine::IsActiveProfileSilentL()
+// ----------------------------------------------------------------------------
+//
+TBool CAiProfileEngine::IsActiveProfileSilentL() const
{
- TBool isSilent = EFalse;
- MProfile* profile = iProfileEngine->ActiveProfileLC();
- isSilent = profile->IsSilent();
- CleanupStack::PopAndDestroy();
- return isSilent;
+ return iSilent;
}
-// ---------------------------------------------------------
+// ----------------------------------------------------------------------------
+// CAiProfileEngine::IsActiveProfileTimedL
//
-// ---------------------------------------------------------
+// ----------------------------------------------------------------------------
//
-TBool CAiProfileEngine::IsActiveProfileTimedL()
- {
- return iProfileEngine->IsActiveProfileTimedL();
+TBool CAiProfileEngine::IsActiveProfileTimedL() const
+ {
+ return iTimed;
}
-// ---------------------------------------------------------
-// Number of profiles
-// ---------------------------------------------------------
+// ----------------------------------------------------------------------------
+// CAiProfileEngine::NumberOfProfiles
//
-TInt CAiProfileEngine::NumberOfProfiles()
+// ----------------------------------------------------------------------------
+//
+TInt CAiProfileEngine::NumberOfProfiles() const
{
return iProfileNamePointerArray.Count();
}
-
-// ---------------------------------------------------------
-//
-// ---------------------------------------------------------
+// ----------------------------------------------------------------------------
+// CAiProfileEngine::HandleAiEventL
+//
+// ----------------------------------------------------------------------------
//
void CAiProfileEngine::HandleAiEventL( TInt aEvent, const TDesC& aParam )
{
@@ -357,86 +453,96 @@
case EAiProfileEditActive:
HandleEditActiveProfileL();
break;
+
default:
break;
}
}
-
-// -----------------------------------------------------------------------------
-// Handles profile switch by index event
-// -----------------------------------------------------------------------------
+// ----------------------------------------------------------------------------
+// CAiProfileEngine::HandleSwitchByIndexL
+//
+// ----------------------------------------------------------------------------
//
void CAiProfileEngine::HandleSwitchByIndexL( const TDesC& aParam )
{
if ( aParam.Length() > 0 )
{
- TInt profileId = KErrNotFound;
+ TInt index( KErrNotFound );
TPtrC ptr( aParam );
TLex lexer( ptr );
- TInt err = lexer.Val( profileId );
+ TInt err( lexer.Val( index ) );
+
if ( err == KErrNone )
{
- MProfilesNamesArray* profileNamesArray = iProfileEngine->ProfilesNamesArrayLC();
- const MProfileName* profileName = profileNamesArray->ProfileName( profileId );
-
- if( profileName )
- {
- profileId = profileName->Id();
- SetActiveProfileL( profileId );
- }
+ MProEngProfileNameArray* profileNamesArray(
+ iProfileEngine->ProfileNameArrayLC() );
+
+ TInt profileId( profileNamesArray->ProfileId( index ) );
+
+ if ( profileId != KErrNotFound )
+ {
+ SetActiveProfileL( profileId );
+ }
CleanupStack::PopAndDestroy();
}
}
}
-// -----------------------------------------------------------------------------
-// Handles profile switch by name event
-// -----------------------------------------------------------------------------
+// ----------------------------------------------------------------------------
+// CAiProfileEngine::HandleSwitchByNameL
+//
+// ----------------------------------------------------------------------------
//
void CAiProfileEngine::HandleSwitchByNameL( const TDesC& aParam )
{
if ( aParam.Length() > 0 )
- {
- TInt profileId = KErrNotFound;
- MProfilesNamesArray* profileNamesArray = iProfileEngine->ProfilesNamesArrayLC();
- profileId = profileNamesArray->FindByName( aParam );
- if( profileId != KErrNotFound )
+ {
+ MProEngProfileNameArray* profileNamesArray(
+ iProfileEngine->ProfileNameArrayLC() );
+
+ TInt index( profileNamesArray->FindByName( aParam ) );
+
+ if( index != KErrNotFound )
{
- SetActiveProfileL( profileId );
+ SetActiveProfileL( profileNamesArray->ProfileId( index ) );
}
-
+
CleanupStack::PopAndDestroy();
}
}
-// -----------------------------------------------------------------------------
-// Handles profile swap event
-// -----------------------------------------------------------------------------
+// ----------------------------------------------------------------------------
+// CAiProfileEngine::HandleSwapL
+//
+// ----------------------------------------------------------------------------
//
void CAiProfileEngine::HandleSwapL( const TDesC& aParam )
{
if ( aParam.Length() > 0 )
{
- TInt profileId = KErrNotFound;
+ TInt profileId( KErrNotFound );
TPtrC ptr( aParam );
TLex lexer( ptr );
- TInt err = lexer.Val( profileId );
+ TInt err( lexer.Val( profileId ) );
+
if ( err == KErrNone )
{
- TInt activeProfile = iProfileEngine->ActiveProfileId();
+ TInt activeProfile( iProfileEngine->ActiveProfileId() );
if( activeProfile != profileId )
{
- MProfilesNamesArray* profileNamesArray = iProfileEngine->ProfilesNamesArrayLC();
+ MProEngProfileNameArray* profileNamesArray(
+ iProfileEngine->ProfileNameArrayLC() );
+
profileId = profileNamesArray->FindById( profileId );
if( profileId != KErrNotFound )
{
- TRAP_IGNORE( SetActiveProfileL( profileId ) );
+ SetActiveProfileL( profileId );
}
CleanupStack::PopAndDestroy();
@@ -449,45 +555,51 @@
}
}
-// -----------------------------------------------------------------------------
-// Handles edit active profile event
-// -----------------------------------------------------------------------------
+// ----------------------------------------------------------------------------
+// CAiProfileEngine::HandleEditActiveProfileL
+//
+// ----------------------------------------------------------------------------
//
void CAiProfileEngine::HandleEditActiveProfileL()
{
RWsSession ws;
- User::LeaveIfError(ws.Connect());
- CleanupClosePushL(ws);
+ User::LeaveIfError( ws.Connect() );
+ CleanupClosePushL( ws );
// Find the task with uid
- TApaTaskList taskList(ws);
- TApaTask task = taskList.FindApp( KUidProfileApp );
+ TApaTaskList taskList( ws );
+ TApaTask task( taskList.FindApp( KUidProfileApp ) );
if ( task.Exists() )
{
task.EndTask();
User::After( 500000 );
}
- CleanupStack::PopAndDestroy(&ws);
+
+ CleanupStack::PopAndDestroy( &ws );
TVwsViewId viewid( KUidProfileApp, KProfileAppSettingViewId );
- TInt profileId = iProfileEngine->ActiveProfileId();
+
+ TInt profileId( iProfileEngine->ActiveProfileId() );
+
TBuf8<KMaxActiveProfileLength> buf;
- buf.AppendNum(profileId);
- CEikonEnv::Static()->AppUi()->ActivateViewL( viewid ,KProfileAppSettingViewId,buf);
+ buf.AppendNum( profileId );
-
+ CEikonEnv::Static()->AppUi()->ActivateViewL(
+ viewid, KProfileAppSettingViewId, buf );
}
-// -----------------------------------------------------------------------------
-// Set active profile
-// -----------------------------------------------------------------------------
+// ----------------------------------------------------------------------------
+// CAiProfileEngine::SetActiveProfileL
+//
+// ----------------------------------------------------------------------------
//
void CAiProfileEngine::SetActiveProfileL( const TInt aProfileId )
{
- TInt activeProfileId = iProfileEngine->ActiveProfileId();
+ TInt activeProfileId( iProfileEngine->ActiveProfileId() );
- if ( activeProfileId == KOfflineProfileId && aProfileId != KOfflineProfileId )
+ if ( activeProfileId == KOfflineProfileId &&
+ aProfileId != KOfflineProfileId )
{
if( !ShowOfflineMessageL() )
{
@@ -499,82 +611,75 @@
iProfileEngine->SetActiveProfileL( aProfileId );
}
-
-// ---------------------------------------------------------------------------
-// Resumes the engine
-// ---------------------------------------------------------------------------
+
+// ----------------------------------------------------------------------------
+// CAiProfileEngine::IsOffline
//
-void CAiProfileEngine::ResumeL()
+// ----------------------------------------------------------------------------
+//
+TBool CAiProfileEngine::IsOffline() const
{
- User::LeaveIfError( iSSSettings.Open() );
-
- //Register to listen ALS activation, if ALS status changes,
- //profile must be republished.
- TInt err = iSSSettings.Register( ESSSettingsAls, *this );
-
- if( err == KErrNotSupported || err == KErrAlreadyExists )
- {
- //ALS not supported or already registered, that's fine
- err = KErrNone;
- }
-
- User::LeaveIfError( err );
-
- //Start to listen profile changes.
- delete iProfileNotifier;
- iProfileNotifier = NULL;
-
- iProfileNotifier = CProfileChangeNotifyHandler::NewL( this );
- }
-
-// ---------------------------------------------------------------------------
-// Suspends the engine
-// ---------------------------------------------------------------------------
-//
-void CAiProfileEngine::Suspend()
- {
- iSSSettings.CancelAll( *this );
- iSSSettings.Close();
- delete iProfileNotifier;
- iProfileNotifier = NULL;
+ return iProfileEngine->ActiveProfileId() == KOfflineProfileId;
}
-// ---------------------------------------------------------------------------
-// From class MProfileChangeObserver
-// ---------------------------------------------------------------------------
+// ----------------------------------------------------------------------------
+// CAiProfileEngine::PhoneSettingChanged
//
-
-void CAiProfileEngine::HandleActiveProfileEventL(
- TProfileEvent aProfileEvent,
- TInt /*aProfileId*/ )
- {
- //Profile activated or modified.
- if( ( aProfileEvent == EProfileNewActiveProfile ) ||
- ( aProfileEvent == EProfileActiveProfileModified ) )
- {
- UpdateProfileNamesL();
- iProfilePluginNotifier->NotifyContentUpdate();
- }
- }
-
-// ---------------------------------------------------------------------------
-// From class MSSSettingsObserver.
-// ---------------------------------------------------------------------------
+// ----------------------------------------------------------------------------
//
-void CAiProfileEngine::PhoneSettingChanged(
- TSSSettingsSetting aSetting,
- TInt /*aNewValue*/ )
+void CAiProfileEngine::PhoneSettingChanged( TSSSettingsSetting aSetting,
+ TInt /*aNewValue*/ )
{
if( aSetting == ESSSettingsAls )
{
- TRAP_IGNORE( UpdateProfileNamesL() );
- iProfilePluginNotifier->NotifyContentUpdate();
+ NotifyContentUpdate();
}
}
+// ----------------------------------------------------------------------------
+// CAiProfileEngine::HandleActiveProfileModifiedL
+//
+// ----------------------------------------------------------------------------
+//
+void CAiProfileEngine::HandleActiveProfileModifiedL()
+ {
+ DetermineTimedAndSilentStatesL();
+
+ NotifyContentUpdate();
+ }
-TBool CAiProfileEngine::IsOffline()
- {
- return iProfileEngine->ActiveProfileId() == KOfflineProfileId;
- }
+// ----------------------------------------------------------------------------
+// CAiProfileEngine::HandleProfileNameArrayModificationL
+//
+// ----------------------------------------------------------------------------
+//
+void CAiProfileEngine::HandleProfileNameArrayModificationL()
+ {
+ NotifyContentUpdate();
+ }
+// ----------------------------------------------------------------------------
+// CAiProfileEngine::HandleProfileActivatedL
+//
+// ----------------------------------------------------------------------------
+//
+void CAiProfileEngine::HandleProfileActivatedL( TInt /*aProfileId*/ )
+ {
+ DetermineTimedAndSilentStatesL();
+
+ NotifyContentUpdate();
+ }
+
+// ----------------------------------------------------------------------------
+// CAiProfileEngine::NotifyContentUpdate
+//
+// ----------------------------------------------------------------------------
+//
+void CAiProfileEngine::NotifyContentUpdate()
+ {
+ TRAP_IGNORE( UpdateProfileNamesL() );
+
+ iProfilePluginNotifier->NotifyContentUpdate();
+ }
+
+// End of file
--- a/idlefw/plugins/profileplugin/src/caiprofileplugin.cpp Wed Mar 03 15:38:34 2010 +0200
+++ b/idlefw/plugins/profileplugin/src/caiprofileplugin.cpp Wed May 12 13:36:47 2010 +0300
@@ -15,25 +15,28 @@
*
*/
-
+// System includes
#include <ecom/ecom.h>
#include <ecom/implementationproxy.h>
-#include <aicontentobserver.h>
-#include <aiutility.h>
#include <PUAcodes.hrh>
#include <AknUtils.h>
+// User includes
+#include <aiprofilepluginuids.hrh>
+#include <aicontentobserver.h>
+#include <aiutility.h>
+
#include "aiprofileplugincontentmodel.h"
-#include <aiprofilepluginuids.hrh>
#include "caiprofileplugin.h"
#include "caiprofileengine.h"
#include "aipluginsettings.h"
+// Constants
+
// PUA code for the timed profile, missing from PUAcodes.hrh
#define KAiTimedProfilePUA 0xF815
#define KAiRTL 0x200F
-// CONST CLASS VARIABLES
const TImplementationProxy KImplementationTable[] =
{
IMPLEMENTATION_PROXY_ENTRY( KImplUidProfilePlugin, CAiProfilePlugin::NewL )
@@ -42,14 +45,14 @@
// ======== LOCAL FUNCTIONS ========
// ======== MEMBER FUNCTIONS ========
-
// ---------------------------------------------------------------------------
-// Symbian 2nd phase constructor can leave
+// CAiProfilePlugin::NewL
+//
// ---------------------------------------------------------------------------
//
CAiProfilePlugin* CAiProfilePlugin::NewL()
{
- CAiProfilePlugin* self = new (ELeave) CAiProfilePlugin;
+ CAiProfilePlugin* self = new ( ELeave ) CAiProfilePlugin;
CleanupStack::PushL( self );
self->ConstructL();
CleanupStack::Pop( self );
@@ -58,7 +61,8 @@
}
// ---------------------------------------------------------------------------
-// Default constructor
+// CAiProfilePlugin::CAiProfilePlugin()
+//
// ---------------------------------------------------------------------------
//
CAiProfilePlugin::CAiProfilePlugin()
@@ -66,39 +70,46 @@
}
// ---------------------------------------------------------------------------
-// Symbian 2nd phase constructor can leave
+// CAiProfilePlugin::ConstructL
+//
// ---------------------------------------------------------------------------
//
void CAiProfilePlugin::ConstructL()
{
- iInfo.iUid.iUid = AI_UID_ECOM_IMPLEMENTATION_CONTENTPUBLISHER_PROFILEPLUGIN;
-
- iContent = AiUtility::CreateContentItemArrayIteratorL( KAiProfileContent );
- iEvents = AiUtility::CreateContentItemArrayIteratorL( KAiProfileEvents );
- iResources = AiUtility::CreateContentItemArrayIteratorL( KAiProfileResources );
+ iContent =
+ AiUtility::CreateContentItemArrayIteratorL( KAiProfileContent );
+
+ iEvents =
+ AiUtility::CreateContentItemArrayIteratorL( KAiProfileEvents );
- iIsUpdated = ETrue;
- iAlive = EFalse;
+ iResources =
+ AiUtility::CreateContentItemArrayIteratorL( KAiProfileResources );
+
+ iEngine = CAiProfileEngine::NewL( this );
+
+ iEngine->UpdateProfileNamesL();
}
// ---------------------------------------------------------------------------
-// Destructor
+// CAiProfilePlugin::~CAiProfilePlugin
// Deletes all data created to heap
// ---------------------------------------------------------------------------
//
CAiProfilePlugin::~CAiProfilePlugin()
- {
- CleanPublishedProfileNames();
+ {
Release( iContent );
Release( iEvents );
- Release( iResources );
+ Release( iResources );
+
delete iActiveProfileAndChar;
delete iPreviousProfileNameAndChar;
delete iEngine;
+
iObservers.Close();
}
// ---------------------------------------------------------------------------
+// CAiProfilePlugin::PublishL
// Publishes the profiles
// ---------------------------------------------------------------------------
//
@@ -106,12 +117,14 @@
{
TInt err( KErrNone );
TInt observers( iObservers.Count() );
- TInt transactionId = reinterpret_cast<TInt>( this );
+ TInt transactionId ( reinterpret_cast<TInt>( this ) );
iCurrentCount = iEngine->NumberOfProfiles();
- for ( int i = 0; i < observers; i++ )
+
+ for ( TInt i = 0; i < observers; i++ )
{
- MAiContentObserver* observer = iObservers[i];
+ MAiContentObserver* observer( iObservers[i] );
+
err = observer->StartTransaction( transactionId );
if ( err == KErrNotSupported )
@@ -130,11 +143,12 @@
{
delete iActiveProfileAndChar;
iActiveProfileAndChar = NULL;
+
// silent/non-silent icon + timed icon + space + possible RTL*2 = 5
- TInt maxChars = iEngine->ActiveProfileName().Length() + 5;
+ TInt maxChars( iEngine->ActiveProfileName().Length() + 5 );
iActiveProfileAndChar = HBufC::NewL( maxChars );
- TPtr profileNamePtr = iActiveProfileAndChar->Des();
+ TPtr profileNamePtr( iActiveProfileAndChar->Des() );
if( AknLayoutUtils::LayoutMirrored() )
{
@@ -145,7 +159,8 @@
{
profileNamePtr.Append( KAiTimedProfilePUA );
}
- if( iEngine->IsActiveProfileSilentL() )
+
+ if ( iEngine->IsActiveProfileSilentL() )
{
profileNamePtr.Append( KPuaCodeSilentSymbol );
}
@@ -153,10 +168,12 @@
{
profileNamePtr.Append( KPuaCodeAprofSound );
}
- _LIT( KSpace, " " );
+
+ _LIT( KSpace, " " );
+
profileNamePtr.Append( KSpace );
- if( AknLayoutUtils::LayoutMirrored() )
+ if ( AknLayoutUtils::LayoutMirrored() )
{
profileNamePtr.Append( KAiRTL );
}
@@ -184,13 +201,14 @@
// clean profiles that are already deleted.
// Cleans the array blindly from the end, because in the next
// step all the profiles are republished
- if( iPreviousCount > iCurrentCount )
+ if ( iPreviousCount > iCurrentCount )
{
for( TInt k = iCurrentCount; k < iPreviousCount; k++ )
{
observer->Clean( *this, EAiProfileContentProfileName, k + 1 );
}
}
+
for ( TInt j = 0; j < iCurrentCount; j++ )
{
if ( observer->CanPublish( *this, EAiProfileContentProfileName, j + 1 ) )
@@ -206,6 +224,7 @@
{
TBuf<1> silent; // one character
silent.Append( KPuaCodeSilentSymbol );
+
observer->Publish( *this, EAiProfileActiveProfileSilentChar, silent, EAiProfileActiveProfileSilentChar );
}
else
@@ -220,7 +239,8 @@
observer->Clean( *this, EAiProfileActiveProfileIcon, EAiProfileActiveProfileSilentIconResource );
observer->Clean( *this, EAiProfileActiveProfileIcon, EAiProfileActiveProfileGeneralIconResource );
observer->Clean( *this, EAiProfileActiveProfileIcon, EAiProfileActiveProfileTimedIconResource );
- if ( iEngine->IsActiveProfileTimedL() )
+
+ if ( iEngine->IsActiveProfileTimedL() )
{
observer->Publish( *this,
EAiProfileActiveProfileIcon,
@@ -250,9 +270,11 @@
observer->Clean( *this, EAiProfileActiveProfileSilentChar, EAiProfileActiveProfileSilentChar );
observer->Clean( *this, EAiProfileActiveProfileIcon, 1 );
observer->Clean( *this, EAiProfileActiveProfileIcon, 2 );
- // uncomment also this and respective policy lines in profiles.xml if whole widget needs to be hidden in AI3
+
+ // uncomment also this and respective policy lines in profiles.xml if whole widget needs to be hidden in AI3
//observer->Clean( *this, EAiProfileContentActiveProfileName, EAiProfileContentActiveProfileName );
}
+
if ( err == KErrNone )
{
err = observer->Commit( transactionId );
@@ -261,238 +283,156 @@
{
return;
}
- }
-
- iIsUpdated = EFalse;
+ }
}
+
iPreviousCount = iCurrentCount;
}
// ---------------------------------------------------------------------------
-// From class CAiContentPublisher
-// Plug-in is requested to unload its engines due backup operation
+// CAiProfilePlugin::Start
+//
// ---------------------------------------------------------------------------
//
-void CAiProfilePlugin::Stop( TAiTransitionReason /*aReason*/ )
- {
- FreeEngine();
+void CAiProfilePlugin::Start( TStartReason /*aReason*/ )
+ {
+ iPublishRequired = ETrue;
+ }
+
+// ---------------------------------------------------------------------------
+// CAiProfilePlugin::Stop
+//
+// ---------------------------------------------------------------------------
+//
+void CAiProfilePlugin::Stop( TStopReason /*aReason*/ )
+ {
+ CleanPublishedProfileNames();
}
// ---------------------------------------------------------------------------
-// From class CAiContentPublisher
-// Plug-in is instructed that it is allowed to consume CPU resources
+// CAiProfilePlugin::Resume
+//
// ---------------------------------------------------------------------------
//
-void CAiProfilePlugin::Resume( TAiTransitionReason aReason )
+void CAiProfilePlugin::Resume( TResumeReason aReason )
{
- TRAP_IGNORE( DoResumeL( aReason ) );
- }
-
-// ---------------------------------------------------------------------------
-// From class CAiContentPublisher
-// Plug-in is instructed that it is not allowed to consume CPU resources
-// ---------------------------------------------------------------------------
-//
-void CAiProfilePlugin::Suspend( TAiTransitionReason /*aReason*/ )
- {
- if ( iEngine && iAlive )
+ if ( aReason == EForeground )
{
- iEngine->Suspend();
+ TRAP_IGNORE( DoResumeL() );
}
-
- iAlive = EFalse;
}
// ---------------------------------------------------------------------------
-// From class CAiContentPublisher
-// The plug-in MUST maintain a registry of subscribers and send
-// notification to all of them whenever the state changes or new content
-// is available
+// CAiProfilePlugin::Suspend
+//
+// ---------------------------------------------------------------------------
+//
+void CAiProfilePlugin::Suspend( TSuspendReason /*aReason*/ )
+ {
+ }
+
+// ---------------------------------------------------------------------------
+// CAiProfilePlugin::SubscribeL
+//
// ---------------------------------------------------------------------------
//
void CAiProfilePlugin::SubscribeL( MAiContentObserver& aObserver )
- {
+ {
iObservers.AppendL( &aObserver );
}
-
-// ---------------------------------------------------------------------------
-// From class CAiContentPublisher
-// Plug-ins take ownership of the settings array, so it must either
-// store it in a member or free it.
-// ---------------------------------------------------------------------------
-//
-void CAiProfilePlugin::ConfigureL( RAiSettingsItemArray& aSettings )
- {
- aSettings.ResetAndDestroy();
- }
// ---------------------------------------------------------------------------
-// From class CAiContentPublisher
-// Returns the extension interface. Actual type depends on the passed
-// aUid argument.
+// CAiProfilePlugin::ConfigureL
+//
// ---------------------------------------------------------------------------
//
-TAny* CAiProfilePlugin::Extension( TUid aUid )
+void CAiProfilePlugin::ConfigureL( RAiSettingsItemArray& /*aSettings*/ )
{
- if (aUid == KExtensionUidProperty)
- {
- return static_cast<MAiPropertyExtension*>(this);
- }
- else if (aUid == KExtensionUidEventHandler)
- {
- return static_cast<MAiEventHandlerExtension*>(this);
- }
- else
- {
- return NULL;
- }
}
// ---------------------------------------------------------------------------
-// From class MAiPropertyExtension
-// Read property of publisher plug-in.
+// CAiProfilePlugin::GetProperty
+//
// ---------------------------------------------------------------------------
//
-TAny* CAiProfilePlugin::GetPropertyL( TInt aProperty )
+TAny* CAiProfilePlugin::GetProperty( TProperty aProperty )
{
- TAny* property = NULL;
-
- switch ( aProperty )
- {
- case EAiPublisherInfo:
- {
- property = static_cast<TAiPublisherInfo*>( &iInfo );
- break;
- }
-
- case EAiPublisherContent:
+ if ( aProperty == EPublisherContent )
{
- property = static_cast<MAiContentItemIterator*>( iContent );
- break;
- }
-
- case EAiPublisherEvents:
+ return static_cast< MAiContentItemIterator* >( iContent );
+ }
+ else if ( aProperty == EPublisherEvents )
{
- property = static_cast<MAiContentItemIterator*>( iEvents );
- break;
+ return static_cast< MAiContentItemIterator* >( iEvents );
}
-
- case EAiPublisherResources:
- property = static_cast<MAiContentItemIterator*>( iResources );
- break;
-
- default:
- break;
+ else if ( aProperty == EPublisherResources )
+ {
+ return static_cast< MAiContentItemIterator* >( iResources );
}
- return property;
+ return NULL;
}
// ---------------------------------------------------------------------------
-// From class MAiPropertyExtension
-// Write property value to optimize the content model.
+// CAiProfilePlugin::HandleEvent
+//
// ---------------------------------------------------------------------------
//
-void CAiProfilePlugin::SetPropertyL( TInt aProperty, TAny* aValue )
- {
- if( aProperty == EAiPublisherInfo )
+void CAiProfilePlugin::HandleEvent( TInt aEvent, const TDesC& aParam )
+ {
+ TRAP_IGNORE( iEngine->HandleAiEventL( aEvent, aParam ) );
+ }
+
+// ---------------------------------------------------------------------------
+// CAiProfilePlugin::DoResumeL
+//
+// ---------------------------------------------------------------------------
+//
+void CAiProfilePlugin::DoResumeL()
+ {
+ if ( iPublishRequired )
{
- ASSERT( aValue );
+ iPublishRequired = EFalse;
- const TAiPublisherInfo* info(
- static_cast<const TAiPublisherInfo*>( aValue ) );
-
- iInfo = *info;
+ PublishL();
}
}
// ---------------------------------------------------------------------------
-// From class MAiEventHandlerExtension.
-// Handles an event sent by the AI framework.
+// CAiProfilePlugin::NotifyContentUpdate()
+// This method is called from the engine, when the profile data has changed
// ---------------------------------------------------------------------------
//
-void CAiProfilePlugin::HandleEvent(TInt aEvent, const TDesC& aParam)
- {
- if ( iEngine )
- {
- // We have no way of reporting errors to framework so just ignore them.
- TRAP_IGNORE( iEngine->HandleAiEventL( aEvent, aParam ) );
- }
- }
+void CAiProfilePlugin::NotifyContentUpdate()
+ {
+ iPublishRequired = ETrue;
-// ---------------------------------------------------------
-// This method is called from the engine, when the profile
-// data content has been changed. Method call is made through
-// the MAiProfilePluginNotifier interface.
-// ---------------------------------------------------------
-//
-void CAiProfilePlugin::NotifyContentUpdate()
- {
- iIsUpdated = ETrue;
-
- TRAP_IGNORE( PublishL() );
+ TRAP_IGNORE( DoResumeL() );
}
// ---------------------------------------------------------------------------
-// From class CAiContentPublisher
-// framework instructs plug-in that it is allowed to consume CPU resources
-// ---------------------------------------------------------------------------
-//
-void CAiProfilePlugin::DoResumeL( TAiTransitionReason aReason )
- {
- if ( !iEngine )
- {
- iEngine = CAiProfileEngine::NewL( this );
- }
-
- //update in startup phase and idle is on foreground.
- if( aReason != EAiBacklightOff && aReason != EAiIdleBackground )
- {
- // force republish in case layout has changed
- if ( aReason == EAiScreenLayoutChanged )
- {
- delete iPreviousProfileNameAndChar;
- iPreviousProfileNameAndChar = NULL;
- }
-
- if ( !iAlive )
- {
- iEngine->ResumeL();
- }
-
- iEngine->UpdateProfileNamesL();
-
- PublishL();
- iAlive = ETrue;
- }
- }
-
-// ---------------------------------------------------------------------------
-// Frees engine resources
-// ---------------------------------------------------------------------------
-//
-void CAiProfilePlugin::FreeEngine()
- {
- delete iEngine;
- iEngine = NULL;
- iAlive = EFalse;
- }
-
-// ---------------------------------------------------------------------------
+// CAiProfilePlugin::CleanPublishedProfileNames
// Clean profile names from content
// ---------------------------------------------------------------------------
//
void CAiProfilePlugin::CleanPublishedProfileNames()
{
TInt obsCount( iObservers.Count() );
+
for ( TInt i( 0 ); i < obsCount; i++ )
{
- MAiContentObserver* observer = iObservers[i];
- for( TInt j( 0 ); j < iCurrentCount && observer; j++ )
+ MAiContentObserver* observer( iObservers[i] );
+
+ for ( TInt j( 0 ); j < iCurrentCount && observer; j++ )
{
observer->Clean( *this, EAiProfileContentProfileName, j + 1 );
}
}
+
+ delete iPreviousProfileNameAndChar;
+ iPreviousProfileNameAndChar = NULL;
+
+ iPreviousCount = 0;
}
// ======== GLOBAL FUNCTIONS ========
@@ -505,5 +445,6 @@
{
aTableCount = sizeof( KImplementationTable ) /
sizeof( TImplementationProxy );
+
return KImplementationTable;
}
--- a/idlefw/plugins/pslnactiveidleplugin/data/pslnactiveidleplugin.rss Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,61 +0,0 @@
-/*
-* Copyright (c) 2005-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: ECOM plugin resource file for Active Idle Skinning plugin.
-*
-*/
-
-
-#include <registryinfo.rh>
-#include "pslnactiveidlepluginuids.h"
-
-RESOURCE REGISTRY_INFO theInfo
-{
- dll_uid = KPslnActiveIdlePluginDllUID3;
- interfaces =
- {
- INTERFACE_INFO
- {
- interface_uid = KPslnPluginInterfaceUID;
- implementations =
- {
- IMPLEMENTATION_INFO
- {
- implementation_uid = KPslnActiveIdlePluginImplementationUID;
- version_no = 1;
- display_name = "Psln AI Plugin";
- default_data = "0";
- opaque_data = "0";
- }
- };
- }
- ,
- INTERFACE_INFO
- {
- interface_uid = KGSPluginInterfaceUID;
- implementations =
- {
- IMPLEMENTATION_INFO
- {
- implementation_uid = KGSActiveIdlePluginImplementationUID;
- version_no = 1;
- display_name = "GS AI Plugin";
- default_data = "0x1020743F"; // parent uid: Standby plugin
- opaque_data = "11"; // Order number
- }
- };
- }
- };
-}
-
-// End of File.
--- a/idlefw/plugins/pslnactiveidleplugin/data/pslnactiveidlepluginrsc.rss Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,170 +0,0 @@
-/*
-* Copyright (c) 2005-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: Resource file for PslnActiveIdlePlugin.
-*
-*/
-
-
-// ========== RESOURCE IDENTIFIER =============================================
-
-NAME PSAI // 4 letter ID
-
-#include <avkon.loc> // Avkon localized strings
-#include <avkon.mbg>
-#include <avkon.rsg>
-#include <eikcore.rsg>
-#include <pslncommon.rsg>
-#include <uikon.rh>
-#include <avkon.rh>
-#include <eikon.rh>
-
-#include <pslnactiveidle3plugin.loc>
-#include <psln.hrh>
-
-// ========== RESOURCE DEFINITIONS ============================================
-
-RESOURCE RSS_SIGNATURE
-{
-}
-
-RESOURCE TBUF
-{
- buf = "";
-}
-
-// ----------------------------------------------------------------------------
-//
-// Active Idle application specific view.
-//
-// ----------------------------------------------------------------------------
-//
-RESOURCE AVKON_VIEW r_psln_active_idle_view
-{
- menubar = r_psln_ai_view_menubar;
- //cba = R_AVKON_SOFTKEYS_OPTIONS_BACK;
- cba = r_softkeys_options_back_empty;
-}
-
-// ----------------------------------------------------------------------------
-//
-// Options menu with 'Download', 'Activate', 'Help' and 'Exit' items.
-//
-// ----------------------------------------------------------------------------
-//
-RESOURCE MENU_BAR r_psln_ai_view_menubar
-{
- titles =
- {
- MENU_TITLE { menu_pane = r_psln_ai_basic_menupane; },
- MENU_TITLE { menu_pane = R_PSLN_GEN_VIEW_MENUPANE; }
- };
-}
-
-// ----------------------------------------------------------------------------
-//
-// Menu pane for view.
-//
-// ----------------------------------------------------------------------------
-//
-RESOURCE MENU_PANE r_psln_ai_basic_menupane
-{
- items =
- {
-#ifdef __SERIES60_HELP
- MENU_ITEM
- {
- command = EPslnCmdAppHelp;
- txt = qtn_options_help;
- },
-#endif // __SERIES60_HELP
- MENU_ITEM
- {
- command = EAknCmdExit;
- txt = qtn_options_exit;
- }
- };
-}
-
-// ----------------------------------------------------------------------------
-//
-// Shortcuts view caption for plugin. max 128
-//
-// ----------------------------------------------------------------------------
-//
-RESOURCE TBUF r_psln_ai_list_view_caption
-{
- buf = qtn_apps_idle_skin_gs;
-}
-
-// ----------------------------------------------------------------------------
-//
-// Active Idle specific skin tab title. max 128
-//
-// ----------------------------------------------------------------------------
-//
-RESOURCE TBUF r_psln_ai_tab_name
-{
- buf = qtn_skins_tabs_activeidle;
-}
-
-// ----------------------------------------------------------------------------
-//
-// View title for GS Active Idle plugin.
-//
-// ----------------------------------------------------------------------------
-//
-RESOURCE TITLE_PANE r_psln_gs_list_view_title
-{
- txt = qtn_apps_idle_skin_gs;
-}
-
-// ----------------------------------------------------------------------------
-//
-// View caption for GS Active Idle plugin. max 256
-//
-// ----------------------------------------------------------------------------
-//
-RESOURCE TBUF r_psln_gs_list_view_caption
-{
- buf = qtn_apps_idle_skin_gs;
-}
-
-// ----------------------------------------------------------------------------
-//
-// ----------------------------------------------------------------------------
-RESOURCE CBA r_softkeys_options_back_empty
-{
- buttons =
- {
- CBA_BUTTON {id = EAknSoftkeyOptions; txt = text_softkey_option; },
- CBA_BUTTON {id = EAknSoftkeyBack; txt = text_softkey_back; },
- CBA_BUTTON {id = EPslnCmdAppActivate; txt = ""; }
- };
-}
-
-// ----------------------------------------------------------------------------
-//
-// ----------------------------------------------------------------------------
-//
-RESOURCE CBA r_softkeys_options_exit_empty
-{
- buttons =
- {
- CBA_BUTTON {id = EAknSoftkeyOptions; txt = text_softkey_option; },
- CBA_BUTTON {id = EAknSoftkeyExit; txt = text_softkey_exit; },
- CBA_BUTTON {id = EPslnCmdAppActivate; txt = ""; }
- };
-}
-
-// End of File.
--- a/idlefw/plugins/pslnactiveidleplugin/group/bld.inf Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,46 +0,0 @@
-/*
-* Copyright (c) 2005 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: This file provides the information required for building
-* PslnActiveIdlePlugin.
-*
-*/
-
-
-PRJ_PLATFORMS
-DEFAULT
-
-PRJ_EXPORTS
-#include <platform_paths.hrh>
-../loc/pslnactiveidle3plugin.loc MW_LAYER_LOC_EXPORT_PATH(pslnactiveidle3plugin.loc)
-
-//../rom/pslnactiveidleplugin_resources.iby LANGUAGE_MW_LAYER_IBY_EXPORT_PATH(pslnactiveidleplugin_resources.iby)
-//../rom/pslnactiveidleplugin.iby CORE_MW_LAYER_IBY_EXPORT_PATH(pslnactiveidleplugin.iby)
-
-
-
-
-PRJ_MMPFILES
-pslnactiveidleplugin.mmp
-
-PRJ_EXTENSIONS
-START EXTENSION s60/mifconv
-OPTION TARGETFILE pslnactiveidleplugin.mif
-OPTION HEADERFILE pslnactiveidleplugin.mbg
-OPTION SOURCES \
- -c8,8 qgn_prop_psln_ai_sub
-END
-
-PRJ_TESTMMPFILES
-
-// End of File.
--- a/idlefw/plugins/pslnactiveidleplugin/group/pslnactiveidleplugin.mmp Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,82 +0,0 @@
-/*
-* Copyright (c) 2005 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: Project specification file.
-*
-*/
-
-
-#include <platform_paths.hrh>
-#include <data_caging_paths.hrh> // For RESOURCE_FILES_DIR
-#include "../inc/pslnactiveidlepluginuids.h"
-
-//MACRO MY_DEBUG
-
-TARGET pslnactiveidleplugin.dll
-TARGETTYPE PLUGIN
-UID 0x10009D8D KPslnActiveIdlePluginDllUID3
-
-CAPABILITY CAP_ECOM_PLUGIN
-VENDORID VID_DEFAULT
-
-SOURCEPATH ../src
-SOURCE pslnactiveidlepluginimplementationtable.cpp
-SOURCE pslnactiveidleplugincontainer.cpp
-SOURCE pslnactiveidlepluginengine.cpp
-SOURCE pslnactiveidleplugin.cpp
-SOURCE gsactiveidleplugincontainer.cpp
-SOURCE gsactiveidleplugin.cpp
-
-USERINCLUDE ../inc
-USERINCLUDE ../loc
-USERINCLUDE ../data // For *.rh
-
-MW_LAYER_SYSTEMINCLUDE
-SYSTEMINCLUDE /epoc32/include/ecom
-
-SOURCEPATH ../data
-
-START RESOURCE pslnactiveidleplugin.rss
-TARGET pslnactiveidleplugin.rsc
-END
-
-START RESOURCE pslnactiveidlepluginrsc.rss
-DEPENDS pslncommon.rsg
-HEADER
-TARGETPATH RESOURCE_FILES_DIR
-LANGUAGE_IDS
-END
-
-LIBRARY apgrfx.lib
-LIBRARY euser.lib
-LIBRARY ecom.lib
-LIBRARY efsrv.lib
-LIBRARY avkon.lib
-LIBRARY bafl.lib
-LIBRARY cone.lib
-LIBRARY eikcoctl.lib
-LIBRARY eikcore.lib
-LIBRARY centralrepository.lib
-
-LIBRARY commonengine.lib // For RConeResourceLoader
-LIBRARY aknskins.lib // For enhanced skinning
-LIBRARY aknnotify.lib // Global note
-LIBRARY featmgr.lib // For feature manager
-
-LIBRARY pslnframework.lib // For Psln FW base classes
-LIBRARY xn3odt.lib // For XUIKON
-
-LIBRARY gsframework.lib // For GS FW base classes
-LIBRARY gsecomplugin.lib
-
-// End of File.
--- a/idlefw/plugins/pslnactiveidleplugin/group/pslnactiveidlepluginicons.mk Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,66 +0,0 @@
-#
-# Copyright (c) 2005 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:
-#
-
-ifeq (WINS,$(findstring WINS, $(PLATFORM)))
-ZDIR=\epoc32\release\$(PLATFORM)\$(CFG)\Z
-else
-ZDIR=\epoc32\data\z
-endif
-
-TARGETDIR=$(ZDIR)\resource\apps
-HEADERDIR=\epoc32\include
-ICONTARGETFILENAME=$(TARGETDIR)\pslnactiveidleplugin.mif
-HEADERFILENAME=$(HEADERDIR)\pslnactiveidleplugin.mbg
-
-do_nothing :
- @rem do_nothing
-
-MAKMAKE : do_nothing
-
-BLD : do_nothing
-
-CLEAN : do_nothing
-
-LIB : do_nothing
-
-CLEANLIB : do_nothing
-
-# ----------------------------------------------------------------------------
-#
-# NOTE 1: DO NOT DEFINE MASK FILE NAMES! They are included automatically by
-# MifConv if the mask detph is defined.
-#
-# NOTE 2: Usually, source paths should not be included in the bitmap
-# definitions. MifConv searches for the icons in all icon directories in a
-# predefined order, which is currently \s60\icons, \s60\bitmaps2, \s60\bitmaps.
-# The directory \s60\icons is included in the search only if the feature flag
-# __SCALABLE_ICONS is defined.
-# ----------------------------------------------------------------------------
-
-RESOURCE :
- mifconv $(ICONTARGETFILENAME) /h$(HEADERFILENAME) \
- /c8,8 qgn_prop_psln_ai_sub.svg
-
-
-FREEZE : do_nothing
-
-SAVESPACE : do_nothing
-
-RELEASABLES :
- @echo $(HEADERFILENAME)&& \
- @echo $(ICONTARGETFILENAME)
-
-FINAL : do_nothing
--- a/idlefw/plugins/pslnactiveidleplugin/inc/gsactiveidleplugin.h Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,131 +0,0 @@
-/*
-* Copyright (c) 2005-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: Psln Active Idle settings plugin.
-*
-*/
-
-
-#ifndef C_GSACTIVEIDLEPLUGIN_H
-#define C_GSACTIVEIDLEPLUGIN_H
-
-#include <gsplugininterface.h>
-#include <coneresloader.h>
-
-class CGSActiveIdlePluginContainer;
-class CPslnFWPluginInterface;
-class CPslnFWPluginHandler;
-
-
-/**
- * CGSActiveIdlePlugin view class for Psln Active Idle settings.
- * @since S60 3.2
- *
- */
-class CGSActiveIdlePlugin : public CGSPluginInterface
-{
-
-public: // Constructors and destructor
-
- /**
- * Symbian OS two-phased constructor
- *
- * @param aInitParams param not used.
- * @return GS connection view.
- */
- static CGSActiveIdlePlugin* NewL(TAny* aInitParams);
-
- /**
- * Destructor
- */
- ~CGSActiveIdlePlugin();
-
-// From CGSPluginInterface
-
- /**
- * @see CGSPluginInterface header file.
- */
- void GetCaptionL(TDes& aCaption) const;
-
- /**
- * @see CGSPluginInterface header file.
- */
- TInt PluginProviderCategory() const;
-
- /**
- * @see CGSPluginInterface header file.
- */
- TBool Visible() const;
-
-// from base classes
-
- /**
- * Returns view id.
- * @return TUid
- */
- TUid Id() const;
-
- /**
- * Handles commands.
- * @param aCommand Command to be handled.
- *
- */
- void HandleCommandL(TInt aCommand);
-
-protected: // From CAknView
-
- /**
- * @see CAknView.
- */
- void DoActivateL(
- const TVwsViewId& aPrevViewId,
- TUid aCustomMessageId,
- const TDesC8& aCustomMessage);
-
- /**
- * @see CAknView.
- */
- void DoDeactivate();
-
-// Construction
-
- /**
- * C++ default constructor.
- */
- CGSActiveIdlePlugin();
-
- /**
- * Symbian OS default constructor.
- *
- */
- void ConstructL();
-
-private: // data
-
- /// Resource loader.
- RConeResourceLoader iResourceLoader;
-
- /// Container. Owned.
- CGSActiveIdlePluginContainer* iContainer;
-
- /// Previous view id.
- TVwsViewId iPrevViewId;
-
- /// Plugin loader. Owned.
- CPslnFWPluginHandler* iPluginLoader;
-
-};
-
-#endif // C_GSACTIVEIDLEPLUGIN_H
-
-// End of File.
--- a/idlefw/plugins/pslnactiveidleplugin/inc/gsactiveidleplugincontainer.h Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,56 +0,0 @@
-/*
-* Copyright (c) 2005-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: Psln Active Idle settings plugin.
-*
-*/
-
-
-#ifndef C_GSACTIVEIDLEPLUGINCONTAINER_H
-#define C_GSACTIVEIDLEPLUGINCONTAINER_H
-
-#include <coecntrl.h>
-
-/**
- * CGSActiveIdlePluginContainer container class
- *
- * @since S60 3.2
- */
-class CGSActiveIdlePluginContainer : public CCoeControl
-{
-public: // Constructors and destructor
-
- /**
- * Symbian OS constructor.
- * @param aRect Listbox's rect.
- *
- */
- void ConstructL(const TRect& aRect);
-
- ~CGSActiveIdlePluginContainer();
-
- CGSActiveIdlePluginContainer();
-
-// From CCoeControl
-
- TInt CountComponentControls() const;
-
- CCoeControl* ComponentControl(TInt aIndex) const;
-
- void SizeChanged();
-
-};
-
-#endif // C_GSACTIVEIDLEPLUGINCONTAINER_H
-
-// End of File.
--- a/idlefw/plugins/pslnactiveidleplugin/inc/pslnactiveidleplugin.h Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,186 +0,0 @@
-/*
-* Copyright (c) 2005-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: View for Active Idle skinning.
-*
-*/
-
-
-#ifndef C_PSLNACTIVEIDLEPLUGIN_H
-#define C_PSLNACTIVEIDLEPLUGIN_H
-
-#include <aknsettingpage.h>
-#include <pslnfwbaseview.h>
-#include <coneresloader.h>
-#include <pslnfwplugininterface.h>
-#include <mpslnfwmsklabelobserver.h>
-
-
-class CAknViewAppUi;
-class CPslnActiveIdlePluginContainer;
-class CPslnActiveIdlePluginEngine;
-
-enum TAiUIControllers
-{
- EAiUICUnknown = -1,
- EAiUICNative = 0,
- EAiUICXML
-};
-
-// View item text length
-const TInt KPslnItemMaxTextLength = 128;
-
-
-/**
- * CPslnActiveIdlePlugin view class for Active Idle Theme settings
- *
- * @since S60 3.2
- */
-class CPslnActiveIdlePlugin :
- public CPslnFWBaseView,
- public MPslnFWMSKObserver
-{
-public: // Constructors and destructor
-
- /**
- * Symbian OS two-phased constructor
- *
- * @param aAppUi pointer to app ui, TAny static cast'd.
- * @return Psln AI skinning view.
- */
- static CPslnActiveIdlePlugin* NewL(TAny* aAppUi);
-
- /**
- * Destructor
- */
- ~CPslnActiveIdlePlugin();
-
-// From CPslnFWnInterface
-
- /**
- * @see CPslnFWPluginInterface.
- */
- void GetCaptionL(TDes& aCaption) const;
-
-
- /**
- * @see CPslnFWPluginInterface.
- */
- void GetTabTextL(TDes& aCaption) const;
-
- /**
- * @see CPslnFWPluginInterface.
- */
- CGulIcon* CreateIconL();
-
- /**
- * @see CPslnFWPluginInterface.
- */
- void GetLocationTypeAndIndex(TPslnFWLocationType& aType, TInt& aIndex) const;
-
-// from AknView
-
- /**
- * Returns view id.
- * @return TUid
- */
- TUid Id() const;
-
- /**
- * Handles commands.
- * @param aCommand Command to be handled.
- */
- void HandleCommandL(TInt aCommand);
-
-// new methods
-
- /**
- * Get CPslnActiveIdlePlugin's ccontainer.
- * @return pointer to container.
- */
- CPslnActiveIdlePluginContainer* Container();
-
- /**
- * From MPslnFWMSKObserver.
- * Checks if the MSK label needs to be adjusted.
- */
- void CheckMiddleSoftkeyLabelL();
-
- /**
- * Return engine instance.
- */
- CPslnActiveIdlePluginEngine* Engine();
-
-protected: // From CAknView
-
- void DoActivateL(
- const TVwsViewId& aPrevViewId,
- TUid aCustomMessageId,
- const TDesC8& aCustomMessage);
-
- void DoDeactivate();
-
-// Construction
-
- CPslnActiveIdlePlugin(CAknViewAppUi* aAppUi);
-
- void ConstructL();
-
-private: // From MEikMenuObserver
-
- /**
- * Changes MenuPane dynamically
- */
- void DynInitMenuPaneL(TInt aResourceId, CEikMenuPane* aMenuPane);
-
-// from CPslnFWBaseView
-
- void NewContainerL();
-
- void HandleListBoxSelectionL();
-
- /**
- * Remove command and label from MSK
- */
- void RemoveCommandFromMSK();
-
- /**
- * @see CPslnFWBaseView.
- */
- void SetTitlePaneL( TInt& aResourceId );
-
-private: // data
-
- /// Resource loader for own resources.
- RConeResourceLoader iResourceLoader;
-
- /// Resource loader for common psln resources.
- RConeResourceLoader iResourceLoaderCommon;
-
- /// Resource loader for Psln app resources.
- RConeResourceLoader iResourceLoaderPsln;
-
- /// Application UI pointer. Not owned.
- CAknViewAppUi* iAppUi;
-
- /// Navi pane. Not owned.
- CAknNavigationDecorator* iNaviPaneContext;
-
- /// Ai2 perso engine
- CPslnActiveIdlePluginEngine* iEngine;
-
-};
-
-#endif // C_PSLNACTIVEIDLEPLUGIN_H
-
-// End of File.
--- a/idlefw/plugins/pslnactiveidleplugin/inc/pslnactiveidleplugin.hrh Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,33 +0,0 @@
-/*
-* Copyright (c) 2005-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: Contains common definitions for menu id:s.
-*
-*/
-
-
-#ifndef INC_PSLNACTIVEIDLEPLUGIN_HRH
-#define INC_PSLNACTIVEIDLEPLUGIN_HRH
-
-// commands
-enum TPslnAIMenuCommands
- {
- EPslnAICmdAppOpen = 1,
- EPslnAICmdAppHelp,
- EPslnAICmdAppChange,
- EPslnAIAppCmdChange
- };
-
-#endif // INC_PSLNACTIVEIDLEPLUGIN_HRH
-
-// End of File.
--- a/idlefw/plugins/pslnactiveidleplugin/inc/pslnactiveidleplugincontainer.h Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,138 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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: Container for Application shell theme view.
-*
-*/
-
-
-#ifndef C_PSLNACTIVEIDLEPLUGINCONTAINER_H
-#define C_PSLNACTIVEIDLEPLUGINCONTAINER_H
-
-// INCLUDES
-#include <pslnfwbasecontainer.h>
-
-// CONSTANTS
-// Download item index
-const TInt KPslnDownloadItemIndex = 0;
-// View item text length
-const TInt KPslnAsItemMaxTextLength = 128;
-
-// FORWARD DECLARATION
-class CXnODT;
-class CPslnActiveIdlePlugin;
-
-// CLASS DECLARATION
-
-/**
-* CPslnActiveIdlePluginContainer container class
-* @since S60 v3.1
-*/
-NONSHARABLE_CLASS( CPslnActiveIdlePluginContainer ) :
- public CPslnFWBaseContainer
- {
- public:
-
- CPslnActiveIdlePluginContainer(
- TBool aGSCalling,
- CPslnActiveIdlePlugin* aPlugin);
- /**
- * Symbian OS constructor.
- * @param aRect Listbox's rect.
- */
- void ConstructL( const TRect& aRect );
-
- /**
- * Destructor.
- */
- ~CPslnActiveIdlePluginContainer();
-
- /**
- * Return currently active selection from list.
- * @return currently selected skin index from list view.
- */
- TInt GetCurrentlySelectedIndex() const;
-
- /**
- * Adds new item to the listbox.
- * @param aItemIndex index to add.
- * @param ODT of the theme to add.
- * @since 3.2
- */
- void AddNewItemToListL(
- const TInt aItemIndex,
- CXnODT* aSkinODT, TInt aUiController );
-
- /*
- * Removes number of themes from listbox.
- * @param aDeleteFrom start point index where to start deleting.
- * All themes from this on are deleted.
- * @since 3.2
- */
- void RemoveThemes( const TInt aDeleteFrom );
-
- /**
- * Method for telling to update the listing.
- */
- void RefreshList();
-
- private:
-
- /* From CPslnFWBaseContainer. */
- void ConstructListBoxL( TInt aResLbxId );
-
- /**
- * Required for help.
- */
- void GetHelpContext( TCoeHelpContext& aContext ) const;
-
- /**
- * Adds icons to setting item list.
- */
- void AddIconsToListL();
-
- private: // data
-
- /**
- * Listbox array for items.
- * Not own.
- */
- CDesCArray* iItemArray;
-
- /**
- * List of items from resources.
- * Own.
- */
- CDesCArrayFlat* iItems;
-
- /**
- * Index of currently selected item.
- */
- TInt iCurrentlySelected;
-
- /**
- * Pointer to psln plugin.
- * Not own.
- */
- CPslnActiveIdlePlugin* iPlugin;
-
- /**
- * Indicate if gs started us
- */
- TBool iGSCalling;
-
- };
-
-#endif //C_PSLNACTIVEIDLEPLUGINCONTAINER_H
-
-// End of File
--- a/idlefw/plugins/pslnactiveidleplugin/inc/pslnactiveidlepluginengine.h Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,196 +0,0 @@
-/*
-* Copyright (c) 2005-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: Container for Psln Active Idle settings view.
-*
-*/
-
-#ifndef C_PSLNACTIVEIDLEPLUGINENGINE_H
-#define C_PSLNACTIVEIDLEPLUGINENGINE_H
-
-#include <pslnfwbasecontainer.h>
-#include <mpslnfwappthemeobserver.h>
-
-// UID of Active Idle.
-const TUid KUidActiveIdle = { 0x102750F0 };
-
-
-class CPslnFWAppThemeHandler;
-class CXnODT;
-class CPslnActiveIdlePlugin; // for notifying MSK chech need
-class CPeriodic;
-
-
-/**
- * CPslnActiveIdlePluginEngine container class
- *
- * @since S60 3.2
- */
-class CPslnActiveIdlePluginEngine :
- public CBase,
- public MPslnFWAppThemeObserver
-{
-public: // Constructors and destructor
-
- void ConstructL(const TRect& aRect);
-
- CPslnActiveIdlePluginEngine(CPslnActiveIdlePlugin* aPlugin);
-
- ~CPslnActiveIdlePluginEngine();
-
-// new methods
-
- /**
- * Activates currently highlighted theme.
- */
- void ActivateThemeL();
-
-// from MPslnFWAppThemeObserver
-
- void HandleMessage(TXnServiceCompletedMessage aMessage);
-
- void HandleMessage(
- TXnServiceCompletedMessage aMessage,
- CArrayPtrFlat<CXnODT>& aAppThemeList);
-
- TInt CurrentUIController()
- {
- return iCurrentUIController;
- };
-
- void AddThemesToContainerL();
-
- void ManualGetSkinsRestartL(TBool aForceStart = EFalse);
-
-private: // new methods
-
- /**
- * Adds new theme(s) to the listbox. Multiple themes are
- * only added when list updation is required (icons need
- * to be updated). Otherwise latest theme info is inquired
- * from XUIKON.
- */
- void AddNewThemeL(TXnServiceCompletedMessage aMessage);
- TInt GetExtStandbyScreenState(TInt& aValue);
-
- /**
- * Add HS items to list.
- */
- void AddHomeScreenThemesL();
-
- void CheckCurrentUIControllerL();
-
- void CheckCurrentAi1PluginL();
-
- void UpdateUIControllersInCenrepL(TInt aControllerId);
-
- void UpdateStatusPaneVisibilityCenrepL(TBool aPaneHidden);
-
- void UpdateAi1PluginLoadCenrepL(TInt aNewUid);
-
- TInt RestartAifw();
-
- TBool IsAiRunning();
-
- void UiTimerRestart();
-
-private:
-
- static TInt RestartTimerCallback( TAny* aSelf );
-
- static TInt UiRefreshTimerCallback( TAny* aSelf );
-
-private: // data
-
- /**
- * Application specific skin handler.
- * Own.
- */
- CPslnFWAppThemeHandler* iPslnFWThemeHandler;
-
- /**
- * List of themes. Each theme is described within an ODT.
- * Own.
- */
- CArrayPtrFlat<CXnODT>* iMySkinList;
-
- /**
- * Indicates that skin list should be updated.
- */
- TBool iThemeListUpdated;
-
- /**
- * HomeScreen items start index in iMySkinList.
- */
- TInt iHSStartIndex;
-
- /**
- * HomeScreen items end index in iMySkinList.
- */
- TInt iHSEndIndex;
-
- /**
- * Flag to indicate if we are avaiting the first restart event.
- */
- TBool iFirstUpdateRound;
-
- /**
- * Flag to indicate if we have injected first round data.
- */
- TBool iFirstUpdateRoundInjected;
-
- /**
- * Current AI2 UI Controller id.
- */
- TInt iCurrentUIController;
-
- /**
- * Current AI1 plugin id.
- */
- TInt iCurrentAi1Plugin;
-
- /**
- * Flag to indicate if we have injected first round data.
- * Not owned.
- */
- CPslnActiveIdlePlugin* iPlugin;
-
- /**
- * Restart timer. To restart AI2.
- * Own.
- */
- CPeriodic* iRestartTimer;
-
- /**
- * UI Refresh timer.
- * Own.
- */
- CPeriodic* iUiRefreshTimer;
-
- /**
- * Restart timer. To restart AI2.
- * Own.
- */
- TInt iRestartRetryCount;
-
- /**
- * Kepp track what has been added to list.
- * Own.
- */
- TInt iAddIndex;
-
-};
-
-#endif // C_PSLNACTIVEIDLEPLUGINENGINE_H
-
-// End of File.
--- a/idlefw/plugins/pslnactiveidleplugin/inc/pslnactiveidlepluginuids.h Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,47 +0,0 @@
-/*
-* Copyright (c) 2005-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: Uid's of Psln Active Idle settings.
-*
-*/
-
-
-#ifndef INC_PSLNACTIVEIDLEPLUGINUIDS_H
-#define INC_PSLNACTIVEIDLEPLUGINUIDS_H
-
-// =======================
-// Psln Active Idle plugin
-// =======================
-
-// PslnActiveIdlePlugin DLL UID
-#define KPslnActiveIdlePluginDllUID3 0x102750A4
-
-// PslnActiveIdlePlugin Interface UID
-#define KPslnPluginInterfaceUID 0x102750A9
-
-// PslnActiveIdlePlugin Implementation UID
-#define KPslnActiveIdlePluginImplementationUID 0x102750A7
-
-// ==============================
-// GS Active Idle Settings plugin
-// ==============================
-
-// GS Plugin interface uid
-#define KGSPluginInterfaceUID 0x10207236
-
-// GSActiveIdlePlugin Implementation UID
-#define KGSActiveIdlePluginImplementationUID 0x102750F5
-
-#endif // INC_PSLNACTIVEIDLEPLUGINUIDS_H
-
-// End of File.
--- a/idlefw/plugins/pslnactiveidleplugin/inc/pslnconst.h Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,27 +0,0 @@
-/*
-* Copyright (c) 2005-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: Constants for psln plugin.
-*
-*/
-
-#ifndef INC_PSLNCONST_H
-#define INC_PSLNCONST_H
-
-// (from psln\inc\pslnconst.h, required by pslnmodel.h)
-// Maximum number of characters in Screen saver txt.
-const TInt KPslnMaxNumberOfScreenSaverText = 15;
-
-#endif // INC_PSLNCONST_H
-
-// End of File
--- a/idlefw/plugins/pslnactiveidleplugin/loc/pslnactiveidle3plugin.loc Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,45 +0,0 @@
-/*
-* Copyright (c) 2005 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: Localization strings for PslnActiveIdlePlugin.
-*
-*/
-
-
-// LOCALISATION STRINGS
-
-// d:Text of a list item in home screens settings list
-// d:Item opens home screen theme settings
-// l:list_single_pane_t1
-// w:
-// r: 3.2
-//
-#define qtn_apps_idle_skin_gs "Change Idle theme"
-
-// d:Text of a list item for home screen app in Themes selection list
-// d:Item opens home screen theme settings
-// l:list_single_large_graphic_pane_t1
-// w:
-// r: 3.2
-//
-#define qtn_apps_idle_skin_hs "Change Idle theme"
-
-// d:Title of home screen theme settings view.
-// d:
-// l:title_pane_t2/opt9
-// w:
-// r: 3.2
-//
-#define qtn_apps_idle_skin_title "Change Idle theme"
-
-// End of File.
--- a/idlefw/plugins/pslnactiveidleplugin/rom/pslnactiveidleplugin.iby Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,31 +0,0 @@
-/*
-* Copyright (c) 2005 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: Image description file for project pslnactiveidleplugin
-*
-*/
-
-
-#ifndef PSLNACTIVEIDLEPLUGIN_IBY
-#define PSLNACTIVEIDLEPLUGIN_IBY
-
-#include <data_caging_paths_for_iby.hrh>
-
-// Psln ActiveIdle plugin
-data=DATAZ_\BITMAP_DIR\pslnactiveidleplugin.mif BITMAP_DIR\pslnactiveidleplugin.mif
-ECOM_PLUGIN( pslnactiveidleplugin.dll, pslnactiveidleplugin.rsc )
-
-// Central repository file, temporarily here
-//data=\S60\ActiveIdle2\plugins\shortcutplugin\src\10275104.txt "private\10202BE9\10275104.txt"
-
-#endif // PSLNACTIVEIDLEPLUGIN_IBY
--- a/idlefw/plugins/pslnactiveidleplugin/rom/pslnactiveidleplugin_resources.iby Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,27 +0,0 @@
-/*
-* Copyright (c) 2005 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: Image description file for project pslnactiveidleplugin localizable resources
-*
-*/
-
-
-#ifndef PSLNACTIVEIDLEPLUGIN_RESOURCES_IBY
-#define PSLNACTIVEIDLEPLUGIN_RESOURCES_IBY
-
-#include <data_caging_paths_for_iby.hrh>
-
-// Psln ActiveIdle settings plugin localizable resources
-data=DATAZ_\RESOURCE_FILES_DIR\pslnactiveidlepluginrsc.rsc RESOURCE_FILES_DIR\pslnactiveidlepluginrsc.rsc
-
-#endif // PSLNACTIVEIDLEPLUGIN_RESOURCES_IBY
--- a/idlefw/plugins/pslnactiveidleplugin/src/gsactiveidleplugin.cpp Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,232 +0,0 @@
-/*
-* Copyright (c) 2005-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: Psln Active Idle settings plugin.
-*
-*/
-
-
-#include "gsactiveidleplugin.h"
-#include "gsactiveidleplugincontainer.h"
-
-#include <pslnfwplugininterface.h>
-#include <pslnfwpluginhandler.h>
-#include <pslnactiveidlepluginrsc.rsg>
-#include "pslnactiveidlepluginuids.h"
-
-#include <coeaui.h>
-#include <gulicon.h>
-#include <bautils.h>
-#include <eikfrlbd.h>
-#include <stringloader.h>
-#include <aknviewappui.h>
-
-#include <gsfwviewuids.h>
-#include <gsprivatepluginproviderids.h>
-
-// GS Active Idle Plugin impl. UID
-const TUid KGSActiveIdlePluginUid = { KGSActiveIdlePluginImplementationUID };
-
-// Psln Active Idle Plugin impl. UID
-const TUid KPslnAIPluginUid = { KPslnActiveIdlePluginImplementationUID };
-
-_LIT(KGSActiveIdlePluginResourceFileName, "z:pslnactiveidlepluginrsc.rsc");
-
-
-// ----------------------------------------------------------------------------
-// CGSActiveIdlePlugin::CGSActiveIdlePlugin()
-//
-// Constructor
-// ----------------------------------------------------------------------------
-//
-CGSActiveIdlePlugin::CGSActiveIdlePlugin() : iResourceLoader(*iCoeEnv), iPrevViewId()
-{
-}
-
-// ---------------------------------------------------------------------------
-// CGSActiveIdlePlugin::NewL()
-//
-// Symbian OS default constructor
-// ---------------------------------------------------------------------------
-CGSActiveIdlePlugin* CGSActiveIdlePlugin::NewL(TAny* /*aInitParams*/)
-{
- CGSActiveIdlePlugin* self = new (ELeave) CGSActiveIdlePlugin();
-
- CleanupStack::PushL(self);
- self->ConstructL();
- CleanupStack::Pop(self);
-
- return self;
-}
-
-// ---------------------------------------------------------------------------
-// CGSActiveIdlePlugin::ConstructL()
-//
-// Symbian OS two-phased constructor
-// ---------------------------------------------------------------------------
-void CGSActiveIdlePlugin::ConstructL()
-{
-#ifdef _MY_DEBUG
- RDebug::Print(_L("XAI: CGSActiveIdlePlugin::ConstructL"));
-#endif
-
- // Find the resource file.
- TParse parse;
- parse.Set(KGSActiveIdlePluginResourceFileName, &KDC_RESOURCE_FILES_DIR, NULL);
- TFileName fileName(parse.FullName());
-
- // Open resource file.
- iResourceLoader.OpenL(fileName);
-
- BaseConstructL();
-
- // Psln first finds and loads all plugins that implement Psln plugin interface.
- iPluginLoader = CPslnFWPluginHandler::NewL(AppUi());
- CPslnFWPluginInterface* plugin = iPluginLoader->LoadPluginL(KPslnAIPluginUid);
- if (plugin)
- {
- // Add Psln Active Idle plugin to appui views. Plugin is deleted
- // when appui is destroyed.
- if (plugin->Id() == KPslnAIPluginUid)
- {
- CAknView* view = static_cast<CAknView*>(plugin);
- AppUi()->AddViewL(view);
- }
- }
-}
-
-// ----------------------------------------------------------------------------
-// CGSActiveIdlePlugin::~CGSActiveIdlePlugin
-//
-// Destructor
-// ----------------------------------------------------------------------------
-CGSActiveIdlePlugin::~CGSActiveIdlePlugin()
-{
- if (iContainer)
- {
- AppUi()->RemoveFromStack(iContainer);
- delete iContainer;
- iContainer = NULL;
- }
-
- iResourceLoader.Close();
-
- delete iPluginLoader;
-}
-
-// ---------------------------------------------------------------------------
-// TUid CGSActiveIdlePlugin::Id()
-//
-// Returns view's ID.
-// ---------------------------------------------------------------------------
-TUid CGSActiveIdlePlugin::Id() const
-{
- return KGSActiveIdlePluginUid;
-}
-
-// ----------------------------------------------------------------------------
-// CGSActiveIdlePlugin::GetCaption
-//
-// Return application/view caption. 256
-// ----------------------------------------------------------------------------
-//
-void CGSActiveIdlePlugin::GetCaptionL(TDes& aCaption) const
-{
- iCoeEnv->ReadResourceL(aCaption, R_PSLN_GS_LIST_VIEW_CAPTION);
-}
-
-// ----------------------------------------------------------------------------
-// CGSActiveIdlePlugin::PluginProviderCategory
-//
-// A means to identify the location of this plug-in in the framework.
-// ----------------------------------------------------------------------------
-//
-TInt CGSActiveIdlePlugin::PluginProviderCategory() const
-{
- // To identify internal plug-ins.
- return KGSPluginProviderInternal;
-}
-
-// ----------------------------------------------------------------------------
-// CGSActiveIdlePlugin::Visible
-//
-// Provides the visibility status of self to framework.
-// ----------------------------------------------------------------------------
-//
-TBool CGSActiveIdlePlugin::Visible() const
-{
-#ifdef _MY_DEBUG
- RDebug::Print(_L("XAI: CGSActiveIdlePlugin::Visible"));
-#endif
-
- return ETrue;
-}
-
-// ---------------------------------------------------------------------------
-// CGSActiveIdlePlugin::HandleCommandL(TInt aCommand)
-//
-// Handles commands directed to this class.
-// ---------------------------------------------------------------------------
-void CGSActiveIdlePlugin::HandleCommandL(TInt aCommand)
-{
- // shouldn't get any commands to handle, but forward them to appui anyway...
- AppUi()->HandleCommandL(aCommand);
-}
-
-// ----------------------------------------------------------------------------
-// CGSActiveIdlePlugin::DoActivateL
-//
-// First method called by the Avkon framwork to invoke a view.
-// ----------------------------------------------------------------------------
-//
-void CGSActiveIdlePlugin::DoActivateL(
- const TVwsViewId& aPrevViewId,
- TUid /*aCustomMessageId*/,
- const TDesC8& /*aCustomMessage*/)
-{
-#ifdef _MY_DEBUG
- RDebug::Print(_L("XAI: CGSActiveIdlePlugin::DoActivateL"));
-#endif
-
- if (!iContainer)
- {
- iContainer = new (ELeave) CGSActiveIdlePluginContainer();
- iContainer->SetMopParent(this);
- iContainer->ConstructL(ClientRect());
- }
-
- AppUi()->AddToStackL(*this, iContainer);
-
- if (iPrevViewId.iViewUid.iUid == 0)
- {
- iPrevViewId = aPrevViewId;
- }
-
- iContainer->MakeVisible(ETrue);
- AppUi()->ActivateLocalViewL(KPslnAIPluginUid);
-}
-
-// ----------------------------------------------------------------------------
-// CGSActiveIdlePlugin::DoDeactivate
-//
-// Called by the Avkon view framework when closing.
-// ----------------------------------------------------------------------------
-//
-void CGSActiveIdlePlugin::DoDeactivate()
-{
- AppUi()->RemoveFromStack(iContainer);
- iContainer->MakeVisible(EFalse);
- iPrevViewId.iViewUid.iUid = 0;
-}
-
-// End of File.
--- a/idlefw/plugins/pslnactiveidleplugin/src/gsactiveidleplugincontainer.cpp Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,62 +0,0 @@
-/*
-* Copyright (c) 2005-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: Psln Active Idle settings plugin.
-*
-*/
-
-
-#include "gsactiveidleplugincontainer.h"
-
-// ---------------------------------------------------------------------------
-// CGSActiveIdlePluginContainer::ConstructL()
-//
-// Symbian OS two phased constructor.
-// ---------------------------------------------------------------------------
-//
-void CGSActiveIdlePluginContainer::ConstructL(const TRect& aRect)
-{
- CreateWindowL(); // Makes the control a window-owning control
- SetRect(aRect);
- ActivateL();
-}
-
-// ---------------------------------------------------------------------------
-// CGSActiveIdlePluginContainer::~CGSActiveIdlePluginContainer()
-//
-// Destructor.
-// ---------------------------------------------------------------------------
-//
-CGSActiveIdlePluginContainer::~CGSActiveIdlePluginContainer()
-{
-}
-
-CGSActiveIdlePluginContainer::CGSActiveIdlePluginContainer()
-{
-}
-
-void CGSActiveIdlePluginContainer::SizeChanged()
-{
-}
-
-TInt CGSActiveIdlePluginContainer::CountComponentControls() const
-{
- return 0;
-}
-
-CCoeControl* CGSActiveIdlePluginContainer::ComponentControl(TInt /*aIndex*/ ) const
-{
- return NULL;
-}
-
-// End of File.
--- a/idlefw/plugins/pslnactiveidleplugin/src/pslnactiveidleplugin.cpp Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,497 +0,0 @@
-/*
-* Copyright (c) 2005-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: View for Active Idle skinning.
-*
-*/
-
-
-// This plugin specific.
-#include <pslnactiveidlepluginrsc.rsg>
-#include <pslnactiveidleplugin.mbg>
-#include "pslnactiveidleplugin.h"
-#include "pslnactiveidleplugincontainer.h"
-#include "pslnactiveidlepluginengine.h"
-#include "pslnactiveidlepluginuids.h"
-
-// General services.
-#include <stringloader.h>
-#include <featmgr.h>
-#include <gsfwviewuids.h>
-
-// Psln Framework specific.
-#include <pslnfwviewuids.h>
-#include <psln.hrh>
-#include <pslncommon.rsg>
-#include <psln.rsg>
-
-
-// Path to mbm file.
-_LIT(KPslnActiveIdleIconFileName, "pslnactiveidleplugin.mbm");
-
-// Path to compiled resource file.
-_LIT(KPslnActiveIdlePluginResourceFileName, "z:pslnactiveidlepluginrsc.rsc");
-
-// Path to common personalization resources. This resource file is meant for
-// shared resources between application and plugins.
-_LIT(KPslnCommonResourceFileName, "z:pslncommon.rsc");
-
-// Path to Psln application resource file. Plugin uses some localized texts
-// from Psln's resources.
-_LIT(KPslnApplicationResourceFileName, "z:psln.rsc");
-
-// Location of this plugin view within Psln's tab group.
-const TInt KPslnActiveIdlePluginLocation = 2;
-
-const TUid KPslnActiveIdlePluginUid = { KPslnActiveIdlePluginImplementationUID };
-
-// Middle Softkey control ID.
-const TInt KPslnMSKControlId = 3;
-
-// ----------------------------------------------------------------------------
-// CPslnActiveIdlePlugin::CPslnActiveIdlePlugin()
-//
-// Constructor
-// ----------------------------------------------------------------------------
-//
-CPslnActiveIdlePlugin::CPslnActiveIdlePlugin(CAknViewAppUi* aAppUi)
- :
- iResourceLoader(*iCoeEnv),
- iResourceLoaderCommon(*iCoeEnv),
- iResourceLoaderPsln(*iCoeEnv),
- iAppUi(aAppUi)
-{
-}
-
-// ---------------------------------------------------------------------------
-// CPslnActiveIdlePlugin::NewL
-//
-// Symbian OS default constructor
-// ---------------------------------------------------------------------------
-CPslnActiveIdlePlugin* CPslnActiveIdlePlugin::NewL(TAny* aAppUi)
-{
- CAknViewAppUi* appUi = reinterpret_cast<CAknViewAppUi*>(aAppUi);
- CPslnActiveIdlePlugin* self = new(ELeave) CPslnActiveIdlePlugin (appUi);
-
- CleanupStack::PushL(self);
- self->ConstructL();
- CleanupStack::Pop(self);
-
- return self;
-}
-
-// ---------------------------------------------------------------------------
-// CPslnActiveIdlePlugin::ConstructL
-//
-// Symbian OS two-phased constructor
-// ---------------------------------------------------------------------------
-void CPslnActiveIdlePlugin::ConstructL()
-{
-#ifdef _MY_DEBUG
- RDebug::Print(_L("XAI: CPslnActiveIdlePlugin::ConstructL"));
-#endif
-
- // Find the resource file:
- TParse* parse = new (ELeave) TParse;
- CleanupStack::PushL(parse);
- parse->Set(KPslnCommonResourceFileName, &KDC_APP_RESOURCE_DIR, NULL);
- TFileName* fileName = new (ELeave) TFileName(parse->FullName());
- CleanupStack::PushL(fileName);
-
- // Open resource file:
- iResourceLoaderCommon.OpenL(*fileName);
- CleanupStack::PopAndDestroy(fileName);
-
- // Find the resource file:
- parse->Set(KPslnApplicationResourceFileName, &KDC_APP_RESOURCE_DIR, NULL);
- fileName = new (ELeave) TFileName(parse->FullName());
- CleanupStack::PushL(fileName);
-
- // Open resource file:
- iResourceLoaderPsln.OpenL(*fileName);
- CleanupStack::PopAndDestroy(fileName);
- CleanupStack::PopAndDestroy(parse);
-
- // Open own resources for reading.
- OpenLocalizedResourceFileL(
- KPslnActiveIdlePluginResourceFileName,
- iResourceLoader);
-
- BaseConstructL(R_PSLN_ACTIVE_IDLE_VIEW);
-
- iEngine = new (ELeave) CPslnActiveIdlePluginEngine(this);
- iEngine->ConstructL( TRect() );
- iEngine->ManualGetSkinsRestartL(ETrue); // Force start
-
-}
-
-// ----------------------------------------------------------------------------
-// CPslnActiveIdlePlugin::~CPslnActiveIdlePlugin
-//
-// Destructor
-// ----------------------------------------------------------------------------
-CPslnActiveIdlePlugin::~CPslnActiveIdlePlugin()
-{
- iResourceLoaderCommon.Close();
- iResourceLoaderPsln.Close();
- iResourceLoader.Close();
- delete iEngine;
-}
-
-// ---------------------------------------------------------------------------
-// TUid CPslnActiveIdlePlugin::Id()
-//
-// Returns view's ID.
-// ---------------------------------------------------------------------------
-TUid CPslnActiveIdlePlugin::Id() const
-{
- return KPslnActiveIdlePluginUid;
-}
-
-// ----------------------------------------------------------------------------
-// CPslnActiveIdlePlugin::GetCaption
-//
-// Return application/view caption. 128
-// ----------------------------------------------------------------------------
-//
-void CPslnActiveIdlePlugin::GetCaptionL(TDes& aCaption) const
-{
- // the resource file is already opened.
- HBufC* result = StringLoader::LoadL(R_PSLN_AI_LIST_VIEW_CAPTION);
- if (aCaption.MaxLength() >= result->Length())
- {
- aCaption.Copy(*result);
- }
- delete result;
- }
-
-// ----------------------------------------------------------------------------
-// CPslnActiveIdlePlugin::GetTabTextL
-//
-// Return tab text. 128
-// ----------------------------------------------------------------------------
-//
-void CPslnActiveIdlePlugin::GetTabTextL(TDes& aCaption) const
-{
- // the resource file is already opened.
- HBufC* result = StringLoader::LoadL(R_PSLN_AI_TAB_NAME);
- if (aCaption.MaxLength() >= result->Length())
- {
- aCaption.Copy(*result);
- }
- delete result;
- }
-
-// ----------------------------------------------------------------------------
-// CPslnActiveIdlePlugin::CreateIconL
-//
-// Creates Main view icon.
-// ----------------------------------------------------------------------------
-//
-CGulIcon* CPslnActiveIdlePlugin::CreateIconL()
-{
- // Find the resource file:
- TParse* parse = new (ELeave) TParse;
- CleanupStack::PushL(parse);
- parse->Set(KPslnActiveIdleIconFileName, &KDC_APP_BITMAP_DIR, NULL);
- HBufC* fileName = parse->FullName().AllocLC();
- TPtr fileNamePtr = fileName->Des();
-
- CGulIcon* icon = AknsUtils::CreateGulIconL(
- AknsUtils::SkinInstance(),
- KAknsIIDQgnPropPslnAiSub,
- fileNamePtr,
- EMbmPslnactiveidlepluginQgn_prop_psln_ai_sub,
- EMbmPslnactiveidlepluginQgn_prop_psln_ai_sub_mask);
-
- CleanupStack::PopAndDestroy(2, parse); // fileName, parse
-
- return icon;
-}
-
-// -----------------------------------------------------------------------------
-// CPslnActiveIdlePlugin::GetLocationTypeAndIndex()
-//
-//
-// -----------------------------------------------------------------------------
-//
-void CPslnActiveIdlePlugin::GetLocationTypeAndIndex(
- TPslnFWLocationType& aType,
- TInt& aIndex) const
-{
- aType = CPslnFWPluginInterface::EPslnFWSpecified;
- aIndex = KPslnActiveIdlePluginLocation;
-}
-
-// ---------------------------------------------------------------------------
-// CPslnActiveIdlePlugin::HandleCommandL(TInt aCommand)
-//
-// Handles commands directed to this class.
-// ---------------------------------------------------------------------------
-void CPslnActiveIdlePlugin::HandleCommandL(TInt aCommand)
-{
- switch (aCommand)
- {
- case EPslnCmdAppActivate:
- iEngine->ActivateThemeL();
- break;
-
- case EAknSoftkeyBack:
- RemoveCommandFromMSK();
- if (iAppUi->View(KPslnMainViewUid))
- {
- // if we are in Psln activate Psln main view...
- iAppUi->ActivateLocalViewL(KPslnMainViewUid);
- }
- else if (iAppUi->View(KGSMainViewUid))
- {
- // ... else if we are in GS activate parent plugin view (standby view)...
- iAppUi->ActivateLocalViewL(KGSStandbyPluginUid);
- }
- else
- {
- iAppUi->HandleCommandL(aCommand);
- }
- break;
-
- case EAknSoftkeyExit:
- // This is here because we use different softkey setups
- iAppUi->HandleCommandL(EAknCmdExit);
- break;
-
- case EPslnCmdAppHelp:
- case EAknCmdHelp:// Fall trough
- CPslnFWBaseView::HandleCommandL(aCommand);
- break;
-
- default:
- iAppUi->HandleCommandL(aCommand);
- break;
- }
-}
-
-// ----------------------------------------------------------------------------
-// CPslnActiveIdlePlugin::Container
-//
-// Return handle to container class.
-// ----------------------------------------------------------------------------
-//
-CPslnActiveIdlePluginContainer* CPslnActiveIdlePlugin::Container()
-{
- return static_cast<CPslnActiveIdlePluginContainer*>(iContainer);
-}
-
-// -----------------------------------------------------------------------------
-// Checks is there a need to update the middle softkey label.
-// This method should do nothing but MSK issues, since it is still called
-// if the framework does not support MSK.
-// -----------------------------------------------------------------------------
-//
-void CPslnActiveIdlePlugin::CheckMiddleSoftkeyLabelL()
-{
- CPslnActiveIdlePluginContainer* container = Container();
- TInt highlightedItem = iContainer->iListBox->CurrentItemIndex();
-
-#ifdef _MY_DEBUG
- RDebug::Print(_L("XAI: CPslnActiveIdlePlugin::CheckMiddleSoftkeyLabelL highl = %d, curr = %d"), highlightedItem, container->GetCurrentlySelectedIndex());
-#endif
-
- // First remove any previous commands.
- RemoveCommandFromMSK();
-
- if (highlightedItem >= 0 &&
- highlightedItem != container->GetCurrentlySelectedIndex())
- {
- // Activate:
- CPslnFWBaseView::SetMiddleSoftKeyLabelL(
- R_PSLN_MSK_ACTIVATE,
- EPslnCmdAppActivate);
- }
- else
- {
- CPslnFWBaseView::SetMiddleSoftKeyLabelL(
- R_PSLN_MSK_DUMMY,
- EPslnCmdEmptyCommand );
- }
-}
-
-// -----------------------------------------------------------------------------
-// Return engine instance.
-// -----------------------------------------------------------------------------
-//
-CPslnActiveIdlePluginEngine* CPslnActiveIdlePlugin::Engine()
- {
- return iEngine;
- }
-
-// ----------------------------------------------------------------------------
-// CPslnActiveIdlePlugin::DoActivateL
-//
-// First method called by the Avkon framwork to invoke a view.
-// ----------------------------------------------------------------------------
-//
-void CPslnActiveIdlePlugin::DoActivateL(
- const TVwsViewId& aPrevViewId,
- TUid aCustomMessageId,
- const TDesC8& aCustomMessage)
-{
-#ifdef MY_DEBUG
- RDebug::Print(_L("XAI: CPslnActiveIdlePlugin::DoActivateL"));
- RDebug::Print(_L("XAI: aCustomMessageId = 0x%08x"), aCustomMessageId.iUid);
- RDebug::Print(_L("XAI: aPrevViewId = 0x%08x"), aPrevViewId.iAppUid.iUid);
-#endif
-
- // If called from Psln - set tab group location.
- if (iAppUi->View(KPslnMainViewUid))
- {
- CPslnFWBaseView::SetNaviPaneL(KPslnActiveIdlePluginLocation);
- }
-
- CEikButtonGroupContainer* cba = Cba();
-
- if (cba)
- {
- if (aCustomMessageId == KUidActiveIdle)
- {
- cba->SetCommandSetL(R_SOFTKEYS_OPTIONS_EXIT_EMPTY);
- }
- else
- {
- cba->SetCommandSetL(R_SOFTKEYS_OPTIONS_BACK_EMPTY);
- }
- cba->DrawDeferred();
- }
-
- CPslnFWBaseView::DoActivateL(aPrevViewId, aCustomMessageId, aCustomMessage);
-
- CheckMiddleSoftkeyLabelL();
-
- iEngine->ManualGetSkinsRestartL();
-}
-
-// ----------------------------------------------------------------------------
-// CPslnActiveIdlePlugin::DoDeactivate
-//
-// Called by the Avkon view framework when closing.
-// ----------------------------------------------------------------------------
-//
-void CPslnActiveIdlePlugin::DoDeactivate()
-{
-#ifdef _MY_DEBUG
- RDebug::Print(_L("XAI: CPslnActiveIdlePlugin::DoDeactivate"));
-#endif
- CPslnFWBaseView::DoDeactivate();
- RemoveCommandFromMSK();
-}
-
-// ----------------------------------------------------------------------------
-// CPslnActiveIdlePlugin::DynInitMenuPaneL
-//
-//
-// ----------------------------------------------------------------------------
-//
-void CPslnActiveIdlePlugin::DynInitMenuPaneL(
- TInt aResourceId, CEikMenuPane* aMenuPane)
-{
- if (aResourceId == R_PSLN_GEN_VIEW_MENUPANE &&
- aMenuPane)
- {
- // Since this is common resource it contains download,
- // set it off.
- aMenuPane->SetItemDimmed(EPslnCmdAppDownload, ETrue);
-
- CPslnActiveIdlePluginContainer* container = Container();
- TInt highlightedItem = iContainer->iListBox->CurrentItemIndex();
- // Remove Activate command, if highlighted item is already active.
- if (highlightedItem == container->GetCurrentlySelectedIndex())
- {
- aMenuPane->SetItemDimmed(EPslnCmdAppActivate, ETrue);
- }
- }
- else if (aResourceId == R_PSLN_AI_BASIC_MENUPANE &&
- aMenuPane)
- {
- if (!FeatureManager::FeatureSupported(KFeatureIdHelp))
- {
- // Disable help if not supported
- aMenuPane->SetItemDimmed(EPslnCmdAppHelp, ETrue);
- }
- }
-}
-
-// ---------------------------------------------------------------------------
-// CPslnActiveIdlePlugin::NewContainerL()
-//
-// Creates new iContainer.
-// ---------------------------------------------------------------------------
-//
-void CPslnActiveIdlePlugin::NewContainerL()
-{
- if( !iContainer )
- {
- TBool isGSCalling = (NULL != iAppUi->View(KGSMainViewUid));
- iContainer = new (ELeave) CPslnActiveIdlePluginContainer(isGSCalling, this);
- iContainer->SetMiddleSoftkeyObserver(this);
- }
-
- RemoveCommandFromMSK();
-}
-
-// ---------------------------------------------------------------------------
-// CPslnActiveIdlePlugin::HandleListBoxSelectionL()
-//
-// Handles events raised through a rocker key.
-// ---------------------------------------------------------------------------
-void CPslnActiveIdlePlugin::HandleListBoxSelectionL()
-{
- TInt currentItem = iContainer->iListBox->CurrentItemIndex();
- CPslnFWBaseView::SetCurrentItem(currentItem);
-
- CPslnActiveIdlePluginContainer* container = Container();
-
- if (currentItem != container->GetCurrentlySelectedIndex())
- {
- HandleCommandL(EPslnCmdAppActivate);
- }
-}
-
-// -----------------------------------------------------------------------------
-// Remove MSK command mappings.
-// This method should do nothing but MSK issues.
-// -----------------------------------------------------------------------------
-//
-void CPslnActiveIdlePlugin::RemoveCommandFromMSK()
-{
- CEikButtonGroupContainer* cba = Cba();
-
- if (cba && iContainer)
- {
- cba->RemoveCommandFromStack(KPslnMSKControlId, EPslnCmdEmptyCommand);
- cba->RemoveCommandFromStack(KPslnMSKControlId, EPslnCmdAppActivate);
- }
-}
-
-// ---------------------------------------------------------------------------
-// CPslnActiveIdlePlugin::SetTitlePaneL()
-//
-// Gives resource ID to be used as plugin view title.
-// ---------------------------------------------------------------------------
-//
-void CPslnActiveIdlePlugin::SetTitlePaneL( TInt& aResourceId )
- {
-#ifdef RD_CONTROL_PANEL
- aResourceId = R_PSLN_AI_LIST_VIEW_CAPTION;
-#endif // RD_CONTROL_PANEL
- }
-
-// End of File.
--- a/idlefw/plugins/pslnactiveidleplugin/src/pslnactiveidleplugincontainer.cpp Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,210 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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: Container for the Application Shell plugin
-*
-*/
-
-
-// INCLUDE FILES
-
-// From this plugin.
-#include "pslnactiveidleplugincontainer.h"
-#include "pslnactiveidlepluginengine.h"
-#include "pslnactiveidleplugin.h"
-
-// From Psln application.
-#include <csxhelp/skins.hlp.hrh>
-
-// From PSLN framework
-#include <pslnfwbaseview.h>
-#include <pslnfwiconhelper.h>
-
-// Resources
-#include <psln.rsg>
-#include <pslnactiveidlepluginrsc.rsg>
-
-// General services
-#include <Aknlists.h>
-
-// XUIKON
-#include <XnODT.h>
-
-// CONSTANTS
-// UID of Personlisation application
-const TUid KPslnAppUid = { 0x10005A32 };
-
-// ========================= MEMBER FUNCTIONS ================================
-
-CPslnActiveIdlePluginContainer::CPslnActiveIdlePluginContainer(
- TBool aGSCalling,
- CPslnActiveIdlePlugin* aPlugin )
- :
- iPlugin( aPlugin ),
- iGSCalling( aGSCalling )
- {
- }
-// ---------------------------------------------------------------------------
-// Symbian 2nd phase constructor can leave.
-// ---------------------------------------------------------------------------
-//
-void CPslnActiveIdlePluginContainer::ConstructL( const TRect& aRect )
- {
- iListBox = new( ELeave ) CAknSingleGraphicStyleListBox;
- TInt titleResId = 0;
-
- if (iGSCalling)
- {
- titleResId = R_PSLN_GS_LIST_VIEW_TITLE;
- }
- BaseConstructL(aRect, titleResId, R_PSLN_PLUGIN_DEFAULT_VIEW_LBX);
- // Do not show container immediately - to avoid seeing "No Data" first.
- iListBox->MakeVisible( EFalse );
- }
-
-// ---------------------------------------------------------------------------
-// Destructor
-// ---------------------------------------------------------------------------
-//
-CPslnActiveIdlePluginContainer::~CPslnActiveIdlePluginContainer()
- {
- if( iItemArray )
- {
- TInt count = iItemArray->Count();
- iItemArray->Delete(0, count);
- }
-
- delete iItems;
- }
-
-// -----------------------------------------------------------------------------
-// CPslnActiveIdlePluginContainer::GetCurrentlySelectedIndex
-// -----------------------------------------------------------------------------
-//
-TInt CPslnActiveIdlePluginContainer::GetCurrentlySelectedIndex() const
- {
- return iCurrentlySelected;
- }
-
-// ---------------------------------------------------------------------------
-// Adds new item to the listbox.
-// ---------------------------------------------------------------------------
-//
-void CPslnActiveIdlePluginContainer::AddNewItemToListL(
- const TInt aItemIndex, CXnODT* aSkinODT, TInt aUiController )
- {
- HBufC* item = HBufC::NewLC( KPslnItemMaxTextLength );
- TPtr itemPtr = item->Des();
- TBool newActiveItem = EFalse;
-
- // Get theme ODT and full name.
- // Index aItemIndex has been verified in view.
- itemPtr = aSkinODT->ThemeFullName();
- if ( aSkinODT->Flags() & EXnThemeStatusActive &&
- iPlugin->Engine()->CurrentUIController() == aUiController )
- {
- itemPtr.Insert( 0, KPslnFWActiveListItemFormat );
-
- // Set selected active.
- iCurrentlySelected = aItemIndex;
- newActiveItem = ETrue;
- }
- else
- {
- itemPtr.Insert( 0, KPslnFWNonActiveListItemFormat );
- }
- iItemArray->AppendL( itemPtr );
- CleanupStack::PopAndDestroy( item );
-
- if ( newActiveItem )
- {
- // Set highlight.
- iListBox->SetCurrentItemIndex( iCurrentlySelected );
- // Since we now have content, show container.
- iListBox->MakeVisible( ETrue );
- if ( iPlugin )
- {
- iPlugin->CheckMiddleSoftkeyLabelL();
- }
- }
- }
-
-// ---------------------------------------------------------------------------
-// Removes themes from listbox.
-// ---------------------------------------------------------------------------
-//
-void CPslnActiveIdlePluginContainer::RemoveThemes( const TInt aDeleteFrom )
- {
- // Validate parameter first.
- if ( iItemArray &&
- ( aDeleteFrom >= 0 ) &&
- ( aDeleteFrom < iItemArray->Count() ) )
- {
- iItemArray->Delete( aDeleteFrom, iItemArray->Count() - aDeleteFrom );
- }
- }
-
-// ---------------------------------------------------------------------------
-// Construct the listbox from resource array.
-// ---------------------------------------------------------------------------
-//
-void CPslnActiveIdlePluginContainer::ConstructListBoxL( TInt aResLbxId )
- {
- iListBox->ConstructL( this, EAknListBoxSelectionList );
-
- iItemArray = static_cast<CDesCArray*>
- ( iListBox->Model()->ItemTextArray() );
-
- iItems = iCoeEnv->ReadDesC16ArrayResourceL( aResLbxId );
-
- // Create pre- and post-text icons.
- AddIconsToListL();
- }
-
-// ---------------------------------------------------------------------------
-// Gets Help context.
-// ---------------------------------------------------------------------------
-//
-void CPslnActiveIdlePluginContainer::GetHelpContext(
- TCoeHelpContext& aContext ) const
- {
- aContext.iMajor = KPslnAppUid;
- aContext.iContext = KSKINS_HLP_APPSKINS_LIST;
- }
-
-// ---------------------------------------------------------------------------
-// Adds icons to setting list items.
-// ---------------------------------------------------------------------------
-//
-void CPslnActiveIdlePluginContainer::AddIconsToListL()
- {
- CPslnFWIconHelper* iconHelper = CPslnFWIconHelper::NewL();
- CleanupStack::PushL( iconHelper );
- iconHelper->AddIconsToSettingItemsL(
- ETrue,
- KErrNotFound, // none, selected
- iListBox );
- CleanupStack::PopAndDestroy( iconHelper );
- }
-
-void CPslnActiveIdlePluginContainer::RefreshList()
- {
- TRAP_IGNORE(iListBox->HandleItemAdditionL());
- iListBox->SetCurrentItemIndex(iCurrentlySelected);
- TRAP_IGNORE(iPlugin->CheckMiddleSoftkeyLabelL());
- DrawDeferred();
- // Since we now have content, show container.
- iListBox->MakeVisible( ETrue );
- }
-
-// End of File
--- a/idlefw/plugins/pslnactiveidleplugin/src/pslnactiveidlepluginengine.cpp Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,724 +0,0 @@
-/*
-* Copyright (c) 2005-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: Container for the Active Idle plugin.
-*
-*/
-
-
-// From this plugin.
-#include <aisystemuids.hrh>
-
-#include "pslnactiveidlepluginengine.h"
-#include "pslnactiveidleplugincontainer.h"
-#include "pslnactiveidleplugin.h"
-#include "activeidle2domainpskeys.h"
-#include "activeidle2internalpskeys.h"
-
-// from plugin side
-#include <extrstandbyscrconst.h> // for KExtrStandbyScrFullScreenMode
-
-// From PSLN framework.
-#include <pslnfwiconhelper.h>
-#include <psln.rsg>
-
-// General services.
-#include <stringloader.h>
-#include <aknglobalnote.h>
-#include <e32property.h>
-
-// Application specific skins.
-#include <pslnfwappthemehandler.h>
-
-// XUIKON.
-#include <xnodt.h>
-
-// ECOM.
-#include <ecom/ecom.h>
-#include <ecom/implementationinformation.h>
-
-#include <centralrepository.h>
-#include <activeidle2domaincrkeys.h>
-
-#include <AknSgcc.h>
-
-// Granularity of plugin array.
-const TInt KPslnPluginArrayGranularity = 4;
-
-// ActiveIdle1 plugin ECOM interface uid
-const TInt KAI1PluginInterfaceUid = 0x101F8700;
-const TInt KAIThemeStatusPaneHidden = 0x00000001;
-
-// AI1 cenrep
-const TInt KCRUidActiveIdle = 0x10207467;
-const TInt KCRPluginCountKey = 0x00000002;
-const TInt KCRFirstPluginKey = 0x00000003;
-
-const TInt KPSLNOneSecondInMicroSeconds = 1000*1000;
-
-// ========== LOCAL FUNCTIONS =================================================
-
-template<class Array>
-void CleanupResetAndDestroy(TAny* aObj)
-{
- if(aObj)
- {
- static_cast<Array*>(aObj)->ResetAndDestroy();
- }
-}
-
-template<class Array>
-void CleanupResetAndDestroyPushL(Array& aPointerArray)
-{
- CleanupStack::PushL(TCleanupItem(&CleanupResetAndDestroy<Array>, &aPointerArray));
-}
-
-// ========== MEMBER FUNCTIONS ================================================
-
-// ---------------------------------------------------------------------------
-// CPslnActiveIdlePluginEngine::ConstructL()
-//
-// Symbian OS two phased constructor
-// ---------------------------------------------------------------------------
-//
-void CPslnActiveIdlePluginEngine::ConstructL(const TRect& /*aRect*/)
-{
-#ifdef _MY_DEBUG
- RDebug::Print(_L("XAI: CPslnActiveIdlePluginEngine::ConstructL"));
-#endif
-
- // Create application theme handler and list for application themes.
- iMySkinList = new (ELeave)
- CArrayPtrFlat<CXnODT>(KPslnPluginArrayGranularity);
- iPslnFWThemeHandler = CPslnFWAppThemeHandler::NewL(
- *this,
- *iMySkinList);
-
- CheckCurrentUIControllerL();
- CheckCurrentAi1PluginL();
- iRestartTimer = CPeriodic::NewL(EPriorityNormal);
- iUiRefreshTimer = CPeriodic::NewL(EPriorityNormal);
-}
-
-// ---------------------------------------------------------------------------
-// CPslnActiveIdlePluginEngine::CPslnActiveIdlePluginEngine
-//
-// Constructor
-// ---------------------------------------------------------------------------
-//
-CPslnActiveIdlePluginEngine::CPslnActiveIdlePluginEngine(
- CPslnActiveIdlePlugin* aPlugin)
- :
- iFirstUpdateRound(ETrue),
- iFirstUpdateRoundInjected(EFalse),
- iCurrentUIController(EAiUICUnknown),
- iPlugin(aPlugin)
-{
-}
-
-// ---------------------------------------------------------------------------
-// CPslnActiveIdlePluginEngine::~CPslnActiveIdlePluginEngine()
-//
-// Destructor
-// ---------------------------------------------------------------------------
-//
-CPslnActiveIdlePluginEngine::~CPslnActiveIdlePluginEngine()
-{
- if (iRestartTimer)
- {
- iRestartTimer->Cancel();
- }
- delete iRestartTimer;
- if (iUiRefreshTimer)
- {
- iUiRefreshTimer->Cancel();
- }
- delete iUiRefreshTimer;
-
- if (iMySkinList)
- {
- iMySkinList->ResetAndDestroy();
- }
- delete iMySkinList;
- delete iPslnFWThemeHandler;
-}
-
-// -----------------------------------------------------------------------------
-// CPslnActiveIdlePluginEngine::ActivateThemeL
-// -----------------------------------------------------------------------------
-//
-void CPslnActiveIdlePluginEngine::ActivateThemeL()
-{
- TInt skinIndex = 0;
- if( iPlugin->Container() )
- {
- skinIndex = iPlugin->Container()->iListBox->CurrentItemIndex();
- }
- else
- {
- // No selection possible yet
- return;
- }
-
- if (skinIndex >= 0 && skinIndex < iMySkinList->Count() &&
- !iRestartTimer->IsActive())
- {
- if (skinIndex >= iHSStartIndex &&
- skinIndex < iHSEndIndex)
- {
- CXnODT* selectedSkinODT = iMySkinList->At(skinIndex);
- UpdateStatusPaneVisibilityCenrepL(
- selectedSkinODT->Flags() & KAIThemeStatusPaneHidden);
-
- if (iCurrentAi1Plugin != selectedSkinODT->ThemeUid())
- {
- UpdateAi1PluginLoadCenrepL(selectedSkinODT->ThemeUid());
- CheckCurrentAi1PluginL();
- }
- if (iCurrentUIController == EAiUICXML)
- {
- UpdateUIControllersInCenrepL(EAiUICNative);
- CheckCurrentUIControllerL();
-
- iRestartTimer->Cancel();
- iRestartRetryCount = 0;
- iRestartTimer->Start(
- KPSLNOneSecondInMicroSeconds,
- KPSLNOneSecondInMicroSeconds,
- TCallBack(RestartTimerCallback, this));
- }
- else
- {
- if( IsAiRunning() )
- {
- // Recycle this method to bring to foreground
- RestartTimerCallback( this );
- }
- }
- ManualGetSkinsRestartL();
- }
- else
- {
- if (iCurrentUIController == EAiUICNative)
- {
- UpdateStatusPaneVisibilityCenrepL(EFalse); // Always visible status pane
- UpdateUIControllersInCenrepL(EAiUICXML);
- CheckCurrentUIControllerL();
- }
-
- RProperty::Set( KPSUidAiInformation, KActiveIdleRestartAI2, KActiveIdleRestartCode );
- iRestartTimer->Cancel();
- iRestartRetryCount = 0;
- iRestartTimer->Start(
- KPSLNOneSecondInMicroSeconds,
- KPSLNOneSecondInMicroSeconds,
- TCallBack(RestartTimerCallback, this));
- CXnODT* selectedSkinODT = iMySkinList->At(skinIndex);
- TXnServiceCompletedMessage ret;
-
- ret = iPslnFWThemeHandler->SetApplicationSkinL(
- *selectedSkinODT );
-
- if (ret == EXnSetActiveThemeFailed)
- {
- // Show error note.
- HBufC* errorBuf = StringLoader::LoadLC(
- R_PSLN_QTN_SKINS_ERROR_CORRUPTED);
- // Display global note.
- CAknGlobalNote* errorNote = CAknGlobalNote::NewLC();
- errorNote->ShowNoteL(EAknGlobalErrorNote, *errorBuf);
- CleanupStack::PopAndDestroy(2, errorBuf); // errorNote also
- }
- else
- {
- iRestartTimer->Cancel();
- iRestartRetryCount = 0;
- iRestartTimer->Start(
- KPSLNOneSecondInMicroSeconds,
- KPSLNOneSecondInMicroSeconds,
- TCallBack(RestartTimerCallback, this));
- }
- }
- }
-}
-
-// -----------------------------------------------------------------------------
-// CPslnActiveIdlePluginEngine::HandleMessage
-// -----------------------------------------------------------------------------
-//
-void CPslnActiveIdlePluginEngine::HandleMessage(
- TXnServiceCompletedMessage aMessage)
-{
- switch (aMessage)
- {
- case EXnGetListHeadersEmpty:
- // Just destroy everything and use default items only.
- case EXnGetListHeadersFailed: // fallthrough
- if (iMySkinList)
- {
- iMySkinList->ResetAndDestroy();
- }
- break;
- case EXnServiceRequestCanceled: // fallthrough
- case EXnServiceRequestError: // fallthrough
- {
- TRAP_IGNORE(ManualGetSkinsRestartL();)
- }
- break;
- default:
- break;
- }
-}
-
-// -----------------------------------------------------------------------------
-// CPslnActiveIdlePluginEngine::HandleMessage
-// -----------------------------------------------------------------------------
-//
-void CPslnActiveIdlePluginEngine::HandleMessage(
- TXnServiceCompletedMessage aMessage,
- CArrayPtrFlat<CXnODT>& /*aAppThemeList*/)
-{
- switch (aMessage)
- {
- case EXnGetListHeadersRestart:
- case EXnGetListHeadersUpdate: // fallthrough
- {
- TRAP_IGNORE(AddNewThemeL(aMessage));
- break;
- }
- default:
- {
- break;
- }
- }
-}
-
-// ---------------------------------------------------------------------------
-// Adds new theme to the container / listbox.
-// ---------------------------------------------------------------------------
-//
-void CPslnActiveIdlePluginEngine::AddThemesToContainerL()
- {
- TInt value = 0;
-
- GetExtStandbyScreenState(value);
-
- /* value == 0 Only AI2 themes
- value != 0
- bit 31 AI2 themes
- bit 30-0 External themes
- */
- value |= 0x80000000; // Force AI2 themes on
- if ((value == 0) || ((value & 0x80000000) != 0))
- {
- if( iPlugin->Container() && iMySkinList )
- {
- // Remove themes. All.
- iPlugin->Container()->RemoveThemes( 0 );
- for ( TInt i = 0; i < iMySkinList->Count(); ++i )
- {
- if( i >= iHSStartIndex &&
- i < iHSEndIndex )
- {
- iPlugin->Container()->AddNewItemToListL( i,
- iMySkinList->At(i),
- EAiUICNative );
- }
- else
- {
- iPlugin->Container()->AddNewItemToListL( i,
- iMySkinList->At(i),
- EAiUICXML );
- }
- }
- }
- }
- }
-
-// ---------------------------------------------------------------------------
-// Adds new theme to the listbox.
-// ---------------------------------------------------------------------------
-//
-void CPslnActiveIdlePluginEngine::AddNewThemeL(
- TXnServiceCompletedMessage aMessage)
-{
- // No themes available - do not add anything.
- if (!iMySkinList)
- {
- return;
- }
-
- // Theme activation causes restart of theme headers list.
- if (aMessage == EXnGetListHeadersRestart)
- {
- iFirstUpdateRound = EFalse;
- }
-
- TInt value = 0;
-
- GetExtStandbyScreenState(value);
-
- /* value == 0 Only AI2 themes
- value != 0
- bit 31 AI2 themes
- bit 30-0 External themes
- */
- value |= 0x80000000; // Force AI2 themes on
-
- if ((value & 0x7FFFFFFF) > 0)
- {
- if ((iFirstUpdateRound && !iFirstUpdateRoundInjected) ||
- aMessage == EXnGetListHeadersRestart)
- {
- iFirstUpdateRoundInjected = ETrue;
- AddHomeScreenThemesL();
- }
- }
-
- UiTimerRestart();
-}
-
-//
-// Get external Standby Screen state from Cenrep
-//
-TInt CPslnActiveIdlePluginEngine::GetExtStandbyScreenState(TInt& aValue )
- {
- TInt ret = 0;
- TUid uid = { KCRUidActiveIdleLV }; // {0x10275102}; //
-
- //TRAP_IGNORE: leaving function called in non-leaving function
- TRAP_IGNORE
- (
- CRepository* cenRep = CRepository::NewLC( uid );
-
- ret = cenRep->Get(KAIExternalStatusScreen, aValue );
-
- CleanupStack::PopAndDestroy( cenRep );
- )
-
- return ret;
- }
-
-// ---------------------------------------------------------------------------
-// Add EXT HS themes to listing
-// ---------------------------------------------------------------------------
-//
-void CPslnActiveIdlePluginEngine::AddHomeScreenThemesL()
-{
- iHSStartIndex = iHSEndIndex = iMySkinList->Count();
- // Resolve AI1 plugins in ECOM
- RImplInfoPtrArray eComPlugins;
- CleanupResetAndDestroyPushL(eComPlugins);
-
- REComSession::ListImplementationsL(TUid::Uid(KAI1PluginInterfaceUid), eComPlugins);
- for (TInt i = 0; i < eComPlugins.Count(); ++i)
- {
- CXnODT* skinODT = CXnODT::NewL();
- skinODT->SetThemeUid(eComPlugins[i]->ImplementationUid().iUid);
- if (eComPlugins[i]->OpaqueData() == KExtrStandbyScrFullScreenMode)
- {
- skinODT->SetFlags(KAIThemeStatusPaneHidden);
- }
- else
- {
- skinODT->SetFlags(0);
- }
- CleanupStack::PushL(skinODT);
- iMySkinList->AppendL(skinODT);
- CleanupStack::Pop(skinODT);
-
- HBufC* item = HBufC::NewLC(KPslnItemMaxTextLength);
- TPtr itemPtr = item->Des();
- if (eComPlugins[i]->DisplayName().Length())
- {
- itemPtr = eComPlugins[i]->DisplayName();
- }
- else
- {
- itemPtr = _L("OperatorHomeScreen1");
- }
- skinODT->SetThemeFullNameL( itemPtr );
- if (iCurrentAi1Plugin == eComPlugins[i]->ImplementationUid().iUid &&
- iCurrentUIController == EAiUICNative)
- {
- itemPtr.Insert(0, KPslnFWActiveListItemFormat);
- TInt flags = skinODT->Flags();
- skinODT->SetFlags(flags | EXnThemeStatusActive );
- }
- else
- {
- itemPtr.Insert(0, KPslnFWNonActiveListItemFormat);
- }
- CleanupStack::PopAndDestroy(item);
- ++iHSEndIndex;
- }
- CleanupStack::PopAndDestroy();
-}
-
-// ---------------------------------------------------------------------------
-// Check active AI2 UI Controller in cenrep keys
-// ---------------------------------------------------------------------------
-//
-void CPslnActiveIdlePluginEngine::CheckCurrentUIControllerL()
-{
- CRepository* cenRep = CRepository::NewL(TUid::Uid(KCRUidActiveIdleLV)); // KCRUidActiveIdleLV AI2 Cenrep!
- TInt value = 0;
- if (cenRep->Get(KAiMainUIController, value) == KErrNone)
- {
- if ((value == AI_UID_ECOM_IMPLEMENTATION_UICONTROLLER_NATIVE)
- || (value == AI3_UID_ECOM_IMPLEMENTATION_UICONTROLLER_NATIVE))
- {
- iCurrentUIController = EAiUICNative;
- }
- else if ((value == AI_UID_ECOM_IMPLEMENTATION_UICONTROLLER_XML)
- || (value == AI3_UID_ECOM_IMPLEMENTATION_UICONTROLLER_XML))
- {
- iCurrentUIController = EAiUICXML;
- }
- }
- delete cenRep;
-}
-
-// ---------------------------------------------------------------------------
-// Update active AI2 UI Controller in cenrep keys
-// ---------------------------------------------------------------------------
-//
-void CPslnActiveIdlePluginEngine::UpdateUIControllersInCenrepL(TInt aControllerId)
-{
- if (iCurrentUIController != aControllerId)
- {
- TUid uid = { KCRUidActiveIdleLV }; // KCRUidActiveIdleLV AI2 Cenrep!
- CRepository* cenRep = CRepository::NewL(uid);
- if (aControllerId == EAiUICNative)
- {
- cenRep->Delete(KAiFirstUIController);
- cenRep->Delete(KAiFirstUIController + 1);
- cenRep->Set(KAiMainUIController, AI_UID_ECOM_IMPLEMENTATION_UICONTROLLER_NATIVE);
- }
- else if (aControllerId == EAiUICXML)
- {
- cenRep->Create(KAiFirstUIController, AI_UID_ECOM_IMPLEMENTATION_UICONTROLLER_NATIVE);
- cenRep->Set(KAiFirstUIController, AI_UID_ECOM_IMPLEMENTATION_UICONTROLLER_NATIVE);
- cenRep->Delete(KAiFirstUIController + 1);
- cenRep->Set(KAiMainUIController, AI_UID_ECOM_IMPLEMENTATION_UICONTROLLER_XML);
- }
- delete cenRep;
- }
-}
-
-// ---------------------------------------------------------------------------
-// Update status pane visibility for status pane cenrep key
-// ---------------------------------------------------------------------------
-//
-void CPslnActiveIdlePluginEngine::UpdateStatusPaneVisibilityCenrepL(
- TBool aPaneHidden)
-{
- TInt value = EAiStatusPaneLayoutIdleNormal;
- if (aPaneHidden)
- {
- value = EAiStatusPaneLayoutIdleHidden;
- }
- TUid uid = { KCRUidActiveIdleLV }; // KCRUidActiveIdleLV AI2 Cenrep!
- CRepository* cenRep = CRepository::NewL(uid);
- cenRep->Set(KAiStatusPaneLayout, value);
- delete cenRep;
-}
-
-// ---------------------------------------------------------------------------
-// Update active AI1 plugin in cenrep
-// ---------------------------------------------------------------------------
-//
-void CPslnActiveIdlePluginEngine::UpdateAi1PluginLoadCenrepL(TInt aNewUid)
-{
- TUid uid = { KCRUidActiveIdle }; // KCRUidActiveIdle AI1 Cenrep!
- CRepository* cenRep = CRepository::NewL(uid);
- TInt currentCount = 0;
- cenRep->Get(KCRPluginCountKey, currentCount);
-
- // Delete old keys if any
- for (TInt i = 0; i < currentCount; ++i)
- {
- cenRep->Delete(KCRFirstPluginKey+i);
- }
-
- cenRep->Delete(KCRPluginCountKey);
- cenRep->Create(KCRPluginCountKey, 1);
- // Set only 1 new key, the selected one
- cenRep->Create(KCRFirstPluginKey, aNewUid);
-
- delete cenRep;
-}
-
-// ---------------------------------------------------------------------------
-// Check the current AI1 plugin (ref. External opretor homescreen feature)
-// ---------------------------------------------------------------------------
-//
-void CPslnActiveIdlePluginEngine::CheckCurrentAi1PluginL()
-{
- TUid uid = { KCRUidActiveIdle }; // KCRUidActiveIdle AI1 Cenrep!
- TInt value = 0;
- TInt currentCount = 0;
-
- CRepository* cenRep = CRepository::NewL(uid);
- cenRep->Get(KCRPluginCountKey, currentCount);
-
- if (currentCount) // count must be set
- {
- cenRep->Get(KCRFirstPluginKey, value);
- }
- delete cenRep;
-
- if (value != 0)
- {
- iCurrentAi1Plugin = value;
- }
-}
-
-// ---------------------------------------------------------------------------
-// Manually start updating theme/skin listing
-// ---------------------------------------------------------------------------
-//
-void CPslnActiveIdlePluginEngine::ManualGetSkinsRestartL(TBool aForceStart)
-{
- if( !aForceStart && iMySkinList->Count() > 0 &&
- iUiRefreshTimer->IsActive() )
- {
- return;
- }
-
- // Restart get skins manually!
- if( iPlugin->Container() )
- {
- iPlugin->Container()->RemoveThemes(0);
- }
- iMySkinList->ResetAndDestroy();
- iFirstUpdateRound = ETrue;
- iFirstUpdateRoundInjected = EFalse;
- iPslnFWThemeHandler->CancelGetApplicationSkins();
- iAddIndex = 0;
- iPslnFWThemeHandler->GetApplicationSkinsL(KUidActiveIdle);
-}
-
-// ---------------------------------------------------------------------------
-// Restart AI2 process
-// ---------------------------------------------------------------------------
-//
-TInt CPslnActiveIdlePluginEngine::RestartAifw()
-{
- if (!IsAiRunning())
- {
- _LIT(KAiExeName, "z:\\sys\\bin\\ailaunch.exe");
- RProcess process;
- TInt ret = process.Create(KAiExeName, KNullDesC);
- process.Resume();
- process.Close();
- return ret;
- }
- return KErrNone;
-}
-
-// ---------------------------------------------------------------------------
-// Checks if AI2 process is running
-// ---------------------------------------------------------------------------
-//
-TBool CPslnActiveIdlePluginEngine::IsAiRunning()
-{
- TApaTaskList taskList(CCoeEnv::Static()->WsSession());
- TApaTask startTask = taskList.FindApp(TUid::Uid(0x100058f4));
-
- if (!startTask.Exists()) // if first boot queries are done continue bringing ai2 to foreground.
- {
- TApaTask aiTask = taskList.FindApp(TUid::Uid(AI_UID3_AIFW_EXE));
- if (aiTask.Exists()) // App open
- {
- return ETrue;
- }
- }
- return EFalse;
-}
-
-// ---------------------------------------------------------------------------
-// start ui refresh timer
-// ---------------------------------------------------------------------------
-//
-void CPslnActiveIdlePluginEngine::UiTimerRestart()
- {
- iUiRefreshTimer->Cancel();
- iUiRefreshTimer->Start(
- KPSLNOneSecondInMicroSeconds/4, // quarter second delay
- KPSLNOneSecondInMicroSeconds/4,
- TCallBack(UiRefreshTimerCallback, this));
- }
-
-// ---------------------------------------------------------------------------
-// Call back for restart timer
-// ---------------------------------------------------------------------------
-//
-TInt CPslnActiveIdlePluginEngine::RestartTimerCallback(TAny* aSelf)
-{
- CPslnActiveIdlePluginEngine* self =
- static_cast<CPslnActiveIdlePluginEngine*>(aSelf);
-
- if (self)
- {
- ++(self->iRestartRetryCount);
- if ( self->RestartAifw() == KErrNone)
- {
- self->iRestartTimer->Cancel();
- TApaTaskList taskList(CCoeEnv::Static()->WsSession());
- TApaTask startTask = taskList.FindApp(TUid::Uid(0x100058f4));
-
- if (!startTask.Exists()) // if first boot queries are done continue bringing ai2 to foreground.
- {
- TApaTask aiTask = taskList.FindApp(TUid::Uid(AI_UID3_AIFW_EXE));
- if (aiTask.Exists()) // App open
- {
- //aiTask.BringToForeground();
- CAknSgcClient::MoveApp(aiTask.WgId(), ESgcMoveAppToForeground);
- }
- }
- CAknEnv::RunAppShutter();
- return 0;
- }
- if (self->iRestartRetryCount > 3)
- {
- self->iRestartTimer->Cancel();
- TRAP_IGNORE(self->ManualGetSkinsRestartL());
- return 0;
- }
- }
- return 1;
-}
-
-// ---------------------------------------------------------------------------
-// Call back for UI refresh timer timer
-// ---------------------------------------------------------------------------
-//
-TInt CPslnActiveIdlePluginEngine::UiRefreshTimerCallback(TAny* aSelf)
-{
- CPslnActiveIdlePluginEngine* self =
- static_cast<CPslnActiveIdlePluginEngine*>(aSelf);
-
- if (self)
- {
- self->iUiRefreshTimer->Cancel();
- TRAP_IGNORE(self->AddThemesToContainerL());
- if( self->iPlugin->Container() )
- {
- self->iPlugin->Container()->RefreshList();
- }
- }
- return 0;
-}
-
-// End of File.
--- a/idlefw/plugins/pslnactiveidleplugin/src/pslnactiveidlepluginimplementationtable.cpp Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,38 +0,0 @@
-/*
-* Copyright (c) 2005-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: ECOM proxy table for PslnActiveIdlePlugin.
-*
-*/
-
-#include <e32std.h>
-#include <implementationproxy.h>
-
-#include "pslnactiveidleplugin.h"
-#include "gsactiveidleplugin.h"
-#include "pslnactiveidlepluginuids.h"
-
-const TImplementationProxy KPslnActiveIdlePluginImplementationTable[] =
-{
- IMPLEMENTATION_PROXY_ENTRY(KPslnActiveIdlePluginImplementationUID, CPslnActiveIdlePlugin::NewL)
- ,
- IMPLEMENTATION_PROXY_ENTRY(KGSActiveIdlePluginImplementationUID, CGSActiveIdlePlugin::NewL)
-};
-
-EXPORT_C const TImplementationProxy* ImplementationGroupProxy(TInt& aTableCount)
-{
- aTableCount = sizeof(KPslnActiveIdlePluginImplementationTable) / sizeof(TImplementationProxy);
- return KPslnActiveIdlePluginImplementationTable;
-}
-
-// End of File.
--- a/idlefw/plugins/sapidataplugin/data/sapidataplugin.rss Wed Mar 03 15:38:34 2010 +0200
+++ b/idlefw/plugins/sapidataplugin/data/sapidataplugin.rss Wed May 12 13:36:47 2010 +0300
@@ -18,6 +18,7 @@
// INCLUDES
#include <ecom/registryinfov2.rh>
+#include <hscontentpublisheruid.hrh>
#include "sapidatapluginuids.hrh"
@@ -42,7 +43,7 @@
INTERFACE_INFO
{
// UID of interface that is implemented
- interface_uid = AI_UID_ECOM_INTERFACE_CONTENTPUBLISHER;
+ interface_uid = HS_UID_ECOM_INTERFACE_CONTENTPUBLISHER;
implementations =
{
--- a/idlefw/plugins/sapidataplugin/group/sapidataplugin.mmp Wed Mar 03 15:38:34 2010 +0200
+++ b/idlefw/plugins/sapidataplugin/group/sapidataplugin.mmp Wed May 12 13:36:47 2010 +0300
@@ -40,21 +40,26 @@
END
-LIBRARY euser.lib
-LIBRARY bafl.lib
-LIBRARY efsrv.lib
-LIBRARY liwservicehandler.lib
-LIBRARY ecom.lib
-LIBRARY aiutils.lib
-LIBRARY cone.lib
-LIBRARY avkon.lib
-LIBRARY fbscli.lib
-LIBRARY egul.lib
-LIBRARY aknskins.lib
-LIBRARY charconv.lib
-// End of File
+LIBRARY euser.lib
+LIBRARY bafl.lib
+LIBRARY efsrv.lib
+LIBRARY liwservicehandler.lib
+LIBRARY ecom.lib
+LIBRARY aiutils.lib
+LIBRARY cone.lib
+LIBRARY avkon.lib
+LIBRARY fbscli.lib
+LIBRARY egul.lib
+LIBRARY aknskins.lib
+LIBRARY charconv.lib
+LIBRARY estor.lib
+
+// Debugging dependencies
+LIBRARY flogger.lib
+
SOURCEPATH ../src
-
SOURCE sapidataplugin.cpp
SOURCE sapidata.cpp
SOURCE sapidataobserver.cpp
+
+// End of File
\ No newline at end of file
--- a/idlefw/plugins/sapidataplugin/inc/sapidata.h Wed Mar 03 15:38:34 2010 +0200
+++ b/idlefw/plugins/sapidataplugin/inc/sapidata.h Wed May 12 13:36:47 2010 +0300
@@ -19,22 +19,32 @@
#ifndef SAPIDATA_H
#define SAPIDATA_H
-// INCLUDE FILES
+// System includes
#include <liwcommon.h>
#include <AknsItemID.h>
-#include <aieventhandlerextension.h>
+
+// User includes
+#include <hscontentpublisher.h>
#include "sapidatapluginconst.h"
-#include "aicontentpublisher.h"
+// Forward declarations
class MLiwInterface;
class CLiwServiceHandler;
class CSapiDataObserver;
class CSapiDataPlugin;
-
+class MAiContentObserver;
+class MAiCpsCommandBuffer;
-class CContentItem : public CBase
+/**
+ * @ingroup group_sapidataplugin
+ *
+ * Content item
+ *
+ * @since S60 5.0
+ */
+NONSHARABLE_CLASS( CContentItem ) : public CBase
{
- public :
+public:
/**
* Part of the two phased constuction
@@ -43,19 +53,18 @@
* @return none
*/
static CContentItem* NewL();
-
/*
* Destructor
*/
~CContentItem();
- private :
+private:
/*
* Constructor
*/
- CContentItem();
+ CContentItem();
/**
* Part of the two phased construction
@@ -65,7 +74,7 @@
*/
void ConstructL();
- public :
+public:
TInt iId;
/* item id */
@@ -81,12 +90,13 @@
*
* Sapi data
*
- * @since S60 v3.2
+ * @since S60 5.0
*/
-class CSapiData : public CBase
+NONSHARABLE_CLASS( CSapiData ) : public CBase
{
- public:
-
+public:
+ // constructor and destructor
+
/**
* Part of the two phased construction
*
@@ -103,9 +113,9 @@
*/
~CSapiData();
- private :
-
-
+private:
+ // constructors
+
/**
* Constructor
*
@@ -113,8 +123,7 @@
* @return none
*/
CSapiData();
-
-
+
/**
* Part of the two phased construction
*
@@ -122,24 +131,26 @@
* @return void
*/
void ConstructL(CSapiDataPlugin* aPlugin);
-
+
+public:
+ // new functions
+
/**
* Change the publisher status
*
* @param aStatus new status of the publisher
* @return void
*/
- void ChangePublisherStatusL(const TDesC& aStatus);
+ void ChangePublisherStatusL(const TDesC8& aStatus);
/**
- * Gets the menu item from the publisher
+ * Triggers active event with KNoNotification option.
+ * Notification is not send to observer, action handler
+ * plug-ins are executed
*
- * @param none
* @return void
*/
- void GetMenuItemsL();
-
- public :
+ void TriggerActiveL();
/**
* Configures the subscriber and data to subscribe.
@@ -150,9 +161,22 @@
*/
void ConfigureL(RAiSettingsItemArray& aConfigurations);
+ /**
+ * Sets content id
+ *
+ * @param aId Content id
+ */
void SetContentIdL(const TDesC8& aId);
/**
+ * Sets startup reason, which will be communicated to CPS client
+ * in the case of late registration.
+ *
+ * @param aStartupReason A reason
+ */
+ void SetStartupReasonL(const TDesC8& aStartupReason);
+
+ /**
* Execute the command to get the data from CPS
*
* @param aRegistry type of registry (publisher/cp_data)
@@ -237,14 +261,20 @@
/**
* 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).
+ * @param aPublisher publisher.
+ * @param aContentType content type.
+ * @param aContentId content Id.
+ * @param aOperation operation (add/delete/update/execute).
+ * @param aDataMap data map if available. Can be NULL.
+ * Ownership NOT transferred.
+ *
* @return void
*/
- void RefreshL( TDesC& aPublisher, TDesC& aContentType,
- TDesC& aContentId, TDesC& aOperation );
+ void RefreshL( TDesC& aPublisher,
+ TDesC& aContentType,
+ TDesC& aContentId,
+ TDesC& aOperation,
+ CLiwDefaultMap* aDataMap );
/**
* Createts the filter map and push it in the stack
@@ -278,62 +308,6 @@
* @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
@@ -366,54 +340,68 @@
*/
void SetUpdateNeeded(TBool aStatus);
- private :
-
- // Subscriber interface
- // own
- MLiwInterface* iInterface;
-
- // Data Observer to CPS content registry
- // Own // iConObserver;
- CSapiDataObserver* iContentObserver;
-
- // Data Observer to CPS publisher registry
- // Own // iConObserver;
- CSapiDataObserver* iPubObserver;
-
- // Service handler
- // Own
- CLiwServiceHandler* iServiceHandler;
-
- // Array of configurations
- // Own
- RPointerArray<CContentItem> iItemList;
+ /**
+ * Sets property value.
+ *
+ * @since S60 5.2
+ * @param aAny - contains pointer to command buffer.
+ */
+ void SetCommandBuffer(TAny* aAny);
+
+private:
+ // new functions
- // Number of configurations
- TInt iItemCount;
+ /**
+ * Gets the menu item from the publisher
+ *
+ * @param none
+ * @return void
+ */
+ void GetMenuItemsL();
+
+ /**
+ * Change the publisher status with list of actions
+ *
+ * @param aActionsList new list of status for the publisher
+ * @return void
+ */
+ void ChangePublisherStatusL(CLiwDefaultList* aActionsList);
- // Command name in configuration Array
- HBufC8* iCommandName;
- /* publisher id */
+private:
+ // data
+ /** CPS Command Buffer Interface, Not Owned */
+ MAiCpsCommandBuffer* iCpsExecute;
+ /** Subscriber interface, Not owned */
+ MLiwInterface* iInterface;
+ /** Service handler, Not owned */
+ CLiwServiceHandler* iServiceHandler;
+ /** Data Observer to CPS content registry, owned */
+ CSapiDataObserver* iContentObserver;
+ /** Data Observer to CPS publisher registry, owned */
+ CSapiDataObserver* iPubObserver;
+ /** Array of configurations, owned */
+ RPointerArray<CContentItem> iItemList;
+ /** Number of configurations */
+ TInt iItemCount;
+ /** publisher id, owned */
HBufC* iPublisher;
- /* content type */
- HBufC* iContentType;
- /* content id */
+ /** content id, owned */
HBufC* iContentId;
-
- // Reference of the sapi data plugin
- // Not owned
- CSapiDataPlugin* iPlugin;
-
- // Menu item names
- // Own
- RPointerArray<HBufC> iMenuItems;
-
- // Trigger names for the menu items
- // Own
- RPointerArray<HBufC8> iMenuTriggers;
-
- // Store the status of update needed on resume
+ /** Startup reason, owned */
+ HBufC8* iStartupReason;
+ /** Reference of the sapi data plugin, not owned */
+ CSapiDataPlugin* iPlugin;
+ /** Menu item names, owned */
+ RPointerArray<HBufC> iMenuItems;
+ /** Trigger names for the menu items, owned */
+ RPointerArray<HBufC8> iMenuTriggers;
+ /** Store the status of update needed on resume */
TBool iUpdateNeeded;
+ // Is Menu item read.
+ TBool iGetMenuItems;
};
-#endif /*SAPIDATA_H*/
+#endif // SAPIDATA_H
+
+// End of file
+
--- a/idlefw/plugins/sapidataplugin/inc/sapidataobserver.h Wed Mar 03 15:38:34 2010 +0200
+++ b/idlefw/plugins/sapidataplugin/inc/sapidataobserver.h Wed May 12 13:36:47 2010 +0300
@@ -19,15 +19,26 @@
#ifndef SAPIDATAOBSERVER_H
#define SAPIDATAOBSERVER_H
-// INCLUDE FILES
+// System includes
#include <liwcommon.h>
+// User includes
+
+// Forward declarations
class CSapiData;
-class CSapiDataObserver : public CBase, public MLiwNotifyCallback
+/**
+ * @ingroup group_sapidataplugin
+ *
+ * Sapi data observer
+ *
+ * @since S60 5.0
+ */
+NONSHARABLE_CLASS( CSapiDataObserver ) : public CBase,
+ public MLiwNotifyCallback
{
-public:
-
+public: // constructor and destructor
+
/**
* Part of the two phased constuction
*
@@ -45,7 +56,7 @@
*/
~CSapiDataObserver();
-private :
+private: // construtors
/**
* Constructor
@@ -64,7 +75,7 @@
*/
void ConstructL( MLiwInterface* aInterface, CSapiData* aData );
-public: //from MLiwNotifyCallbackc
+public: //from MLiwNotifyCallback
/**
* Handles notifications caused by an asynchronous Execute*CmdL call
@@ -84,7 +95,7 @@
CLiwGenericParamList& aEventParamList,
const CLiwGenericParamList& /*aInParamList*/);
-public:
+public: // new functions
/**
* Registers to CPS for add, delete , update and execute notifications
@@ -99,19 +110,15 @@
*/
void ReleaseL();
-private:
-
- // Reference of
- // Not owned
- MLiwInterface* iInterface;
+private: // data
- // Reference of the sapi data
- // Not owned
- CSapiData* iData;
-
- // Call back error code
- TInt iError;
-
+ /** Interface Reference, not owned */
+ MLiwInterface* iInterface;
+ /** Reference of the sapi data, not owned */
+ CSapiData* iData;
};
-#endif /*SAPIDATAOBSERVER_H*/
+#endif // SAPIDATAOBSERVER_H
+
+// End of file
+
--- a/idlefw/plugins/sapidataplugin/inc/sapidataplugin.h Wed Mar 03 15:38:34 2010 +0200
+++ b/idlefw/plugins/sapidataplugin/inc/sapidataplugin.h Wed May 12 13:36:47 2010 +0300
@@ -11,7 +11,7 @@
*
* Contributors:
*
-* Description: Plug-in main class
+* Description: SAPI data plug-in main class
*
*/
@@ -19,17 +19,18 @@
#ifndef SAPIDATAPLUGIN_H
#define SAPIDATAPLUGIN_H
-#include <aicontentpublisher.h>
-#include <aipropertyextension.h>
+// System includes
+
+// User includes
+#include <hscontentpublisher.h>
#include <aicontentmodel.h>
-#include <aieventhandlerextension.h>
+// Forward declarations
class MAiContentObserver;
class MAiContentItemIterator;
-class MAiPSPropertyObserver;
class CSapiData;
-class CDesC16Array;
class CGulIcon;
+class CLiwDefaultMap;
/**
* @ingroup group_sapidataplugin
@@ -38,13 +39,11 @@
*
* @since S60 v3.2
*/
-class CSapiDataPlugin : public CAiContentPublisher,
- public MAiPropertyExtension,
- public MAiEventHandlerExtension
-
- {
+NONSHARABLE_CLASS( CSapiDataPlugin ) : public CHsContentPublisher
+ {
+public:
+ // data types
-public :
/**
* Plugin's network state.
*/
@@ -62,11 +61,12 @@
{
ENone,
EResume,
- ESuspend,
- EInActive,
+ ESuspend
};
+
public:
-
+ // constructor and destructor
+
/**
* Part of the two phased constuction
*
@@ -84,6 +84,7 @@
~CSapiDataPlugin();
private:
+ // constructors
/**
* Constructor
@@ -100,148 +101,72 @@
* @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 CHsContentPublisher
/**
- * 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 );
+ * @see CHsContentPublisher
+ */
+ void Start( TStartReason 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 );
-
+ * @see CHsContentPublisher
+ */
+ void Stop( TStopReason 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 );
+ * @see CHsContentPublisher
+ */
+ void Resume( TResumeReason aReason );
/**
- * 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 );
+ * @see CHsContentPublisher
+ */
+ void Suspend( TSuspendReason aReason );
+
+ /**
+ * @see CHsContentPublisher
+ */
+ void SetOnline();
+
+ /**
+ * @see CHsContentPublisher
+ */
+ void SetOffline();
/**
- * 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 );
+ * @see CHsContentPublisher
+ */
+ void SubscribeL( MAiContentObserver& aObserver );
/**
- * 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
+ * @see CHsContentPublisher
*/
- 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);
+ void ConfigureL( RAiSettingsItemArray& aSettings );
/**
- * 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);
+ * @see CHsContentPublisher
+ */
+ void SetProperty( TProperty aProperty, TAny* aAny );
+
+ /**
+ * @see CHsContentPublisher
+ */
+ TAny* GetProperty( TProperty aProperty );
+
+ /**
+ * @see CHsContentPublisher
+ */
+ void HandleEvent( const TDesC& aEventName, const TDesC& aParam );
+
+ /**
+ * @see CHsContentPublisher
+ */
+ TBool HasMenuItem( const TDesC16& aMenuItem );
-public : // new functions
+public:
+ // new functions
/**
* Publishes widget's texts and images
@@ -270,11 +195,15 @@
/**
* RefereshL a specific image of text in the widget
*
- * @param aContentType content type
- * @param aOperation operation performed
+ * @param aContentType content type
+ * @param aOperation operation performed
+ * @param aDataMap data map if available. Can be NULL.
+ * Ownership NOT transferred.
* @return void
*/
- void RefreshL(TDesC& aContentType, TDesC& aOperation);
+ void RefreshL( TDesC& aContentType,
+ TDesC& aOperation,
+ CLiwDefaultMap* aDataMap );
/**
* Is plugin active to publish the data
@@ -282,7 +211,7 @@
* @param void
* @return boolean (ETrue/EFalse)
*/
- TBool IsActive();
+ TBool IsActive() const;
/**
* Publish a specific text of the widget
@@ -332,69 +261,38 @@
* CSapiData getter
* @return Pointer to CSapiData
*/
- inline CSapiData* Data() const
- {
- return iData;
- }
+ CSapiData* Data() const;
/*
* 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;
-
- // 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;
+ TPluginNetworkStatus NetworkStatus() const;
- // Reference array for Published text
- // Own
- RPointerArray<HBufC> iDataArray;
-
- // Service API Data Subscriber.
- // Own
- CSapiData* iData;
-
- // 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
+private:
+ // data
+ /** Iterator for plugin content, owned */
+ MAiContentItemIterator* iContent;
+ /** Array of content observers, owned */
+ RPointerArray<MAiContentObserver> iObservers;
+ /** Number of data in the content model */
+ TInt iDataCount;
+ /** Dynamic content model, owned */
+ TAiContentItem* iContentModel;
+ /** Reference array for Published text, owned */
+ RPointerArray< HBufC > iDataArray;
+ /** Service API Data Subscriber, owned */
+ CSapiData* iData;
+ /** References array for published images, owned */
+ RArray< CGulIcon* > iIconArray;
+ /** Handle to file server session, owned */
+ RFs iRfs;
+ /** Plugin's network status */
+ TPluginNetworkStatus iNetworkStatus;
+ /** Plugin state */
TPluginStates iPluginState;
};
#endif // SAPIDATAPLUGIN_H
+// End of file
--- a/idlefw/plugins/sapidataplugin/inc/sapidatapluginconst.h Wed Mar 03 15:38:34 2010 +0200
+++ b/idlefw/plugins/sapidataplugin/inc/sapidatapluginconst.h Wed May 12 13:36:47 2010 +0300
@@ -36,6 +36,7 @@
_LIT(KPlugin, "plugin");
_LIT(KNewsTicker ,"newsticker");
+_LIT(KTextEditor, "texteditor");
// CPS Constants
@@ -74,16 +75,23 @@
_LIT( KOperationDelete, "delete" );
_LIT( KOperationExecute, "execute" );
_LIT( KAddUpdateDelete, "add:update:delete" );
-_LIT( KUpdate, "update" );
+_LIT( KAddUpdate, "add:update" );
_LIT(KWidget, "hswidget");
-_LIT( KDeActive, "deactive");
-_LIT( KActive, "active");
-_LIT( KSuspend , "suspend");
-_LIT( KResume, "resume");
-_LIT( KOnLine, "online");
-_LIT( KOffLine, "offline");
-_LIT( KInActive, "inactive");
+_LIT8( KDeActive, "deactive");
+_LIT8( KActive, "active");
+_LIT8( KSystemStartup, "systemstartup");
+_LIT8( KPageStartup, "pagestartup");
+_LIT8( KPluginStartup, "pluginstartup");
+_LIT8( KSuspend , "suspend");
+_LIT8( KResume, "resume");
+_LIT8( KSystemShutdown, "systemshutdown");
+_LIT8( KPageShutdown, "pageshutdown");
+_LIT8( KPluginShutdown, "pluginshutdown");
+_LIT8( KOnLine, "online");
+_LIT8( KOffLine, "offline");
+
+
// reserved extension for retrieving mask handle
_LIT8( KMask, "_mask");
--- a/idlefw/plugins/sapidataplugin/inc/sapidatapluginuids.hrh Wed Mar 03 15:38:34 2010 +0200
+++ b/idlefw/plugins/sapidataplugin/inc/sapidatapluginuids.hrh Wed May 12 13:36:47 2010 +0300
@@ -19,8 +19,6 @@
#ifndef SAPIDATAPLUGINUIDS_HRH
#define SAPIDATAPLUGINUIDS_HRH
-#include <platform/mw/aicontentpublisheruid.hrh>
-
/**
* Ecom dll uid for AI Data plug-in.
*/
--- a/idlefw/plugins/sapidataplugin/src/sapidata.cpp Wed Mar 03 15:38:34 2010 +0200
+++ b/idlefw/plugins/sapidataplugin/src/sapidata.cpp Wed May 12 13:36:47 2010 +0300
@@ -1,5 +1,5 @@
/*
-* Copyright (c) 2005-2007 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2008-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"
@@ -15,15 +15,20 @@
*
*/
+// System includes
#include <ecom/ecom.h>
#include <liwservicehandler.h>
#include <aipluginsettings.h>
#include <utf.h>
+// User includes
+#include <aicpscommandbuffer.h>
#include "sapidata.h"
#include "sapidatapluginconst.h"
#include "sapidataobserver.h"
#include "sapidataplugin.h"
+
+const TUint KDisableNotification = 0x2000;
// ======== MEMBER FUNCTIONS ========
// ---------------------------------------------------------------------------
@@ -99,10 +104,8 @@
void CSapiData::ConstructL(CSapiDataPlugin* aPlugin)
{
iPlugin = aPlugin;
- iCommandName = NULL;
- iContentId = NULL;
- iContentType = NULL;
iUpdateNeeded = EFalse;
+ iGetMenuItems = ETrue;
}
// ---------------------------------------------------------------------------
@@ -112,40 +115,29 @@
//
CSapiData::~CSapiData()
{
- delete iCommandName;
delete iPublisher;
- delete iContentType;
delete iContentId;
-
+ delete iStartupReason;
if(iPubObserver)
{
- TRAP_IGNORE(iPubObserver->ReleaseL() );
delete iPubObserver;
iPubObserver = NULL;
}
if(iContentObserver)
{
- TRAP_IGNORE(iContentObserver->ReleaseL() );
delete iContentObserver;
iContentObserver = NULL;
}
- if( iInterface )
- {
- iInterface->Close();
- iInterface = NULL;
- }
- if( iServiceHandler )
- {
- iServiceHandler->Reset();
- delete iServiceHandler;
- iServiceHandler = NULL;
- }
iMenuItems.ResetAndDestroy();
iMenuTriggers.ResetAndDestroy();
iItemList.ResetAndDestroy();
// not owned
iPlugin = NULL;
+ iInterface = NULL;
+ iServiceHandler = NULL;
+ iCpsExecute = NULL;
+
}
// ---------------------------------------------------------------------------
@@ -154,30 +146,13 @@
//
void CSapiData::ConfigureL(RAiSettingsItemArray& aConfigurations )
{
- HBufC8* serviceName = NULL;
- HBufC8* interfaceName = NULL;
-
TInt count = aConfigurations.Count();
-
for(TInt i = 0;i<count;i++)
{
MAiPluginConfigurationItem& confItem = ( aConfigurations[i] )->AiPluginConfigurationItem();
- // if owner is plugin then it (key,value) is for plugin configurations items
if(confItem.Owner() == KPlugin())
{
- if(confItem.Name() == KService())
- {
- serviceName = CnvUtfConverter::ConvertFromUnicodeToUtf8L(confItem.Value());
- }
- else if( confItem.Name() == KInterface() )
- {
- interfaceName = CnvUtfConverter::ConvertFromUnicodeToUtf8L(confItem.Value());
- }
- else if( confItem.Name() == KCommand() )
- {
- iCommandName = CnvUtfConverter::ConvertFromUnicodeToUtf8L(confItem.Value());
- }
- else if( confItem.Name() == KPublisher16() )
+ if( confItem.Name() == KPublisher16() )
{
iPublisher = confItem.Value().AllocL();
}
@@ -197,62 +172,37 @@
CleanupStack::PopAndDestroy(objectId);
}
}
-
iItemCount = iItemList.Count();
-
- if( !serviceName || !interfaceName || !iCommandName
- || !iContentId || !iPublisher || !iItemCount )
+ if( iPublisher->Des().Length() == 0 )
{
// No service to offer without plugin configurations
User::Leave( KErrNotSupported );
}
- iServiceHandler = CLiwServiceHandler::NewL();
-
- // for convenience keep pointers to Service Handler param lists
- CLiwGenericParamList* inParamList = &iServiceHandler->InParamListL();
- CLiwGenericParamList* outParamList = &iServiceHandler->OutParamListL();
-
- CLiwCriteriaItem* criteriaItem = CLiwCriteriaItem::NewLC( KLiwCmdAsStr, *interfaceName , *serviceName );
- criteriaItem->SetServiceClass( TUid::Uid( KLiwClassBase ) );
- // Interface name
- RCriteriaArray criteriaArray;
- criteriaArray.AppendL( criteriaItem );
- // attach Liw criteria
- iServiceHandler->AttachL( criteriaArray );
- iServiceHandler->ExecuteServiceCmdL( *criteriaItem, *inParamList, *outParamList );
-
- CleanupStack::PopAndDestroy(criteriaItem);
- criteriaArray.Reset();
-
- // extract CPS interface from output params
- TInt pos( 0 );
- outParamList->FindFirst( pos, *interfaceName );
- if( pos != KErrNotFound )
- {
- //iInterface is MLiwInterface*
- iInterface = (*outParamList)[pos].Value().AsInterface();
- User::LeaveIfNull( iInterface );
- }
- else
- {
- User::Leave( KErrNotFound );
- }
- inParamList->Reset();
- outParamList->Reset();
- delete interfaceName;
- delete serviceName;
-
- //Gets the menu items from the publisher registry
- GetMenuItemsL();
-
iContentObserver = CSapiDataObserver::NewL( iInterface, this );
iPubObserver = CSapiDataObserver::NewL( iInterface, this );
}
+// ---------------------------------------------------------------------------
+// SetContentIdL
+// ---------------------------------------------------------------------------
+//
void CSapiData::SetContentIdL(const TDesC8& aId)
{
iContentId = CnvUtfConverter::ConvertToUnicodeFromUtf8L(aId);
}
+
+// ---------------------------------------------------------------------------
+// SetStartupReasonL
+// ---------------------------------------------------------------------------
+//
+void CSapiData::SetStartupReasonL(const TDesC8& aStartupReason)
+ {
+ delete iStartupReason;
+ iStartupReason = NULL;
+ iStartupReason = aStartupReason.AllocL();
+ ChangePublisherStatusL( aStartupReason );
+ }
+
// ---------------------------------------------------------------------------
// GetMenuItemsL
// ---------------------------------------------------------------------------
@@ -421,6 +371,13 @@
//
TBool CSapiData::HasMenuItem(const TDesC& aMenuItem )
{
+ if ( iGetMenuItems )
+ {
+ //Gets the menu items from the publisher registry
+ TRAP_IGNORE( GetMenuItemsL() );
+ iGetMenuItems = EFalse;
+ }
+
TBool found = EFalse;
for (TInt i = 0; i < iMenuItems.Count(); i++ )
{
@@ -549,27 +506,24 @@
void CSapiData::ExecuteCommandL(const TDesC& aRegistry, CLiwDefaultMap* aInFilter,
CLiwGenericParamList* aOutParamList)
{
- CLiwGenericParamList* inParamList = &iServiceHandler->InParamListL();
-
- 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 initiated
- if(iInterface)
- {
- iInterface->ExecuteCmdL( *iCommandName, *inParamList, *aOutParamList);
- }
- else
- {
- User::Leave( KErrNotSupported );
- }
- type.Reset();
- item.Reset();
- inParamList->Reset();
+ if( iInterface == NULL )
+ {
+ User::Leave( KErrNotSupported );
+ }
+ CLiwGenericParamList* inParamList = &iServiceHandler->InParamListL();
+
+ 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 initiated
+ iInterface->ExecuteCmdL( KGetList, *inParamList, *aOutParamList);
+ type.Reset();
+ item.Reset();
+ inParamList->Reset();
}
// ---------------------------------------------------------------------------
@@ -578,6 +532,10 @@
//
void CSapiData::ExecuteActionL(const TDesC& aObjectId, const TDesC& aTrigger )
{
+ if( iInterface == NULL )
+ {
+ User::Leave( KErrNotSupported );
+ }
HBufC8* triggerName = HBufC8::NewLC( KSAPIContentNameMaxLength );
CLiwGenericParamList* inParamList = &iServiceHandler->InParamListL();
@@ -653,7 +611,7 @@
if ( iItemCount > 0)
{
CLiwDefaultMap* pubRegFilter = CreateFilterLC( KAll(), KAll() );
- pubRegFilter->InsertL( KOperation, TLiwVariant( KUpdate ) );
+ pubRegFilter->InsertL( KOperation, TLiwVariant( KAddUpdate ) );
iPubObserver->RegisterL( pubRegFilter, KPubData() );
CleanupStack::PopAndDestroy( pubRegFilter );
}
@@ -678,12 +636,15 @@
// RefreshL
// ---------------------------------------------------------------------------
//
-void CSapiData::RefreshL( TDesC& aPublisher, TDesC& aContentType,
- TDesC& aContentId, TDesC& aOperation )
+void CSapiData::RefreshL( TDesC& aPublisher,
+ TDesC& aContentType,
+ TDesC& aContentId,
+ TDesC& aOperation,
+ CLiwDefaultMap* aDataMap )
{
if ( CanUpdate( aPublisher, aContentType, aContentId ) )
{
- iPlugin->RefreshL( aContentType, aOperation);
+ iPlugin->RefreshL( aContentType, aOperation, aDataMap );
}
}
@@ -697,108 +658,89 @@
}
// ---------------------------------------------------------------------------
-// PublisherStatusL
+// ChangePublisherStatusL
// ---------------------------------------------------------------------------
//
-void CSapiData::ChangePublisherStatusL(const TDesC& aStatus)
+void CSapiData::ChangePublisherStatusL(const TDesC8& aStatus)
{
- CLiwGenericParamList* inParamList = &iServiceHandler->InParamListL();
- CLiwGenericParamList* outParamList = &iServiceHandler->OutParamListL();
- HBufC8* triggerName = CnvUtfConverter::ConvertFromUnicodeToUtf8L(aStatus);
- CleanupStack::PushL( triggerName );
+ if( iCpsExecute == NULL )
+ {
+ User::Leave( KErrNotSupported );
+ }
- TLiwGenericParam type( KType, TLiwVariant( KPubData ) );
- inParamList->AppendL( type );
-
+ if ( aStatus == KResume && iUpdateNeeded )
+ {
+ iPlugin->PublishL();
+ iUpdateNeeded = EFalse;
+ }
CLiwDefaultMap* filter = CreateFilterLC( KWidget() );
- 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 );
- }
-
+ // Add execute command triggers. Idle framework will execute
+ iCpsExecute->AddCommand( *iContentId, KPubData, filter, aStatus );
CleanupStack::PopAndDestroy( filter );
- CleanupStack::PopAndDestroy( triggerName );
- inParamList->Reset();
- outParamList->Reset();
- }
-
-// ---------------------------------------------------------------------------
-// ResumeL
-// ---------------------------------------------------------------------------
-//
-void CSapiData::ResumeL()
- {
- if ( iUpdateNeeded )
- {
- iPlugin->PublishL();
- iUpdateNeeded = EFalse;
- }
- ChangePublisherStatusL( KResume );
+
}
// ---------------------------------------------------------------------------
-// SuspendL
-// ---------------------------------------------------------------------------
-//
-void CSapiData::SuspendL()
- {
- ChangePublisherStatusL( KSuspend );
- }
-
-// ---------------------------------------------------------------------------
-// ActivateL
+// ChangePublisherStatusL
// ---------------------------------------------------------------------------
//
-void CSapiData::ActivateL()
+void CSapiData::ChangePublisherStatusL(CLiwDefaultList* aActionsList)
{
- ChangePublisherStatusL( KActive );
- }
+ if( iInterface == NULL )
+ {
+ User::Leave( KErrNotSupported );
+ }
+
+ CLiwGenericParamList* inParamList = &iServiceHandler->InParamListL();
+ CLiwGenericParamList* outParamList = &iServiceHandler->OutParamListL();
+
+ TLiwGenericParam type( KType, TLiwVariant( KPubData ) );
+ inParamList->AppendL( type );
+
+ CLiwDefaultMap* filter = CreateFilterLC( KWidget() );
+ // add list of action triggers to execute
+ filter->InsertL(KActionTrigger, TLiwVariant(aActionsList) );
+
+ TLiwGenericParam item( KFilter, TLiwVariant( filter ));
+ inParamList->AppendL( item );
-// ---------------------------------------------------------------------------
-// DeActivateL
-// ---------------------------------------------------------------------------
-//
-void CSapiData::DeActivateL()
- {
- ChangePublisherStatusL( KDeActive );
+ iInterface->ExecuteCmdL( KExecuteAction, *inParamList, *outParamList);
+ CleanupStack::PopAndDestroy( filter );
+ outParamList->Reset();
+ inParamList->Reset();
+
}
// ---------------------------------------------------------------------------
-// OnLineL
-// ---------------------------------------------------------------------------
-//
-void CSapiData::OnLineL()
- {
- ChangePublisherStatusL( KOnLine );
- }
-
-// ---------------------------------------------------------------------------
-// offLineL
+// TriggerActiveL
// ---------------------------------------------------------------------------
//
-void CSapiData::OffLineL()
+void CSapiData::TriggerActiveL()
{
- ChangePublisherStatusL( KOffLine );
- }
-
-// ---------------------------------------------------------------------------
-// InActiveL
-// ---------------------------------------------------------------------------
-//
-void CSapiData::InActiveL()
- {
- ChangePublisherStatusL( KInActive );
- }
-
+ if(iInterface)
+ {
+ CLiwGenericParamList* inParamList = &iServiceHandler->InParamListL();
+ CLiwGenericParamList* outParamList = &iServiceHandler->OutParamListL();
+
+ TLiwGenericParam type( KType, TLiwVariant( KPubData ) );
+ inParamList->AppendL( type );
+
+ CLiwDefaultMap* filter = CreateFilterLC( KAll(), KAll() );
+ filter->InsertL(KActionTrigger, TLiwVariant( KActive() ));
+
+ TLiwGenericParam item( KFilter, TLiwVariant( filter ));
+ inParamList->AppendL( item );
+ iInterface->ExecuteCmdL( KExecuteAction, *inParamList, *outParamList, KDisableNotification );
+
+ CleanupStack::PopAndDestroy( filter );
+ inParamList->Reset();
+ outParamList->Reset();
+ }
+ else
+ {
+ User::Leave( KErrNotSupported );
+ }
+ }
// ---------------------------------------------------------------------------
// UpdatePublisherStatusL
// ---------------------------------------------------------------------------
@@ -806,26 +748,34 @@
void CSapiData::UpdatePublisherStatusL( TDesC& aPublisher )
{
if ( aPublisher == iPublisher )
- {
- // Resend the plugin status to publisher
- ActivateL();
+ {
+ // Resend the plugin status to publisher
+ CLiwDefaultList* actionsToLaunch = CLiwDefaultList::NewLC();
+ actionsToLaunch->AppendL( TLiwVariant( KActive ));
+ if( iStartupReason->Length() != 0 )
+ {
+ actionsToLaunch->AppendL( TLiwVariant( *iStartupReason ));
+ }
if ( iPlugin->IsActive() )
{
- ResumeL();
+ actionsToLaunch->AppendL( TLiwVariant( KResume ));
}
else
{
- SuspendL();
+ actionsToLaunch->AppendL(TLiwVariant( KSuspend ));
}
// forward the network status if it uses.
if ( iPlugin->NetworkStatus() == CSapiDataPlugin::EOnline )
{
- OnLineL();
+ actionsToLaunch->AppendL(TLiwVariant( KOnLine ));
}
else if ( iPlugin->NetworkStatus() == CSapiDataPlugin::EOffline )
{
- OffLineL();
+ actionsToLaunch->AppendL(TLiwVariant( KOffLine ));
}
+
+ ChangePublisherStatusL( actionsToLaunch );
+ CleanupStack::PopAndDestroy( actionsToLaunch );
}
}
@@ -915,3 +865,19 @@
{
iUpdateNeeded = aStatus;
}
+
+// ---------------------------------------------------------------------------
+// SetCommandBuffer
+// ---------------------------------------------------------------------------
+//
+void CSapiData::SetCommandBuffer(TAny* aAny)
+ {
+ iCpsExecute = reinterpret_cast <MAiCpsCommandBuffer* > ( aAny );
+ if ( iCpsExecute )
+ {
+ iInterface = iCpsExecute->CpsInterface();
+ iServiceHandler = iCpsExecute->ServiceHandler();
+ }
+ }
+
+// End of file
--- a/idlefw/plugins/sapidataplugin/src/sapidataobserver.cpp Wed Mar 03 15:38:34 2010 +0200
+++ b/idlefw/plugins/sapidataplugin/src/sapidataobserver.cpp Wed May 12 13:36:47 2010 +0300
@@ -19,6 +19,7 @@
#include <liwservicehandler.h>
#include <liwvariant.h>
#include <liwgenericparam.h>
+#include <s32mem.h>
#include "sapidata.h"
#include "sapidataobserver.h"
#include "sapidatapluginconst.h"
@@ -37,6 +38,7 @@
//
CSapiDataObserver ::~CSapiDataObserver ()
{
+ TRAP_IGNORE( ReleaseL() );
iInterface = NULL;
iData = NULL;
}
@@ -56,9 +58,7 @@
inParamList->AppendL(TLiwGenericParam(KType,TLiwVariant(aRegistry)));
inParamList->AppendL(TLiwGenericParam(KFilter ,TLiwVariant(aFilter)));
- iError = KErrNone;
- TRAP( iError, iInterface->ExecuteCmdL(
- KRequestNotification,
+ TRAP_IGNORE( iInterface->ExecuteCmdL(KRequestNotification,
*inParamList,
*outParamList,
0,
@@ -72,7 +72,7 @@
// Sing off to notification
// ---------------------------------------------------------------------------
//
-void CSapiDataObserver ::ReleaseL()
+void CSapiDataObserver::ReleaseL()
{
if( iInterface )
{
@@ -81,9 +81,7 @@
CLiwGenericParamList* outParamList = CLiwGenericParamList::NewL();
CleanupStack::PushL( outParamList );
- TInt err(KErrNone);
- TRAP(err, iInterface->ExecuteCmdL(
- KRequestNotification,
+ TRAP_IGNORE( iInterface->ExecuteCmdL( KRequestNotification,
*inParamList,
*outParamList,
KLiwOptCancel,
@@ -129,7 +127,6 @@
{
// Is plugin active to refresh the published data
- iError = aErrorCode;
TInt count(0);
TInt pos(0);
const TLiwGenericParam* param(NULL);
@@ -178,31 +175,61 @@
}
}
else if ( iData->IsPluginActive() )
- {
- // notification from content registry
- 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 );
- }
- }
+ {
+ // notification from content registry
+ found = map->FindL( KContentType, variant );
+ if( found )
+ {
+ contentType = variant.AsDes().AllocLC();
+ }
+ variant.Reset();
+
+ // content id
+ found = map->FindL( KContentId, variant );
+ if( found )
+ {
+ contentId = variant.AsDes().AllocLC();
+ }
+ variant.Reset();
+
+ // Data map. Optional.
+ CLiwDefaultMap* dataMap = NULL;
+
+ found = map->FindL( KDataMap, variant);
+ if( found )
+ {
+ TPtrC8 data = variant.AsData();
+ RDesReadStream datastrm ( data );
+ CleanupClosePushL( datastrm );
+ dataMap = CLiwDefaultMap::NewLC( datastrm );
+ // There is no CLiwDefaultMap::NewL( RReadStream )
+ // so, must do some work with cleanup stack here.
+ CleanupStack::Pop( dataMap );
+ CleanupStack::PopAndDestroy(); // datastrm
+ dataMap->PushL();
+ }
+
+ iData->RefreshL( *publisher,
+ *contentType,
+ *contentId,
+ *operation,
+ dataMap );
+
+ if( dataMap )
+ {
+ CleanupStack::PopAndDestroy( dataMap );
+ }
+
+ if( contentId )
+ {
+ CleanupStack::PopAndDestroy( contentId );
+ }
+
+ if( contentType )
+ {
+ CleanupStack::PopAndDestroy( contentType );
+ }
+ }
else
{
// remember update if plugin is in suspend mode
--- a/idlefw/plugins/sapidataplugin/src/sapidataplugin.cpp Wed Mar 03 15:38:34 2010 +0200
+++ b/idlefw/plugins/sapidataplugin/src/sapidataplugin.cpp Wed May 12 13:36:47 2010 +0300
@@ -11,18 +11,14 @@
*
* Contributors:
*
-* Description: Profile plug-in publisher
+* Description: SAPI data plug-in publisher
*
*/
-
+// System includes
#include <ecom/ecom.h>
#include <ecom/implementationproxy.h>
-#include <aicontentobserver.h>
-#include <aiutility.h>
-#include <aipspropertyobserver.h>
#include <PUAcodes.hrh>
-#include <aipluginsettings.h>
#include <badesca.h>
#include <fbs.h>
#include <gulicon.h>
@@ -30,14 +26,22 @@
#include <AknsUtils.h>
#include <AknsConstants.h>
#include <e32property.h>
+
+// User includes
+#include <hspublisherinfo.h>
+#include <aicontentobserver.h>
+#include <aiutility.h>
+#include <aipspropertyobserver.h>
+#include <aipluginsettings.h>
#include <activeidle2domainpskeys.h>
+#include <debug.h>
#include "sapidatapluginconst.h"
#include "sapidatapluginuids.hrh"
#include "sapidataplugin.h"
#include "sapidata.h"
-// CONST CLASS VARIABLES
+// Constants
const TImplementationProxy KImplementationTable[] =
{
IMPLEMENTATION_PROXY_ENTRY( KImplUidDataPlugin, CSapiDataPlugin::NewL )
@@ -75,6 +79,7 @@
// ---------------------------------------------------------------------------
//
CSapiDataPlugin::CSapiDataPlugin()
+ : iNetworkStatus( EUnknown ), iPluginState( ENone )
{
}
@@ -83,14 +88,10 @@
// ---------------------------------------------------------------------------
//
void CSapiDataPlugin::ConstructL()
- {
- iInfo.iUid.iUid = SAPIDP_UID_ECOM_IMPLEMENTATION_CONTENTPUBLISHER_DATAPLUGIN;
- iPluginState = ENone;
- iHSForeGround = EFalse;
- iKeyLockOn = EFalse;
- iNetworkStatus = EUnknown;
- iData = CSapiData::NewL(this);
-
+ {
+ User::LeaveIfError( iRfs.Connect() );
+
+ iData = CSapiData::NewL( this );
}
// ---------------------------------------------------------------------------
@@ -101,123 +102,36 @@
CSapiDataPlugin::~CSapiDataPlugin()
{
// deactivate the publishers
- if( iData )
- {
- TRAP_IGNORE(iData->DeActivateL());
- delete iData;
- }
+ delete iData;
iObservers.Close();
Release( iContent );
iDataArray.ResetAndDestroy();
- if( iContentModel)
+ if ( iContentModel )
{
- for( TInt i = iDataCount-1;i>=0 ; i-- )
+ for ( TInt i = iDataCount - 1; i >= 0 ; i-- )
{
User::Free((TAny*)iContentModel[i].cid);
}
- delete []iContentModel;
- }
- iIconArray.Reset();
- }
-
-// ---------------------------------------------------------------------------
-// From class CAiContentPublisher
-// Plug-ins take ownership of the settings array, so it must either
-// store it in a member or free it.
-// ---------------------------------------------------------------------------
-//
-void CSapiDataPlugin::ConfigureL( RAiSettingsItemArray& aSettings )
- {
- if( iDataCount > 0 )
- {
- // We own the array so destroy it
- aSettings.ResetAndDestroy();
- return;
+
+ delete [] iContentModel;
}
- RAiSettingsItemArray contentItemsArr;
- RAiSettingsItemArray configurationItemsArr;
-
- TInt count = aSettings.Count();
- for(TInt i = 0; i < count; i++ )
- {
- MAiPluginSettings* pluginSetting = aSettings[i];
- if( pluginSetting->AiPluginItemType() == EAiPluginContentItem )
- {
- contentItemsArr.Append(pluginSetting);
- }
- else if( pluginSetting->AiPluginItemType() == EAiPluginConfigurationItem )
- {
- configurationItemsArr.Append(pluginSetting);
- }
- }
- iDataCount = contentItemsArr.Count();
- if(iDataCount > 0 )
- {
- // Create the content Model
- HBufC* contentId = HBufC::NewLC( KAiContentIdMaxLength + KAiPluginNameMaxLength );
- iContentModel = new TAiContentItem[iDataCount];
- for(TInt i = 0; i < iDataCount; i++)
- {
- MAiPluginContentItem& contentItem = (contentItemsArr[i])->AiPluginContentItem();
- iContentModel[i].id = i;
- if( contentItem.Type() == KText() || contentItem.Type() == KNewsTicker() )
- {
- // text
- iContentModel[i].type = KAiContentTypeText;
- }
- if( contentItem.Type() == KImage() )
- {
- // image
- iContentModel[i].type = KAiContentTypeBitmap;
- }
-
- contentId->Des().Copy(contentItem.Name());
- contentId->Des().Delete(0, contentId->Des().LocateReverse(KPluginNameSeprator) +1);
-
- TInt sizeOfContentId = contentId->Des().Size()+sizeof(wchar_t);
- iContentModel[i].cid = static_cast<const wchar_t*>( User::Alloc( sizeOfContentId ) );
- Mem::Copy((TAny*)iContentModel[i].cid, contentId->Des().PtrZ(), sizeOfContentId);
-
- contentId->Des().Delete( 0, contentId->Des().Length());
- }
-
- CleanupStack::PopAndDestroy( contentId );
- iContent = AiUtility::CreateContentItemArrayIteratorL( iContentModel, iDataCount );
- // Configurations
- iData->ConfigureL(configurationItemsArr);
-
- // Activate the publisher
- iData->ActivateL();
-
- // Register for notifications
- iData->RegisterPublisherObserverL();
-
- PublishL();
-
- iPluginState = ESuspend;
- iData->RegisterContentObserverL();
- }
- contentItemsArr.Reset();
- configurationItemsArr.Reset();
- // We own the array so destroy it
- aSettings.ResetAndDestroy();
- // publish the initial data
+ iIconArray.Reset();
+ iRfs.Close();
}
+
// ---------------------------------------------------------------------------
// Publishes widget's texts and images
// ---------------------------------------------------------------------------
//
void CSapiDataPlugin::PublishL()
- {
- User::LeaveIfError( iRfs.Connect() );
-
+ {
TInt observers( iObservers.Count() );
TInt transactionId = reinterpret_cast<TInt>( this );
- for ( int i = 0; i < observers; i++ )
+ for ( TInt i = 0; i < observers; i++ )
{
MAiContentObserver* observer = iObservers[i];
@@ -231,10 +145,8 @@
// Release memory of the published text
iDataArray.ResetAndDestroy();
// Release memory of the published icons
- iIconArray.Reset();
-
- }
- iRfs.Close();
+ iIconArray.Reset();
+ }
}
// ---------------------------------------------------------------------------
@@ -340,19 +252,20 @@
}
else // Interpret as File path
{
- RFile* iconFile = new (ELeave) RFile();
- err = iconFile->Open( iRfs, aPath, EFileShareReadersOnly | EFileRead );
+ RFile iconFile;
+
+ err = iconFile.Open( iRfs, aPath, EFileShareReadersOnly | EFileRead );
+
if( err == KErrNone )
{
- aObserver->Publish( *this, aContentId, *iconFile, aContentId );
+ aObserver->Publish( *this, aContentId, iconFile, aContentId );
}
else
{
aObserver->Clean( *this, aContentId, aContentId );
}
- iconFile->Close();
- delete iconFile;
- iconFile = NULL;
+
+ iconFile.Close();
}
}
}
@@ -438,38 +351,52 @@
}
// ---------------------------------------------------------------------------
-//Refresh a specific image of text in the widget
+//Refresh a specific image or text in the widget
// ---------------------------------------------------------------------------
//
-void CSapiDataPlugin::RefreshL(TDesC& aContentType, TDesC& aOperation)
+void CSapiDataPlugin::RefreshL( TDesC& aContentType,
+ TDesC& aOperation,
+ CLiwDefaultMap* aDataMap )
{
- 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, aContentType );
- }
- else
- {
- iData->RemoveL( observer, aContentType );
- }
-
- observer->Commit( transactionId );
- }
-
- // Relese memory of the published text
- iDataArray.ResetAndDestroy();
- iIconArray.Reset();
- }
- iRfs.Close();
+ __PRINTS("*** CSapiDataPlugin::RefreshL ***");
+
+ __PRINT( __DBG_FORMAT( "* Publisher name: %S, uid: 0x%x, content type: %S, operation: %S" ),
+ &PublisherInfo().Name(), PublisherInfo().Uid().iUid, &aContentType, &aOperation );
+
+ const TInt observerCount( iObservers.Count() );
+ const TInt transactionId = reinterpret_cast<TInt>( this );
+
+ for( TInt obsIndex = 0; obsIndex < observerCount; obsIndex++ )
+ {
+ MAiContentObserver* observer = iObservers[obsIndex];
+
+ if( observer->StartTransaction( transactionId ) == KErrNone )
+ {
+ if ( aOperation != KOperationDelete )
+ {
+ if( aDataMap )
+ {
+ iData->PublishDataL( observer, aDataMap );
+ }
+ else
+ {
+ iData->PublishL( observer, aContentType );
+ }
+ }
+ else
+ {
+ iData->RemoveL( observer, aContentType );
+ }
+
+ observer->Commit( transactionId );
+ }
+
+ // Relese memory of the published text
+ iDataArray.ResetAndDestroy();
+ iIconArray.Reset();
+ }
+
+ __PRINTS("*** CSapiDataPlugin::RefreshL - done ***");
}
// ---------------------------------------------------------------------------
@@ -483,269 +410,308 @@
{
aObserver->Clean( *this, aContentId, aContentId );
}
+ }
- }
-// ---------------------------------------------------------------------------
-// From class CAiContentPublisher
-// Plug-in is requested to unload its engines due backup operation
-// ---------------------------------------------------------------------------
+// ----------------------------------------------------------------------------
+// CSapiDataPlugin::Start
+//
+// ----------------------------------------------------------------------------
+//
+void CSapiDataPlugin::Start( TStartReason aReason )
+ {
+ if( aReason == ESystemStartup )
+ {
+ TRAP_IGNORE( PublishL() );
+ TRAP_IGNORE( iData->SetStartupReasonL( KSystemStartup ));
+ }
+ else if( aReason == EPageStartup )
+ {
+ TRAP_IGNORE( iData->SetStartupReasonL( KPageStartup ));
+ }
+ else if( aReason == EPluginStartup )
+ {
+ TRAP_IGNORE( PublishL() );
+ TRAP_IGNORE( iData->SetStartupReasonL( KPluginStartup));
+ }
+
+ // Listen for publisher registration to resend the events
+ TRAP_IGNORE( iData->RegisterPublisherObserverL() );
+ }
+
+// ----------------------------------------------------------------------------
+// CSapiDataPlugin::Stop
+//
+// ----------------------------------------------------------------------------
//
-void CSapiDataPlugin::Stop( TAiTransitionReason aReason )
+void CSapiDataPlugin::Stop( TStopReason aReason )
+ {
+ if( aReason == ESystemShutdown )
+ {
+ TRAP_IGNORE( iData->ChangePublisherStatusL( KSystemShutdown ));
+ }
+ else if( aReason == EPageShutdown )
+ {
+ TRAP_IGNORE( iData->ChangePublisherStatusL( KPageShutdown ));
+ }
+ else if( aReason == EPluginShutdown )
+ {
+ TRAP_IGNORE( iData->ChangePublisherStatusL( KPluginShutdown ));
+ }
+
+ if ( iData )
+ {
+ TRAP_IGNORE( iData->ChangePublisherStatusL( KDeActive ));
+ }
+ }
+
+// ----------------------------------------------------------------------------
+// CSapiDataPlugin::Resume
+//
+// ----------------------------------------------------------------------------
+//
+void CSapiDataPlugin::Resume( TResumeReason aReason )
{
- if( iPluginState == EResume )
+ if ( aReason == EForeground )
+ {
+ iPluginState = EResume;
+ TRAP_IGNORE( iData->ChangePublisherStatusL( KResume ));
+ }
+ }
+
+// ----------------------------------------------------------------------------
+// CSapiDataPlugin::Suspend
+//
+// ----------------------------------------------------------------------------
+//
+void CSapiDataPlugin::Suspend( TSuspendReason aReason )
+ {
+ if ( aReason == EBackground )
{
- Suspend( aReason );
+ iPluginState = ESuspend;
+ TRAP_IGNORE( iData->ChangePublisherStatusL( KSuspend ));
+ }
+ }
+
+// ----------------------------------------------------------------------------
+// CSapiDataPlugin::SetOnline
+//
+// ----------------------------------------------------------------------------
+//
+void CSapiDataPlugin::SetOnline()
+ {
+ if ( iNetworkStatus != EOnline )
+ {
+ iNetworkStatus = EOnline;
+ TRAP_IGNORE( iData->ChangePublisherStatusL( KOnLine ));
+ }
+ }
+
+// ----------------------------------------------------------------------------
+// CSapiDataPlugin::SetOffline
+//
+// ----------------------------------------------------------------------------
+//
+void CSapiDataPlugin::SetOffline()
+ {
+ if ( iNetworkStatus != EOffline )
+ {
+ iNetworkStatus = EOffline;
+ TRAP_IGNORE( iData->ChangePublisherStatusL( KOffLine ));
}
}
-// ---------------------------------------------------------------------------
-// From class CAiContentPublisher
-// Plug-in is instructed that it is allowed to consume CPU resources
-// ---------------------------------------------------------------------------
-//
-void CSapiDataPlugin::Resume( TAiTransitionReason aReason )
- {
- TRAP_IGNORE( DoResumeL( aReason ) );
- }
-
-// ---------------------------------------------------------------------------
-// From class CAiContentPublisher
-// Plug-in is instructed that it is not allowed to consume CPU resources
-// ---------------------------------------------------------------------------
+// ----------------------------------------------------------------------------
+// CSapiDataPlugin::SubscribeL
//
-void CSapiDataPlugin::Suspend( TAiTransitionReason aReason )
- {
- switch( aReason )
- {
- case EAiKeylockDisabled:
- case EAiKeylockEnabled:
- {
- // handled in resume
- TRAP_IGNORE( DoResumeL( aReason ) );
- break;
- }
- default :
- {
- iPluginState = ESuspend;
- TRAP_IGNORE ( iData->SuspendL() );
- }
- }
- }
-
-// ---------------------------------------------------------------------------
-// From class CAiContentPublisher
-// The plug-in MUST maintain a registry of subscribers and send
-// notification to all of them whenever the state changes or new content
-// is available
-// ---------------------------------------------------------------------------
+// ----------------------------------------------------------------------------
//
void CSapiDataPlugin::SubscribeL( MAiContentObserver& aObserver )
- {
+ {
iObservers.AppendL( &aObserver );
}
-
-// ---------------------------------------------------------------------------
-// From class CAiContentPublisher
-// Returns the extension interface. Actual type depends on the passed
-// aUid argument.
-// ---------------------------------------------------------------------------
+// ----------------------------------------------------------------------------
+// CSapiDataPlugin::ConfigureL
+//
+// ----------------------------------------------------------------------------
//
-TAny* CSapiDataPlugin::Extension( TUid aUid )
- {
- if ( aUid == KExtensionUidProperty )
- {
- return static_cast<MAiPropertyExtension*>( this );
- }
- else if (aUid == KExtensionUidEventHandler)
- {
- return static_cast<MAiEventHandlerExtension*>( this );
- }
- else
- {
- return NULL;
- }
+void CSapiDataPlugin::ConfigureL( RAiSettingsItemArray& aSettings )
+ {
+ if ( iDataCount > 0 )
+ {
+ // We own the array so destroy it
+ aSettings.ResetAndDestroy();
+ return;
+ }
+
+ RAiSettingsItemArray contentItemsArr;
+ RAiSettingsItemArray configurationItemsArr;
+
+ TInt count( aSettings.Count() );
+
+ for ( TInt i = 0; i < count; i++ )
+ {
+ MAiPluginSettings* setting( aSettings[i] );
+
+ if ( setting->AiPluginItemType() == EAiPluginContentItem )
+ {
+ contentItemsArr.Append( setting );
+ }
+ else if ( setting->AiPluginItemType() == EAiPluginConfigurationItem )
+ {
+ configurationItemsArr.Append( setting );
+ }
+ }
+
+ iDataCount = contentItemsArr.Count();
+
+ if ( iDataCount > 0 )
+ {
+ // Create the content Model
+ HBufC* contentId = HBufC::NewLC(
+ KAiContentIdMaxLength + KAiPluginNameMaxLength );
+
+ iContentModel = new TAiContentItem[iDataCount];
+
+ for ( TInt i = 0; i < iDataCount; i++ )
+ {
+ MAiPluginContentItem& contentItem(
+ contentItemsArr[i]->AiPluginContentItem() );
+
+ iContentModel[i].id = i;
+
+ if( contentItem.Type() == KText() ||
+ contentItem.Type() == KNewsTicker() ||
+ contentItem.Type() == KTextEditor() )
+ {
+ // text
+ iContentModel[i].type = KAiContentTypeText;
+ }
+ if( contentItem.Type() == KImage() )
+ {
+ // image
+ iContentModel[i].type = KAiContentTypeBitmap;
+ }
+
+ contentId->Des().Copy( contentItem.Name() );
+ contentId->Des().Delete( 0,
+ contentId->Des().LocateReverse( KPluginNameSeprator ) + 1 );
+
+ TInt sizeOfContentId( contentId->Des().Size() + sizeof( wchar_t ) );
+
+ iContentModel[i].cid =
+ static_cast< const wchar_t* >( User::Alloc( sizeOfContentId ) );
+
+ Mem::Copy( ( TAny* )iContentModel[i].cid,
+ contentId->Des().PtrZ(), sizeOfContentId );
+
+ contentId->Des().Delete( 0, contentId->Des().Length() );
+ }
+
+ CleanupStack::PopAndDestroy( contentId );
+
+ iContent = AiUtility::CreateContentItemArrayIteratorL(
+ iContentModel, iDataCount );
+
+ iData->SetContentIdL( PublisherInfo().Namespace() );
+
+ // Configurations
+ iData->ConfigureL( configurationItemsArr );
+
+ iPluginState = ESuspend;
+
+ // Listen the publisher content update
+ iData->RegisterContentObserverL();
+
+ // Activate the publisher
+ iData->ChangePublisherStatusL( KActive );
+ // Execute the active trigger
+ iData->TriggerActiveL();
+
+ }
+
+ contentItemsArr.Reset();
+ configurationItemsArr.Reset();
+
+ // We own the array so destroy it
+ aSettings.ResetAndDestroy();
}
-// ---------------------------------------------------------------------------
-// From class MAiPropertyExtension
-// Read property of publisher plug-in.
-// ---------------------------------------------------------------------------
+// ----------------------------------------------------------------------------
+// CSapiDataPlugin::SetProperty
//
-TAny* CSapiDataPlugin::GetPropertyL( TInt aProperty )
+// ----------------------------------------------------------------------------
+//
+void CSapiDataPlugin::SetProperty( TProperty aProperty, TAny* aAny )
{
- TAny* property = NULL;
-
- switch ( aProperty )
- {
- case EAiPublisherInfo:
+ if (aProperty == ECpsCmdBuffer )
{
- property = static_cast<TAiPublisherInfo*>( &iInfo );
- break;
- }
-
- case EAiPublisherContent:
+ iData->SetCommandBuffer( aAny );
+ }
+ }
+// ----------------------------------------------------------------------------
+// CSapiDataPlugin::GetProperty
+//
+// ----------------------------------------------------------------------------
+//
+TAny* CSapiDataPlugin::GetProperty( TProperty aProperty )
+ {
+ if ( aProperty == EPublisherContent )
{
- property = static_cast<MAiContentItemIterator*>( iContent );
- break;
- }
- default:
- break;
+ return static_cast< MAiContentItemIterator* >( iContent );
}
-
- return property;
+
+ return NULL;
}
-// ---------------------------------------------------------------------------
-// From class MAiPropertyExtension
-// Write property value to optimize the content model.
-// ---------------------------------------------------------------------------
+// ----------------------------------------------------------------------------
+// CSapiDataPlugin::HandleEvent
//
-void CSapiDataPlugin::SetPropertyL( TInt aProperty, TAny* aValue )
- {
- if( aProperty == EAiPublisherInfo )
- {
- ASSERT( aValue );
-
- const TAiPublisherInfo* info(
- static_cast<const TAiPublisherInfo*>( aValue ) );
-
- iInfo = *info;
-
- iData->SetContentIdL( info->iNamespace );
- }
- }
-
-// ---------------------------------------------------------------------------
-// From class MAiEventHandlerExtension.
-// Handles an event sent by the AI framework.
-// ---------------------------------------------------------------------------
-//
-void CSapiDataPlugin::HandleEvent( TInt /*aEvent*/, const TDesC& /*aParam*/ )
- {
- // This is not as there is no event id to retrieve in this dynamic plugin.
- }
-
-// ---------------------------------------------------------------------------
-// From class MAiEventHandlerExtension.
-// Handles an event sent by the AI framework.
-// ---------------------------------------------------------------------------
+// ----------------------------------------------------------------------------
//
void CSapiDataPlugin::HandleEvent( const TDesC& aEventName, const TDesC& aParam )
{
- // We have no way of reporting errors to framework so just ignore them.
- TRAP_IGNORE(iData->ExecuteActionL( aEventName , aParam ) );
+ TRAP_IGNORE( iData->ExecuteActionL( aEventName , aParam ) );
+ }
+
+// ----------------------------------------------------------------------------
+// CSapiDataPlugin::HasMenuItem
+//
+// ----------------------------------------------------------------------------
+//
+TBool CSapiDataPlugin::HasMenuItem( const TDesC16& aMenuItem )
+ {
+ return iData->HasMenuItem ( aMenuItem );
}
-// ---------------------------------------------------------------------------
-// From class MAiEventHandlerExtension.
-// Invoked by the framework for querying if plugin has menu item
-// ---------------------------------------------------------------------------
+// ----------------------------------------------------------------------------
+// CSapiDataPlugin::IsActive
//
-TBool CSapiDataPlugin::HasMenuItem( const TDesC& aMenuItem )
- {
- return iData->HasMenuItem ( aMenuItem );
- }
-
-// ---------------------------------------------------------------------------
-// From class CAiContentPublisher
-// framework instructs plug-in that it is allowed to consume CPU resources
-// ---------------------------------------------------------------------------
+// ----------------------------------------------------------------------------
//
-void CSapiDataPlugin::DoResumeL( TAiTransitionReason aReason )
+TBool CSapiDataPlugin::IsActive() const
{
- //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;
- }
- }
+ return iPluginState == EResume;
}
-// ---------------------------------------------------------------------------
-// Is plugin active to publish the data
-// ---------------------------------------------------------------------------
+// ----------------------------------------------------------------------------
+// CSapiDataPlugin::Data
+//
+// ----------------------------------------------------------------------------
//
-TBool CSapiDataPlugin::IsActive()
+CSapiData* CSapiDataPlugin::Data() const
{
- return (iPluginState == EResume );
+ return iData;
}
+
+// ----------------------------------------------------------------------------
+// CSapiDataPlugin::NetworkStatus
+//
+// ----------------------------------------------------------------------------
+//
+CSapiDataPlugin::TPluginNetworkStatus CSapiDataPlugin::NetworkStatus() const
+ {
+ return iNetworkStatus;
+ }
+
+// End of file
--- a/idlefw/plugins/shortcutplugin/BWINS/aiscutextservu.def Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,11 +0,0 @@
-EXPORTS
- ?Connect@RAiScutExtServ@@QAEHXZ @ 1 NONAME ; int RAiScutExtServ::Connect(void)
- ?IsInShortcuts@RAiScutExtServ@@QBEHAAH@Z @ 2 NONAME ; int RAiScutExtServ::IsInShortcuts(int &) const
- ?IssuePutInShortcuts@RAiScutExtServ@@QAEHXZ @ 3 NONAME ; int RAiScutExtServ::IssuePutInShortcuts(void)
- ?ResetIcon@RAiScutExtServ@@QAEHXZ @ 4 NONAME ; int RAiScutExtServ::ResetIcon(void)
- ?ResetPopupText@RAiScutExtServ@@QAEHXZ @ 5 NONAME ; int RAiScutExtServ::ResetPopupText(void)
- ?UpdateIconL@RAiScutExtServ@@QAEHABVCGulIcon@@@Z @ 6 NONAME ; int RAiScutExtServ::UpdateIconL(class CGulIcon const &)
- ?UpdatePopupTextL@RAiScutExtServ@@QAEHABVMDesC16Array@@@Z @ 7 NONAME ; int RAiScutExtServ::UpdatePopupTextL(class MDesC16Array const &)
- ?Version@RAiScutExtServ@@QBE?AVTVersion@@XZ @ 8 NONAME ; class TVersion RAiScutExtServ::Version(void) const
- ?Connect@RAiScutExtServ@@QAEHABVTDesC16@@@Z @ 9 NONAME ; int RAiScutExtServ::Connect(class TDesC16 const &)
-
--- a/idlefw/plugins/shortcutplugin/EABI/aiscutextservu.def Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,11 +0,0 @@
-EXPORTS
- _ZN14RAiScutExtServ11UpdateIconLERK8CGulIcon @ 1 NONAME
- _ZN14RAiScutExtServ14ResetPopupTextEv @ 2 NONAME
- _ZN14RAiScutExtServ16UpdatePopupTextLERK12MDesC16Array @ 3 NONAME
- _ZN14RAiScutExtServ19IssuePutInShortcutsEv @ 4 NONAME
- _ZN14RAiScutExtServ7ConnectEv @ 5 NONAME
- _ZN14RAiScutExtServ9ResetIconEv @ 6 NONAME
- _ZNK14RAiScutExtServ13IsInShortcutsERi @ 7 NONAME
- _ZNK14RAiScutExtServ7VersionEv @ 8 NONAME
- _ZN14RAiScutExtServ7ConnectERK7TDesC16 @ 9 NONAME
-
Binary file idlefw/plugins/shortcutplugin/cenrep/keys_scutplugin.xls has changed
Binary file idlefw/plugins/shortcutplugin/conf/scutplugin.confml has changed
Binary file idlefw/plugins/shortcutplugin/conf/scutplugin_10275104.crml has changed
--- a/idlefw/plugins/shortcutplugin/group/aiscutextserv.mmp Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,39 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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: Project definition file for AI Shortcut xSP Extension API
-*
-*/
-
-#include <platform_paths.hrh>
-
-TARGET aiscutextserv.dll
-TARGETTYPE DLL
-UID 0x1000008D 0x10282CDD
-
-CAPABILITY ALL -TCB
-VENDORID VID_DEFAULT
-
-SOURCEPATH ../src
-SOURCE aiscutextserv.cpp
-
-APP_LAYER_SYSTEMINCLUDE
-
-LIBRARY euser.lib
-LIBRARY efsrv.lib
-LIBRARY bafl.lib
-LIBRARY estor.lib
-LIBRARY egul.lib
-LIBRARY fbscli.lib
-
-// End of File.
--- a/idlefw/plugins/shortcutplugin/group/aiscutplugin.mmp Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,139 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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: Project definition file for project ShortcutPlugin
-*
-*/
-
-#include <platform_paths.hrh>
-#include <data_caging_paths.hrh>
-#include <platform/mw/aiscutuids.hrh>
-
-//MACRO MY_DEBUG
-
-//#include "../../../inc/common/debug.h"
-//#define AI_ENABLE_RD_LOGGING
-#define AI_RD_LOG_TO_DEBUG_OUTPUT
-
-// Master flag for enabling xSP extensions
-#define AI_SCUTPLUGIN_XSP_EXTENSIONS
-
-TARGET aiscutplugin.dll
-TARGETTYPE PLUGIN
-UID 0x10009D8D AI_UID_ECOM_DLL_CONTENTPUBLISHER_SCUTPLUGIN
-
-CAPABILITY CAP_ECOM_PLUGIN
-VENDORID VID_DEFAULT
-
-SOURCEPATH ../src
-
-// xSP extension
-#ifdef AI_SCUTPLUGIN_XSP_EXTENSIONS
-SOURCE caiscutengineext.cpp
-SOURCE caiscutextserver.cpp
-SOURCE caiscutextsession.cpp
-SOURCE caiscutshortcutext.cpp
-SOURCE PopupFSM.cpp
-SOURCE cpopupeventhandler.cpp
-SOURCE caiscutextdata.cpp
-SOURCE caiscutextdatamodel.cpp
-SOURCE aiscutfactoryext.cpp
-USERINCLUDE .
-LIBRARY estor.lib
-#else
-SOURCE aiscutfactory.cpp
-#endif
-
-SOURCE caiscutplugin.cpp
-SOURCE caiscutengine.cpp
-SOURCE caiscutshortcut.cpp
-SOURCE caiscutshortcutinfo.cpp
-SOURCE caiscuttarget.cpp
-SOURCE caiscuttargetapp.cpp
-SOURCE caiscuttargetbkm.cpp
-SOURCE caiscuttargethttp.cpp
-SOURCE caiscuttargetkeylock.cpp
-SOURCE caiscuttargetmessagingview.cpp
-SOURCE caiscuttargetnewmsg.cpp
-SOURCE caiscuttargetempty.cpp
-SOURCE aiscuttargetshutter.cpp
-
-SOURCE taiscutparser.cpp
-SOURCE aidefaultshortcut.cpp
-SOURCE aiscutappuidparser.cpp
-SOURCE aiscutrepositorywatcher.cpp
-
-START RESOURCE aiscutplugin.rss
-TARGET aiscutplugin.rsc
-END
-
-START RESOURCE aiscutpluginres.rss
-HEADER
-TARGET aiscutpluginres.rsc
-TARGETPATH RESOURCE_FILES_DIR
-LANGUAGE_IDS
-END
-
-START RESOURCE aiscuttexts.rss
-HEADER
-TARGET aiscuttexts.rsc
-TARGETPATH RESOURCE_FILES_DIR
-LANGUAGE_IDS
-END
-
-USERINCLUDE ../../../inc/common
-USERINCLUDE ../inc
-
-APP_LAYER_SYSTEMINCLUDE
-
-LIBRARY euser.lib
-LIBRARY cone.lib
-LIBRARY ecom.lib
-LIBRARY apparc.lib // TApaTask
-LIBRARY apgrfx.lib // CApaAppListNotifier
-LIBRARY viewcli.lib // CVwsSessionWrapper
-LIBRARY ws32.lib // RWsSession
-LIBRARY inetprotutil.lib // TUriParser
-LIBRARY centralrepository.lib // CRepository
-LIBRARY cenrepnotifhandler.lib // CCenRepNotifyHandler
-LIBRARY msgs.lib // Message Server
-LIBRARY muiu.lib // MsvUiServiceUtilities
-LIBRARY sendui.lib // Send UI
-LIBRARY egul.lib // CGulIcon
-LIBRARY aknskins.lib // AknsUtils
-LIBRARY charconv.lib // CnvUtfConverter
-LIBRARY avkon.lib
-LIBRARY aknnotify.lib
-LIBRARY featmgr.lib
-LIBRARY aiutils.lib
-LIBRARY fbscli.lib
-LIBRARY aknicon.lib
-LIBRARY favouritesengine.lib
-LIBRARY commonengine.lib // For RConeResourceLoader
-LIBRARY platformenv.lib // For PathInfo
-LIBRARY efsrv.lib
-LIBRARY bafl.lib
-LIBRARY imcm.lib
-LIBRARY akncapserverclient.lib // Fastswap
-#ifdef __WEB_WIDGETS
-LIBRARY widgetregistryclient.lib
-#endif
-LIBRARY keylockpolicyapi.lib
-LIBRARY gfxtrans.lib
-LIBRARY akntransitionutils.lib
-LIBRARY gslauncher.lib
-
-// Debugging dependencies
-LIBRARY flogger.lib
-
-// End of File.
--- a/idlefw/plugins/shortcutplugin/group/aiscutsettings.mmp Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,100 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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: Project definition file for project ShortcutPlugin settings
-*
-*/
-
-
-#include <platform_paths.hrh>
-
-#include <data_caging_paths.hrh>
-
-#include <platform/mw/aiscutuids.hrh>
-
-//#include "../../../inc/common/debug.h"
-//#define AI_ENABLE_RD_LOGGING
-#define AI_RD_LOG_TO_DEBUG_OUTPUT
-
-//MACRO MY_DEBUG
-
-TARGET aiscutsettings.dll
-TARGETTYPE PLUGIN
-UID 0x10009D8D AI_UID_ECOM_DLL_SETTINGS_SCUTPLUGIN
-
-CAPABILITY CAP_ECOM_PLUGIN
-VENDORID VID_DEFAULT
-
-SOURCEPATH ../src
-SOURCE caiscutsettings.cpp
-SOURCE caiscutsettingsimplementationtable.cpp
-SOURCE caiscutsettingscontainer.cpp
-SOURCE caiscutsettingsmodel.cpp
-SOURCE caiscutsettingsitem.cpp
-SOURCE caiscutsettingsapplist.cpp
-SOURCE caiscutsettingsbkmlist.cpp
-
-SOURCE taiscutparser.cpp
-SOURCE aidefaultshortcut.cpp
-SOURCE aiscutappuidparser.cpp
-SOURCE aiscutrepositorywatcher.cpp
-
-START RESOURCE aiscutsettings.rss
-TARGET aiscutsettings.rsc
-END
-
-START RESOURCE aiscutsettingsres.rss
-HEADER
-TARGET aiscutsettingsres.rsc
-TARGETPATH RESOURCE_FILES_DIR
-LANGUAGE_IDS
-END
-
-USERINCLUDE ../../../inc/common
-USERINCLUDE ../inc
-USERINCLUDE ../../../inc
-
-APP_LAYER_SYSTEMINCLUDE
-
-LIBRARY euser.lib
-LIBRARY ecom.lib
-LIBRARY avkon.lib
-LIBRARY bafl.lib
-LIBRARY cone.lib
-LIBRARY efsrv.lib
-LIBRARY eikcoctl.lib
-LIBRARY eikcore.lib
-LIBRARY cdlengine.lib
-LIBRARY centralrepository.lib
-LIBRARY cenrepnotifhandler.lib // CCenRepNotifyHandler
-LIBRARY gsframework.lib // For base classes
-LIBRARY gslistbox.lib // For CGSListBoxItemTextArray
-LIBRARY gsecomplugin.lib
-LIBRARY commonengine.lib // For RConeResourceLoader
-LIBRARY inetprotutil.lib // For TUriParser
-LIBRARY apgrfx.lib // For RApaLsSession
-LIBRARY apparc.lib // For TApaAppInfo
-LIBRARY msgs.lib // For Message Server
-LIBRARY platformenv.lib // For PathInfo
-LIBRARY hlplch.lib // for HlpLauncher
-LIBRARY featmgr.lib // For feature manager
-LIBRARY favouritesengine.lib
-LIBRARY javaregistryclient.lib // For JavaRegistry
-#ifdef __WEB_WIDGETS
-LIBRARY widgetregistryclient.lib
-#endif
-
-// Debugging dependencies
-LIBRARY flogger.lib
-
-// End of File.
--- a/idlefw/plugins/shortcutplugin/group/backup_registration.xml Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,6 +0,0 @@
-<?xml version="1.0" standalone="yes"?>
-<!-- Backup registration file for AI2 shortcuts cenrep keys -->
-<backup_registration version="1.0">
- <proxy_data_manager sid = "0x10202BE9" />
- <restore requires_reboot = "no"/>
-</backup_registration>
--- a/idlefw/plugins/shortcutplugin/group/bld.inf Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,57 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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: Bld.inf for Shortcut Plugin.
-*
-*/
-
-
-#include <platform_paths.hrh>
-
-PRJ_PLATFORMS
-DEFAULT
-
-PRJ_EXPORTS
-../loc/ai3scutsettings.loc MW_LAYER_LOC_EXPORT_PATH(ai3scutsettings.loc)
-../loc/ai3scutplugin.loc MW_LAYER_LOC_EXPORT_PATH(ai3scutplugin.loc)
-
-../rom/aiscutplugin_resources.iby LANGUAGE_MW_LAYER_IBY_EXPORT_PATH(aiscutplugin_resources.iby)
-../rom/aiscutplugin.iby CORE_MW_LAYER_IBY_EXPORT_PATH(aiscutplugin.iby)
-
-
-// Backup registration
-backup_registration.xml /epoc32/data/z/private/102750f9/backup_registration.xml
-backup_registration.xml /epoc32/release/winscw/udeb/z/private/102750f9/backup_registration.xml
-backup_registration.xml /epoc32/release/winscw/urel/z/private/102750f9/backup_registration.xml
-
-// Generic configuration interface for component cenrep settings
-../conf/scutplugin.confml APP_LAYER_CONFML(scutplugin.confml)
-../conf/scutplugin_10275104.crml APP_LAYER_CRML(scutplugin_10275104.crml)
-
-PRJ_EXTENSIONS
-
-START EXTENSION s60/mifconv
-OPTION TARGETFILE aiscutplugin.mif
-OPTION HEADERFILE aiscutplugin.mbg
-OPTION SOURCES -c8,8 qgn_prop_ai_shortcut -c8,8 qgn_menu_url \
- -c8,8 qgn_menu_mce_sel_mes -c8,8 qgn_menu_mce_syncmail \
- -c8,8 qgn_menu_am -c8,8 qgn_prop_cp_conn_shortcut \
- -c8,8 qgn_prop_psln_ai_sub
-END
-
-PRJ_MMPFILES
-aiscutsettings.mmp
-aiscutplugin.mmp
-aiscutextserv.mmp
-
-// End of File.
--- a/idlefw/plugins/shortcutplugin/inc/aidefaultshortcut.h Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,37 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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: Platform default shortcuts.
-*
-*/
-
-
-#ifndef AIDEFAULTSHORTCUT_H
-#define AIDEFAULTSHORTCUT_H
-
-#include <e32def.h> // for TInt
-#include <e32cmn.h> // for TUid, TDes
-
-
-class TAiDefaultShortcut
-{
-public:
- /**
- * Get S60 platform default shortcut uid and definition for index aIndex.
- *
- */
- static void GetDefaultShortcut(TInt aIndex, TUid& aUid, TDes& aDefinition);
-
-};
-
-#endif
--- a/idlefw/plugins/shortcutplugin/inc/aiscutapptitle.rh Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,39 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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: Shortcut plug-in app title structs.
-*
-*/
-
-
-#ifndef AISCUTAPPTITLE_RH
-#define AISCUTAPPTITLE_RH
-
-STRUCT AI_APP_TITLE_ITEM
-{
- LONG appuid;
- LONG viewid = -1;
- LTEXT longtitle = "";
- LTEXT shorttitle = "";
- LTEXT skeytitle = "";
- LTEXT msktitle = "";
-}
-
-STRUCT AI_APP_TITLE_LIST
-{
- STRUCT items[]; // AI_APP_TITLE_ITEM items.
-}
-
-#endif // AISCUTAPPTITLE_RH
-
-// End of File.
--- a/idlefw/plugins/shortcutplugin/inc/aiscutappuidparser.h Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,88 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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: Shortcut definition parser.
-*
-*/
-
-
-#ifndef AISCUTAPPUIDPARSER_H
-#define AISCUTAPPUIDPARSER_H
-
-// INCLUDES
-#include <e32base.h>
-
-// CLASS DECLARATIONS
-
-/**
- * Parser class that interpretes the given text as a description of
- * application position data.
- */
-class TAiScutAppUidParser
-{
-public: // Construction
-
- /**
- * Standard C++ constructor.
- * @param aData Data which will be parsed
- * @param aAppPositions This array will be filled with parsed
- * application positions.
- */
- TAiScutAppUidParser(const TDesC& aData, RArray<TUid>& aAppPositions);
-
-public: // Interface
-
- /**
- * Parses the data that was given in constructor and fills the
- * application position array with parsed data.
- */
- void ParseL();
-
-private: // Implementation
- /**
- * Skips the given char.
- * Skipping can be done conditionally or unconditionally.
- * If conditional skipping is used, next character in data will be
- * skipped only if it is the same as given character.
- * If unconditional skipping is used the next character in data must
- * be the given character, otherwise the data is invalid and parsing
- * will be stopped.
- * @param aChar Character that will be skipped.
- * @param aConditionalSkip If ETrue, use conditional skipping,
- * otherwise unconditional skipping will be
- * used.
- */
- void SkipChar(TChar aChar, TBool aConditionalSkip);
-
- /**
- * Reads app UID from data. If data doesn't contain app UID in the
- * point in which this function is called, data is considered invalid.
- * @return App UID that was read from data.
- */
- TUid ReadAppUid();
-
-private:
-
- /// Ref: Application positions array that will be filled when parsing
- RArray<TUid>& iUidArray;
-
- /// Lexer for data
- TLex iLex;
-
- /// Is the data that has been read so far valid.
- TBool iLexIsValid;
-};
-
-#endif // AISCUTAPPUIDPARSER_H
-
-// End of File
--- a/idlefw/plugins/shortcutplugin/inc/aiscutfactory.h Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,61 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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: Shortcut plug-in factory class.
-*
-*/
-
-
-#ifndef AISCUTENGINEFACTORY_H
-#define AISCUTENGINEFACTORY_H
-
-#include <e32std.h>
-
-class CAiScutEngine;
-class CAiScutPlugin;
-class CAiScutShortcut;
-
-/**
- * AiScutEngineFactory
- *
- * Creates various classes used in AiScutPlugin.
- *
- * @since S60 v3.2
- */
-class AiScutFactory
- {
- public:
- /**
- * Creates CAiScutEngine
- * @since S60 v3.2
- */
- static CAiScutEngine* CreateAiScutEngineL( CAiScutPlugin& aPlugin );
-
- /**
- * Creates CAiScutShortcut
- * @since S60 v3.2
- */
- static CAiScutShortcut* CreateAiScutShortcutL( TInt aId,
- const TDesC& aTarget, CAiScutEngine& aEngine );
-
- /**
- * Creates CAiScutShortcut
- * @since S60 v3.2
- */
- static CAiScutShortcut* CreateAiScutShortcutLC( TInt aId,
- const TDesC& aTarget, CAiScutEngine& aEngine );
- };
-
-#endif // AISCUTENGINEFACTORY_H
-
-// End of File.
--- a/idlefw/plugins/shortcutplugin/inc/aiscutpluginprivatecrkeys.h Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,26 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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: Shortcut Plug-in private CenRep keys.
-*
-*/
-
-
-#ifndef AISCUTPLUGINPRIVATECRKEYS_H
-#define AISCUTPLUGINPRIVATECRKEYS_H
-
-#include <aiscutplugindomaincrkeys.h>
-
-#endif // AISCUTPLUGINPRIVATECRKEYS_H
-
-// End of File.
--- a/idlefw/plugins/shortcutplugin/inc/aiscutrepositorywatcher.h Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,80 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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: Shortcut definition parser.
-*
-*/
-
-
-#ifndef AISCUTREPOSITORYWATCHER_H
-#define AISCUTREPOSITORYWATCHER_H
-
-// INCLUDES
-#include <e32base.h>
-#include <cenrepnotifyhandler.h> // For CCenRepNotifyHandler
-
-// CLASS DECLARATIONS
-
-class CAiScutRepositoryWatcher : public CBase, public MCenRepNotifyHandlerCallback
-{
-public:
- static CAiScutRepositoryWatcher* NewL(
- const TUid aUid,
- const TUint32 aKey,
- CCenRepNotifyHandler::TCenRepKeyType aKeyType,
- TCallBack aCallBack,
- CRepository* aRepository);
-
- static CAiScutRepositoryWatcher* NewL(
- const TUid aUid,
- TCallBack aCallBack,
- CRepository* aRepository);
-
- ~CAiScutRepositoryWatcher();
-
- void StartListeningL();
-
- void StopListening();
-
- TUint32 ChangedKey();
-
-public: // from MCenRepNotifyHandlerCallback
- void HandleNotifyInt (TUint32 aKey, TInt aNewValue);
- void HandleNotifyString (TUint32 aKey, const TDesC16& aNewValue);
- void HandleNotifyGeneric(TUint32 aKey);
- void HandleNotifyError (TUint32 aKey, TInt aError, CCenRepNotifyHandler* aHandler);
-
-private:
- CAiScutRepositoryWatcher(
- const TUid aUid,
- const TUint32 aKey,
- TCallBack aCallBack,
- CRepository* aRepository);
-
- void ConstructL(CCenRepNotifyHandler::TCenRepKeyType aKeyType);
-
- void ConstructL();
-
-private:
- TUid iUid;
- TUint32 iKey;
- TUint32 iChangedKey;
- TCallBack iCallBack;
- CRepository* iRepository;
- CCenRepNotifyHandler* iNotifyHandler;
-
-};
-
-#endif // AISCUTREPOSITORYWATCHER_H
-
-// End of File
--- a/idlefw/plugins/shortcutplugin/inc/aiscutsettings.hrh Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,48 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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: Resource headers for Shortcut plug-in
-*
-*/
-
-
-#ifndef AISCUTSETTINGS_HRH
-#define AISCUTSETTINGS_HRH
-
-/**
- * Menu command ids for the Shortcut plug-in Settings
- */
-enum TAiScutSettingsMenuCommands
-{
- EAiScutSettingsCmdChange = 0x6000,
-
- EAiScutSettingsCmdChangeToApps,
- EAiScutSettingsCmdChangeToUrl,
- EAiScutSettingsCmdChangeToBookmark,
- EAiScutSettingsCmdChangeShortcutType
-};
-
-/**
- * Shortcut setting types
- */
-enum TAiScutSettingType
-{
- EAiScutSettingTypeUndefined = -1,
- EAiScutSettingTypeApplication,
- EAiScutSettingTypeBookmark,
- EAiScutSettingTypeUrl
-};
-
-#endif // AISCUTSETTINGS_HRH
-
-// End of File.
--- a/idlefw/plugins/shortcutplugin/inc/aiscuttargetshutter.h Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,135 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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 CAISCUTTARGET_H
-#define CAISCUTTARGET_H
-
-#include <e32base.h>
-#include <coemain.h>
-
-class TApaTask;
-class CPeriodic;
-
-/**
- * Base class for shortcut targets
- *
- * @since S60 v3.2
- */
-class CAiScutTargetShutter : public CActive
-{
-
-public:
-
- static CAiScutTargetShutter* NewL( CCoeEnv* aEnv, TUid aAppUid, TBool aIsRunning, TBool aIsDialog );
-
- virtual ~CAiScutTargetShutter();
-
- void StartL();
-
-private:
-
- CAiScutTargetShutter( CCoeEnv* aEnv, TUid aAppUid );
-
- void ConstructL( TBool aIsRunning, TBool aIsDialog );
-
- // from base class CActive
-
- /**
- * From CActive
- *
- * @since S60 v3.2
- */
- void DoCancel();
-
- /**
- * From CActive
- *
- * @since S60 v3.2
- */
- void RunL();
-
- /**
- * From CActive
- * Handles an error situation
- *
- * @since S60 v3.2
- * @param aError Error code received from system
- * @return Error code after error handling
- */
- TInt RunError( TInt aError );
-
- static TInt TaskExistsCallback( TAny* aPtr );
-
- static TInt TaskNotExistsCallback( TAny* aPtr );
-
- void Run();
-
-private: //data
-
- /**
- * Pointer to the control environment
- * Not own.
- */
- CCoeEnv* iEnv;
-
- /**
- * Target application uid
- */
- TUid iAppUid;
-
- /**
- * Window Server session
- */
- RWsSession iWsSession;
-
- /**
- * Task exsit or not
- */
- TBool iTaskExists;
-
- /**
- * Periodic timer
- * Own
- */
- CPeriodic* iPeriodic;
-
- /**
- * Count retry times
- */
- TInt iCounter;
-
- /**
- * Target application is running
- */
- TBool iIsRunning;
-
- /**
- * Target app is dialog
- */
- TBool iIsDialog;
-
-
- /**
- *
- */
- TBool iTaskKilled;
-};
-
-#endif // CAISCUTTARGET_H
-
-// End of File.
--- a/idlefw/plugins/shortcutplugin/inc/caiscutengine.h Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,667 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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: Shortcut plug-in engine class.
-*
-*/
-
-
-#ifndef CAISCUTENGINE_H
-#define CAISCUTENGINE_H
-
-#include <apgnotif.h> // For MApaAppListServObserver
-#include <msvapi.h> // For MMsvSessionObserver
-#include <favouritesdb.h> // For RFavouritesDb
-#include <favouritesdbobserver.h> // For MFavouritesDbObserver
-#include <ConeResLoader.h>
-#ifdef __WEB_WIDGETS
-#include <widgetregistryclient.h>
-#endif
-
-#include <aiutility.h>
-
-#include "aiscutdefs.h"
-#include "taiscutparser.h"
-#include "aicontentpublisher.h"
-
-class CCoeEnv;
-class CVwsSessionWrapper;
-class CActiveFavouritesDbNotifier;
-class CAiScutPlugin;
-class CAiScutShortcut;
-class CRepository;
-class CAiScutRepositoryWatcher;
-class CAiScutTargetShutter;
-class CKeyLockPolicyApi;
-
-/**
- * Defines the different scenarios of shortcut access checking.
- */
-enum TScutAccessCheckType
-{
- EScutCheckMailbox,
- EScutCheckApp,
- EScutCheckBkm,
- EScutCheckAll
-};
-
-/**
- * Defines which default can be used, when daulting is needed (uninstall/mem card removed)
- */
-enum TScutDefault
-{
- EScutUserDefined = 0,
- EScutDefaultToPlatform,
- EScutDefaultToTheme
-};
-
-enum TScutLockKey
- {
- EScutFirstLockKey,
- EScutSecondLockKey
-};
-
-/**
- * Shortcut plug-in engine class.
- *
- * Handles most of plug-in activity.
- *
- * @since S60 v3.2
- */
-class CAiScutEngine : public CBase
- , public MMsvSessionObserver
- , public MApaAppListServObserver
- , public MFavouritesDbObserver
-{
-
-public:
-
- /**
- * First phase contructor.
- *
- * @since S60 v3.2
- * @param aPlugin Reference to the main plug-in class
- */
- static CAiScutEngine* NewL(CAiScutPlugin& aPlugin);
-
- virtual ~CAiScutEngine();
-
- // from base class MMsvSessionObserver
-
- /**
- * Handles an event from the message server
- *
- * @since S60 v3.2
- * @param aEvent Indicates the event type.
- * @param aArg1 Event type-specific argument value
- * @param aArg2 Event type-specific argument value
- * @param aArg3 Event type-specific argument value
- */
- void HandleSessionEventL(
- TMsvSessionEvent aEvent, TAny* aArg1, TAny* aArg2, TAny* aArg3);
-
- // from base class MApaAppListServObserver
-
- /**
- * From MApaAppListServObserver.
- * Handles a change in the application list
- *
- * @since S60 v3.2
- * @param aEvent Event id
- */
- void HandleAppListEvent(TInt aEvent);
-
- /**
- * Resumes the engine
- *
- * @since S60 v3.2
- */
- virtual void ResumeL(TBool aPublishAll, TAiTransitionReason aReason);
-
- /**
- * Suspends the engine
- *
- * @since S60 v3.2
- */
- void Suspend();
-
- /**
- *
- */
- static TInt HandleShortcutsChanged(TAny* aPtr);
-
- /**
- *
- */
- static TInt HandleHiddenAppsChanged(TAny* aPtr);
-
- /**
- *
- */
- TBool IsHidden(const TUid& aAppUid) const;
-
- /**
- * Handles an event sent by the AI framework
- *
- * @since S60 v3.2
- * @param aEvent Event (service) id
- * @param aParam Event parameter(s)
- */
- virtual void HandleAiEventL(TInt aEvent, const TDesC& aParam);
-
- /**
- * Called by the timer. Retries the access check for shortcuts.
- *
- * @since S60 v3.2
- */
- void RetryAccessCheck();
-
- /**
- * Checks if application is midlet or widget.
- * @param aUid Application uid
- * @since S60 v3.2
- */
- TBool IsNonNative(const TUid& aUid);
-
- TBool IsHiddenFromFSW( const TUid& aAppUid );
-#ifdef __WEB_WIDGETS
- /**
- * Ask client session if given UID is widget.
- */
- TBool IsWidget(const TUid& aUid);
-#endif
-
- /**
- * Handles call state changes (non-static version).
- *
- * @since S60 v3.2
- */
- void HandleCallStateChange();
-
- /**
- * Merges the user defined shortcuts with the defaults.
- * @param aType shortcut type
- * @param aRecreateAll forces the recreation of shortcuts
- * @since S60 v3.2
- */
- void MergeShortcuts(TShortcutType aType, TBool aRecreateAll);
-
- /**
- *Get Application title
- */
- TBool GetAppTitle(
- const TUid& aAppUid,
- const TUid& aViewId,
- TDes& aTitle,
- TAiScutAppTitleType aType);
-
- /**
- * Returns the application architecture server session owned by the engine
- *
- * @since S60 v3.2
- * @return Reference to RApaLsSession
- */
- inline RApaLsSession& ApaSession();
-
- /**
- * Returns reference to the bookmark database owned by the engine
- *
- * @since S60 v3.2
- * @return Reference to RFavouritesDb
- */
- inline RFavouritesDb& FavouritesDb();
-
- /**
- * Returns the message server session owned by the engine
- *
- * @since S60 v3.2
- * @return Pointer to CMsvSession
- */
- inline CMsvSession* MsvSession();
-
- /**
- * Returns a pointer to view server session wrapper.
- *
- * @since S60 v3.2
- * @return Pointer to view server session wrapper
- */
- inline CVwsSessionWrapper* VwsSession();
-
- /**
- * Returns a pointer to the coe environment
- *
- * @since S60 v3.2
- * @return Pointer to coe environment
- */
- inline CCoeEnv* Env();
-
- /**
- * Creates the shortcuts merging the defaults with user defined ones.
- *
- * @since S60 v3.2
- */
- void CreateShortcutsL();
-
-protected:
-
-
- /**
- * C++ constructor
- *
- * @since S60 v3.2
- * @param aPlugin Reference to the main plug-in class
- */
- CAiScutEngine(CAiScutPlugin& aPlugin);
-
- void ConstructL();
-
-protected:
-
- /**
- * Merges the user defined shortcuts with the defaults.
- * Leaving version
- * @param aType shortcut type
- * @param aRecreateAll forces the recreation of shortcuts
- * @since S60 v3.2
- */
- void MergeShortcutsL(TShortcutType aType, TBool aRecreateAll);
-
- /**
- * Checks shortcut accessibility. If the AppArc server or message server
- * respond that they are not ready, a timer is launched to check later.
- *
- * @since S60 v3.2
- * @param aCheckType Specifies which kind of shortcuts should check its access
- * @param aPublishAll All shortcuts are published
- */
- void CheckAccessAndPublish(TInt aCheckType, TBool aPublishAll);
-
- /**
- * Tells each shortcut to check whether or not its target is accessible.
- * Shortcuts will revert to the default setting if the user setting is
- * not accessible.
- *
- * @since S60 v3.2
- * @param aCheckType Specifies which kind of shortcuts should check its access
- * @param aPublishAll All shortcuts are published
- */
- void CheckAccessAndPublishL(TInt aCheckType, TBool aPublishAll);
-
- /**
- * Finds the shortcut object with the given id
- *
- * @since S60 v3.2
- * @param aId Shortcut id
- * @return Shortcut index or KErrNotFound
- */
- TInt FindShortcutIndex(TInt32 aId);
-
- /**
- * Handles the shortcut launch by index.
- *
- * @since S60 v3.2
- * @param aParam Index of the shortcut to launch
- */
- void HandleLaunchByIndexL(const TDesC& aParam);
-
- /**
- * Handles the special launching of a shortcut. The
- * launching can be done based on the location of
- * the shortcut (sk, toolbar item etc) or based on the
- * application it points to. Currently when this function is
- * called to a shortcut that points to appshell the fastswap
- * window is opened
- *
- * @since s60 v5.0
- * @param aParam Index of the shortcut to perform the special launch
- */
- void HandleLaunchByIndexAlternateL(const TDesC& aParam);
- /**
- * Handles the shortcut launch by value
- *
- * @since S60 v3.2
- * @param aParam Value of the shortcut to launch
- */
- void HandleLaunchByValueL(const TDesC& aParam);
-
- /**
- * Shows the plug-in settings dialog.
- *
- * @since S60 v3.2
- */
- void ShowSettingsL(const TDesC& aParam);
-
- /**
- * Shows the plug-in setting.
- *
- * @since S60 v5.0
- */
- void ShowSettingL(const TDesC& aParam);
-
- /**
- * Opens the fast swap window
- *
- * @since S60 v5.0
- */
- void OpenFastSwap();
- /**
- * Handles PS commands from WSPlugin.
- *
- * @since S60 v3.2
- */
- static TInt HandlePSCommand(TAny* aAny);
-
- /**
- * Handles call state changes.
- *
- * @since S60 v3.2
- */
- static TInt CallStateChangeCallback(TAny* aPtr);
-
- /**
- * Callback for delay timer
- */
- static TInt DelayTimerCallBack(TAny *aSelf );
-
-
- /**
- * Get soft key uid
- *
- * @since S60 v3.2
- * @param aSoftkeyId shortcut index
- */
- TUid SoftkeyUid(TUint32 aSoftkeyId);
-
- /**
- *Check softkey delay is required
- *
- * @since S60 v3.2
- * @param AppUid application uid
- */
- TBool IsDelayRequired(TUid aAppUid);
-
- /**
- * Handles PS commands from WSPlugin (leaving version).
- *
- * @since S60 v3.2
- */
- void DoHandlePSCommandL();
-
- /**
- * Activates phone/video call application
- *
- * @since S60 v3.2
- */
- void ActivateTopMostApp();
-
- /**
- * Check MsvSession is Needed
- */
- TBool IsMsvSessionNeeded();
-
- /**
- * Check Bookmark Observer is Needed
- */
- TBool IsBookmarkObserverNeeded();
-
- /**
- * Load application titles list
- */
- void LoadAppTitleListL();
-
- /**
- * Get hidden applications
- */
- void GetHiddenAppsL();
-
- void CheckForThemeDefaultReinstalledL();
-
- TBool IsLockKey( TInt aScanCode, TScutLockKey aLockKey ) const;
-
- TInt AddOverrideIcon( TAiScutIcon &aIcon );
-
- /**
- * Starts a delay timer that calls HandleLaunchByIndexL() after
- * a short delay. Delay is read from cenrep with the key KAIKeyLockTimeout
- *
- * @param aParam The parameter to pass to HandleLaunchByIndexL()
- *
- */
- void DelayedLaunchByIndexL( const TDesC &aParam );
-private: // From MFavouritesDbObserver
-
- /**
- * Handles database event.
- * @param aEvent Database event.
- */
- void HandleFavouritesDbEventL(RDbNotifier::TEvent aEvent);
-
-protected: // data
-
- /**
- * Shortcut objects.
- * Own.
- */
- RAiShortcutArray iShortcuts;
-
- /**
- * Shortcut objects for storing theme default scuts.
- * Own.
- */
- RAiShortcutInfoArray iThemeShortcuts;
-
- /**
- * Flags for shortcuts to indicate whether platform or theme default is used.
- */
- RArray<TScutDefault> iDefaultUsed;
-
- /**
- * Central Repository session.
- * Own.
- */
- CRepository* iRepository;
-
- /**
- * Notifier for changes in the application list
- * (installations / uninstallations).
- * Own.
- */
- CApaAppListNotifier* iAppNotifier;
-
- /**
- * Notifier for changes in the shortcut settings.
- * Own.
- */
- CAiScutRepositoryWatcher* iSettingsNotifier;
-
- /**
- * Message server session.
- * Own.
- */
- CMsvSession* iMsvSession;
-
- /**
- * Timer that performs the availability check after a given delay.
- * Own
- */
- CPeriodic* iTimer;
-
- /**
- * Reference to the plug-in.
- * Not own.
- */
- CAiScutPlugin& iPlugin;
-
- /**
- * Application architecture server session.
- */
- RApaLsSession iApaSession;
-
- /**
- * Bookmark database session.
- * Own.
- */
- RFavouritesSession iBookmarkSess;
-
- /**
- * Bookmark database.
- * Own.
- */
- RFavouritesDb iBookmarkDb;
-
- /**
- * Bookmark database change observer.
- * Own.
- */
- CActiveFavouritesDbNotifier* iBookmarkDbObserver;
-
- /**
- * View server session wrapper.
- * Own
- */
- CVwsSessionWrapper* iVwsSession;
-
- /**
- * Flag to indicate that all shortcus are to be published. Used when resuming.
- */
- TBool iPublishAll;
-
- /**
- *Call key event observer
- * Own
- */
- MAiPSPropertyObserver* iKeyEventObserver;
-
- /**
- * Call state PS observer.
- * Own.
- */
- MAiPSPropertyObserver* iCallStateObserver;
-
- /**
- * Call state
- */
- TBool iActiveCall;
-
- /**
- * First keylock key
- */
- TInt iFirstLockKey;
-
- /**
- * First keylock key pressed flag to ensure first lock has been
- * pressed when skipping key lock. Enabling the correct response to
- * skip command.
- */
- TBool iFirstLockKeyPressed;
-
- /**
- * Second keylock key
- */
- TInt iSecondLockKey;
-
- /**
- * Resource loader for common text resources.
- */
- RConeResourceLoader iResourceLoaderTexts;
-
- /**
- * Resource loader for sendui text resources.
- */
- RConeResourceLoader iResourceLoaderSendUi;
-
- /**
- * Coe environment.
- * Not own.
- */
- CCoeEnv* iEnv;
-
- /**
- * Array of UIDs which are hidden from the TARM
- */
- RArray<TUid> iHiddenApps;
-
- /**
- * Central repository object for Hidden Apps
- * Own
- */
- CRepository* iHiddenAppsRepository;
-
- /**
- * Central repository change handler for Hidden Apps
- * Own
- */
- CAiScutRepositoryWatcher* iHiddenAppsNotifier;
-
- /**
- * Application titles list
- */
- RArray<TAiScutAppTitleEntry> iAppTitleList;
-
- /**
- * Own
- */
- CAiScutTargetShutter* iScutShutter;
-
- /**
- *
- */
- TBool iSoftkeyAppRunning;
-
-#ifdef __WEB_WIDGETS
- /**
- * Widget registry client session to check if UID means widget.
- */
- RWidgetRegistryClientSession iWidgetRegistry;
- TBool iWidgetRegistryConnected;
-#endif
- /**
- * for parsing the icon overrides and softkeys
- */
- TAiScutParser iParser;
-
- /**
- * Override icons and softkeyicons are held here
- */
- RArray <TAiScutIcon> iIcons;
-
- /**
- * For checking keylock buttons
- * Own
- */
- CKeyLockPolicyApi *iKeylockApi;
- /**
- * Timer user to delay the launching
- * of specific shortcuts.
- * Own
- */
- CPeriodic *iDelayTimer;
-
- /**
- * Command passed to HandleLaunchByIndexL()
- * when delayed launching is used
- * Own
- */
- HBufC *iDelayedLaunchCmd;
-
- /**
- * Delayed launching delay. Read from cenrep
- */
- TInt iDelayTimerDelay;
-};
-
-#include "caiscutengine.inl"
-
-#endif // CAISCUTENGINE_H
-
-// End of File.
--- a/idlefw/plugins/shortcutplugin/inc/caiscutengine.inl Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,64 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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: Inline functions for the shortcut plug-in engine
-*
-*/
-
-
-// ---------------------------------------------------------------------------
-// Returns the application architecture server session owned by the engine.
-// ---------------------------------------------------------------------------
-//
-inline RApaLsSession& CAiScutEngine::ApaSession()
-{
- return iApaSession;
-}
-
-// ---------------------------------------------------------------------------
-// Returns reference to the bookmark database owned by the engine.
-// ---------------------------------------------------------------------------
-//
-inline RFavouritesDb& CAiScutEngine::FavouritesDb()
-{
- return iBookmarkDb;
-}
-
-// ---------------------------------------------------------------------------
-// Returns the message server session owned by the engine.
-// ---------------------------------------------------------------------------
-//
-inline CMsvSession* CAiScutEngine::MsvSession()
-{
- return iMsvSession;
-}
-
-// ---------------------------------------------------------------------------
-// Returns a pointer to view server session wrapper.
-// ---------------------------------------------------------------------------
-//
-inline CVwsSessionWrapper* CAiScutEngine::VwsSession()
-{
- return iVwsSession;
-}
-
-// ---------------------------------------------------------------------------
-// Returns a pointer to the coe environment
-// ---------------------------------------------------------------------------
-//
-inline CCoeEnv* CAiScutEngine::Env()
-{
- return iEnv;
-}
-
-// End of File.
--- a/idlefw/plugins/shortcutplugin/inc/caiscutengineext.h Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,118 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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: Shortcut plug-in engine extension
-*
-*/
-
-
-#ifndef CAISCUTENGINEEXT_H
-#define CAISCUTENGINEEXT_H
-
-#include <e32base.h>
-
-#include "caiscutengine.h"
-#include "maiscutextmessagehandler.h"
-#include "caiscutshortcutext.h"
-
-class CAiScutPlugin;
-class CAiScutExtServer;
-class CAiScutExtDataModel;
-
-/**
- * The class extends CAiScutEngine by handling events from
- * xSP extension server.
- *
- * @since S60 v3.2
- */
-class CAiScutEngineExt : public CAiScutEngine,
- public MAiScutExtMessageHandler
- {
- public:
- /**
- * Factory function
- * @see CAiScutEngine
- * @since S60 v3.2
- */
- static CAiScutEngineExt* NewL( CAiScutPlugin& aPlugin );
-
- /**
- * Destructor
- * @since S60 v3.2
- */
- ~CAiScutEngineExt();
-
- private:
- /**
- * Constructor
- * @see CAiScutEngine
- * @since S60 v3.2
- */
- CAiScutEngineExt( CAiScutPlugin& aPlugin );
-
- void ConstructL();
-
- public: // New functions
- /**
- * Publishes specific shortcut
- * @since S60 v3.2
- */
- void CheckAccessAndPublish( CAiScutShortcut& aShortcut );
-
- private: // From CAiScutEngine
- void HandleAiEventL( TInt aEvent, const TDesC& aParam );
- void ResumeL( TBool aPublishAll, TAiTransitionReason aReason );
-
- private: // From MAiScutExtMessageHandler
- void HandleSetPopupLineArrayL( const TDesC& aDefinition, CDesCArray* aLineArray );
- void HandleResetPopupLineArrayL( const TDesC& aDefinition );
- void HandleSetIconL( const TDesC& aDefinition, CGulIcon* aIcon );
- void HandleResetIconL( const TDesC& aDefinition );
- TBool HandleIsInShortcutsL( const TDesC& aDefinition ) const;
- void HandleIssuePutInShortcutsL( const TDesC& aDefinition );
-
- private: // New functions
- /**
- * Finds a shortcut of which id matches with given.
- * @param aId Target id in hexadecimal string format
- * @return Pointer to shortcut or NULL if not found
- */
- CAiScutShortcutExt* FindShortcutById( const TDesC& aId ) const;
-
- /**
- * Iterates shortcuts and sets new extension data to matching
- * ones.
- * @param aDefinition Definition
- * @param aAiScutExtData Pointer to extension data or NULL
- * @return ETrue if matching shortcut(s) found
- */
- TBool PopulateExtData( const TDesC& aDefinition,
- const MAiScutExtData* aAiScutExtData );
-
- private: // data
- /**
- * xSP extension server instance
- * Own.
- */
- CAiScutExtServer* iAiScutExtServer;
-
- /**
- * Extension data model
- * Own.
- */
- CAiScutExtDataModel* iExtDataModel;
- };
-
-#endif // CAISCUTENGINEEXT_H
-
-// End of File.
--- a/idlefw/plugins/shortcutplugin/inc/caiscutextdata.h Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,122 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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 CAISCUTEXTDATA_H
-#define CAISCUTEXTDATA_H
-
-#include <e32base.h>
-#include <badesca.h>
-
-#include "maiscutextdata.h"
-
-class CGulIcon;
-
-/**
- * @since S60 v3.2
- */
-class CAiScutExtData : public CBase,
- public MAiScutExtData
- {
- public:
- /**
- * Factory function
- * @since S60 v3.2
- */
- static CAiScutExtData* NewL( const TDesC& aTargetDefinition );
-
-
- /**
- * Factory function
- * @since S60 v3.2
- */
- static CAiScutExtData* NewLC( const TDesC& aTargetDefinition );
-
- /**
- * Destructor
- * @since S60 v3.2
- */
- ~CAiScutExtData();
-
- private:
- /**
- * Constructor
- * @see CAiScutEngine
- * @since S60 v3.2
- */
- CAiScutExtData();
-
- void ConstructL( const TDesC& aTargetDefinition );
-
- public: // New functions
- /**
- * @since S60 v3.2
- */
- const TDesC& TargetDefinition() const;
-
- /**
- * Deletes old and stores new popup line array
- * @param aPopupLineArray Popup line array. Ownership is transferred.
- * @since S60 v3.2
- */
- void SwitchPopupLineArray( CDesCArray* aPopupLineArray );
-
- /**
- * @since S60 v3.2
- */
- void ResetPopupLineArray();
-
- /**
- * Deletes old and stores new icon
- * @param aIcon Icon. Ownership is transferred.
- * @since S60 v3.2
- */
- void SwitchIcon( CGulIcon* aIcon );
-
- /**
- * @since S60 v3.2
- */
- void ResetIcon();
-
- public: //From MAiScutExtData
- const MDesCArray* PopupLineArray() const;
- const CGulIcon* Icon() const;
-
- private: // data
-
- /**
- * Definition string of the target shortcut
- * Own.
- */
- HBufC* iTargetDefinition;
-
- /**
- * Popup line array
- * Own.
- */
- CDesCArray* iPopupLineArray;
-
- /**
- * Icon
- * Own.
- */
- CGulIcon* iIcon;
- };
-
-#endif // CAISCUTEXTDATA_H
-
-// End of File.
--- a/idlefw/plugins/shortcutplugin/inc/caiscutextdatamodel.h Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,134 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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: Shortcut plug-in extension data model
-*
-*/
-
-
-#ifndef CAISCUTEXTDATAMODEL_H
-#define CAISCUTEXTDATAMODEL_H
-
-#include <e32base.h>
-#include <badesca.h>
-
-class CGulIcon;
-class CAiScutExtData;
-
-/**
- * This class owns an array of CAiScutExtData items and provides an API to
- * update popup line array and icon data for different targets.
- * @since S60 v3.2
- */
-class CAiScutExtDataModel : public CBase
- {
- private:
- friend class T_CAiScutExtDataModel;
-
- public:
- /**
- * Factory function
- * @since S60 v3.2
- */
- static CAiScutExtDataModel* NewL();
-
-
- /**
- * Factory function
- * @since S60 v3.2
- */
- static CAiScutExtDataModel* NewLC();
-
- /**
- * Destructor
- * @since S60 v3.2
- */
- ~CAiScutExtDataModel();
-
- private:
- /**
- * Constructor
- * @see CAiScutEngine
- * @since S60 v3.2
- */
- CAiScutExtDataModel();
-
- void ConstructL();
-
- public: // New functions
- /**
- * Sets the new popup line array for target. The old one is deleted. If
- * matching target definition is not found new CAiScutExtData object is
- * created.
- * @param aDefinition Target definition string
- * @param aLineArray Pointer to line array. Ownership is transferred
- * @return Pointer to new or existing CAiScutExtData object
- * @since S60 v3.2
- */
- CAiScutExtData* SetPopupLineArrayL( const TDesC& aDefinition, CDesCArray* aLineArray );
-
- /**
- * Resets popup line array. If also the icon is not set the CAiScutExtData
- * item is deleted and removed from the array.
- * @param aDefinition Target definition string
- * @since S60 v3.2
- */
- CAiScutExtData* ResetPopupLineArray( const TDesC& aDefinition );
-
- /**
- * Sets the new icon for target. The old one is deleted. If
- * matching target definition is not found new CAiScutExtData object is
- * created.
- * @param aDefinition Target definition string
- * @param aIcon Pointer to icon. Ownership is transferred
- * @return Pointer to new or existing CAiScutExtData object
- * @since S60 v3.2
- */
- CAiScutExtData* SetIconL( const TDesC& aDefinition, CGulIcon* aIcon );
-
- /**
- * Resets icon. If also the popup line array is not set the CAiScutExtData
- * item is deleted and removed from the array.
- * @param aDefinition Target definition string
- * @since S60 v3.2
- */
- CAiScutExtData* ResetIcon( const TDesC& aDefinition );
-
- /**
- * @return Array of CAiScutExtData objects
- * @since S60 v3.2
- */
- TArray<CAiScutExtData*> AiScutExtDataArray() const;
-
- /**
- * Deletes CAiScutExtData object and removes it from the array.
- * @param aDefinition Target definition string
- * @since S60 v3.2
- */
- void RemoveAiScutExtData( const TDesC& aDefinition );
-
- private: // New functions
- TInt FindAiScutExtData( const TDesC& aDefinition ) const;
- CAiScutExtData* CreateAiScutExtDataL( const TDesC& aDefinition );
-
- private: // data
- /**
- * Shortcut extension data items
- * Own.
- */
- RPointerArray<CAiScutExtData> iAiScutExtDataArray;
- };
-
-#endif // CAISCUTEXTDATAMODEL_H
-
-// End of File.
--- a/idlefw/plugins/shortcutplugin/inc/caiscutextserver.h Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,177 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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: Shortcut plug-in xSP extension server class.
-*
-*/
-
-
-#ifndef CAISCUTEXTSERVER_H
-#define CAISCUTEXTSERVER_H
-
-#include <e32base.h>
-#include <w32std.h>
-
-#include "maiscutextmessagehandler.h"
-#include "aicontentpublisher.h"
-
-class CAiScutExtServer;
-class CAknMessageQueryDialog;
-
-/**
- *
- * Helper class for passing parameters to the callback function.
- *
- * @since S60 v3.2
- */
-class CLinkParams : public CBase
- {
- public:
-
- CLinkParams(CAiScutExtServer& aServer, HBufC* aTargetDefinition);
-
- ~CLinkParams();
-
- public:
-
- /**
- * Reference to the server object.
- * Ref.
- */
- CAiScutExtServer& iServer;
-
- /**
- * Application identifier.
- * Own.
- */
- HBufC* iTargetDefinition;
-
- /**
- * The dialog that owns the link..
- * Ref.
- */
- CAknMessageQueryDialog* iNote;
- };
-
-/**
- * Server class for xSP extensions.
- *
- * Handles sessions.
- *
- * @since S60 v3.2
- */
-class CAiScutExtServer : public CServer2
- {
- public:
- /**
- * Constructor
- * @param aObserver Reference to observer
- * @since S60 v3.2
- */
- CAiScutExtServer( MAiScutExtMessageHandler& aObserver, RWsSession& aWsSession );
-
- /**
- * 2nd-phase constructor
- * @since S60 v3.2
- */
- void ConstructL();
-
- /**
- * Destructor
- * @since S60 v3.2
- */
- ~CAiScutExtServer();
-
- private: // From CServer2
-
- CSession2* NewSessionL(
- const TVersion& aVersion, const RMessage2& aMessage ) const;
-
- private: // New methods
-
- void ReadAppListL();
-
- void WriteAppListL();
-
- static TInt LinkCallBack(TAny* aParam);
-
- static TInt IdleCallBack(TAny* aParam);
-
- void DoShowTipMessageL();
-
- public:
-
- TBool HasConnectedBefore( TUid& aUid, const RMessage2& aMessage );
-
- void ShowTipMessage( TUid aUid );
-
- void ResumeL( TAiTransitionReason aReason );
-
- private: // data
-
- /**
- * Reference to observer
- * Ref.
- */
- MAiScutExtMessageHandler& iObserver;
-
- /**
- * Reference to Window Server session
- * Ref.
- */
- RWsSession& iWsSession;
-
- /**
- * List of applications we are not going to
- * show the tip dialog.
- * Own.
- */
- RArray<TUid> iUids;
-
- /**
- * List of applications to show the dialog.
- *
- * Own.
- */
- RArray<TUid> iShowUids;
-
- /**
- * Resource offset for releasing the resoruce on destruction.
- *
- * Own.
- */
- TInt iResourceOffset;
-
- /**
- * CIdle for the tip dialog
- *
- * Own.
- */
- CIdle* iIdle;
-
- /**
- * Foreground/background indication
- *
- */
- TBool iIsForeground;
-
- /**
- * Tip message visible indication
- *
- */
- TBool iIsTipMessageVisible;
- };
-
-#endif // CAISCUTEXTSERVER_H
-
-// End of File.
--- a/idlefw/plugins/shortcutplugin/inc/caiscutextsession.h Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,82 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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: Shortcut plug-in xSP extension session class.
-*
-*/
-
-
-#ifndef CAISCUTEXTSESSION_H
-#define CAISCUTEXTSESSION_H
-
-#include <e32base.h>
-
-class MAiScutExtMessageHandler;
-
-/**
- * Server session class for xSP extensions.
- *
- * Handles IPC between server and client. Commands and data are passed to
- * observer.
- *
- * @since S60 v3.2
- */
-class CAiScutExtSession : public CSession2
- {
- public:
- /**
- * Constructor
- * @param aObserver Reference to observer
- * @since S60 v3.2
- */
- CAiScutExtSession( MAiScutExtMessageHandler& aObserver );
-
- /**
- * Destructor
- * @since S60 v3.2
- */
- ~CAiScutExtSession();
-
- private: // From CSession2
- void ServiceL( const RMessage2& aMessage );
- void DispatchMessageL( const RMessage2& aMessage );
-
- private: // New functions
- void SetTargetDefinitionL( const RMessage2& aMessage );
- void SetPopupTextL( const RMessage2& aMessage );
- void ResetPopupTextL( const RMessage2& aMessage );
- void SetIconL( const RMessage2& aMessage );
- void ResetIconL( const RMessage2& aMessage );
- void IsInShortcutsL( const RMessage2& aMessage );
- void IssuePutInShortcutsL( const RMessage2& aMessage );
-
- void PanicClient( const RMessage2& aMessage, TInt aPanicCode ) const;
-
- private: // data
-
- /**
- * Reference to observer
- * Ref.
- */
- MAiScutExtMessageHandler& iObserver;
-
- /**
- * Target definition
- * Own.
- */
- HBufC* iTargetDefinition;
- };
-
-#endif // CAISCUTEXTSESSION_H
-
-// End of File.
--- a/idlefw/plugins/shortcutplugin/inc/caiscutplugin.h Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,231 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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: Plug-in main class
-*
-*/
-
-
-#ifndef CAISCUTPLUGIN_H
-#define CAISCUTPLUGIN_H
-
-#include <aicontentpublisher.h>
-#include <aipropertyextension.h>
-#include <aieventhandlerextension.h>
-#include <aicontentmodel.h>
-
-class CAiScutEngine;
-class MAiContentObserver;
-class MAiContentItemIterator;
-class CAiScutShortcut;
-
-/**
- * Plug-in main class
- *
- * @since S60 v3.2
- */
-class CAiScutPlugin : public CAiContentPublisher
- , public MAiPropertyExtension
- , public MAiEventHandlerExtension
-{
-
-public: // factory methods and destructor.
-
- static CAiScutPlugin* NewL();
-
- virtual ~CAiScutPlugin();
-
-public: // new methods
-
- /**
- * Publishes the given shortcut
- *
- * @since S60 v3.2
- * @return Reference to a shortcut to publish
- */
- void PublishShortcutsL(RAiShortcutArray& aShortcuts);
-
- /**
- *
- */
- TBool IsAlive() const;
-
- /**
- * @return Resume reason
- */
- TAiTransitionReason ResumeReason() const;
-
-public: // methods from base classes
-
- // from base class CAiContentPublisher
-
- void Resume(TAiTransitionReason aReason);
-
- void Suspend(TAiTransitionReason aReason);
-
- void Stop(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.
- *
- * @since S60 3.2
- * @param aObserver content observer to register.
- */
- 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 plug-in 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.
- *
- * @since S60 3.2
- * @param aSettings setting items defined in the UI definition.
- */
- void ConfigureL(RAiSettingsItemArray& aSettings);
-
- /**
- * From CAiContentPublisher
- * Returns interface extension. In Series 60 3.1 only event & property
- * extensions are supported. See MAiEventExtension & MAiPropertyExtension
- * interfaces.
- *
- * @since S60 3.2
- * @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 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);
-
- /**
- * Invoked by the framework for querying if plugin has menu item
- *
- * @return ETrue if plugin has specific menu item, EFalse otherwise
- */
-
-// Online/Offline - web widgets
- TBool HasMenuItem(const TDesC16& aMenuItem);
-
- // from base class MAiPropertyExtension
-
- /**
- * From MAiPropertyExtension.
- * Read property of publisher plug-in.
- *
- * @param aProperty - identification of property.
- * @return pointer to property value.
- * @since S60 3.2
- */
- TAny* GetPropertyL(TInt aProperty);
-
- /**
- * From MAiPropertyExtension.
- * Write property value.
- *
- * @param aProperty - identification of property.
- * @param aValue - contains pointer to property value.
- * @since S60 3.2
- */
- void SetPropertyL(TInt aProperty, TAny* aValue);
-
-protected:
-
-private:
-
- CAiScutPlugin();
-
- void ConstructL();
-
- void DoResumeL(TAiTransitionReason aReason);
-
- void FreeEngine();
-
- void DeleteDefaultShortcutsL();
-
-
-private: // data
-
- /**
- * Iterator for plug-in content.
- * Own.
- */
- MAiContentItemIterator* iContent;
-
- /**
- * Iterator for plug-in resources.
- * Own.
- */
- MAiContentItemIterator* iResources;
-
- /**
- * Iterator for plug-in events.
- * Own.
- */
- MAiContentItemIterator* iEvents;
-
- /**
- * Plug-in engine
- * Own.
- */
- CAiScutEngine* iEngine;
-
- /**
- * Array of content observers
- * Not own.
- */
- RPointerArray<MAiContentObserver> iObservers;
-
- /**
- * Information about the content publisher ( this plug-in ).
- */
- TAiPublisherInfo iInfo;
-
- /**
- * Plug-in state, suspended or alive.
- */
- TBool iAlive;
-
- /**
- * Resume reason
- */
- TAiTransitionReason iResumeReason;
-
- TBool iForcePublishAll;
-};
-
-#endif // CAISCUTPLUGIN_H
-
-// End of File.
--- a/idlefw/plugins/shortcutplugin/inc/caiscutsettings.h Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,178 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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: Shortcut settings plug-in main class.
-*
-*/
-
-
-#ifndef CAISCUTSETTINGS_H
-#define CAISCUTSETTINGS_H
-
-#include <gsbaseview.h>
-
-class CAiScutSettingsContainer;
-class CAiScutSettingsModel;
-
-/**
- * Shortcut settings plug-in main class
- *
- * @lib aiscutsettings.lib
- * @since S60 v3.2
- */
-class CAiScutSettings : public CGSBaseView
-{
-
-public:
-
- static CAiScutSettings* NewL(TAny* aInitParams);
-
- virtual ~CAiScutSettings();
-
- // from base class CAknView
-
- /**
- * From CAknView
- * Returns view id.
- *
- * @since S60 3.2
- * @return TUid
- */
- TUid Id() const;
-
- /**
- * From CAknView
- * Handles commands.
- *
- * @since S60 3.2
- * @param aCommand Command to be handled.
- */
- void HandleCommandL(TInt aCommand);
-
- /**
- * See base class in AknView.h
- */
- void DoActivateL(const TVwsViewId& aPrevViewId, TUid aCustomMessageId, const TDesC8& aCustomMessage);
-
- /**
- * See base class.
- */
- void DoDeactivate();
-
- // from base class CGSPluginInterface
-
- /**
- * From CGSPluginInterface
- *
- * @since S60 3.2
- * @see CGSPluginInterface header file.
- */
- void GetCaptionL(TDes& aCaption) const;
-
- /**
- * From CGSPluginInterface
- *
- * @since S60 3.2
- * @see CGSPluginInterface header file.
- */
- TInt PluginProviderCategory() const;
-
- /**
- * From CGSPluginInterface
- *
- * @since S60 3.2
- * @see CGSPluginInterface header file.
- */
- TBool Visible() const;
-
- // from base class CGSBaseView
-
- /**
- * From CGSBaseView
- *
- * @since S60 3.2
- * Returns the container this view has.
- * @return pointer to container, does not transfer ownership.
- */
- CAiScutSettingsContainer* Container();
-
- /**
- * See base class
- */
- void HandleForegroundEventL(TBool aForeground);
-
- /**
- * Check if view is activate
- * @since S60 5.1
- * @return ETrue if activated, EFalse otherwise
- */
- TBool Activated() const;
-
-protected:
-
-private: // From MEikMenuObserver
-
- /**
- * Changes MenuPane dynamically
- */
- void DynInitMenuPaneL(TInt aResourceId, CEikMenuPane* aMenuPane);
-
-private:
-
- CAiScutSettings();
-
- void ConstructL();
-
-
- // from base class CGSBaseView
-
- /**
- * From CGSBaseView
- * Functionality for creating a container. Called by DoActivateL().
- */
- void NewContainerL();
-
- /**
- * From CGSBaseView
- * Handles listbox selection. Called by HandleListBoxEventL.
- * Implement by sub-class.
- */
- void HandleListBoxSelectionL();
-
- static TInt DoHandleListBoxSelectionL( TAny* aAny );
-
-
-private: // data
-
- /**
- * Settings plug-in model.
- * Own.
- */
- CAiScutSettingsModel* iModel;
-
- /**
- * Resource loader for common text resources.
- */
- RConeResourceLoader iResourceLoaderTexts;
-
- /***
- * Idle timer to delay event handling
- * Own.
- */
- CIdle* iListBoxTimer;
-
-};
-
-#endif // CAISCUTSETTINGS_H
-
-// End of File.
--- a/idlefw/plugins/shortcutplugin/inc/caiscutsettingsapplist.h Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,553 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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: Application list for settings listbox.
-*
-*/
-
-
-#ifndef CAISCUTSETTINGSAPPLIST_H
-#define CAISCUTSETTINGSAPPLIST_H
-
-#include <e32base.h>
-#include <bamdesca.h> // For MDesCArray
-#include <apgcli.h> // For RApaLsSession
-#include <msvapi.h> // For MMsvSessionObserver
-#include <apgnotif.h> // For MApaAppListServObserver
-#include "aiscutsettings.hrh" // For TAiScutSettingType
-
-class CAiScutSettingsItem;
-class CCoeEnv;
-
-/**
- * Shortcut definition parameter for theme change shortcut.
- */
-_LIT( KScutParamChangeTheme, "view=0x102750A7" );
-
-/**
- * Shortcut definition parameter for messaging. New message
- */
-_LIT( KScutParamNewMsg, "new=msg" );
-
-/**
- * Shortcut definition parameter for messaging. New email
- */
-_LIT( KScutParamNewEmail, "new=email" );
-
-/**
- * Shortcut definition parameter for messaging. New syncml mail
- */
-_LIT( KScutParamNewSyncMLMail, "new=syncmlmail" );
-
-/**
- * Shortcut definition parameter for messaging. New postcard
- */
-_LIT( KScutParamNewPostcard, "new=postcard" );
-
-/**
- * Shortcut definition parameter for messaging. New audio message
- */
-_LIT( KScutParamNewAudioMsg, "new=audiomsg" );
-
-/**
- * Shortcut definition parameter for messaging. Select message type
- */
-_LIT( KScutParamSelectMsgType, "new" );
-
-/**
- * Shortcut definition parameter for messaging. Remote mailbox
- */
-_LIT( KScutParamMailbox, "mailbox=" );
-
-/**
- * Shortcut definition parameter for general settings. Connectivity view
- */
-_LIT( KScutParamConnectivityView, "view=0x10207250" );
-
-/**
- * Shortcut definition parameter for general settings. Installations view
- */
-_LIT( KScutParamInstallationsView, "view=0x10283321" );
-
-
-/**
- * Observer interface for application list events
- *
- * @since S60 v3.2
- */
-class MAiScutListObserver
-{
-public:
-
- /**
- * AppList event codes
- */
- enum TScutListEvent
- {
- EAppListReady,
- EAppListUpdated,
- EBkmListUpdated
- };
-
- /**
- * Callback for application list events
- *
- * @since S60 v3.2
- * @param aEvent AppList event code
- * @param aAdded ETrue if applications were added, EFalse if removed
- */
- virtual void HandleScutListEventL( TScutListEvent aEvent, TBool aAdded ) = 0;
-
- virtual TBool IsHidden(const TUid& aAppUid) const = 0;
-
-};
-
-
-/**
- * Application list for settings listbox
- *
- * @since S60 v3.2
- */
-class CAiScutSettingsAppList : public CActive
- , public MDesCArray
- , public MMsvSessionObserver
- , public MApaAppListServObserver
-{
-
-public:
-
- static CAiScutSettingsAppList* NewL( CCoeEnv* aEnv, MAiScutListObserver& aObserver );
-
- virtual ~CAiScutSettingsAppList();
-
- // from base class MDesCArray
-
- /**
- * From MDesCArray
- * Returns the number of descriptor elements in a descriptor array.
- *
- * @since S60 v3.2
- * @return The number of descriptor elements in a descriptor array.
- */
- TInt MdcaCount() const;
-
- /**
- * From MDesCArray
- * Indexes into a descriptor array.
- *
- * @since S60 v3.2
- * @param aIndex The position of the descriptor element within a descriptor array.
- * @return A 16 bit non-modifiable pointer descriptor representing the descriptor
- * element located at position aIndex within a descriptor array.
- */
- TPtrC MdcaPoint( TInt aIndex ) const;
-
- // from base class MMsvSessionObserver
-
- /**
- * Handles an event from the message server.
- * Not used, but must be defined to be able to use the messaging server.
- *
- * @since S60 v3.2
- * @param aEvent Indicates the event type.
- * @param aArg1 Event type-specific argument value
- * @param aArg2 Event type-specific argument value
- * @param aArg3 Event type-specific argument value
- */
- void HandleSessionEventL( TMsvSessionEvent aEvent, TAny* aArg1, TAny* aArg2, TAny* aArg3 );
-
- // from base class MApaAppListServObserver
-
- /**
- * From MApaAppListServObserver
- * Handles a change in the application list
- *
- * @since S60 v3.2
- * @param aEvent Event id
- */
- void HandleAppListEvent( TInt aEvent );
-
- /**
- * Starts the asynchronous appliation list initialization
- *
- * @since S60 v3.2
- */
- void StartL();
-
- /**
- * Checks if the application list is ready to be shown
- *
- * @since S60 v3.2
- * @return ETrue if ready, EFalse if not
- */
- TBool IsReady() const;
-
- /**
- * Tells the application list to start or stop observing for changes
- *
- * @since S60 v3.2
- * @param aObserving ETrue if changes should be observed, EFalse if not
- */
- void SetObservingL( TBool aObserving );
-
- /**
- * Finds the index of the given settings item in the application list
- *
- * @since S60 v3.2
- * @param aItem Setting item to find
- * @return Index of the setting item in the application list
- */
- TInt FindIndex( CAiScutSettingsItem& aItem );
-
- /**
- * Returns target application data from the given index
- *
- * @since S60 v3.2
- * @param aIndex Index of the application in the list
- * @param aUid On return, the application uid
- * @param aParams On return, the application parameters
- * @param aCaption On return, the application caption
- * @param aType On return, the application type (app or url)
- * @return KErrNotFound if the application cannot be found, KErrNone otherwise
- */
- TInt GetDataByIndex( TInt aIndex, TUid& aUid, TPtrC& aParams, TPtrC& aCaption, TAiScutSettingType& aType ) const;
-
- /**
- * Adds extra list items to the application list.
- * For example "No Effect" item is added here.
- *
- * @since S60 v3.2
- */
- void AddExtraItemsL();
-
- /**
- * Removes extra list items from the application list.
- *
- * @since S60 v3.2
- */
- void RemoveExtraItemsL();
-
-protected:
-
-private:
-
- CAiScutSettingsAppList( CCoeEnv* aEnv, MAiScutListObserver& aObserver );
-
- void ConstructL();
-
- // from base class CActive
-
- /**
- * From CActive
- * Implements cancellation of an outstanding request.
- *
- * @since S60 v3.2
- */
- void DoCancel();
-
- /**
- * From CActive
- * Performs one step of the app list initialization
- *
- * @since S60 v3.2
- */
- void RunL();
-
- /**
- * From CActive
- * Handles an error situation
- *
- * @since S60 v3.2
- * @param aError Error code received from system
- * @return Error code after error handling
- */
- TInt RunError( TInt aError );
-
- /**
- * Completes own request status to make sure active scheduler
- * calls RunL again.
- *
- * @since S60 v3.2
- */
- void CompleteSelf();
-
- /**
- * Adds an application to the list
- *
- * @since S60 v3.2
- * @param aAppInfo Application information object
- */
- void AddApplicationL( TApaAppInfo& aAppInfo );
-
- /**
- * Adds the static list items to the application list.
- * For example "New Message" and "New Email" items are added here.
- *
- * @since S60 v3.2
- */
- void AddStaticItemsL();
-
- /**
- * Finds all mailboxes defined in the device
- */
- CMsvEntry* GetRootEntryL();
-
- /**
- * Adds remote mailboxes to the application list.
- *
- * @since S60 v3.2
- */
- void AddMailboxesL();
-
- /**
- * Adds a mailbox to the list
- *
- * @since S60 v3.2
- * @param aMailbox Name of the mailbox to add
- */
- void AddMailboxL( const TDesC& aMailbox, const TDesC& aMailboxId );
-
- /**
- * Removes a mailbox from the list
- *
- * @since S60 v3.2
- * @param aMailboxParam Parameter string of the mailbox to remove
- */
- void RemoveMailboxL( const TDesC& aMailboxParam );
-
- /**
- * Adds extra application to applist from central repository
- *
- * @since S60 v3.2
- */
- void AddExtraItemsFromCRL();
-
- TBool IsBannedUid(TUid aUid);
-
- /**
- * Gets the next valid application from application architecture server.
- * Valid applications are non-hidden ones
- *
- * @since S60 v3.2
- * @param aAppInfo Application information of the next valid application
- * @return Error code from RApaLsSession or one of system wide errors
- */
- TInt GetNextValidApp( TApaAppInfo& aAppInfo );
-
- /**
- * Updates the application list
- *
- * @since S60 v3.2
- */
- void UpdateAppListL();
-
- /**
- * Figures out which application is missing from the list and adds it
- *
- * @since S60 v3.2
- * @param aCount Amount of applications to add
- */
- void AddInstalledAppToListL( TInt aCount );
-
- /**
- * Figures out which application should not be in the list and removes it
- *
- * @since S60 v3.2
- * @param aCount Amount of applications to remove
- */
- void RemoveUninstalledAppFromListL( TInt aCount );
-
- /**
- * Checks if application is midlet.
- * @param aUid Application uid
- * @since S60 v3.2
- */
- TBool IsNonNative(const TUid& aUid);
-
- /**
- * Checks if application is located in ROM.
- * @param aUid Application uid
- * @since S60 v5.0
- */
- TBool IsInRom( const TUid& aUid );
-
-
-private:
-
- /**
- * Nested class to store individual application list items
- *
- * @since S60 v3.2
- */
- class CAppListItem : public CBase
- {
- public:
-
- static CAppListItem* NewLC( TUid aUid, const TDesC& aCaption );
-
- ~CAppListItem();
-
- /**
- * Compare method used to add the items to the list in sorted order
- *
- * @since S60 v3.2
- * @param aFirst The first item to be compared
- * @param aSecond The second item to be compared
- * @return Negative if first comes before second, zero if equal and
- * positive if first comes after second
- */
- static TInt CompareCaption( const CAppListItem& aFirst,
- const CAppListItem& aSecond );
-
- /**
- * Returns the item target application uid
- *
- * @since S60 v3.2
- * @return Target application uid
- */
- TUid Uid() const;
-
- /**
- * Returns the item target application caption
- *
- * @since S60 v3.2
- * @return Target application caption
- */
- TPtrC Caption() const;
-
- /**
- * Returns the possible parameters for item target
- *
- * @since S60 v3.2
- * @return Item target parameters
- */
- TPtrC Params() const;
-
- /**
- * Sets the parameters for the item target
- *
- * @since S60 v3.2
- * @param aParams Parameters for item target
- */
- void SetParamsL( const TDesC& aParams );
-
- /**
- * Sets the type for the item target
- *
- * @since S60 v3.2
- * @param aType The item target type
- */
- void SetType( TAiScutSettingType aType );
-
- /**
- * Returns the type of this item target
- *
- * @since S60 v3.2
- * @return Item type
- */
- TAiScutSettingType Type() const;
- private:
-
- CAppListItem( TUid aUid );
-
- void ConstructL( const TDesC& aCaption );
-
- private: // data
-
- /**
- * Target application uid
- */
- TUid iUid;
-
- /**
- * Target application caption
- */
- HBufC* iCaption;
-
- /**
- * Target application parameters
- */
- HBufC* iParams;
- /**
- * Is this setting a application or URL.
- * Needed for URLs added from cenrep
- */
- TAiScutSettingType iType;
-
- };
-
-private: // data
-
- /**
- * List of application items
- * Own.
- */
- RPointerArray<CAppListItem> iListItems;
-
- /**
- * Application architecture server session
- * Own.
- */
- RApaLsSession iApaSession;
-
- /**
- * Message server session
- * Own.
- */
- CMsvSession* iMsvSession;
-
- /**
- * Notifier for changes in the application list
- * ( installations / uninstallations )
- * Own.
- */
- CApaAppListNotifier* iAppNotifier;
-
- /**
- * Amount of all applications in the device
- */
- TInt iTotalAppCount;
-
- /**
- * List of mailbox items. Points to iListItems.
- * DO NOT DELETE THROUGH THIS!
- * Own.
- */
- RPointerArray<CAppListItem> iMailboxes;
-
- /**
- * Flag indicating if the asynchronous application list generation is ready
- */
- TBool iReady;
-
- /**
- * Pointer to the control environment
- * Not own.
- */
- CCoeEnv* iEnv;
-
- /**
- * Registered observer for application list events
- */
- MAiScutListObserver& iObserver;
-
- /**
- * A flag indicating if the app list should observe changes
- */
- TBool iObserving;
-
-};
-
-#endif // CAISCUTSETTINGSAPPLIST_H
-
-// End of File.
--- a/idlefw/plugins/shortcutplugin/inc/caiscutsettingsbkmlist.h Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,269 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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: Bookmark list for settings listbox.
-*
-*/
-
-
-#ifndef CAISCUTSETTINGSBKMLIST_H
-#define CAISCUTSETTINGSBKMLIST_H
-
-#include <e32base.h>
-#include <bamdesca.h> // For MDesCArray
-#include <favouritesdbobserver.h> // For MFavouritesDbObserver
-
-class CCoeEnv;
-class CActiveFavouritesDbNotifier;
-class CAiScutSettingsItem;
-class CAiScutSettingsModel;
-
-/**
- * Bookmark list for settings listbox
- *
- * @since S60 v3.2
- */
-class CAiScutSettingsBkmList : public CBase
- , public MDesCArray
- , public MFavouritesDbObserver
-{
-
-public:
-
- static CAiScutSettingsBkmList* NewL(
- CCoeEnv* aEnv,
- CAiScutSettingsModel* aModel,
- MAiScutListObserver& aObserver);
-
- virtual ~CAiScutSettingsBkmList();
-
- // from base class MDesCArray
-
- /**
- * From MDesCArray
- * Returns the number of descriptor elements in a descriptor array.
- *
- * @since S60 v3.2
- * @return The number of descriptor elements in a descriptor array.
- */
- TInt MdcaCount() const;
-
- /**
- * From MDesCArray
- * Indexes into a descriptor array.
- *
- * @since S60 v3.2
- * @param aIndex The position of the descriptor element within a descriptor array.
- * @return A 16 bit non-modifiable pointer descriptor representing the descriptor
- * element located at position aIndex within a descriptor array.
- */
- TPtrC MdcaPoint(TInt aIndex) const;
-
- /**
- * Gets the bookmark list.
- *
- * @since S60 v3.2
- */
- void GetBookmarkListL();
-
- /**
- * Tells the bookmark list to start or stop observing for changes
- *
- * @since S60 v3.2
- * @param aObserving ETrue if changes should be observed, EFalse if not
- */
- void SetObservingL(TBool aObserving);
-
- /**
- * Finds the index of the given settings item in the bookmark list
- *
- * @since S60 v3.2
- * @param aItem Setting item to find
- * @return Index of the setting item in the bookmark list
- */
- TInt FindIndex(CAiScutSettingsItem& aItem);
-
- /**
- * Returns target bookmark data from the given index
- *
- * @since S60 v3.2
- * @param aIndex Index of the bookmark in the list
- * @param aParams On return, the bookmark parameters
- * @param aCaption On return, the bookmark caption
- * @return KErrNotFound if the bookmark cannot be found, KErrNone otherwise
- */
- TInt GetDataByIndex(TInt aIndex, TPtrC& aParams, TPtrC& aCaption) const;
-
-protected:
-
-private:
-
- CAiScutSettingsBkmList(
- CCoeEnv* aEnv,
- CAiScutSettingsModel* aModel,
- MAiScutListObserver& aObserver);
-
- void ConstructL();
-
- /**
- * Adds an bookmark to the list
- *
- * @since S60 v3.2
- * @param aBkmInfo Bookmark information object
- */
- void AddBookmarkL(TUid aUid, const TDesC& aCaption);
-
- /**
- * Updates the bookmark list
- *
- * @since S60 v3.2
- */
- void UpdateBkmListL();
-
- // From MFavouritesDbObserver
- /**
- * Handles database event.
- * @param aEvent Database event.
- */
- void HandleFavouritesDbEventL(RDbNotifier::TEvent aEvent);
-
-private:
-
- /**
- * Nested class to store individual bookmark list items
- *
- * @since S60 v3.2
- */
- class CBkmListItem : public CBase
- {
- public:
-
- static CBkmListItem* NewLC(TUid aUid, const TDesC& aCaption);
-
- ~CBkmListItem();
-
- /**
- * Compare method used to add the items to the list in sorted order
- *
- * @since S60 v3.2
- * @param aFirst The first item to be compared
- * @param aSecond The second item to be compared
- * @return Negative if first comes before second, zero if equal and
- * positive if first comes after second
- */
- static TInt CompareCaption(const CBkmListItem& aFirst,
- const CBkmListItem& aSecond);
-
- /**
- * Returns the item target bookmark uid
- *
- * @since S60 v3.2
- * @return Target bookmark uid
- */
- TUid Uid() const;
-
- /**
- * Returns the item target bookmark caption
- *
- * @since S60 v3.2
- * @return Target bookmark caption
- */
- TPtrC Caption() const;
-
- /**
- * Returns the possible parameters for item target
- *
- * @since S60 v3.2
- * @return Item target parameters
- */
- TPtrC Params() const;
-
- /**
- * Sets the parameters for the item target
- *
- * @since S60 v3.2
- * @param aParams Parameters for item target
- */
- void SetParamsL(const TDesC& aParams);
-
- private:
-
- CBkmListItem(TUid aUid);
-
- void ConstructL(const TDesC& aCaption);
-
- private: // data
-
- /**
- * Target bookmark uid
- */
- TUid iUid;
-
- /**
- * Target bookmark caption
- */
- HBufC* iCaption;
-
- /**
- * Target bookmark parameters
- */
- HBufC* iParams;
-
- };
-
-private: // data
-
- /**
- * List of bookmark items
- * Own.
- */
- RPointerArray<CBkmListItem> iListItems;
-
- /**
- * Amount of all bookmarks in the device
- */
- TInt iTotalAppCount;
-
- /**
- * Pointer to the control environment
- * Not own.
- */
- CCoeEnv* iEnv;
-
- /**
- * Settings plug-in model.
- * Not own.
- */
- CAiScutSettingsModel* iModel;
-
- /**
- * Registered observer for list events
- */
- MAiScutListObserver& iObserver;
-
- /**
- * A flag indicating if the bookmark list should observe changes
- */
- TBool iObserving;
-
- /**
- * Bookmark database change observer.
- * Own.
- */
- CActiveFavouritesDbNotifier* iBookmarkDbObserver;
-
-};
-
-#endif // CAISCUTSETTINGSBKMLIST_H
-
-// End of File.
--- a/idlefw/plugins/shortcutplugin/inc/caiscutsettingscontainer.h Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,235 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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: Shortcut settings plug-in container.
-*
-*/
-
-
-#ifndef CAISCUTSETTINGSCONTAINER_H
-#define CAISCUTSETTINGSCONTAINER_H
-
-#include <gsbasecontainer.h>
-
-#include "aiscutsettings.hrh"
-
-class CAknRadioButtonSettingPage;
-class CAknSettingPage;
-class CAknWaitDialog;
-class CAiScutSettingsModel;
-class CAiScutSettingsBkmList;
-class CAiScutSettingsItem;
-
-/**
- * Shortcut settings plug-in container
- *
- * @lib aiscutsettings.lib
- * @since S60 v3.2
- */
-class CAiScutSettingsContainer : public CGSBaseContainer
-{
-
-public:
-
- CAiScutSettingsContainer();
-
- virtual ~CAiScutSettingsContainer();
-
- /**
- * Sets pointer to settings plug-in model.
- *
- * @since S60 v3.2
- * @param aModel Pointer to settings plug-in model
- */
- void SetModel(CAiScutSettingsModel* aModel);
-
- /**
- * Chandles a setting change command
- *
- * @since S60 v3.2
- */
- void HandleChangeCommandL();
-
- /**
- * Chandles a setting type change command
- *
- * @since S60 v3.2
- */
- void HandleChangeShortcutTypeCommandL(TAiScutSettingType aType);
-
- /**
- * Dialog showing changed
- *
- * @since S60 v3.2
- */
- TBool IsChangeDialogShowing();
-
- /**
- * Close change dialog
- *
- * @since S60 v3.2
- */
- void CloseChangeDialog();
-
- /**
- * Reset current list
- *
- * @since S60 v3.2
- */
- void ResetCurrentListL(TInt aIndex);
-
- /**
- * Hides the wait note dialog.
- *
- * @since S60 v3.2
- */
- void HideWaitNoteDialog();
-
- /**
- * Dismisses the wait note dialog and possible
- * other dialogs and stops the change process.
- *
- * @since S60 v3.2
- */
- void StopShortcutChangeProcess();
-
-private:
-
- void ConstructL(const TRect& aRect);
-
- // from base class CGSBaseContainer
-
- /**
- * From CGSBaseContainer
- * Constructs the settings listbox
- *
- * @since S60 v3.2
- * @param aResLbxId Listbox resource id
- */
- void ConstructListBoxL(TInt aResLbxId);
-
- /**
- * Chandles a setting change command to select application from a list
- *
- * @since S60 v3.2
- * @param aItem Applist item to modify
- * @param aNew ETrue if selecting an application for first time, EFalse if not
- * @return ETrue if shortcut was changed. EFalse if not
- */
- TBool HandleAppListChangeCommandL(CAiScutSettingsItem& aItem, TBool aNew = EFalse);
-
- /**
- * Chandles a setting change command to select bookmark from a list
- *
- * @since S60 v3.2
- * @param aItem Applist item to modify
- * @param aNew ETrue if selecting an application for first time, EFalse if not
- * @return ETrue if shortcut was changed. EFalse if not
- */
- TBool HandleBookmarkChangeCommandL(CAiScutSettingsItem& aItem, TBool aNew = EFalse);
-
- /**
- * Chandles a setting change command to edit an URL
- *
- * @since S60 v3.2
- * @param aItem Applist item to modify
- * @param aNew ETrue if typing a new url, EFalse if editing an existing one
- * @return ETrue if shortcut was changed. EFalse if not
- */
- TBool HandleUrlChangeCommandL(CAiScutSettingsItem& aItem, TBool aNew = EFalse);
-
- /**
- * Handles text editing in an CAknTextSettingPage
- *
- * @since S60 v3.2
- * @param aResId Resource id for the text setting page
- * @param aDes The text to edit
- * @return ETrue if user pressed OK, ETrue if user pressed Cancel
- */
- TBool EditTextL(TInt aResId, TDes& aDes);
-
- /**
- * Shows the wait note dialog.
- *
- * @since S60 v3.2
- */
- void ShowWaitNoteDialogL();
-
- /**
- * Required for help.
- *
- */
- void GetHelpContext(TCoeHelpContext& aContext) const;
-
- /**
- *
- */
- TKeyResponse OfferKeyEventL(const TKeyEvent& aKeyEvent, TEventCode aType);
-
- /**
- * Checks if there is a need to update the middle softkey label.
- */
- void CheckMiddleSoftkeyLabelL();
-
-private: // data
-
- /**
- * Settings plug-in model.
- * Not own.
- */
- CAiScutSettingsModel* iModel;
-
- /**
- * Application selection list page.
- * Own.
- */
- CAknRadioButtonSettingPage* iAppListDialog;
-
- /**
- * Bookmark selection list page.
- * Own.
- */
- CAknRadioButtonSettingPage* iBkmListDialog;
-
- /**
- * Text setting page.
- * Own.
- */
- CAknSettingPage* iEditDialog;
-
- /**
- * Wait dialog that is shown when the application list is not ready.
- * Own.
- */
- CAknWaitDialog* iWaitDialog;
-
- /**
- *
- */
- TAiScutSettingType iOldType;
-
- /**
- * Is the change process stopped by outside "forces"
- */
- TBool iChangeProcessStopped;
-
- /**
- * Is the change process in progress
- */
- TBool iChangeProcessInProgress;
-
-};
-
-#endif // CAISCUTSETTINGSCONTAINER_H
-
-// End of File.
--- a/idlefw/plugins/shortcutplugin/inc/caiscutsettingsitem.h Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,266 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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: Class for shortcut setting items.
-*
-*/
-
-
-#ifndef CAISCUTSETTINGSITEM_H
-#define CAISCUTSETTINGSITEM_H
-
-#include <e32base.h>
-#include "aiscutsettings.hrh"
-
-class CAiScutSettingsModel;
-class CRepository;
-
-/**
- * Line format for the settings list box
- */
-_LIT(KSettingListboxLineFormat, " \t%S\t\t%S");
-
-/**
- * Implements a shortcut setting item
- *
- * @since S60 v3.2
- */
-class CAiScutSettingsItem : public CBase
-{
-
-public:
-
- /**
- * Constructs a new settings item leaving it on the cleanup stack
- *
- * @since S60 v3.2
- * @param aModel Reference to the plug-in model
- * @param aIndex Index of the setting in the setting list
- * @param aKey Setting item key
- * @param aValue Setting item value
- */
- static CAiScutSettingsItem* NewLC(
- CAiScutSettingsModel& aModel,
- TInt aIndex,
- TUint32 aKey);
-
- static CAiScutSettingsItem* NewLC(
- CAiScutSettingsModel& aModel,
- TInt aIndex,
- TUint32 aKey,
- const TDesC& aValue);
-
- /**
- * Get item value from CRepository
- */
- void ReadL(CRepository* aRepository);
-
- /**
- * set item value into CRepository
- */
- TInt Save(CRepository* aRepository);
-
- /**
- *
- */
- virtual ~CAiScutSettingsItem();
-
- /**
- * Returns the setting item key
- *
- * @since S60 v3.2
- * @return Setting item key
- */
- inline TUint32 Key() const;
-
- /**
- * Returns the target shortcut uid
- *
- * @since S60 v3.2
- * @return Target shortcut uid
- */
- inline TUid Uid() const;
-
- /**
- * Returns the setting item type
- *
- * @since S60 v3.2
- * @return Setting item type
- */
- inline TAiScutSettingType Type() const;
-
- /**
- * Returns the setting item value
- *
- * @since S60 v3.2
- * @return Setting item value
- */
- TPtrC Value() const;
-
- /**
- * Returns the formatted listbox line descriptor
- *
- * @since S60 v3.2
- * @return Listbox line descriptor
- */
- TPtrC ListBoxLine() const;
-
- /**
- * Returns the setting item title
- *
- * @since S60 v3.2
- * @return setting item title
- */
- inline TPtrC Title() const;
-
- /**
- * Changes the setting item target application.
- * Can be used to change the setting item type to application setting
- *
- * @since S60 v3.2
- * @param aUid Target application uid
- * @param aParams Target application parameters, if any
- * @param aCaption Target application caption
- */
- void ChangeApplicationL(TUid aUid, const TDesC& aParams, const TDesC& aCaption);
-
- /**
- * Changes the setting item target bookmark.
- * Can be used to change the setting item type to bookmark setting
- *
- * @since S60 v3.2
- * @param aParams Target bookmark parameters
- * @param aCaption Target bookmark caption
- */
- void ChangeBookmarkL(const TDesC& aParams, const TDesC& aCaption);
-
- /**
- * Changes the setting item target url
- * Can be used to change the setting item type to an url setting
- *
- * @since S60 v3.2
- * @param aUrl Target url
- */
- void ChangeUrlL(const TDesC& aUrl);
-
-private:
-
- /**
- *
- */
- CAiScutSettingsItem(
- CAiScutSettingsModel& aModel,
- TInt aIndex,
- TUint32 aKey);
-
- /**
- *
- */
- void ConstructL();
-
- /**
- *
- */
- void ConstructL(const TDesC& aValue);
-
- /**
- *
- */
- TInt ParseValueL(const TDesC& aValue);
-
- /**
- * Creates a formatted listbox line
- *
- * @since S60 v3.2
- * @param aCaption Caption to use in the listbox line
- */
- void CreateListBoxLineL(const TDesC& aCaption);
-
- /**
- * Creates a setting item title
- * Leaves the created descriptor on cleanup stack
- *
- * @since S60 v3.2
- * @return Key title
- */
- HBufC* CreateItemTitleLC();
-
- /**
- * Creates a key title for an optionally visible shortcut.
- * Leaves the created descriptor on cleanup stack
- *
- * @since S60 v3.2
- * @return Key title
- */
- HBufC* CreateOptionallyVisibleKeyTitleLC();
-
- /**
- * Creates a key title for a non-visible shortcut.
- * Leaves the created descriptor on cleanup stack
- *
- * @since S60 v3.2
- * @return Key title
- */
- // HBufC* CreateNonVisibleKeyTitleLC();
-
-protected: // data
-
- /**
- * Reference to the plug-in model
- */
- CAiScutSettingsModel& iModel;
-
- /**
- * Setting item index in the setting list
- */
- TInt iIndex;
-
- /**
- * Setting item key
- */
- TUint32 iKey;
-
- /**
- * Setting item value
- * Own.
- */
- HBufC* iValue;
-
- /**
- * Target application uid
- */
- TUid iUid;
-
- /**
- * Setting item type
- */
- TAiScutSettingType iType;
-
- /**
- * Formatted listbox line
- * Own.
- */
- HBufC* iListBoxLine;
-
- /**
- * Setting item title. Points to the iListBoxLine buffer
- */
- TPtrC iTitle;
-
-};
-
-#include "caiscutsettingsitem.inl"
-
-#endif // CAISCUTSETTINGSITEM_H
-
-// End of File.
--- a/idlefw/plugins/shortcutplugin/inc/caiscutsettingsitem.inl Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,57 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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: Inline functions for the shortcut settings item.
-*
-*/
-
-
-// ---------------------------------------------------------------------------
-// Returns the setting item key.
-// ---------------------------------------------------------------------------
-//
-inline TUint32 CAiScutSettingsItem::Key() const
-{
- return iKey;
-}
-
-// ---------------------------------------------------------------------------
-// Returns the target shortcut uid.
-// ---------------------------------------------------------------------------
-//
-inline TUid CAiScutSettingsItem::Uid() const
-{
- return iUid;
-}
-
-// ---------------------------------------------------------------------------
-// Returns the setting item type.
-// ---------------------------------------------------------------------------
-//
-inline TAiScutSettingType CAiScutSettingsItem::Type() const
-{
- return iType;
-}
-
-
-
-// ---------------------------------------------------------------------------
-// Returns the setting item title.
-// ---------------------------------------------------------------------------
-//
-inline TPtrC CAiScutSettingsItem::Title() const
-{
- return iTitle;
-}
-
-// End of File.
--- a/idlefw/plugins/shortcutplugin/inc/caiscutsettingsmodel.h Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,325 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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: Shrortcut settings plug-in model.
-*
-*/
-
-
-#ifndef CAISCUTSETTINGSMODEL_H
-#define CAISCUTSETTINGSMODEL_H
-
-#include <e32base.h>
-#include <bamdesca.h> // For MDesCArray
-#include <apgcli.h> // For RApaLsSession
-#include <favouritesdb.h> // For RFavouritesDb
-#include <favouritesitemlist.h> // For CFavouritesItemList
-
-#include "caiscutsettingsapplist.h"
-#include "caiscutsettingsbkmlist.h"
-
-class CCoeEnv;
-class CRepository;
-class CAiScutSettingsItem;
-class CAiScutSettingsContainer;
-class CAiScutRepositoryWatcher;
-class CAiScutSettings;
-
-/**
- * Shrortcut settings plug-in model
- *
- * @lib aiscutsettings.lib
- * @since S60 v3.2
- */
-class CAiScutSettingsModel : public CBase
- , public MDesCArray
- , public MAiScutListObserver
-{
-
-public:
-
- /**
- *
- */
- static CAiScutSettingsModel* NewL(CAiScutSettings& aPlugin, CCoeEnv* aEnv);
-
- /**
- *
- */
- virtual ~CAiScutSettingsModel();
-
-public: // from MDesCArray
-
- /**
- * Returns the number of descriptor elements in a descriptor array.
- *
- * @since S60 v3.2
- * @return The number of descriptor elements in a descriptor array.
- */
- TInt MdcaCount() const;
-
- /**
- * Indexes into a descriptor array.
- *
- * @since S60 v3.2
- * @param aIndex The position of the descriptor element within a descriptor array.
- * @return A 16 bit non-modifiable pointer descriptor representing the descriptor
- * element located at position aIndex within a descriptor array.
- */
- TPtrC MdcaPoint(TInt aIndex) const;
-
- /**
- * Handle Shortcuts changed
- */
- static TInt HandleShortcutsChanged(TAny* aPtr);
-
- /**
- * Handle hidden Applications changed
- */
- static TInt HandleHiddenAppsChanged(TAny* aPtr);
-
-public: // from MAiScutListObserver
-
- /**
- * From MAiScutListObserver
- * Callback for application list events
- *
- * @since S60 v3.2
- * @param aEvent AppList event code
- * @param aAdded ETrue if applications were added, EFalse if removed
- */
- void HandleScutListEventL(TScutListEvent aEvent, TBool aAdded);
-
- /**
- * Find application is hidden using Uid
- */
- TBool IsHidden(const TUid& aAppUid) const;
-
-public:
-
- /**
- * Tells the application list and bookmark list to start or stop observing for changes
- */
- void ActivateObservers(TBool aActivate);
-
- /**
- * Returns a setting item for the given index
- *
- * @since S60 v3.2
- * @param aIndex Index of the setting item
- * @return Pointer to a setting item
- */
- CAiScutSettingsItem* Item(TInt aIndex) const;
-
- /**
- * Utility function to retrieve an appliation caption from an uid
- *
- * @since S60 v3.2
- * @param aUid Application uid
- * @return Pointer descriptor to the application caption
- */
- TInt GetAppCaption(const TUid aUid, TDes& aCaption);
-
- /**
- * Utility function to retrieve a bookmark caption from an uid
- *
- * @since S60 v3.2
- * @param aUid Bookmark uid
- * @return Pointer descriptor to the bookmark caption
- */
- TInt GetBkmCaptionL(const TUid aUid, TDes& aCaption);
-
- /**
- * Returns a pointer to the coe environment
- *
- * @since S60 v3.2
- * @return Pointer to coe environment
- */
- CCoeEnv* Env();
-
- /**
- * Handles saving a setting item to central repository
- *
- * @since S60 v3.2
- * @param aItem Item to save
- */
- void SaveItemL(CAiScutSettingsItem& aItem);
-
- /**
- * Sets pointer to settings plug-in container.
- *
- * @since S60 v3.2
- * @param aContainer Pointer to settings plug-in container.
- */
- void SetContainer(CAiScutSettingsContainer* aContainer);
-
- /**
- * Read bookmarks from favourites engine.
- *
- */
- void ReadBookmarksL();
-
- /**
- * Return bookmark count.
- */
- TInt BookmarkCount() const;
-
- /**
- * Get bookmark from index aIndex.
- */
- CFavouritesItem* GetBookmark(TInt aIndex);
-
- /**
- * Returns reference to the bookmark database owned by the engine
- *
- * @return Reference to RFavouritesDb
- */
- RFavouritesDb& FavouritesDb();
-
- /**
- *
- */
- CAiScutSettingsAppList* AppList();
-
- /**
- *
- */
- CAiScutSettingsBkmList* BkmList();
-
- /**
- *
- */
- void SetSettingsKeys(RArray<TUint32>& aKeys);
-
- /**
- *
- */
- void UpdateSettingsL();
-
- /**
- *
- */
- void UpdateSettingsContainerL();
-
-private:
-
- /**
- *
- */
- CAiScutSettingsModel(CAiScutSettings& aPlugin, CCoeEnv* aEnv);
-
- /**
- *
- */
- void ConstructL();
-
-
- /**
- *
- */
- void GetHiddenAppsL();
-
-private: // data
-
- /**
- * Array of setting items.
- * Own.
- */
- RPointerArray<CAiScutSettingsItem> iSettings;
-
- /**
- * Array of keys for settings items
- * Own.
- */
- RArray<TUint32> iKeys;
-
- /**
- * Central repository handler.
- * Own.
- */
- CRepository* iRepository;
-
- /**
- * Application architecture server session.
- * Own.
- */
- RApaLsSession iApaSession;
-
- /**
- * Bookmark database session.
- * Own.
- */
- RFavouritesSession iBookmarkSess;
-
- /**
- * Bookmark database.
- * Own.
- */
- RFavouritesDb iBookmarkDb;
-
- /**
- * Bookmark list.
- * Own.
- */
- CFavouritesItemList* iFavItemList;
-
- /**
- * Settings plugin
- * Not own.
- */
- CAiScutSettings& iPlugin;
-
- /**
- * Coe environment.
- * Not own.
- */
- CCoeEnv* iEnv;
-
- /**
- * Application list.
- * Own.
- */
- CAiScutSettingsAppList* iAppList;
-
- /**
- * Bookmark list.
- * Own.
- */
- CAiScutSettingsBkmList* iBkmList;
-
- /**
- * Notifier for changes in the shortcut settings.
- * Own.
- */
- CAiScutRepositoryWatcher* iSettingsNotifier;
-
- /**
- * Settings plugin container.
- * Not own.
- */
- CAiScutSettingsContainer* iContainer;
-
- // Array of UIDs which are hidden from the TARM
- RArray<TUid> iHiddenApps;
-
- // Central repository object for Hidden Apps
- CRepository* iHiddenAppsRepository;
-
- // Central repository change handler for Hidden Apps
- CAiScutRepositoryWatcher* iHiddenAppsNotifier;
-
-};
-
-#endif // CAISCUTSETTINGSMODEL_H
-
-// End of File.
--- a/idlefw/plugins/shortcutplugin/inc/caiscutshortcut.h Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,337 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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: Implementation for a shortcut.
-*
-*/
-
-
-#ifndef CAISCUTSHORTCUT_H
-#define CAISCUTSHORTCUT_H
-
-#include <e32base.h>
-
-#include "taiscutparser.h"
-
-class CAiScutEngine;
-class CAiScutTarget;
-class MAiContentObserver;
-class MAiPropertyExtension;
-
-/**
- * Implementation for a shortcut
- *
- * Handles parsing and launching an application shortcut
- *
- * @since S60 v3.2
- */
-class CAiScutShortcut : public CTimer
-{
-
-public:
-
- /**
- * First phase constructor.
- * Leaves the object on cleanup stack
- *
- * @since S60 v3.2
- * @param aId Shortcut id
- * @param aTarget The shortcut definition string.
- * @param aEngine Reference to shortcut plug-in engine
- */
- static CAiScutShortcut* NewLC(TInt aId, const TDesC& aTarget,
- CAiScutEngine& aEngine);
-
- /**
- * First phase constructor
- *
- * @since S60 v3.2
- * @param aId Shortcut id
- * @param aTarget The shortcut definition string
- * @param aEngine Reference to shortcut plug-in engine
- */
- static CAiScutShortcut* NewL(TInt aId, const TDesC& aTarget,
- CAiScutEngine& aEngine);
-
- virtual ~CAiScutShortcut();
-
- /**
- * Returns the shortcut id
- *
- * @since S60 v3.2
- * @return Shortcut id
- */
- TInt32 Id() const;
-
- /**
- * Publishes the shortcut content, non leaving version
- *
- * @since S60 v3.2
- * @param aPlugin Reference to plug-in
- * @param aObserver Content observer to publish to
- */
- void Publish(MAiPropertyExtension& aPlugin, MAiContentObserver& aObserver);
-
- /**
- * Checks if the application pointed to can be launched and reverts to the
- * default setting if not. If no valid target can be found, the shortcut
- * becomes empty. May only leave with KErrNotReady to signify that application
- * architecture server or message server is not ready and access check should
- * be retried later.
- *
- * @since S60 v3.2
- * @param aCheckType Specifies which kind of shortcuts should check its access
- * @return ETrue if the shortcut target is accessible
- */
- TBool CheckAccessL(TInt aCheckType);
-
- /**
- *
- */
- TBool IsTargetChanged() const;
-
- /**
- * Changes the shortcut target to the user defined setting
- *
- * @since S60 v3.2
- * @param aNewTarget The new user defined shortcut target
- */
- void SetUserTarget(const TDesC& aNewTarget);
-
- /**
- * Deletes the user target.
- *
- * @since S60 v3.2
- */
- void DeleteUserTarget();
-
- /**
- * Launches the shortcut
- *
- * @since S60 v3.2
- */
- void LaunchL();
-
- /**
- * Launches the shortcut
- *
- * @since S60 v5.1
- * @param aMessage A message to pass
- */
- void LaunchL(const TDesC8& aMessage);
-
- /**
- * Set call state
- *
- * @since S60 v3.2
- */
- void SetCallState(TBool aStatus);
-
- /**
- *
- * @since S60 v3.2
- */
- void SetToBePublished(TBool aFlag);
-
- /**
- *
- * @since S60 v3.2
- */
- TBool NeedsToBePublished();
-
- /**
- * Return shortcut type.
- *
- * @since S60 v3.2
- */
- TShortcutType Type() const;
-
- /**
- * Return application uid of this shortcut.
- *
- * @since S60 v3.2
- */
- TUid AppUid() const;
-
- /**
- * Return an additional id this target may use when
- * launching.
- *
- * @since S60 v3.2
- */
- TUid AdditionalUid() const;
-
- /**
- * Return current valid definition.
- *
- * @since S60 v3.2
- */
- TPtrC ActiveDefinition();
-
- /**
- * Set the icon to publish to softkeys,
- * icon area or to touch toolbar. Uses
- * aIcon.iDestination to determine which icon
- * is in question
- *
- * @since S60 v5.0
- */
- void SetIcon(TAiScutIcon aIcon);
-
-
-protected:
-
-
- CAiScutShortcut(TInt aId, CAiScutEngine& aEngine);
-
- void ConstructL(const TDesC& aTarget);
-
- /**
- * Creates a shortcut target object
- *
- * @since S60 v3.2
- * @param aDefinition Shortcut target definition
- * @return Pointer to shortcut target object
- */
- CAiScutTarget* CreateTargetL(
- const TDesC& aDefinition, TBool aCreateUserTarget);
-
- /**
- * Publishes the shortcut content, leaving version
- *
- * @since S60 v3.2
- * @param aPlugin Reference to plug-in
- * @param aObserver Content observer to publish to
- */
- virtual void PublishL(MAiPropertyExtension& aPlugin, MAiContentObserver& aObserver);
-
- /**
- * Publishes shortcut caption
- *
- * @since S60 v3.2
- * @param aPlugin Reference to plug-in
- * @param aObserver Content observer to publish to
- */
- virtual TInt PublishCaption(
- MAiPropertyExtension& aPlugin, MAiContentObserver& aObserver,
- TInt aCaptionContentId) const;
-
- /**
- * Publishes shortcut icon
- *
- * @since S60 v3.2
- * @param aPlugin Reference to plug-in
- * @param aObserver Content observer to publish to
- */
- virtual TInt PublishIcon(
- MAiPropertyExtension& aPlugin, MAiContentObserver& aObserver, TInt aIconContentId);
-
- /**
- * Set the icon to use instead of default icon
- *
- * @since S60 v3.2
- */
- void SetOverrideIcon(TAiScutIcon aIcon);
-
- /**
- * Set the icon to publish to softkeys
- *
- * @since S60 v3.2
- */
- void SetSoftkeyIcon(TAiScutIcon aIcon);
-
- /**
- * Set the icon to publish to touch toolbar
- *
- * @since S60 v5.0
- */
- void SetToolbarIcon(TAiScutIcon aIcon);
-
-// from CActive/CTimer
-
- TInt RunError(TInt aError);
-
- void DoCancel();
-
- void RunL();
-
-protected: // data
-
- /**
- * Shortcut id.
- */
- TInt32 iId;
-
- /**
- * Default shortcut target.
- * Own.
- */
- CAiScutTarget* iDefaultTarget;
-
- /**
- * User defined shortcut target.
- * Own.
- */
- CAiScutTarget* iUserTarget;
-
- /**
- * Stores the old target data while the new one is being published.
- * During publishing the framework might still dereference pointers in the old
- * target so it must be kept alive until the new target is successfully published.
- * If publishing fails, this is taken back to use and the new target is deleted.
- * Own.
- */
- CAiScutTarget* iRetiredTarget;
-
- /**
- * Pointer to the last published target.
- * DO NOT DELETE THROUGH THIS!
- * Not own.
- */
- CAiScutTarget* iLastPublishedTarget;
-
- /**
- * Pointer to the active target.
- * Can point either to iDefaultTarget, iUserTarget or NULL
- * DO NOT DELETE THROUGH THIS!
- * Not own.
- */
- CAiScutTarget* iActiveTarget;
-
- /**
- * Reference to the shortcut plug-in engine.
- */
- CAiScutEngine& iEngine;
-
- /**
- * Boolean indicating if this shortcut needs to be published.
- */
- TBool iNeedsToBePublished;
-
- /**
- * Call state
- */
- TBool iActiveCall;
-
- /**
- * Force the publish of this shortcut. For example
- * after call state has changed the actual shortcut
- * isn't changed but it still needs to be published.
- */
- TBool iForcePublish;
-
-};
-
-#endif // CAISCUTSHORTCUT_H
-
-// End of File.
--- a/idlefw/plugins/shortcutplugin/inc/caiscutshortcutext.h Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,164 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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: Shortcut plug-in shortcut extensions
-*
-*/
-
-
-#ifndef CAISCUTSHORTCUTEXT_H
-#define CAISCUTSHORTCUTEXT_H
-
-#include <e32base.h>
-#include <badesca.h>
-#include <aicontentpublisher.h>
-
-#include "caiscutshortcut.h"
-#include "mpopupeventhandleractions.h"
-
-class CPopupEventHandler;
-class MAiScutExtData;
-
-/**
- *
- * The class extends CAiScutShortcut by offering means to store
- * changeable popup text lines. The class overrides content publishing
- * functions from base class.
- *
- * @since S60 v3.2
- */
-class CAiScutShortcutExt : public CAiScutShortcut,
- public MPopupEventHandlerActions
- {
- public:
- /**
- * Factory function
- * @see CAiScutShortcut
- * @since S60 v3.2
- */
- static CAiScutShortcutExt* NewL( TInt aId, const TDesC& aTarget,
- CAiScutEngine& aEngine );
-
- /**
- * Factory function
- * @see CAiScutShortcut
- * @since S60 v3.2
- */
- static CAiScutShortcutExt* NewLC( TInt aId, const TDesC& aTarget,
- CAiScutEngine& aEngine );
-
- /**
- * Destructor
- * @since S60 v3.2
- */
- ~CAiScutShortcutExt();
-
- private:
- CAiScutShortcutExt( TInt aId, CAiScutEngine& aEngine );
- void ConstructL( const TDesC& aTarget );
-
- public: // New functions
- /**
- * @return Definition string of active target
- * @since S60 v3.2
- */
- TPtrC ActiveTargetDefinition() const;
-
- /**
- * Handles events (e.g. gain/lost focus) from AI framework
- * @param aEvent Event
- * @since S60 v3.2
- */
- void HandleAIEventL( TInt aEvent );
-
- /**
- * Handles Resumed event
- * @param aResumeReason Resume reason
- * @since S60 v3.2
- */
- void HandleResumed( TAiTransitionReason aResumeReason );
-
- /**
- * Set extension data
- * @param aAiScutExtData Pointer to new extension data
- * @since S60 v3.2
- */
- void SetAiScutExtData( const MAiScutExtData* aAiScutExtData );
-
-
- private: // From CAiScutShortcut
- void PublishL( MAiPropertyExtension& aPlugin,
- MAiContentObserver& aObserver );
-
- TInt PublishCaption( MAiPropertyExtension& aPlugin,
- MAiContentObserver& aObserver, TInt aCaptionContentId) const;
-
- void PublishPopupText( MAiPropertyExtension& aPlugin,
- MAiContentObserver& aObserver ) const;
-
- TInt PublishIcon( MAiPropertyExtension& aPlugin,
- MAiContentObserver& aObserver, TInt aIconContentId );
-
- private: // From MPopupEventHandlerActions
- void IssuePublishShortcut();
-
- private: // data
-
- /**
- * Extension data
- * Ref.
- */
- const MAiScutExtData* iAiScutExtData;
-
- /**
- * Flag that tells whether to publish or clean the popup text box.
- * The flag is controlled by iPopupEventHandler
- * Own.
- */
- //TBool iPublishLineArray;
-
- /**
- * Handler of various events, includes state machine
- * Own.
- */
- CPopupEventHandler* iPopupEventHandler;
-
- /**
- * Pointer to previous popup line array. This is used detect changes
- * in data.
- * Ref.
- */
- const MDesCArray* iPreviousPopupLineArray;
-
- /**
- * Pointer to previous icon. This is used detect changes
- * in data.
- * Ref.
- */
- const CGulIcon* iPreviousIcon;
-
- /**
- * Has the icon changed
- */
- TBool iIconChanged;
-
- /**
- * Has the text changed
- */
- TBool iTextChanged;
-
- };
-
-#endif // CAISCUTSHORTCUTEXT_H
-
-// End of File.
--- a/idlefw/plugins/shortcutplugin/inc/caiscutshortcutinfo.h Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,88 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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: Small container for shortcut info.
-*
-*/
-
-
-#ifndef CAISCUTSHORTCUTINFO_H
-#define CAISCUTSHORTCUTINFO_H
-
-#include <e32base.h>
-
-/**
- * Implementation for a shortcut
- *
- * Handles parsing and launching an application shortcut
- *
- * @since S60 v3.2
- */
-class CAiScutShortcutInfo : public CBase
-{
-
-public:
-
- /**
- * First phase constructor
- *
- * @since S60 v3.2
- * @param aId Shortcut id
- * @param aTarget The shortcut definition string
- */
- static CAiScutShortcutInfo* NewL(TInt aId, const TDesC& aTarget);
-
- virtual ~CAiScutShortcutInfo();
-
- /**
- * Returns the shortcut id
- *
- * @since S60 v3.2
- * @return Shortcut id
- */
- TInt32 Id() const;
-
- /**
- * Returns the shortcut target string.
- *
- * @since S60 v3.2
- * @return Shortcut target string
- */
- const TDesC& Target();
-
-protected:
-
-private:
-
- CAiScutShortcutInfo(TInt aId);
-
- void ConstructL(const TDesC& aTarget);
-
-private: // data
-
- /**
- * Shortcut id.
- */
- TInt32 iId;
-
- /**
- * Shortcut target string.
- * Own.
- */
- HBufC* iTarget;
-
-};
-
-#endif // CAISCUTSHORTCUTINFO_H
-
-// End of File.
--- a/idlefw/plugins/shortcutplugin/inc/caiscuttarget.h Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,277 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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: Base class for all shortcut targets.
-*
-*/
-
-
-#ifndef CAISCUTTARGET_H
-#define CAISCUTTARGET_H
-
-#include <e32base.h>
-
-#include "taiscutparser.h"
-#include "aiscutdefs.h"
-#include <AknsItemID.h>
-
-class CAiScutEngine;
-class CGulIcon;
-
-_LIT(KBitmapFile, "aiscutplugin.mif");
-
-/**
- * Base class for shortcut targets
- *
- * @since S60 v3.2
- */
-class CAiScutTarget : public CBase
-{
-
-public:
-
- virtual ~CAiScutTarget();
-
- /**
- * Returns the shortcut definition string.
- *
- * @since S60 v3.2
- * @return Shortcut definition string
- */
- virtual TPtrC Definition() const = 0;
-
- /**
- * Returns the shortcut target caption.
- * Caption can be either a descriptor or a resource id.
- * If the return value has a non-zero value, it is the resource id.
- * Zero indicates that the descriptor reference parameter is used.
- * Default implementation returns KErrNotSupported;
- *
- * Getting the target caption and icon utilizes the "lazy evaluation" idiom
- * which means they are created only when they are first needed. This is because
- * there are (atleast) two scenarios where they are never needed:
- * 1. The active theme does not support shortcut captions or icons.
- * 2. Shortcuts launched using LaunchByValue are never published.
- *
- * @since S60 v3.2
- * @param aDes On return, the descriptor if used
- * @return The resource id or zero to indicate that the descriptor is used.
- */
- virtual TInt GetCaption( TPtrC& aDes, TAiScutAppTitleType aTitleType ) const;
-
- /**
- * Returns the shortcut target icon.
- * Icon can be either an icon pointer or a resource id.
- * If the return value has a non-zero value, it is the resource id.
- * Zero indicates that the icon pointer is used.
- * Default implementation returns the icon that has possibly
- * been set with @c SetOverrideIcon() and returns
- * KErrNotSupported if no override icon has been set.
- *
- * Uses the "lazy evaluation" idiom to get the icon. See Caption()
- *
- * @since S60 v3.2
- * @param aIcon On return, the icon pointer if used
- * @return The resource id or zero to indicate that the icon pointer is used.
- */
- virtual TInt GetIcon( CGulIcon*& aIcon ) const;
-
- /**
- * Returns the shortcut icon that can be published to softkeys
- * Icon can be either an icon pointer or a resource id.
- * If the return value has a non-zero value, it is the resource id.
- * Zero indicates that the icon pointer is used.
- * Default implementation returns the icon that has possibly
- * been set with @c SetSoftkeyIcon() and returns
- * KErrNotSupported if no softkey icon has been set.
- *
- * Uses the "lazy evaluation" idiom to get the icon. See Caption()
- *
- * @since S60 v3.2
- * @param aIcon On return, the icon pointer if used
- * @return The resource id or zero to indicate that the icon pointer is used.
- */
- virtual TInt GetSoftkeyIcon( CGulIcon*& aIcon ) const;
-
- /**
- * Returns the shortcut icon that can be published to toolbar
- * Icon can be either an icon pointer or a resource id.
- * If the return value has a non-zero value, it is the resource id.
- * Zero indicates that the icon pointer is used.
- * Default implementation returns the icon that has possibly
- * been set with @c SetSoftkeyIcon() and returns
- * KErrNotSupported if no softkey icon has been set.
- *
- * Uses the "lazy evaluation" idiom to get the icon. See Caption()
- *
- * @since S60 v3.2
- * @param aIcon On return, the icon pointer if used
- * @return The resource id or zero to indicate that the icon pointer is used.
- */
- virtual TInt GetToolbarIcon( CGulIcon*& aIcon ) const;
-
- /**
- * Checks if the shortcut target is accessible.
- *
- * @since S60 v3.2
- * @param aCheckType Specifies which kind of shortcuts should check its access
- * @return ETrue if accessible, EFalse if not
- */
- virtual TBool IsAccessibleL( TInt aCheckType ) = 0;
-
- /**
- * Launches the shortcut.
- *
- * @since S60 v3.2
- */
- virtual void LaunchL() = 0;
-
- /**
- * Launches the shortcut.
- *
- * @since S60 v5.1
- * @param aMessage A message to pass
- */
- virtual void LaunchL(const TDesC8& aMessage) { (void)aMessage; };
-
- /**
- * Return application uid this target launches.
- *
- * @since S60 v3.2
- */
- virtual TUid AppUid() const = 0;
-
- /**
- * Return an additional id this target may use when
- * launching. Default implementation return TUid(-1)
- *
- * @since S60 v3.2
- */
- virtual TUid AdditionalUid() const;
-
- /**
- * Return shortcut type.
- *
- * @since S60 v3.2
- */
- TShortcutType Type() const;
-
- /**
- * Starts a full screen effect.
- */
- void BeginEffectL();
-
- /**
- * Set the icon that overrides the shortcut default
- * icon. Instead of fetching the icon from for example an
- * application the icon defined here can be used. The shortcut
- * can use the @c GetIcon() to fetch the
- * icon defined here. Currently we support
- * icon loading from skin or from MIF/MBM-file.
- * The file must reside under z:\resource altough
- * it can be under some subdirectory.
- *
- * @since S60 v3.2
- * @param aIcon The overriding icon
- */
- void SetOverrideIcon(TAiScutIcon aIcon);
-
- /**
- * Set the icon that is to be published to softkeys
- * The @c GetSoftkeyIcon() can be used to fetch the
- * icon defined here. Currently we support
- * icon loading from skin or from MIF/MBM-file.
- * The file must reside under z:\resource altough
- * it can be under some subdirectory.
- *
- * @since S60 v3.2
- * @param aIcon The softkey icon
- */
- void SetSoftkeyIcon(TAiScutIcon aIcon);
-
- /**
- * Set the icon that is to be published to touch toolbar
- * The @c GetSoftkeyIcon() can be used to fetch the
- * icon defined here. Currently we support
- * icon loading from skin or from mif-file.
- * The mif-file must reside under z:\resource altough
- * it can be under some subdirectory.
- *
- * @since S60 v5.0
- * @param aIcon The softkey icon
- */
- void SetToolbarIcon(TAiScutIcon aIcon);
-
-protected:
-
- CAiScutTarget( CAiScutEngine& aEngine, TShortcutType aType );
-
-private:
-
- /**
- * Returns the icon defined in aIconToLoads. Loads the icon
- * from MIF/MBM-file or from skin.
- *
- * @return KErrNone if no error
- */
- TInt GetIcon(const TAiScutIcon &aIconToLoad, CGulIcon *&aIcon ) const;
-
- /**
- * Loads an icon defined in aIconToLoad from skin
- *
- * @return KErrNone if no error
- */
- void LoadIconFromSkinL(const TAiScutIcon &aIconToLoad, CGulIcon*& aIcon) const;
-
- /**
- * Loads an icon defined in aIconToLoad from MIF/MBM-file
- * The file must reside under z:\resource. It can be under
- * some subdirectory.
- *
- * @return KErrNone if no error
- */
- void LoadIconFromFileL(const TAiScutIcon &aIconToLoad, CGulIcon*& aIcon) const;
-
-
-protected: // data
-
- /**
- * Reference to shortcut plug-in engine.
- */
- CAiScutEngine& iEngine;
-
- /**
- * Shortcut type.
- */
- TShortcutType iType;
-
- /**
- * Icon that is meant to override the default icon
- */
- TAiScutIcon iOverrideIcon;
-
- /**
- * Icon that is to be published to softkeys
- */
- TAiScutIcon iSoftkeyIcon;
-
- /**
- * Icon that is to be published to toolbar
- */
- TAiScutIcon iToolbarIcon;
-
-};
-
-#endif // CAISCUTTARGET_H
-
-// End of File.
--- a/idlefw/plugins/shortcutplugin/inc/caiscuttargetapp.h Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,226 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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: Class for application shortcut target.
-*
-*/
-
-
-#ifndef CAISCUTTARGETAPP_H
-#define CAISCUTTARGETAPP_H
-
-#include "caiscuttarget.h"
-
-class CPeriodic;
-class MAknsSkinInstance;
-/**
- * Implements an application shortcut target
- *
- * Handles parsing and launching an application shortcut target
- *
- * @since S60 v3.2
- */
-class CAiScutTargetApp : public CAiScutTarget
-{
-
-public:
-
- /**
- * First phase constructor
- *
- * @since S60 v3.2
- * @param aEngine Reference to the plug-in engine
- * @param aParser Shortcut definition parser
- */
- static CAiScutTargetApp* NewL(
- CAiScutEngine& aEngine, TShortcutType aType, const TAiScutParser& aParser);
-
- virtual ~CAiScutTargetApp();
-
- /**
- * Returns the shortcut definition string
- *
- * @since S60 v3.2
- * @return Shortcut definition string
- */
- TPtrC Definition() const;
-
- /**
- * Returns the shortcut target caption.
- * Caption can be either a descriptor or a resource id.
- * If the return value has a non-zero value, it is the resource id.
- * Zero indicates that the descriptor reference parameter is used.
- * Default implementation returns KErrNotSupported;
- *
- * Getting the target caption and icon utilizes the "lazy evaluation" idiom
- * which means they are created only when they are first needed. This is because
- * there are (atleast) two scenarios where they are never needed:
- * 1. The active theme does not support shortcut captions or icons.
- * 2. Shortcuts launched using LaunchByValue are never published.
- *
- * @since S60 v3.2
- * @param aDes On return, the descriptor if used
- * @return The resource id or zero to indicate that the descriptor is used.
- */
- TInt GetCaption(TPtrC& aDes, TAiScutAppTitleType aTitleType) const;
-
- /**
- * Returns the shortcut target icon.
- * Icon can be either an icon pointer or a resource id.
- * If the return value has a non-zero value, it is the resource id.
- * Zero indicates that the icon pointer is used.
- * Default implementation returns KErrNotSupported;
- *
- * Uses the "lazy evaluation" idiom to get the icon. See Caption()
- *
- * @since S60 v3.2
- * @param aIcon On return, the icon pointer if used
- * @return The resource id or zero to indicate that the icon pointer is used.
- */
- TInt GetIcon(CGulIcon*& aIcon) const;
-
- /**
- * Returns the shortcut icon that can be published to toolbar
- * Icon can be either an icon pointer or a resource id.
- * If the return value has a non-zero value, it is the resource id.
- * Zero indicates that the icon pointer is used.
- * Default implementation returns the icon that has possibly
- * been set with @c SetSoftkeyIcon() and returns
- * KErrNotSupported if no softkey icon has been set.
- *
- * Uses the "lazy evaluation" idiom to get the icon. See Caption()
- *
- * @since S60 v3.2
- * @param aIcon On return, the icon pointer if used
- * @return The resource id or zero to indicate that the icon pointer is used.
- */
- TInt GetToolbarIcon(CGulIcon*& aIcon) const;
-
- /**
- * Checks if the shortcut target is accessible
- *
- * @since S60 v3.2
- * @param aCheckType Specifies which kind of shortcuts should check its access
- * @return ETrue if accessible, EFalse if not
- */
- TBool IsAccessibleL(TInt aCheckType);
-
- /**
- * Launches the shortcut
- *
- * @since S60 v3.2
- */
- void LaunchL();
-
- /**
- * Launches the shortcut
- *
- * @since S60 v5.1
- */
- void LaunchL( const TDesC8& aCustomMessage );
-
- /**
- * Return application uid this target launches.
- *
- * @since S60 v3.2
- */
- TUid AppUid() const;
-
- /**
- * Return an additional id this target may use when
- * launching. Default implementation return TUid(-1)
- *
- * @since S60 v3.2
- */
- TUid AdditionalUid() const;
-
-protected:
-
-private:
-
- CAiScutTargetApp(CAiScutEngine& aEngine, TShortcutType aType, const TUid aUid);
-
- void ConstructL(const TAiScutParser& aParser);
-
- /**
- *
- */
- void GetCaptionL(TAiScutAppTitleType aTitleType) const;
-
- /**
- * Creates the application icon
- *
- * @since S60 v3.2
- */
- void CreateAppIconL(CGulIcon*& aIcon) const;
-
- /**
- * Creates the NonNative application icon
- *
- * @since S60 v3.2
- */
- CGulIcon* CreateNonNativeIconL() const;
-
- /**
- * Performs Central Repository shortcut set
- * for EasyVoIP application.
- */
- void SetEasyVoIPShortcutStartL() const;
-
- CGulIcon* CreateSubstituteIconL( MAknsSkinInstance* aSkin, TUid aAppUid, TUid iViewUid ) const;
-private: // data
-
- /**
- * Application uid.
- */
- TUid iAppUid;
-
- /**
- * Possible view uid.
- */
- TUid iViewUid;
-
- /**
- * Shortcut caption.
- * Own.
- */
- mutable HBufC* iCaption;
-
- /**
- * Shortcut short caption.
- * Own.
- */
- mutable HBufC* iShortCaption;
-
- /**
- * Holds the shortcut definition string.
- * Own.
- */
- HBufC* iDefinition;
-
- /**
- * Run the application in the background.
- */
- TBool iBackground;
-
- /**
- * Command line parameter.
- * Own.
- */
- HBufC8* iMsg;
-
-};
-
-#endif // CAISCUTTARGETAPP_H
-
-// End of File.
--- a/idlefw/plugins/shortcutplugin/inc/caiscuttargetbkm.h Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,157 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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: Class for bookmark shortcut target.
-*
-*/
-
-
-#ifndef CAISCUTTARGETBKM_H
-#define CAISCUTTARGETBKM_H
-
-#include "caiscuttarget.h"
-
-/**
- * Implements an bookmark shortcut target
- *
- * Handles parsing and launching an bookmark shortcut target
- *
- * @since S60 v3.2
- */
-class CAiScutTargetBkm : public CAiScutTarget
-{
-
-public:
-
- /**
- * First phase constructor
- *
- * @since S60 v3.2
- * @param aEngine Reference to the plug-in engine
- * @param aParser Shortcut definition parser
- */
- static CAiScutTargetBkm* NewL(
- CAiScutEngine& aEngine, TShortcutType aType, const TAiScutParser& aParser);
-
- virtual ~CAiScutTargetBkm();
-
- /**
- * Returns the shortcut definition string
- *
- * @since S60 v3.2
- * @return Shortcut definition string
- */
- TPtrC Definition() const;
-
- /**
- * Returns the shortcut target caption.
- * Caption can be either a descriptor or a resource id.
- * If the return value has a non-zero value, it is the resource id.
- * Zero indicates that the descriptor reference parameter is used.
- * Default implementation returns KErrNotSupported;
- *
- * Getting the target caption and icon utilizes the "lazy evaluation" idiom
- * which means they are created only when they are first needed. This is because
- * there are (atleast) two scenarios where they are never needed:
- * 1. The active theme does not support shortcut captions or icons.
- * 2. Shortcuts launched using LaunchByValue are never published.
- *
- * @since S60 v3.2
- * @param aDes On return, the descriptor if used
- * @return The resource id or zero to indicate that the descriptor is used.
- */
- TInt GetCaption(TPtrC& aDes, TAiScutAppTitleType aTitleType) const;
-
- /**
- * Returns the shortcut target icon.
- * Icon can be either an icon pointer or a resource id.
- * If the return value has a non-zero value, it is the resource id.
- * Zero indicates that the icon pointer is used.
- * Default implementation returns KErrNotSupported;
- *
- * Uses the "lazy evaluation" idiom to get the icon. See Caption()
- *
- * @since S60 v3.2
- * @param aIcon On return, the icon pointer if used
- * @return The resource id or zero to indicate that the icon pointer is used.
- */
- TInt GetIcon(CGulIcon*& aIcon) const;
-
- /**
- * Checks if the shortcut target is accessible
- *
- * @since S60 v3.2
- * @param aCheckType Specifies which kind of shortcuts should check its access
- * @return ETrue if accessible, EFalse if not
- */
- TBool IsAccessibleL(TInt aCheckType);
-
- /**
- * Launches the shortcut
- *
- * @since S60 v3.2
- */
- void LaunchL();
-
- /**
- * Return application uid this target launches.
- *
- * @since S60 v3.2
- */
- TUid AppUid() const;
-
- /**
- * Return an additional id this target may use when
- * launching. Default implementation return TUid(-1)
- *
- * @since S60 v3.2
- */
- TUid AdditionalUid() const;
-
-protected:
-
-private:
-
- CAiScutTargetBkm(CAiScutEngine& aEngine, TShortcutType aType);
-
- void ConstructL(const TAiScutParser& aParser);
-
- /**
- *
- */
- void GetCaptionL() const;
-
-private: // data
-
- /**
- * Bookmark uid.
- */
- TUid iBkmUid;
-
- /**
- * Shortcut caption.
- * Own.
- */
- mutable HBufC* iCaption;
-
- /**
- * Holds the shortcut definition string.
- * Own.
- */
- HBufC* iDefinition;
-
-};
-
-#endif // CAISCUTTARGETAPP_H
-
-// End of File.
--- a/idlefw/plugins/shortcutplugin/inc/caiscuttargetempty.h Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,107 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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: Empty target
-*
-*/
-
-
-#ifndef CAISCUTEMPTY_H
-#define CAISCUTEMPTY_H
-
-#include "caiscuttarget.h"
-
-/**
- * Empty target.
- *
- * @since S60 v3.2
- */
-class CAiScutTargetEmpty : public CAiScutTarget
-{
-public: // Constructors and destructor
-
- /**
- * Two-phased constructor.
- * @param
- * @return new instance.
- */
- static CAiScutTargetEmpty* NewL(
- CAiScutEngine& aEngine, TShortcutType aType, const TDesC& aTarget );
-
- /**
- * Destructor.
- */
- virtual ~CAiScutTargetEmpty();
-
- /**
- * Returns the shortcut definition string
- *
- * @since S60 v3.2
- * @return Shortcut definition string
- */
- TPtrC Definition() const;
-
- /**
- * See base class
- */
- TInt GetCaption(TPtrC& aDes, TAiScutAppTitleType aTitleType) const;
-
- /**
- * See base class
- */
- TInt GetIcon(CGulIcon*& aIcon) const;
-
- /**
- * See base class
- */
- TBool IsAccessibleL(TInt aCheckType);
-
- /**
- * Launches the shortcut
- *
- * @since S60 v3.2
- */
- void LaunchL();
-
- /**
- * Return application uid this target launches.
- *
- * @since S60 v3.2
- */
- TUid AppUid() const;
-
-private: // New methods
-
- /**
- * C++ default constructor.
- */
- CAiScutTargetEmpty( CAiScutEngine& aEngine, TShortcutType aType );
-
- /**
- * By default Symbian OS constructor is private.
- */
- void ConstructL( const TDesC& aTarget );
-
-private: // Data
-
- /**
- * Holds the shortcut definition string
- * Owned.
- */
- HBufC* iDefinition;
-
-};
-
-#endif
-
-// End of File.
--- a/idlefw/plugins/shortcutplugin/inc/caiscuttargethttp.h Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,128 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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: Class for http shortcut target.
-*
-*/
-
-
-#ifndef CAISCUTTARGETHTTP_H
-#define CAISCUTTARGETHTTP_H
-
-#include "caiscuttarget.h"
-
-/**
- * Command line parameter for browser to open an url
- */
-_LIT( KOpenUrlParam, "4 " );
-
-/**
- * Implements an http shortcut target
- *
- * Handles parsing and launching an http shortcut target
- *
- * @since S60 v3.2
- */
-class CAiScutTargetHttp : public CAiScutTarget
-{
-
-public:
-
- /**
- * First phase constructor
- *
- * @since S60 v3.2
- * @param aEngine Reference to the plug-in engine
- * @param aTarget The shortcut definition string
- */
- static CAiScutTargetHttp* NewL(
- CAiScutEngine& aEngine, TShortcutType aType, const TAiScutParser& aParser );
-
- virtual ~CAiScutTargetHttp();
-
- /**
- * Returns the shortcut definition string
- *
- * @since S60 v3.2
- * @return Shortcut definition string
- */
- TPtrC Definition() const;
-
- /**
- * See base class
- */
- TInt GetCaption(TPtrC& aDes, TAiScutAppTitleType aTitleType) const;
-
- /**
- * See base class
- */
- TInt GetIcon(CGulIcon*& aIcon) const;
-
- /**
- * See base class
- */
- TBool IsAccessibleL(TInt aCheckType);
-
- /**
- * Launches the shortcut
- *
- * @since S60 v3.2
- */
- void LaunchL();
-
- /**
- * Return application uid this target launches.
- *
- * @since S60 v3.2
- */
- TUid AppUid() const;
-
- /**
- * Return additional UID this target refers to. In
- * URL case this is a unique identifer created from the URL
- *
- * @since S60 v3.2
- */
- TUid AdditionalUid() const;
-protected:
-
-private:
-
- CAiScutTargetHttp( CAiScutEngine& aEngine, TShortcutType aType );
-
- void ConstructL( const TAiScutParser& aParser );
-
-private: // data
-
- /**
- * Target caption, part of the http address or
- * custom title given with the URL string
- */
- mutable HBufC* iCaption;
-
- /**
- * Holds the shortcut definition string
- * Owned.
- */
- HBufC* iDefinition;
-
- /**
- * Checksum for the URL
- */
- TUid iChecksum;
-
-};
-
-#endif // CAISCUTTARGETHTTP_H
-
-// End of File.
--- a/idlefw/plugins/shortcutplugin/inc/caiscuttargetkeylock.h Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,151 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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: Keylock
-*
-*/
-
-
-#ifndef CAISCUTKEYLOCK_H
-#define CAISCUTKEYLOCK_H
-
-#include <aknkeylock.h>
-#include "caiscuttarget.h"
-
-/**
- * Takes care of locking the keypad.
- *
- * @since S60 v3.2
- */
-class CAiScutTargetKeyLock : public CAiScutTarget
-{
-public: // Constructors and destructor
-
- /**
- * Two-phased constructor.
- * @param
- * @return new instance.
- */
- static CAiScutTargetKeyLock* NewL(
- CAiScutEngine& aEngine, TShortcutType aType, const TDesC& aTarget);
-
- /**
- * Destructor.
- */
- virtual ~CAiScutTargetKeyLock();
-
- /**
- * Returns the shortcut definition string
- *
- * @since S60 v3.2
- * @return Shortcut definition string
- */
- TPtrC Definition() const;
-
- /**
- * Returns the shortcut target caption.
- * Caption can be either a descriptor or a resource id.
- * If the return value has a non-zero value, it is the resource id.
- * Zero indicates that the descriptor reference parameter is used.
- * Default implementation returns KErrNotSupported;
- *
- * Getting the target caption and icon utilizes the "lazy evaluation" idiom
- * which means they are created only when they are first needed. This is because
- * there are (atleast) two scenarios where they are never needed:
- * 1. The active theme does not support shortcut captions or icons.
- * 2. Shortcuts launched using LaunchByValue are never published.
- *
- * @since S60 v3.2
- * @param aDes On return, the descriptor if used
- * @return The resource id or zero to indicate that the descriptor is used.
- */
- TInt GetCaption(TPtrC& aDes, TAiScutAppTitleType aTitleType) const;
-
- /**
- * Returns the shortcut target icon.
- * Icon can be either an icon pointer or a resource id.
- * If the return value has a non-zero value, it is the resource id.
- * Zero indicates that the icon pointer is used.
- * Default implementation returns KErrNotSupported;
- *
- * Uses the "lazy evaluation" idiom to get the icon. See Caption()
- *
- * @since S60 v3.2
- * @param aIcon On return, the icon pointer if used
- * @return The resource id or zero to indicate that the icon pointer is used.
- */
- TInt GetIcon(CGulIcon*& aIcon) const;
-
- /**
- * Checks if the shortcut target is accessible
- *
- * @since S60 v3.2
- * @param aCheckType Specifies which kind of shortcuts should check its access
- * @return ETrue if accessible, EFalse if not
- */
- TBool IsAccessibleL(TInt aCheckType);
-
- /**
- * Launches the shortcut
- *
- * @since S60 v3.2
- */
- void LaunchL();
-
- /**
- * Return application uid this target launches.
- *
- * @since S60 v3.2
- */
- TUid AppUid() const;
-
-private: // New methods
-
- /**
- * Enables keylock.
- */
- void EnableKeyLock();
-
- /**
- * Checks if keylock is enabled.
- */
- TBool IsKeyLockEnabled();
-
- /**
- * C++ default constructor.
- */
- CAiScutTargetKeyLock(CAiScutEngine& aEngine, TShortcutType aType);
-
- /**
- * By default Symbian OS constructor is private.
- */
- void ConstructL(const TDesC& aTarget);
-
-private: // Data
-
- /**
- * Keylock
- */
- RAknKeylock2 iKeyLock;
-
- /**
- * Holds the shortcut definition string
- * Owned.
- */
- HBufC* iDefinition;
-
-};
-
-#endif // CAIKEYLOCK_H
-
-// End of File.
--- a/idlefw/plugins/shortcutplugin/inc/caiscuttargetmessagingview.h Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,128 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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: Class for messaging view shortcut target.
-*
-*/
-
-
-#ifndef CAISCUTTARGETMESSAGINGVIEW_H
-#define CAISCUTTARGETMESSAGINGVIEW_H
-
-#include <msvstd.h>
-
-#include "caiscuttarget.h"
-
-class CGulIcon;
-
-/**
- * Implements a mailbox shortcut target
- *
- * Handles parsing and launching a mailbox shortcut target
- *
- * @since S60 v3.2
- */
-class CAiScutTargetMessagingView : public CAiScutTarget
-{
-
-public:
-
- /**
- * First phase constructor
- *
- * @since S60 v3.2
- * @param aEngine Reference to the plug-in engine
- * @param aParser Shortcut definition parser
- */
- static CAiScutTargetMessagingView* NewL(
- CAiScutEngine& aEngine, TShortcutType aType, const TAiScutParser& aParser);
-
- virtual ~CAiScutTargetMessagingView();
-
- /**
- * Returns the shortcut definition string
- *
- * @since S60 v3.2
- * @return Shortcut definition string
- */
- TPtrC Definition() const;
-
- /**
- * See base class
- */
- TInt GetCaption(TPtrC& aDes, TAiScutAppTitleType aTitleType) const;
-
- /**
- * See base class
- */
- TInt GetIcon(CGulIcon*& aIcon) const;
-
- /**
- * See base class
- */
- TBool IsAccessibleL(TInt aCheckType);
-
- /**
- * Launches the shortcut
- *
- * @since S60 v3.2
- */
- void LaunchL();
-
- /**
- * Return application uid this target launches.
- *
- * @since S60 v3.2
- */
- TUid AppUid() const;
-
-protected:
-
-private:
-
- CAiScutTargetMessagingView(CAiScutEngine& aEngine, TShortcutType aType);
-
- void ConstructL(const TAiScutParser& aParser);
-
- /**
- * Tries to find a view id
- *
- * @since S60 v3.2
- * @return Mailbox id
- */
- TMsvId FindViewIdL();
-
- /**
- * Leaving version of GetIcon.
- */
- void GetIconL(CGulIcon*& aIcon) const;
-
-private: // data
-
- /**
- * View name. Contains the remote mailbox name or the messaging view name
- * Own.
- */
- HBufC* iViewName;
-
- /**
- * Holds the shortcut definition string
- * Owned.
- */
- HBufC* iDefinition;
-
-};
-
-#endif // CAISCUTTARGETMESSAGINGVIEW_H
-
-// End of File.
--- a/idlefw/plugins/shortcutplugin/inc/caiscuttargetnewmsg.h Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,151 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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: Class for new message shortcut target.
-*
-*/
-
-
-#ifndef CAISCUTTARGETNEWMSG_H
-#define CAISCUTTARGETNEWMSG_H
-
-#include <msvstd.h>
-
-#include "caiscuttarget.h"
-
-class CGulIcon;
-
-/**
- * Implements a new message or new email shortcut target
- *
- * Handles parsing and launching a new message shortcut target
- *
- * @since S60 v3.2
- */
-class CAiScutTargetNewMsg : public CAiScutTarget
-{
-
-public:
-
- /**
- * First phase constructor
- *
- * @since S60 v3.2
- * @param aEngine Reference to the plug-in engine
- * @param aParser Shortcut definition parser
- */
- static CAiScutTargetNewMsg* NewL(
- CAiScutEngine& aEngine, TShortcutType aType, const TAiScutParser& aParser);
-
- virtual ~CAiScutTargetNewMsg();
-
- /**
- * Returns the shortcut definition string
- *
- * @since S60 v3.2
- * @return Shortcut definition string
- */
- TPtrC Definition() const;
-
- /**
- * See base class
- */
- TInt GetCaption(TPtrC& aDes, TAiScutAppTitleType aTitleType) const;
-
- /**
- * See base class
- */
- TInt GetIcon(CGulIcon*& aIcon) const;
-
- /**
- * See base class
- */
- TBool IsAccessibleL(TInt aCheckType);
-
- /**
- * Launches the shortcut
- *
- * @since S60 v3.2
- */
- void LaunchL();
-
- /**
- * Return application uid this target launches.
- *
- * @since S60 v3.2
- */
- TUid AppUid() const;
-
-
-
-
-
-protected:
-
-private:
-
- CAiScutTargetNewMsg(CAiScutEngine& aEngine, TShortcutType aType);
-
- void ConstructL(const TAiScutParser& aParser);
-
- /**
- *
- */
- void GetCaptionL(TAiScutAppTitleType aTitleType) const;
-
- /**
- * Leaving version of GetIcon.
- */
- void GetIconL(CGulIcon*& aIcon) const;
-
- void ShowErrorNote();
-
-private: // data
-
- /**
- * Application uid.
- */
- TUid iAppUid;
-
- /**
- * Possible view uid.
- */
- TUid iViewUid;
-
- /**
- * Shortcut caption.
- * Own.
- */
- mutable HBufC* iCaption;
-
- /**
- * Shortcut short caption.
- * Own.
- */
- mutable HBufC* iShortCaption;
-
- /**
- * Holds the shortcut definition string
- * Owned.
- */
- HBufC* iDefinition;
-
- /**
- * Message type
- */
- TUid iMtm;
-};
-
-#endif // CAISCUTTARGETNEWMSG_H
-
-// End of File.
--- a/idlefw/plugins/shortcutplugin/inc/cpopupeventhandler.h Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,143 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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: Shortcut plug-in Popup event handler class
-*
-*/
-
-
-#ifndef CPOPUPEVENTHANDLER_H
-#define CPOPUPEVENTHANDLER_H
-
-#include <e32base.h>
-#include <badesca.h>
-
-#include "PopupFSM.h"
-#include "MPopupFSMActions.h"
-
-class MPopupEventHandlerActions;
-
-/**
- *
- * The class handles Popup events (set, reset, gain/lost focus, etc.) by
- * delegating them to automatically generated state machine class which in
- * turn decides what actions the events cause in different states.
- *
- * This class has bi-directional friend relationship to CAiScutShortcutExt
- * in order to establish concrete actions while decoupling state machine
- * related functions out of CAiScutShortcutExt.
- *
- * @since S60 v3.2
- */
-class CPopupEventHandler : public CActive,
- public MPopupFSMActions
- {
- public:
- /**
- * Factory function
- * @param aPopupEventHandlerActions actions interface
- * @since S60 v3.2
- */
- static CPopupEventHandler* NewL(
- MPopupEventHandlerActions& aPopupEventHandlerActions );
-
- /**
- * Factory function
- * @param aPopupEventHandlerActions actions interface
- * @since S60 v3.2
- */
- static CPopupEventHandler* NewLC(
- MPopupEventHandlerActions& aPopupEventHandlerActions );
-
- /**
- * Destructor
- * @since S60 v3.2
- */
- ~CPopupEventHandler();
-
- private:
-
- /**
- * Constructor
- * @param aPopupEventHandlerActions actions interface
- * @since S60 v3.2
- */
- CPopupEventHandler(
- MPopupEventHandlerActions& aPopupEventHandlerActions );
-
- void ConstructL();
-
- public: // New functions
- /**
- * Accessor for state machine
- * @return Reference to state machine instance
- * @since S60 v3.2
- */
- TPopupFSM& PopupFSM();
-
- TBool PublishPopup() const;
- TBool PopupVisible() const;
-
- /**
- * @return Is publishing needed
- */
- TBool PublishCaption() const;
-
- /**
- * @return Is caption visible
- */
- TBool CaptionVisible() const;
-
- private: // From CActive
- void DoCancel();
- void RunL();
-
- private: // From MPopupFSMActions
- void CompleteSelf();
- void CancelRequest();
- void StartShortTimer();
- void StartLongTimer();
- void IssuePublishPopup();
- void IssueCleanPopup();
- void IssuePublishCaption();
- void IssueCleanCaption();
-
- private: // data
- /**
- * Actions interface
- * Ref.
- */
- MPopupEventHandlerActions& iPopupEventHandlerActions;
-
- /**
- * State machine instance
- * Own.
- */
- TPopupFSM iPopupFSM;
-
- /**
- * Timeout timer
- * Own.
- */
- RTimer iTimer;
-
- TBool iPublishPopup;
- TBool iPopupVisible;
-
- TBool iPublishCaption;
- TBool iCaptionVisible;
- };
-
-#endif // CPOPUPEVENTHANDLER_H
-
-// End of File.
--- a/idlefw/plugins/shortcutplugin/inc/maiscutextdata.h Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,47 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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: Shortcut plug-in xSP extension data
-*
-*/
-
-
-#ifndef MAISCUTEXTDATA_H
-#define MAISCUTEXTDATA_H
-
-#include <e32base.h>
-
-class CGulIcon;
-
-/**
- * @since S60 v3.2
- */
-class MAiScutExtData
- {
- public:
- /**
- * @return Pointer to popup line array or NULL if not set
- * @since S60 v3.2
- */
- virtual const MDesCArray* PopupLineArray() const = 0;
-
- /**
- * return Pointer to icon or NULL if not set
- * @since S60 v3.2
- */
- virtual const CGulIcon* Icon() const = 0;
- };
-
-#endif // MAISCUTEXTDATA_H
-
-// End of File.
--- a/idlefw/plugins/shortcutplugin/inc/maiscutextmessagehandler.h Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,86 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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: Shortcut plug-in xSP extension server message handler.
-*
-*/
-
-
-#ifndef MAISCUTEXTMESSAGEHANDLER_H
-#define MAISCUTEXTMESSAGEHANDLER_H
-
-#include <e32base.h>
-
-class CGulIcon;
-
-/**
- *
- * Shortcut plug-in xSP extension server message handler.
- *
- * @since S60 v3.2
- */
-class MAiScutExtMessageHandler
- {
- public:
- /**
- * Notifies that the popup text has been changed.
- * @param aDefinition Target shortcut definition
- * @param aLineArray Pointer to array of popup line texts. Ownership
- * is transferred.
- * @since S60 v3.2
- */
- virtual void HandleSetPopupLineArrayL( const TDesC& aDefinition,
- CDesCArray* aLineArray ) = 0;
- /**
- * Notifies that the popup text has been reseted.
- * @param aDefinition Target shortcut definition
- * @since S60 v3.2
- */
- virtual void HandleResetPopupLineArrayL( const TDesC& aDefinition ) = 0;
-
- /**
- * Notifies that the ion has been changed.
- * @param aDefinition Target shortcut definition
- * @param aIcon Pointer to new icon. Ownership
- * is transferred.
- * @since S60 v3.2
- */
- virtual void HandleSetIconL( const TDesC& aDefinition,
- CGulIcon* aIcon ) = 0;
-
- /**
- * Notifies that the icon has been reseted.
- * @param aDefinition Target shortcut definition
- * @since S60 v3.2
- */
- virtual void HandleResetIconL( const TDesC& aDefinition ) = 0;
-
- /**
- * Checks whether the target is in shortcuts
- * @param aDefinition Target shortcut definition
- * @return ETrue if the target is in shortcuts
- * @since S60 v3.2
- */
- virtual TBool HandleIsInShortcutsL( const TDesC& aDefinition ) const = 0;
-
- /**
- * Launches General Settings so that the target definition is passed in.
- * @param aDefinition Target shortcut definition
- * @since S60 v3.2
- */
- virtual void HandleIssuePutInShortcutsL( const TDesC& aDefinition ) = 0;
- };
-
-#endif // MAISCUTEXTMESSAGEHANDLER_H
-
-// End of File.
--- a/idlefw/plugins/shortcutplugin/inc/mpopupeventhandleractions.h Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,38 +0,0 @@
-/*
-* 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:
-*
-*/
-#ifndef MPOPUPEVENTHANDLERACTIONS_H
-#define MPOPUPEVENTHANDLERACTIONS_H
-
-// EXTERNAL INCLUDES
-#include <e32def.h>
-
-// CLASS DEFINITION
-/**
- * MPopupEventHandlerActions.
- */
-class MPopupEventHandlerActions
- {
- public: // Abstract methods
- /**
- * Publishes the shortcut
- */
- virtual void IssuePublishShortcut() = 0;
- };
-
-#endif // MPOPUPEVENTHANDLERACTIONS_H
-
-// End of file
--- a/idlefw/plugins/shortcutplugin/inc/taiscutparser.h Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,451 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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: Shortcut definition parser.
-*
-*/
-
-
-#ifndef TAISCUTPARSER_H
-#define TAISCUTPARSER_H
-#include <uri16.h> // For TUriParser16
-#include <AknsItemID.h>
-
-// =============================================================================
-// ========================= Supported URI schemes =============================
-/** URI scheme for local application shortcuts */
-_LIT( KScutURISchemeLocalApp, "localapp" );
-
-/** URI sheme for normal web addresses */
-_LIT( KScutURISchemeHttp, "http" );
-/** URI sheme for secure web addresses */
-_LIT( KScutURISchemeHttps, "https" );
-// =============================================================================
-
-// =============================================================================
-// ============= Application shortcut formatting literals ======================
-
-/** Literal to format an application shortcut without parameters */
-_LIT( KScutFormatApplication, "localapp:0x%x" );
-
-/** Literal to format an application shortcut with parameter name and value */
-_LIT( KScutFormatApplicationWithParams, "localapp:0x%x?%S=%S" );
-
-/** Literal to format an application shortcut with a single parameter string */
-_LIT( KScutFormatApplicationWithParamString, "localapp:0x%x?%S" );
-
-// =============================================================================
-
-// =============================================================================
-// ============ Shortcut parameter name and value literals =====================
-
-/** Parameter name for view ids */
-_LIT( KScutParamNameView, "view" );
-
-/** Parameter name for remote mailboxes. Specific to messaging shortcuts */
-_LIT( KScutParamNameMailbox, "mailbox" );
-
-/** Parameter name for new message and new email. Specific to messaging shortcuts */
-_LIT( KScutParamNameNew, "new" );
-
-/** Parameter value for new message shortcuts. */
-_LIT( KScutParamValueMsg, "msg" );
-
-/** Parameter value for new email shortcuts */
-_LIT( KScutParamValueEmail, "email" );
-
-/** Parameter value for new syncml mail shortcuts */
-_LIT( KScutParamValueSyncMLMail, "syncmlmail" );
-
-/** Parameter value for new postcard shortcuts */
-_LIT( KScutParamValuePostcard, "postcard" );
-
-/** Parameter value for new audio message shortcuts */
-_LIT( KScutParamValueAudioMsg, "audiomsg" );
-
-/** Parameter value for the connectivity status view shortcut */
-const TUid KScutParamValueConnectivityView = { 0x10207250 };
-
-/** Parameter name for enable keylock */
-_LIT( KScutParamNameOn, "on" );
-
-/** Parameter name for missed calls view */
-_LIT( KScutParamValueMissedCalls, "missed" );
-
-/** Parameter name for dialled calls view */
-_LIT( KScutParamValueDialledCalls, "dialled" );
-
-/** Parameter name for received calls view */
-_LIT( KScutParamValueReceivedCalls, "received" );
-
-/** Parameter name for logs main view */
-_LIT( KScutParamValueMainView, "counters" );
-
-/** Parameter name for bookmark ids */
-_LIT( KScutParamNameBookmark, "bkm" );
-
-/** Parameter name for icon id in skin
- Format localapp:0xUID?iconid=majorid;minorid;optionalColourGroup */
-_LIT( KScutParamNameIconSkinId, "iconid" );
-
-/** Parameter name for icon path. Left here for backward
- compatibility.
- Format localapp:0xUID?iconmifpath=mif_file.mif;index */
-_LIT( KScutParamNameIconMifPath, "iconmifpath" );
-
-/** Parameter name for icon path. MBM and MIF supported
- Format localapp:0xUID?iconmifpath=mif_file.mif;index */
-_LIT( KScutParamNameIconPath, "iconpath" );
-/** Parameter name for custom URL title.
- Format http://www.url.com?customtitle=Here is my great title */
-_LIT( KScutParamNameCustomTitle, "customtitle" );
-/** Parameter name for CBA icon
- Format localapp:0xUID?iconid=majorid;minorid;optionalColourGroup&cba=1 */
-_LIT( KScutParamNameCBAIcon, "cba" );
-
-/** Parameter name for toolbar icon */
-_LIT( KScutParamNameToolbarIcon, "toolbar" );
-
-/** Shortcut definition parameter for "no effect" */
-_LIT( KScutParamNoEffect, "noeffect" );
-
-// =============================================================================
-// =============================================================================
-// ============ Shortcut parameter name and value literals =====================
-
-/** Alias for messaging shortcuts */
-_LIT( KScutTargetAliasMessaging, "msg" );
-
-/** Alias for keylock shortcuts */
-_LIT( KScutTargetAliasKeylock, "keylock" );
-
-/** Alias for logs shortcuts */
-_LIT( KScutTargetAliasLogs, "logs" );
-
-/** Alias for voice dialer shortcuts */
-_LIT( KScutTargetAliasVoiceDial, "voicedial" );
-
-// =============================================================================
-/** Maximum length of shortcut definition. Used when composing a definition */
-const TInt KMaxDefinitionLength = 100;
-
-/** Shortcut parameter value separator character */
-const TText KParamValueSeparator = '=';
-
-/** Shortcut parameter next param separator */
-const TText KParamNextSeparator = '&';
-
-_LIT( KScutMIFExtension, ".mif" );
-_LIT( KScutMBMExtension, ".mbm" );
-_LIT( KScutSkinItemSeparator, ";" );
-
-/**
- * Shortcut definition components
- */
-enum TScutDefComponent
-{
- EScutDefScheme,
- EScutDefTarget,
- EScutDefParamName,
- EScutDefParamValue,
- EScutDefParamNameAndValue,
- EScutDefComplete
-};
-
-/**
- * Shortcut types
- */
-enum TShortcutType
-{
- EScutUnknown,
- EScutAnyType = 0,
- EScutNoEffect,
- EScutApplication,
- EScutApplicationView,
- EScutApplicationWithParams,
- EScutNewMessage,
- EScutNewEmail,
- EScutNewSyncMLMail,
- EScutNewPostcard,
- EScutNewAudioMsg,
- EScutNewMsgType,
- EScutMailbox,
- EScutChangeTheme,
- EScutWebAddress,
- EScutBookmark,
- EScutKeylock,
- EScutLogsMissedCallsView,
- EScutLogsDialledCallsView,
- EScutLogsReceivedCallsView,
- EScutLogsMainView,
- EScutConnectivityStatusView,
- EScutApplicationManagerView
-};
-
-/**
- * Icon type
- */
-enum TShortcutIconType
-{
- EScutIconNone,
- EScutIconSkin,
- EScutIconMif,
- EScutIconMbm
-};
-
-enum TShortcutIconDestination
-{
- EScutDestinationNormal,
- EScutDestinationSoftkey,
- EScutDestinationToolbar
-};
-
-class TAiScutIcon
-{
- public:
- /**
- * Index of the icon in icon file
- */
- TInt iIconId;
-
- /**
- * Path to the icon file
- */
- TFileName iPath;
-
- /**
- * Skin item id of the icon
- */
- TAknsItemID iSkinId;
-
- /**
- * Colour groups id in skin
- */
- TInt iColourGroup;
-
- /**
- * Type of the icon. From skin or from mif
- */
- TShortcutIconType iType;
-
- /**
- * AppUid that this icon belongs to
- */
- TUid iAppUid;
-
- /**
- * Possible view id
- */
- TUid iViewId;
-
- /**
- * Type of the shortcut
- */
- TShortcutType iShortcutType;
-
- /**
- * Is this CBA specific icon
- */
- TShortcutIconDestination iDestination;
-
-};
-
-/**
- * Shortcuf definition parser
- *
- * @since S60 v3.2
- */
-class TAiScutParser
-{
-
-public:
- TAiScutParser();
-
- /**
- * Static utility function to parse an uid from the given descriptor
- *
- * @since S60 v3.2
- * @param aString The String to parse
- * @return Parsed application uid
- */
- static TUid ParseUid( const TDesC& aDesC );
-
- /**
- * Parses a shortcut definition
- *
- * @since S60 v3.2
- * @param aDefinition Shortcut definition
- * @return System wide error code. KErrCorrupt if not recognized
- */
- TInt Parse( const TDesC& aDefinition );
-
- /**
- * Checks if the shortcut definition was valid
- *
- * @since S60 v3.2
- * @return ETrue if valid, EFalse if not
- */
- TBool IsValid() const;
-
- /**
- * Returns the shortcut target type
- *
- * @since S60 v3.2
- * @return Shortcut target type
- */
- TShortcutType Type() const;
-
- /**
- * Returns the possible shortcut overriding icon
- * that has been defined in the URL either with the format
- * localapp:0xUID?iconid=majorid;minorid;colourgroup
- * or
- * localapp:0xUID?iconmifpath=mif_file.mif;index
- *
- * @since S60 v3.2
- * @return Shortcut icon override
- */
- TAiScutIcon Icon() const;
-
- /**
- * Returns the shortcut target uid. Used for application shortcuts
- *
- * @since S60 v3.2
- * @return Shortcut target uid
- */
- TUid Uid() const;
-
- /**
- * Returns a shortcut definition component value
- *
- * @since S60 v3.2
- * @param aComponent Shortcut definition component
- * @return Pointer descriptor to component value
- */
- TPtrC Get( TScutDefComponent aComponent ) const;
-
- /**
- * Composes a shortcut definition string from given parameters
- *
- * @since S60 v3.2
- * @param aDes On return, the shortcut definition. Transfers ownership
- * @param aUid Application uid
- * @param aParamName Parameter name
- * @param aParamValue Parameter value
- */
- void ComposeL( HBufC*& aDes, const TUid aUid,
- const TDesC& aParamName, const TDesC& aParamValue );
-
- /**
- * Composes a shortcut definition string from given parameters
- *
- * @since S60 v3.2
- * @param aDes On return, the shortcut definition. Transfers ownership
- * @param aUid Application uid
- * @param aParamString Parameter string
- */
- void ComposeL( HBufC*& aDes, const TUid aUid,
- const TDesC& aParamString );
-
- /**
- * Creates a checksum for the given aDefinition. This is used
- * in URL matching so that no string need to be stored. Checksum is
- * done checksum = positionInString * charValue
- *
- * @since S60 v3.2
- * @param aDefinition The definition to calculate the checksum from
- * @return TInt The checksum
- */
- TInt ChecksumForString( const TDesC& aDefinition) const;
-
- /**
- * Removes icon definitions from the given string. Icon definitions are
- * KScutParamNameIconSkinId, KScutParamNameIconSkinPath, KScutParamNameCBAIcon
- * KScutParamNameCustomTitle
- *
- * @since S60 v3.2
- */
- void RemoveExtraDefinitionsL( TDes &aString ) const;
- /**
- * Parses the custom title from the current definition.
- * Returns ETrue on success and places the extracted
- * custom title to the aTarget
- *
- * @param aTarget Where to place the custom title. It is callers responsibility
- * to provide a descriptor with enough room for the custom title.
- *
- * @return KErrNone if everything is fine, KErrNotFound
- * if there is no custom title in the definition, KErrNoMemory in
- * case there is not enough room to place the result (low memory situations
- * or too small descriptor provided)
- */
- TInt CustomTitle( TDes& aTarget ) const;
-
-protected:
-private:
-
- /**
- * Checks if an alias was used in shortcut definition and parses an uid from it
- *
- * @since S60 v3.2
- * @return ETrue if alias was found and parsed, EFalse if not
- */
- TBool ParseAlias();
-
- /**
- * Parses the possible application shortcut parameters
- *
- * @since S60 v3.2
- */
- void ParseParams();
-
-private: // data
- /**
- * URI Parser
- */
- TUriParser iUriParser;
-
- /**
- * Pointer to the full shortcut definition
- */
- TPtrC iDefinition;
-
- /**
- * Shortcut target type
- */
- TShortcutType iType;
-
- /**
- * Shortcut application uid
- */
- TUid iUid;
-
- /**
- * Pointer to shortcut parameter name
- */
- TPtrC iParamName;
-
- /**
- * Pointer to shortcut parameter value
- */
- TPtrC iParamValue;
- /**
- * Shortcut icon that has been given with the
- * URL-string
- */
- TAiScutIcon iIcon;
- };
-
-#endif // TAISCUTPARSER_H
-
-// End of File.
\ No newline at end of file
--- a/idlefw/plugins/shortcutplugin/loc/ai3scutplugin.loc Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,36 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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: Localization strings for project aiscutplugin
-*
-*/
-
-
-// d: Header text for Information query pop-up window.
-// l: heading_pane_t1
-// w:
-// r: TB9.2
-//
-#define qtn_ai_sc_query_modify_header "Tip:"
-
-// d: message part in Information query pop-up window,
-// d: which informs the user where to set installed application as a shortcut in idle.
-// d: %U in the message is the application name
-// d: Path in the query text is a link.
-// l: popup_info_list_pane_t1
-// w:
-// r: TB9.2
-//
-#define qtn_ai_sc_query_modify_gs "%U can show additional information in Shortcut area. If you want to modify shortcuts select <AknMessageQuery Link>Options - Change shortcut settings</AknMessageQuery Link>"
-
-// End of File.
--- a/idlefw/plugins/shortcutplugin/loc/ai3scutsettings.loc Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,2125 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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: Localization strings for project aiscutsettings
-*
-*/
-
-
-//d:Localized name of the plugin
-//d:
-//l:list_set_graphic_pane_t1
-//w:
-//r:3.2
-//
-#define qtn_ai_set_cont_apps "Shortcuts"
-
-// d: Text in title pane
-// l: title_pane_t2/opt9
-// w:
-// r: 3.2
-//
-#define qtn_set_title_pers_shortcuts "Shortcuts"
-
-// d: Text of a list item in personalisation view's folder list
-// d: Item opens Shortcuts folder
-// l: list_setting_pane_t1
-// w:
-// r: 3.2
-//
-#define qtn_set_pers_shortcuts "Shortcuts"
-
-// d: Application cannot be opened during Backup
-// l: popup_note_window
-// w:
-// r: 3.2
-//
-#define qtn_ai_scut_operation_disabled "Application cannot be opened during backup"
-
-// d: Shortcuts Item caption
-// d: Active Idle Shortcut Settings View
-// d: %N order number of the shortcut item
-// l: list_setting_pane_t1
-// w:
-// r: 3.2
-//
-#define qtn_ai_set_myt_linkn "%N. Shortcut item"
-
-// d: Prompt text for type new URL data query
-// d: Active Idle Shortcut Settings View
-// l: popup_query_data_window
-// w:
-// r: 3.2
-//
-#define qtn_ai_shorts_type_url "Type URL"
-
-// d: Prompt text for edit URL data query
-// d: Active Idle Shortcut Settings View
-// l: popup_query_data_window
-// w:
-// r: 3.2
-//
-#define qtn_ai_shorts_edit_url "Edit URL"
-
-// d: Prompt text for change shortcut type query
-// d: Active Idle Shortcut Settings View
-// l: heading_pane_t1
-// w:
-// r: 3.2
-//
-#define qtn_sc_set_change_prompt "Change to:"
-
-// d: Application shortcut type choice item in change shortcut type query
-// d: Active Idle Shortcut Settings View
-// l: list_set_graphic_pane_t1
-// w:
-// r: 3.2
-//
-#define qtn_sc_set_change_apps "Application"
-
-// d: Bookmark shortcut type choice item in change shortcut type query
-// d: Active Idle Shortcut Settings View
-// l: list_set_graphic_pane_t1
-// w:
-// r: 3.2
-//
-#define qtn_sc_set_change_bookmark "Bookmark"
-
-// d: URL shortcut type choice item in change shortcut type query
-// d: Active Idle Shortcut Settings View
-// l: list_set_graphic_pane_t1
-// w:
-// r: 3.2
-//
-#define qtn_sc_set_change_url "Web address"
-
-// d: Text of a list item in shortcut setting view's application list.
-// d: User selects this item when she wants Scroll keys or Selection key
-// d: have no effect is Idle state.
-// l: list_set_graphic_pane_t1
-// w:
-// r: 3.2
-//
-#define qtn_set_idle_skeys_no_effect "No effect"
-
-
-// d: Title of a list item shortcut setting view's setting list
-// d: Item opens Left idle softkey setting page
-// l: list_setting_pane_t1
-// w:
-// r: 3.2
-//
-#define qtn_set_left_idle_softkey "Left idle softkey"
-
-// d: Title of a list item shortcut setting view's setting list
-// d: Item opens Right idle softkey setting page
-// l: list_setting_pane_t1
-// w:
-// r: 3.2
-//
-#define qtn_set_right_idle_softkey "Right idle softkey"
-
-// d: Title of a list item shortcut setting view's setting list
-// d: Item opens Right Scroll key setting page
-// l: list_setting_pane_t1
-// w:
-// r: 3.2
-//
-#define qtn_set_idle_right_scroll "Right Scroll key"
-
-// d: Title of a list item shortcut setting view's setting list
-// d: Item opens Left Scroll key setting page
-// l: list_setting_pane_t1
-// w:
-// r: 3.2
-//
-#define qtn_set_idle_left_scroll "Left Scroll key"
-
-// d: Title of a list item shortcut setting view's setting list
-// d: Item opens Down Scroll key setting page
-// l: list_setting_pane_t1
-// w:
-// r: 3.2
-//
-#define qtn_set_idle_down_scroll "Down Scroll key"
-
-// d: Title of a list item shortcut setting view's setting list
-// d: Item opens Up Scroll key setting page
-// l: list_setting_pane_t1
-// w:
-// r: 3.2
-//
-#define qtn_set_idle_up_scroll "Up Scroll key"
-
-// d: Title of a list item shortcut setting view's setting list
-// d: Item opens Selection key setting page
-// l: list_setting_pane_t1
-// w:
-// r: 3.2
-//
-#define qtn_set_idle_selec_key "Selection key"
-
-
-// d: Text for fixed item information note
-// d: Shown when user tries to change fixed shortcut in settings
-// l: popup_note_window
-// w:
-// r: 3.2
-//
-#define qtn_ai_set_app_note_fixed "Fixed item. Can't be changed"
-
-// d: Text for empty listbox item
-// d: Shown when there are no modifiable shortcuts in settings
-// l: main_list_empty_pane
-// w:
-// r: 3.2
-//
-#define qtn_ai_sc_set_all_fixed "(No editable shortcuts available in this Idle theme.)"
-
-// =====================================================================
-// App titles
-// =====================================================================
-
-// d: Application name in the App Shell grid.
-// l: cell_app_pane_t1
-// w:
-// r: 3.2
-//
-#define qtn_apps_about_grid "About"
-
-// d: Application name in the App Shell list.
-// l: list_single_large_graphic_pane_t1
-// w:
-// r: 3.2
-//
-#define qtn_apps_about_list "About product"
-
-// d: Focused application name on idle shortcut plugin tooltip.
-// l: popup_ai_links_title_window_t1
-// w:
-// r: 5.0
-//
-#define qtn_app_caption_string "Application Manager"
-
-// d: Text of a list item in shortcut setting view's application list.
-// l: list_set_graphic_pane_t1
-// w:
-// r: 2.8
-//
-#define qtn_apps_am_gs "App. manage"
-
-// d: User can personalize idle softkeys to be other application from general settings.
-// d: The text is shown as Left or Right idle softkey.
-// l: control_pane_t1/opt7
-// w:
-// r: 2.8
-//
-#define qtn_apps_am_skey "AppMngr"
-
-// d: User can personalize idle softkeys to be other application from general settings.
-// d: The text is shown as middle softkey.
-// l: control_pane_t3/opt7
-// w:
-// r: 3.2
-//
-#define qtn_msk_idle_am "AppMngr"
-
-// d: Text of a list item in shortcut setting view's application list.
-// l: list_set_graphic_pane_t1
-// w:
-// r: 3.1
-//
-#define qtn_apps_menu_gs "Menu"
-
-// d: User can personalize idle softkeys to be other application from general settings.
-// d: The text is shown as Left or Right idle softkey.
-// l: control_pane_t1/opt7
-// w:
-// r: 3.1
-//
-#define qtn_apps_menu_skey "Menu"
-
-// d: User can personalize idle softkeys to be other application from general settings.
-// d: The text is shown as middle softkey.
-// l: control_pane_t3/opt7
-// w:
-// r: 3.2
-//
-#define qtn_msk_idle_menu "Menu"
-
-// d: Application name in the App Shell grid.
-// l: cell_app_pane_t1
-// w:
-// r: 3.2
-//
-#define qtn_apps_blid_grid "Navigator"
-
-// d: Application name in the App Shell list.
-// l: list_single_large_graphic_pane_t1
-// w:
-// r: 3.2
-//
-#define qtn_apps_blid_list "Navigator"
-
-// d: Text of a list item in shortcut setting view's application list.
-// l: list_set_graphic_pane_t1
-// w:
-// r: 3.0
-//
-#define qtn_apps_blid_gs "Navigator"
-
-// d: User can personalize idle softkeys to be other application from general settings.
-// d: The text is shown as Left or Right idle softkey.
-// l: control_pane_t1/opt7
-// w:
-// r: 3.0
-//
-#define qtn_apps_blid_skey "Navigator"
-
-// d: User can personalize idle softkeys to be other application from general settings.
-// d: The text is shown as middle softkey.
-// l: control_pane_t3/opt7
-// w:
-// r: 3.2
-//
-#define qtn_msk_idle_blid "Navigator"
-
-// d: Application name in the App Shell grid.
-// l: cell_app_pane_t1
-// w:
-// r: 3.2
-//
-#define qtn_apps_bluetooth_grid "Bluetooth"
-
-// d: Application name in the App Shell list.
-// l: list_single_large_graphic_pane_t1
-// w:
-// r: 3.2
-//
-#define qtn_apps_bluetooth_list "Bluetooth"
-
-// d: Text of a list item in shortcut setting view's application list.
-// l: list_set_graphic_pane_t1
-// w:
-// r: 2.8
-//
-#define qtn_apps_bluetooth_gs "Bluetooth"
-
-// d: User can personalize idle softkeys to be other application from general settings.
-// d: The text is shown as Left or Right idle softkey.
-// l: control_pane_t1/opt7
-// w:
-// r: 2.8
-//
-#define qtn_apps_bluetooth_skey "Bluetooth"
-
-// d: User can personalize idle softkeys to be other application from general settings.
-// d: The text is shown as middle softkey.
-// l: control_pane_t3/opt7
-// w:
-// r: 3.2
-//
-#define qtn_msk_idle_bluetooth "Bluetooth"
-
-// d: Application name in the App Shell grid.
-// l: cell_app_pane_t1
-// w:
-// r: 3.2
-//
-#define qtn_apps_browserng_grid "Web"
-
-// d: Application name in the App Shell list.
-// l: list_single_large_graphic_pane_t1
-// w:
-// r: 3.2
-//
-#define qtn_apps_browserng_list "Web"
-
-// d: Text of a list item in shortcut setting view's application list.
-// l: list_set_graphic_pane_t1
-// w:
-// r: 3.1
-//
-#define qtn_apps_services_gs_new "WAP services"
-
-// d: User can personalize idle softkeys to be other application from general settings.
-// d: The text is shown as Left or Right idle softkey.
-// l: control_pane_t1/opt7
-// w:
-// r: 3.1
-//
-#define qtn_apps_services_skey_new "Services"
-
-// d: User can personalize idle softkeys to be other application from general settings.
-// d: The text is shown as middle softkey.
-// l: control_pane_t3/opt7
-// w:
-// r: 3.2
-//
-#define qtn_msk_idle_services_new "Services"
-
-// d: User can personalize idle softkeys to be other application from general settings.
-// d: The text is shown as middle softkey.
-// l: control_pane_t3/opt7
-// w:
-// r: 3.2
-//
-#define qtn_msk_idle_oper_url "%U"
-
-// d: Application name in the App Shell grid.
-// l: cell_app_pane_t1
-// w:
-// r: 3.2
-//
-#define qtn_apps_calculator_grid "Calculator"
-
-// d: Application name in the App Shell list.
-// l: list_single_large_graphic_pane_t1
-// w:
-// r: 3.2
-//
-#define qtn_apps_calculator_list "Calculator"
-
-// d: Text of a list item in shortcut setting view's application list.
-// l: list_set_graphic_pane_t1
-// w:
-// r: 2.8
-//
-#define qtn_apps_calculator_gs "Calculator"
-
-// d: User can personalize idle softkeys to be other application from general settings.
-// d: The text is shown as Left or Right idle softkey.
-// l: control_pane_t1/opt7
-// w:
-// r: 2.8
-//
-#define qtn_apps_calculator_skey "Calculat."
-
-// d: User can personalize idle softkeys to be other application from general settings.
-// d: The text is shown as middle softkey.
-// l: control_pane_t3/opt7
-// w:
-// r: 3.2
-//
-#define qtn_msk_idle_calculator "Calculat."
-
-// d: Application name in the App Shell grid.
-// l: cell_app_pane_t1
-// w:
-// r: 3.2
-//
-#define qtn_apps_calendar_grid "Calendar"
-
-// d: Application name in the App Shell list.
-// l: list_single_large_graphic_pane_t1
-// w:
-// r: 3.2
-//
-#define qtn_apps_calendar_list "Calendar"
-
-// d: Text of a list item in shortcut setting view's application list.
-// l: list_set_graphic_pane_t1
-// w:
-// r: 2.8
-//
-#define qtn_apps_calendar_gs "Calendar"
-
-// d: User can personalize idle softkeys to be other application from general settings.
-// d: The text is shown as Left or Right idle softkey.
-// l: control_pane_t1/opt7
-// w:
-// r: 2.8
-//
-#define qtn_apps_calendar_skey "Calendar"
-
-// d: User can personalize idle softkeys to be other application from general settings.
-// d: The text is shown as middle softkey.
-// l: control_pane_t3/opt7
-// w:
-// r: 3.2
-//
-#define qtn_msk_idle_calendar "Calendar"
-
-// d: Application name in the App Shell grid.
-// l: cell_app_pane_t1
-// w:
-// r: 3.2
-//
-#define qtn_apps_ccor_grid "Camcorder"
-
-// d: Application name in the App Shell list.
-// l: list_single_large_graphic_pane_t1
-// w:
-// r: 3.2
-//
-#define qtn_apps_ccor_list "Camcorder"
-
-// d: Text of a list item in shortcut setting view's application list.
-// l: list_set_graphic_pane_t1
-// w:
-// r: 2.8
-//
-#define qtn_apps_ccor_gs "Camcorder"
-
-// d: User can personalize idle softkeys to be other application from general settings.
-// d: The text is shown as Left or Right idle softkey.
-// l: control_pane_t1/opt7
-// w:
-// r: 2.8
-//
-#define qtn_apps_ccor_skey "Camcorder"
-
-// d: User can personalize idle softkeys to be other application from general settings.
-// d: The text is shown as middle softkey.
-// l: control_pane_t3/opt7
-// w:
-// r: 3.2
-//
-#define qtn_msk_idle_ccor "Camcorder"
-
-// d: Application name in the App Shell grid.
-// l: cell_app_pane_t1
-// w:
-// r: 3.2
-//
-#define qtn_apps_dict_grid "Dictionary"
-
-// d: Application name in the App Shell list.
-// l: list_single_large_graphic_pane_t1
-// w:
-// r: 3.2
-//
-#define qtn_apps_dict_list "Dictionary"
-
-// d: Text of a list item in shortcut setting view's application list.
-// l: list_set_graphic_pane_t1
-// w:
-// r: 2.8
-//
-#define qtn_apps_dict_gs "Dictionary"
-
-// d: User can personalize idle softkeys to be other application from general settings.
-// d: The text is shown as Left or Right idle softkey.
-// l: control_pane_t1/opt7
-// w:
-// r: 2.8
-//
-#define qtn_apps_dict_skey "Dictionary"
-
-// d: User can personalize idle softkeys to be other application from general settings.
-// d: The text is shown as middle softkey.
-// l: control_pane_t3/opt7
-// w:
-// r: 3.2
-//
-#define qtn_msk_idle_dict "Dictionary"
-
-// d: Application name in the App Shell grid.
-// l: cell_app_pane_t1
-// w:
-// r: 3.2
-//
-#define qtn_apps_clock_grid "Clock"
-
-// d: Application name in the App Shell list.
-// l: list_single_large_graphic_pane_t1
-// w:
-// r: 3.2
-//
-#define qtn_apps_clock_list "Clock"
-
-// d: Text of a list item in shortcut setting view's application list.
-// l: list_set_graphic_pane_t1
-// w:
-// r: 2.8
-//
-#define qtn_apps_clock_gs "Clock"
-
-// d: User can personalize idle softkeys to be other application from general settings.
-// d: The text is shown as Left or Right idle softkey.
-// l: control_pane_t1/opt7
-// w:
-// r: 2.8
-//
-#define qtn_apps_clock_skey "Clock"
-
-// d: User can personalize idle softkeys to be other application from general settings.
-// d: The text is shown as middle softkey.
-// l: control_pane_t3/opt7
-// w:
-// r: 3.2
-//
-#define qtn_msk_idle_clock "Clock"
-
-// d: Application name in the App Shell grid.
-// l: cell_app_pane_t1
-// w:
-// r: 3.2
-//
-#define qtn_apps_cmon_grid "Conn. Manager"
-
-// d: Application name in the App Shell list.
-// l: list_single_large_graphic_pane_t1
-// w:
-// r: 3.2
-//
-#define qtn_apps_cmon_list "Conn. Manager"
-
-// d: Text of a list item in shortcut setting view's application list.
-// l: list_set_graphic_pane_t1
-// w:
-// r: 2.8
-//
-#define qtn_apps_cmon_gs "Conn. manager"
-
-// d: User can personalize idle softkeys to be other application from general settings.
-// d: The text is shown as Left or Right idle softkey.
-// l: control_pane_t1/opt7
-// w:
-// r: 2.8
-//
-#define qtn_apps_cmon_skey "Conn. m."
-
-// d: User can personalize idle softkeys to be other application from general settings.
-// d: The text is shown as middle softkey.
-// l: control_pane_t3/opt7
-// w:
-// r: 3.2
-//
-#define qtn_msk_idle_cmon "Conn. m."
-
-// d: Application name in the App Shell grid.
-// l: cell_app_pane_t1
-// w:
-// r: 3.2
-//
-#define qtn_cnv_app_caption_short "Converter"
-
-// d: Application name in the App Shell list.
-// l: list_single_large_graphic_pane_t1
-// w:
-// r: 3.2
-//
-#define qtn_cnv_app_caption "Converter"
-
-// d: Text of a list item in shortcut setting view's application list.
-// l: list_set_graphic_pane_t1
-// w:
-// r: 2.8
-//
-#define qtn_apps_converter_gs "Converter"
-
-// d: User can personalize idle softkeys to be other application from general settings.
-// d: The text is shown as Left or Right idle softkey.
-// l: control_pane_t1/opt7
-// w:
-// r: 2.8
-//
-#define qtn_apps_converter_skey "Convert."
-
-// d: User can personalize idle softkeys to be other application from general settings.
-// d: The text is shown as middle softkey.
-// l: control_pane_t3/opt7
-// w:
-// r: 3.2
-//
-#define qtn_msk_idle_converter "Convert."
-
-// d: Application name in the App Shell grid.
-// l: cell_app_pane_t1
-// w:
-// r: 3.2
-//
-#define qtn_apps_dm_grid "Device Manager"
-
-// d: Application name in the App Shell list.
-// l: list_single_large_graphic_pane_t1
-// w:
-// r: 3.2
-//
-#define qtn_apps_dm_list "Device Manager"
-
-// d: Text of a list item in shortcut setting view's application list.
-// l: list_set_graphic_pane_t1
-// w:
-// r: 2.6
-//
-#define qtn_apps_dm_gs "Device manager"
-
-// d: User can personalize idle softkeys to be other application from general settings.
-// d: The text is shown as Left or Right idle softkey.
-// l: control_pane_t1/opt7
-// w:
-// r: 2.6
-//
-#define qtn_apps_dm_skey "Dev. mgr."
-
-// d: User can personalize idle softkeys to be other application from general settings.
-// d: The text is shown as middle softkey.
-// l: control_pane_t3/opt7
-// w:
-// r: 3.2
-//
-#define qtn_msk_idle_dm "Dev. mgr."
-
-// d: Application name in the App Shell grid.
-// l: cell_app_pane_t1
-// w:
-// r: 3.2
-//
-#define qtn_apps_drm_grid "Rights Mgr"
-
-// d: Application name in the App Shell list.
-// l: list_single_large_graphic_pane_t1
-// w:
-// r: 3.2
-//
-#define qtn_apps_drm_list "Rights Manager"
-
-// d: Text of a list item in shortcut setting view's application list.
-// l: list_set_graphic_pane_t1
-// w:
-// r: 2.8
-//
-#define qtn_apps_drm_gs "Rights manager"
-
-// d: User can personalize idle softkeys to be other application from general settings.
-// d: The text is shown as Left or Right idle softkey.
-// l: control_pane_t1/opt7
-// w:
-// r: 2.8
-//
-#define qtn_apps_drm_skey "DRM Mgr"
-
-// d: User can personalize idle softkeys to be other application from general settings.
-// d: The text is shown as middle softkey.
-// l: control_pane_t3/opt7
-// w:
-// r: 3.2
-//
-#define qtn_msk_idle_drm "DRM Mgr"
-
-// d: Application name in the App Shell grid.
-// l: cell_app_pane_t1
-// w:
-// r: 3.2
-//
-#define qtn_apps_fax_modem_grid "Modem"
-
-// d: Application name in the App Shell list.
-// l: list_single_large_graphic_pane_t1
-// w:
-// r: 3.2
-//
-#define qtn_apps_fax_modem_list "Modem"
-
-// d: Text of a list item in shortcut setting view's application list.
-// l: list_set_graphic_pane_t1
-// w:
-// r: 2.8
-//
-#define qtn_apps_fax_modem_gs "Modem"
-
-// d: User can personalize idle softkeys to be other application from general settings.
-// d: The text is shown as Left or Right idle softkey.
-// l: control_pane_t1/opt7
-// w:
-// r: 2.8
-//
-#define qtn_apps_fax_modem_skey "Modem"
-
-// d: User can personalize idle softkeys to be other application from general settings.
-// d: The text is shown as middle softkey.
-// l: control_pane_t3/opt7
-// w:
-// r: 3.2
-//
-#define qtn_msk_idle_fax_modem "Modem"
-
-// d: Application name in the App Shell grid.
-// l: cell_app_pane_t1
-// w:
-// r: 3.2
-//
-#define qtn_apps_fmgr_grid "File manager"
-
-// d: Application name in the App Shell list.
-// l: list_single_large_graphic_pane_t1
-// w:
-// r: 3.2
-//
-#define qtn_apps_fmgr_list "File manager"
-
-// d: Text of a list item in shortcut setting view's application list.
-// l: list_set_graphic_pane_t1
-// w:
-// r: 2.8
-//
-#define qtn_apps_fmgr_gs "File manager"
-
-// d: User can personalize idle softkeys to be other application from general settings.
-// d: The text is shown as Left or Right idle softkey.
-// l: control_pane_t1/opt7
-// w:
-// r: 2.8
-//
-#define qtn_apps_fmgr_skey "File manager"
-
-// d: User can personalize idle softkeys to be other application from general settings.
-// d: The text is shown as middle softkey.
-// l: control_pane_t3/opt7
-// w:
-// r: 3.2
-//
-#define qtn_msk_idle_fmgr "File Manager"
-
-// d: Application name in the App Shell grid.
-// l: cell_app_pane_t1
-// w:
-// r: 3.2
-//
-#define qtn_apps_radio_grid "Radio"
-
-// d: Application name in the App Shell list.
-// l: list_single_large_graphic_pane_t1
-// w:
-// r: 3.2
-//
-#define qtn_apps_radio_list "Radio"
-
-// d: Text of a list item in shortcut setting view's application list.
-// l: list_set_graphic_pane_t1
-// w:
-// r: 2.8
-//
-#define qtn_apps_radio_gs "Radio"
-
-// d: User can personalize idle softkeys to be other application from general settings.
-// d: The text is shown as Left or Right idle softkey.
-// l: control_pane_t1/opt7
-// w:
-// r: 2.7
-//
-#define qtn_apps_radio_skey "Radio"
-
-// d: User can personalize idle softkeys to be other application from general settings.
-// d: The text is shown as middle softkey.
-// l: control_pane_t3/opt7
-// w:
-// r: 3.2
-//
-#define qtn_msk_idle_radio "Radio"
-
-// d: User can personalize idle softkeys to be other application from general settings.
-// d: The text is shown as Left or Right idle softkey.
-// l: control_pane_t1/opt7
-// w:
-// r: 2.7
-//
-#define qtn_fmtx_idle_sk "FM Tx sk"
-
-// d: User can personalize idle softkeys to be other application from general settings.
-// d: The text is shown as middle softkey.
-// l: control_pane_t3/opt7
-// w:
-// r: 3.2
-//
-#define qtn_fmtx_idle_msk "FM Tx msk"
-
-// d: Application name in the App Shell grid.
-// l: cell_app_pane_t1
-// w:
-// r: 3.2
-//
-#define qtn_apps_settings_grid "Settings"
-
-// d: Application name in the App Shell list.
-// l: list_single_large_graphic_pane_t1
-// w:
-// r: 3.2
-//
-#define qtn_apps_settings_list "Settings"
-
-// d: Text of a list item in shortcut setting view's application list.
-// l: list_set_graphic_pane_t1
-// w:
-// r: 2.8
-//
-#define qtn_apps_settings_gs "Settings"
-
-// d: User can personalize idle softkeys to be other application from general settings.
-// d: The text is shown as Left or Right idle softkey.
-// l: control_pane_t1/opt7
-// w:
-// r: 2.8
-//
-#define qtn_apps_settings_skey "Settings"
-
-// d: User can personalize idle softkeys to be other application from general settings.
-// d: The text is shown as middle softkey.
-// l: control_pane_t3/opt7
-// w:
-// r: 3.2
-//
-#define qtn_msk_idle_gs "Settings"
-
-// d: Application name in the App Shell grid.
-// l: cell_app_pane_t1
-// w:
-// r: 5.0
-//
-#define qtn_apps_controlpanel_grid "Control Panel"
-
-// d: Application name in the App Shell list.
-// l: list_single_large_graphic_pane_t1
-// w:
-// r: 5.0
-//
-#define qtn_apps_controlpanel_list "Control Panel"
-
-// d: Text of a list item in shortcut setting view's application list.
-// l: list_set_graphic_pane_t1
-// w:
-// r: 5.0
-//
-#define qtn_apps_controlpanel_gs "Control Panel"
-
-// d: User can personalize idle softkeys to be other application from general settings.
-// d: The text is shown as Left or Right idle softkey.
-// l: control_pane_t1/opt7
-// w:
-// r: 5.0
-//
-#define qtn_apps_controlpanel_skey "Control Panel"
-
-// d: User can personalize idle softkeys to be other application from general settings.
-// d: The text is shown as middle softkey.
-// l: control_pane_t3/opt7
-// w:
-// r: 5.0
-//
-#define qtn_msk_idle_controlpanel "Control Panel"
-
-// d: Application name in the App Shell grid.
-// l: cell_app_pane_t1
-// w:
-// r: 3.2
-//
-#define qtn_apps_help_grid "Help"
-
-// d: Application name in the App Shell list.
-// l: list_single_large_graphic_pane_t1
-// w:
-// r: 3.2
-//
-#define qtn_apps_help_list "Help"
-
-// d: Text of a list item in shortcut setting view's application list.
-// l: list_set_graphic_pane_t1
-// w:
-// r: 2.8
-//
-#define qtn_apps_help_gs "Help"
-
-// d: User can personalize idle softkeys to be other application from general settings.
-// d: The text is shown as Left or Right idle softkey.
-// l: control_pane_t1/opt7
-// w:
-// r: 2.8
-//
-#define qtn_apps_help_skey "Help"
-
-// d: User can personalize idle softkeys to be other application from general settings.
-// d: The text is shown as middle softkey.
-// l: control_pane_t3/opt7
-// w:
-// r: 3.2
-//
-#define qtn_msk_idle_help "Help"
-
-// d: Application name in the App Shell grid.
-// l: cell_app_pane_t1
-// w:
-// r: 3.2
-//
-#define qtn_apps_infrared_grid "Infrared"
-
-// d: Application name in the App Shell list.
-// l: list_single_large_graphic_pane_t1
-// w:
-// r: 3.2
-//
-#define qtn_apps_infrared_list "Infrared"
-
-// d: Text of a list item in shortcut setting view's application list.
-// l: list_set_graphic_pane_t1
-// w:
-// r: 2.8
-//
-#define qtn_apps_infrared_gs "Infrared"
-
-// d: User can personalize idle softkeys to be other application from general settings.
-// d: The text is shown as Left or Right idle softkey.
-// l: control_pane_t1/opt7
-// w:
-// r: 2.8
-//
-#define qtn_apps_infrared_skey "Infrared"
-
-// d: User can personalize idle softkeys to be other application from general settings.
-// d: The text is shown as middle softkey.
-// l: control_pane_t3/opt7
-// w:
-// r: 3.2
-//
-#define qtn_msk_idle_infrared "Infrared"
-
-// d: Application name in the App Shell grid.
-// l: cell_app_pane_t1
-// w:
-// r: 3.2
-//
-#define qtn_apps_instant_grid "Chat"
-
-// d: Application name in the App Shell list.
-// l: list_single_large_graphic_pane_t1
-// w:
-// r: 3.2
-//
-#define qtn_apps_instant_list "Chat"
-
-// d: Text of a list item in shortcut setting view's application list.
-// l: list_set_graphic_pane_t1
-// w:
-// r: 2.8
-//
-#define qtn_apps_instant_gs "Chat"
-
-// d: User can personalize idle softkeys to be other application from general settings.
-// d: The text is shown as Left or Right idle softkey.
-// l: control_pane_t1/opt7
-// w:
-// r: 2.8
-//
-#define qtn_apps_instant_skey "Chat"
-
-// d: User can personalize idle softkeys to be other application from general settings.
-// d: The text is shown as middle softkey.
-// l: control_pane_t3/opt7
-// w:
-// r: 3.2
-//
-#define qtn_msk_idle_instant "Chat"
-
-// d: Application name in the App Shell grid.
-// l: cell_app_pane_t1
-// w:
-// r: 3.2
-//
-#define qtn_apps_udict_grid "User dict."
-
-// d: Application name in the App Shell list.
-// l: list_single_large_graphic_pane_t1
-// w:
-// r: 3.2
-//
-#define qtn_apps_udict_list "User dictionary"
-
-// d: Text of a list item in shortcut setting view's application list.
-// l: list_set_graphic_pane_t1
-// w:
-// r: 3.0
-//
-#define qtn_apps_udict_gs "User dictionary"
-
-// d: User can personalize idle softkeys to be other application from general settings.
-// d: The text is shown as Left or Right idle softkey.
-// l: control_pane_t1/opt7
-// w:
-// r: 3.0
-//
-#define qtn_apps_udict_skey "User dict."
-
-// d: User can personalize idle softkeys to be other application from general settings.
-// d: The text is shown as middle softkey.
-// l: control_pane_t3/opt7
-// w:
-// r: 3.2
-//
-#define qtn_msk_idle_udict "User dict."
-
-// d: Application name in the App Shell grid.
-// l: cell_app_pane_t1
-// w:
-// r: 3.2
-//
-#define qtn_apps_lm_grid "Landmarks"
-
-// d: Application name in the App Shell list.
-// l: list_single_large_graphic_pane_t1
-// w:
-// r: 3.2
-//
-#define qtn_apps_lm_list "Landmarks"
-
-// d: Text of a list item in shortcut setting view's application list.
-// l: list_set_graphic_pane_t1
-// w:
-// r: 3.0
-//
-#define qtn_apps_lm_gs "Landmarks"
-
-// d: User can personalize idle softkeys to be other application from general settings.
-// d: The text is shown as Left or Right idle softkey.
-// l: control_pane_t1/opt7
-// w:
-// r: 3.0
-//
-#define qtn_apps_lm_skey "Landmarks"
-
-// d: User can personalize idle softkeys to be other application from general settings.
-// d: The text is shown as middle softkey.
-// l: control_pane_t3/opt7
-// w:
-// r: 3.2
-//
-#define qtn_msk_idle_lm "Landmarks"
-
-// d: Application name in the App Shell grid.
-// l: cell_app_pane_t1
-// w:
-// r: 3.2
-//
-#define qtn_apps_logs_grid "Log"
-
-// d: Application name in the App Shell list.
-// l: list_single_large_graphic_pane_t1
-// w:
-// r: 3.2
-//
-#define qtn_apps_logs_list "Log"
-
-// d: Text of a list item in shortcut setting view's application list.
-// l: list_set_graphic_pane_t1
-// w:
-// r: 2.8
-//
-#define qtn_apps_logs_gs "Log"
-
-// d: User can personalize idle softkeys to be other application from general settings.
-// d: The text is shown as Left or Right idle softkey.
-// l: control_pane_t1/opt7
-// w:
-// r: 2.8
-//
-#define qtn_apps_logs_skey "Log"
-
-// d: User can personalize idle softkeys to be other application from general settings.
-// d: The text is shown as middle softkey.
-// l: control_pane_t3/opt7
-// w:
-// r: 3.2
-//
-#define qtn_msk_idle_logs "Log"
-
-// d: Application name in the App Shell grid.
-// l: cell_app_pane_t1
-// w:
-// r: 3.2
-//
-#define qtn_apps_mg_grid "Gallery"
-
-// d: Application name in the App Shell list.
-// l: list_single_large_graphic_pane_t1
-// w:
-// r: 3.2
-//
-#define qtn_apps_mg_list "Gallery"
-
-// d: Text of a list item in shortcut setting view's application list.
-// l: list_set_graphic_pane_t1
-// w:
-// r: 2.8
-//
-#define qtn_apps_mg_gs "Gallery"
-
-// d: User can personalize idle softkeys to be other application from general settings.
-// d: The text is shown as Left or Right idle softkey.
-// l: control_pane_t1/opt7
-// w:
-// r: 2.8
-//
-#define qtn_apps_mg_skey "Gallery"
-
-// d: User can personalize idle softkeys to be other application from general settings.
-// d: The text is shown as middle softkey.
-// l: control_pane_t3/opt7
-// w:
-// r: 3.2
-//
-#define qtn_msk_idle_mg "Gallery"
-
-// d: Application name in the App Shell grid.
-// l: cell_app_pane_t1
-// w:
-// r: 3.2
-//
-#define qtn_apps_mp_grid "Media Player"
-
-// d: Application name in the App Shell list.
-// l: list_single_large_graphic_pane_t1
-// w:
-// r: 3.2
-//
-#define qtn_apps_mp_list "Media Player"
-
-// d: Text of a list item in shortcut setting view's application list.
-// l: list_set_graphic_pane_t1
-// w:
-// r: 2.8
-//
-#define qtn_apps_mp_gs "Media Player"
-
-// d: User can personalize idle softkeys to be other application from general settings.
-// d: The text is shown as Left or Right idle softkey.
-// l: control_pane_t1/opt7
-// w:
-// r: 2.8
-//
-#define qtn_apps_mp_skey "Media Player"
-
-// d: User can personalize idle softkeys to be other application from general settings.
-// d: The text is shown as middle softkey.
-// l: control_pane_t3/opt7
-// w:
-// r: 3.2
-//
-#define qtn_msk_idle_mp "Media Player"
-
-// d: Application name in the App Shell grid.
-// l: cell_app_pane_t1
-// w:
-// r: 3.2
-//
-#define qtn_apps_memc_appl_grid "Memory"
-
-// d: Application name in the App Shell list.
-// l: list_single_large_graphic_pane_t1
-// w:
-// r: 3.2
-//
-#define qtn_apps_memc_appl_list "Memory card"
-
-// d: Text of a list item in shortcut setting view's application list.
-// l: list_set_graphic_pane_t1
-// w:
-// r: 2.8
-//
-#define qtn_apps_mmc_gs "Memory Card"
-
-// d: User can personalize idle softkeys to be other application from general settings.
-// d: The text is shown as Left or Right idle softkey.
-// l: control_pane_t1/opt7
-// w:
-// r: 2.8
-//
-#define qtn_apps_mmc_skey "Memory c..."
-
-// d: User can personalize idle softkeys to be other application from general settings.
-// d: The text is shown as middle softkey.
-// l: control_pane_t3/opt7
-// w:
-// r: 3.2
-//
-#define qtn_msk_idle_mmc "Memory c..."
-
-// d: Application name in the App Shell grid.
-// l: cell_app_pane_t1
-// w:
-// r: 3.2
-//
-#define qtn_apps_messaging_grid "Messages"
-
-// d: Application name in the App Shell list.
-// l: list_single_large_graphic_pane_t1
-// w:
-// r: 3.2
-//
-#define qtn_apps_messaging_list "Messages"
-
-// d: Text of a list item in shortcut setting view's application list.
-// l: list_set_graphic_pane_t1
-// w:
-// r: 2.8
-//
-#define qtn_apps_messaging_gs "Messages"
-
-// d: User can personalize idle softkeys to be other application from general settings.
-// d: The text is shown as Left or Right idle softkey.
-// l: control_pane_t1/opt7
-// w:
-// r: 2.8
-//
-#define qtn_apps_messaging_skey "Messag."
-
-// d: User can personalize idle softkeys to be other application from general settings.
-// d: The text is shown as middle softkey.
-// l: control_pane_t3/opt7
-// w:
-// r: 3.2
-//
-#define qtn_msk_idle_messaging "Messag."
-
-// d: Text of a list item in shortcut setting view's application list.
-// l: list_set_graphic_pane_t1
-// w:
-// r: 2.8
-//
-#define qtn_set_idle_skey_new_message "New message"
-
-// d: User can personalize idle softkeys to be other application from general settings.
-// d: The text is shown as Left or Right idle softkey.
-// d: User is prompted to write SMS, MMS or Email if the softkey is pressed.
-// l: control_pane_t1/opt7
-// w:
-// r: 2.8
-//
-#define qtn_idle_skey_new_message "New msg."
-
-// d: User can personalize idle softkeys to be other application from general settings.
-// d: The text is shown as middle softkey.
-// l: control_pane_t3/opt7
-// w:
-// r: 3.2
-//
-#define qtn_msk_idle_new_message "New msg."
-
-// d: Text of a list item in shortcut setting view's application list.
-// d: Caption for the special New Message shortcut
-// l: list_set_graphic_pane_t1
-// w:
-// r: 3.2
-//
-#define qtn_set_idle_skey_new_msg "New message"
-
-// d: User can personalize idle softkeys to be other application from general settings.
-// d: The text is shown as Left or Right idle softkey.
-// d: User is prompted to new message if the softkey is pressed.
-// l: control_pane_t1/opt7
-// w:
-// r: 3.1
-//
-#define qtn_idle_skey_new_msg "New message"
-
-// d: User can personalize idle softkeys to be other application from general settings.
-// d: The text is shown as middle softkey.
-// l: control_pane_t3/opt7
-// w:
-// r: 3.2
-//
-#define qtn_msk_idle_new_msg "New message"
-
-// d: Text of a list item in shortcut setting view's application list.
-// l: list_set_graphic_pane_t1
-// w:
-// r: 2.8
-//
-#define qtn_set_idle_skeys_sms_editor "New SMS"
-
-// d: User can personalize idle softkeys to be other application from general settings.
-// d: The text is shown as Left or Right idle softkey.
-// l: control_pane_t1/opt7
-// w:
-// r: 2.8
-//
-#define qtn_apps_sms_skey "New SMS"
-
-// d: User can personalize idle softkeys to be other application from general settings.
-// d: The text is shown as middle softkey.
-// l: control_pane_t3/opt7
-// w:
-// r: 3.2
-//
-#define qtn_msk_idle_sms "New SMS"
-
-// d: Text of a list item in shortcut setting view's application list.
-// l: list_set_graphic_pane_t1
-// w:
-// r: 2.8
-//
-#define qtn_set_idle_skeys_mms_editor "New MMS"
-
-// d: User can personalize idle softkeys to be other application from general settings.
-// d: The text is shown as Left or Right idle softkey.
-// l: control_pane_t1/opt7
-// w:
-// r: 2.8
-//
-#define qtn_apps_mms_skey "New MMS"
-
-// d: User can personalize idle softkeys to be other application from general settings.
-// d: The text is shown as middle softkey.
-// l: control_pane_t3/opt7
-// w:
-// r: 3.2
-//
-#define qtn_msk_idle_mms "New MMS"
-
-// d: Text of a list item in shortcut setting view's application list.
-// d: Caption for the special Select message type shortcut
-// l: list_set_graphic_pane_t1
-// w:
-// r: 3.2
-//
-#define qtn_set_idle_skey_select_msg_type "Select msg type"
-
-// d: User can personalize idle softkeys to be other application from general settings.
-// d: The text is shown as Left or Right idle softkey.
-// d: User is prompted to Select message if the softkey is pressed.
-// l: control_pane_t1/opt7
-// w:
-// r: 3.1
-//
-#define qtn_idle_skey_select_msg "Select msg"
-
-// d: User can personalize idle softkeys to be other application from general settings.
-// d: The text is shown as middle softkey.
-// l: control_pane_t3/opt7
-// w:
-// r: 3.2
-//
-#define qtn_msk_idle_select_msg "Select msg"
-
-// d: Text of a list item in shortcut setting view's application list.
-// d: Caption for the special New Email shortcut
-// l: list_set_graphic_pane_t1
-// w:
-// r: 3.2
-//
-#define qtn_set_idle_skeys_email_editor "New Email"
-
-// d: User can personalize idle softkeys to be other application from general settings.
-// d: The text is shown as Left or Right idle softkey.
-// l: control_pane_t1/opt7
-// w:
-// r: 2.8
-//
-#define qtn_apps_email_skey "New Email"
-
-// d: User can personalize idle softkeys to be other application from general settings.
-// d: The text is shown as middle softkey.
-// l: control_pane_t3/opt7
-// w:
-// r: 3.2
-//
-#define qtn_msk_idle_email "New Email"
-
-// d: Text of a list item in shortcut setting view's application list.
-// d: Caption for the special New MMS Postcard shortcut
-// l: list_set_graphic_pane_t1
-// w:
-// r: 3.2
-//
-#define qtn_apps_mmspostcard_gs "New MMS postcard"
-
-// d: User can personalize idle softkeys to be other application from general settings.
-// d: The text is shown as Left or Right idle softkey.
-// l: control_pane_t1/opt7
-// w:
-// r: 3.0
-//
-#define qtn_apps_mmspostcard_skey "New MMS postcard"
-
-// d: User can personalize idle softkeys to be other application from general settings.
-// d: The text is shown as middle softkey.
-// l: control_pane_t3/opt7
-// w:
-// r: 3.2
-//
-#define qtn_msk_idle_mmspostcard "New MMS postcard"
-
-// d: Text of a list item in shortcut setting view's application list.
-// d: Caption for the special New SyncML mail shortcut
-// l: list_set_graphic_pane_t1
-// w:
-// r: 3.2
-//
-#define qtn_apps_syncml_mail_gs "New SyncML mail"
-
-// d: User can personalize idle softkeys to be other application from general settings.
-// d: The text is shown as Left or Right idle softkey.
-// l: control_pane_t1/opt7
-// w:
-// r: 3.0
-//
-#define qtn_apps_syncml_mail_skey "New SyncML mail"
-
-// d: User can personalize idle softkeys to be other application from general settings.
-// d: The text is shown as middle softkey.
-// l: control_pane_t3/opt7
-// w:
-// r: 3.2
-//
-#define qtn_msk_idle_syncml_mail "New SyncML mail"
-
-// d: Text of a list item in shortcut setting view's application list.
-// d: Caption for the special New Audio message shortcut
-// l: list_set_graphic_pane_t1
-// w:
-// r: 3.2
-//
-#define qtn_apps_audio_msg_gs "New audio message"
-
-// d: User can personalize idle softkeys to be other application from general settings.
-// d: The text is shown as Left or Right idle softkey.
-// l: control_pane_t1/opt7
-// w:
-// r: 3.1u
-//
-#define qtn_apps_audio_msg_skey "New audio msg"
-
-// d: User can personalize idle softkeys to be other application from general settings.
-// d: The text is shown as middle softkey.
-// l: control_pane_t3/opt7
-// w:
-// r: 3.2
-//
-#define qtn_msk_idle_audio_msg "New audio msg"
-
-// d: Application name in the App Shell grid.
-// l: cell_app_pane_t1
-// w:
-// r: 3.2
-//
-#define qtn_apps_mplayer_grid "Music player"
-
-// d: Application name in the App Shell list.
-// l: list_single_large_graphic_pane_t1
-// w:
-// r: 3.2
-//
-#define qtn_apps_mplayer_list "Music player"
-
-// d: Text of a list item in shortcut setting view's application list.
-// l: list_set_graphic_pane_t1
-// w:
-// r: 3.0
-//
-#define qtn_apps_mplayer_gs "Music player"
-
-// d: User can personalize idle softkeys to be other application from general settings.
-// d: The text is shown as Left or Right idle softkey.
-// l: control_pane_t1/opt7
-// w:
-// r: 3.0
-//
-#define qtn_apps_mplayer_skey "Music"
-
-// d: User can personalize idle softkeys to be other application from general settings.
-// d: The text is shown as middle softkey.
-// l: control_pane_t3/opt7
-// w:
-// r: 3.2
-//
-#define qtn_msk_idle_mplayer "Music"
-
-// d: Application name in the App Shell grid.
-// l: cell_app_pane_t1
-// w:
-// r: 3.2
-//
-#define qtn_apps_notepad_grid "Notepad"
-
-// d: Application name in the App Shell list.
-// l: list_single_large_graphic_pane_t1
-// w:
-// r: 3.2
-//
-#define qtn_apps_notepad_list "Notepad"
-
-// d: Text of a list item in shortcut setting view's application list.
-// l: list_set_graphic_pane_t1
-// w:
-// r: 2.8
-//
-#define qtn_apps_notepad_gs "Notepad"
-
-// d: User can personalize idle softkeys to be other application from general settings.
-// d: The text is shown as Left or Right idle softkey.
-// l: control_pane_t1/opt7
-// w:
-// r: 2.8
-//
-#define qtn_apps_notepad_skey "Notepad"
-
-// d: User can personalize idle softkeys to be other application from general settings.
-// d: The text is shown as middle softkey.
-// l: control_pane_t3/opt7
-// w:
-// r: 3.2
-//
-#define qtn_msk_idle_notepad "Notepad"
-
-// d: Text of a list item in shortcut setting view's application list.
-// l: list_set_graphic_pane_t1
-// w:
-// r: 3.2
-//
-#define qtn_apps_notepad_newnote_gs "New note"
-
-// d: User can personalize idle softkeys to be other application from general settings.
-// d: The text is shown as Left or Right idle softkey.
-// l: control_pane_t1/opt7
-// w:
-// r: 3.2
-//
-#define qtn_apps_notepad_newnote_skey "New note"
-
-// d: User can personalize idle softkeys to be other application from general settings.
-// d: The text is shown as middle softkey.
-// l: control_pane_t3/opt7
-// w:
-// r: 3.2
-//
-#define qtn_msk_idle_notepad_newnote "New note"
-
-// d: Application name in the App Shell grid.
-// l: cell_app_pane_t1
-// w:
-// r: 3.2
-//
-#define qtn_apps_skins_grid "Skins"
-
-// d: Application name in the App Shell list.
-// l: list_single_large_graphic_pane_t1
-// w:
-// r: 3.2
-//
-#define qtn_apps_skins_list "Skins"
-
-// d: Text of a list item in shortcut setting view's application list.
-// l: list_set_graphic_pane_t1
-// w:
-// r: 2.8
-//
-#define qtn_apps_skins_gs "Skins"
-
-// d: User can personalize idle softkeys to be other application from general settings.
-// d: The text is shown as Left or Right idle softkey.
-// l: control_pane_t1/opt7
-// w:
-// r: 2.8
-//
-#define qtn_apps_skins_skey "Skins"
-
-// d: User can personalize idle softkeys to be other application from general settings.
-// d: The text is shown as middle softkey.
-// l: control_pane_t3/opt7
-// w:
-// r: 3.2
-//
-#define qtn_msk_idle_skins "Skins"
-
-// d: Text of a list item in shortcut setting view's application list.
-// d: Caption for the special Change Theme shortcut
-// l: list_set_graphic_pane_t1
-// w:
-// r: 3.2
-//
-#define qtn_apps_idle_skin_gs "Idle theme"
-
-// d: User can personalize idle softkeys to be other application from general settings.
-// d: The text is shown as Left or Right idle softkey.
-// l: control_pane_t1/opt7
-// w:
-// r: 3.2
-//
-#define qtn_apps_idle_skin_skey "Idle theme"
-
-// d: User can personalize idle softkeys to be other application from general settings.
-// d: The text is shown as middle softkey.
-// l: control_pane_t3/opt7
-// w:
-// r: 3.2
-//
-#define qtn_msk_idle_skin "Idle theme"
-
-// d: Application name in the App Shell grid.
-// l: cell_app_pane_t1
-// w:
-// r: 3.2
-//
-#define qtn_apps_phone_grid "Telephone"
-
-// d: Application name in the App Shell list.
-// l: list_single_large_graphic_pane_t1
-// w:
-// r: 3.2
-//
-#define qtn_apps_phone_list "Telephone"
-
-// d: Application name in the App Shell grid.
-// l: cell_app_pane_t1
-// w:
-// r: 3.2
-//
-#define qtn_apps_phonebook_grid "Contacts"
-
-// d: Application name in the App Shell list.
-// l: list_single_large_graphic_pane_t1
-// w:
-// r: 3.2
-//
-#define qtn_apps_phonebook_list "Contacts"
-
-// d: Text of a list item in shortcut setting view's application list.
-// l: list_set_graphic_pane_t1
-// w:
-// r: 2.8
-//
-#define qtn_apps_phonebook_gs "Contacts"
-
-// d: User can personalize idle softkeys to be other application from general settings.
-// d: The text is shown as Left or Right idle softkey.
-// l: control_pane_t1/opt7
-// w:
-// r: 2.8
-//
-#define qtn_apps_phonebook_skey "Contacts"
-
-// d: User can personalize idle softkeys to be other application from general settings.
-// d: The text is shown as middle softkey.
-// l: control_pane_t3/opt7
-// w:
-// r: 3.2
-//
-#define qtn_msk_idle_phonebook "Contacts"
-
-// d: Application name in the App Shell grid.
-// l: cell_app_pane_t1
-// w:
-// r: 3.2
-//
-#define qtn_apps_mode_grid "Profiles"
-
-// d: Application name in the App Shell list.
-// l: list_single_large_graphic_pane_t1
-// w:
-// r: 3.2
-//
-#define qtn_apps_mode_list "Profiles"
-
-// d: Text of a list item in shortcut setting view's application list.
-// l: list_set_graphic_pane_t1
-// w:
-// r: 2.8
-//
-#define qtn_apps_mode_gs "Profiles"
-
-// d: User can personalize idle softkeys to be other application from general settings.
-// d: The text is shown as Left or Right idle softkey.
-// l: control_pane_t1/opt7
-// w:
-// r: 2.8
-//
-#define qtn_apps_mode_skey "Profiles"
-
-// d: User can personalize idle softkeys to be other application from general settings.
-// d: The text is shown as middle softkey.
-// l: control_pane_t3/opt7
-// w:
-// r: 3.2
-//
-#define qtn_msk_idle_mode "Profiles"
-
-// d: Application name in the App Shell grid.
-// l: cell_app_pane_t1
-// w:
-// r: 3.2
-//
-#define qtn_apps_ptt_grid "PTT"
-
-// d: Application name in the App Shell list.
-// l: list_single_large_graphic_pane_t1
-// w:
-// r: 3.2
-//
-#define qtn_apps_ptt_list "Pust to talk"
-
-// d: Text of a list item in shortcut setting view's application list.
-// l: list_set_graphic_pane_t1
-// w:
-// r: 3.2
-//
-#define qtn_apps_ptt_gs "Push to talk"
-
-// d: User can personalize idle softkeys to be other application from general settings.
-// d: The text is shown as Left or Right idle softkey.
-// l: control_pane_t1/opt7
-// w:
-// r: 3.2
-//
-#define qtn_apps_ptt_skey "PTT"
-
-// d: User can personalize idle softkeys to be other application from general settings.
-// d: The text is shown as middle softkey.
-// l: control_pane_t3/opt7
-// w:
-// r: 3.2
-//
-#define qtn_msk_idle_ptt "PTT"
-
-// d: Application name in the App Shell grid.
-// l: cell_app_pane_t1
-// w:
-// r: 3.2
-//
-#define qtn_apps_search_grid "Search"
-
-// d: Application name in the App Shell list.
-// l: list_single_large_graphic_pane_t1
-// w:
-// r: 3.2
-//
-#define qtn_apps_search_list "Search"
-
-// d: Text of a list item in shortcut setting view's application list.
-// l: list_set_graphic_pane_t1
-// w:
-// r: 3.2
-//
-#define qtn_apps_search_gs "Search"
-
-// d: User can personalize idle softkeys to be other application from general settings.
-// d: The text is shown as Left or Right idle softkey.
-// l: control_pane_t1/opt7
-// w:
-// r: 3.2
-//
-#define qtn_apps_search_skey "Search"
-
-// d: User can personalize idle softkeys to be other application from general settings.
-// d: The text is shown as middle softkey.
-// l: control_pane_t3/opt7
-// w:
-// r: 3.2
-//
-#define qtn_msk_idle_search "Search"
-
-// d: Application name in the App Shell grid.
-// l: cell_app_pane_t1
-// w:
-// r: 3.2
-//
-#define qtn_apps_simapps_grid "SIM services"
-
-// d: Application name in the App Shell list.
-// l: list_single_large_graphic_pane_t1
-// w:
-// r: 3.2
-//
-#define qtn_apps_simapps_list "SIM services"
-
-// d: Application name in the App Shell grid.
-// l: cell_app_pane_t1
-// w:
-// r: 3.2
-//
-#define qtn_apps_sd_grid "Speed dial"
-
-// d: Application name in the App Shell list.
-// l: list_single_large_graphic_pane_t1
-// w:
-// r: 3.2
-//
-#define qtn_apps_sd_list "Speed dial"
-
-// d: Text of a list item in shortcut setting view's application list.
-// l: list_set_graphic_pane_t1
-// w:
-// r: 2.8
-//
-#define qtn_apps_sd_gs "Speed dial"
-
-// d: User can personalize idle softkeys to be other application from general settings.
-// d: The text is shown as Left or Right idle softkey.
-// l: control_pane_t1/opt7
-// w:
-// r: 2.8
-//
-#define qtn_apps_sd_skey "Sp. dials"
-
-// d: User can personalize idle softkeys to be other application from general settings.
-// d: The text is shown as middle softkey.
-// l: control_pane_t3/opt7
-// w:
-// r: 3.2
-//
-#define qtn_msk_idle_sd "Sp. dials"
-
-// d: Application name in the App Shell grid.
-// l: cell_app_pane_t1
-// w:
-// r: 3.2
-//
-#define qtn_apps_usb_grid "USB"
-
-// d: Application name in the App Shell list.
-// l: list_single_large_graphic_pane_t1
-// w:
-// r: 3.2
-//
-#define qtn_apps_usb_list "USB"
-
-// d: Text of a list item in shortcut setting view's application list.
-// l: list_set_graphic_pane_t1
-// w:
-// r: 3.0
-//
-#define qtn_apps_usb_gs "USB"
-
-// d: User can personalize idle softkeys to be other application from general settings.
-// d: The text is shown as Left or Right idle softkey.
-// l: control_pane_t1/opt7
-// w:
-// r: 3.0
-//
-#define qtn_apps_usb_skey "USB"
-
-// d: User can personalize idle softkeys to be other application from general settings.
-// d: The text is shown as middle softkey.
-// l: control_pane_t3/opt7
-// w:
-// r: 3.2
-//
-#define qtn_msk_idle_usb "USB"
-
-// d: Application name in the App Shell grid.
-// l: cell_app_pane_t1
-// w:
-// r: 3.2
-//
-#define qtn_apps_vc_grid "Voice Commands"
-
-// d: Application name in the App Shell list.
-// l: list_single_large_graphic_pane_t1
-// w:
-// r: 3.2
-//
-#define qtn_apps_vc_list "Voice Commands"
-
-// d: Text of a list item in shortcut setting view's application list.
-// l: list_set_graphic_pane_t1
-// w:
-// r: 2.8
-//
-#define qtn_apps_vc_gs "Voice Commands"
-
-// d: User can personalize idle softkeys to be other application from general settings.
-// d: The text is shown as Left or Right idle softkey.
-// l: control_pane_t1/opt7
-// w:
-// r: 2.8
-//
-#define qtn_apps_vc_skey "Voice Commands"
-
-// d: User can personalize idle softkeys to be other application from general settings.
-// d: The text is shown as middle softkey.
-// l: control_pane_t3/opt7
-// w:
-// r: 3.2
-//
-#define qtn_msk_idle_vc "Voice Commands"
-
-// d: Application name in the App Shell grid.
-// l: cell_app_pane_t1
-// w:
-// r: 3.2
-//
-#define qtn_apps_smsvo_grid "Voice mail"
-
-// d: Application name in the App Shell list.
-// l: list_single_large_graphic_pane_t1
-// w:
-// r: 3.2
-//
-#define qtn_apps_smsvo_list "Voice mailbox"
-
-// d: Text of a list item in shortcut setting view's application list.
-// l: list_set_graphic_pane_t1
-// w:
-// r: 2.8
-//
-#define qtn_apps_smsvo_gs "Voice mailbox"
-
-// d: User can personalize idle softkeys to be other application from general settings.
-// d: The text is shown as Left or Right idle softkey.
-// l: control_pane_t1/opt7
-// w:
-// r: 2.8
-//
-#define qtn_apps_smsvo_skey "Voice m."
-
-// d: User can personalize idle softkeys to be other application from general settings.
-// d: The text is shown as middle softkey.
-// l: control_pane_t3/opt7
-// w:
-// r: 3.2
-//
-#define qtn_msk_idle_smsvo "Voice m."
-
-// d: Application name in the App Shell grid.
-// l: cell_app_pane_t1
-// w:
-// r: 3.2
-//
-#define qtn_apps_voip_grid "Voice over IP"
-
-// d: Application name in the App Shell list.
-// l: list_single_large_graphic_pane_t1
-// w:
-// r: 3.2
-//
-#define qtn_apps_voip_list "Voice over IP"
-
-// d: Text of a list item in shortcut setting view's application list.
-// l: list_set_graphic_pane_t1
-// w:
-// r: 3.0
-//
-#define qtn_apps_voip_gs "Voice over IP"
-
-// d: User can personalize idle softkeys to be other application from general settings.
-// d: The text is shown as Left or Right idle softkey.
-// l: control_pane_t1/opt7
-// w:
-// r: 3.0
-//
-#define qtn_apps_voip_skey "Voice over IP"
-
-// d: User can personalize idle softkeys to be other application from general settings.
-// d: The text is shown as middle softkey.
-// l: control_pane_t3/opt7
-// w:
-// r: 3.2
-//
-#define qtn_msk_idle_voip "Voice over IP"
-
-// d: Application name in the App Shell grid.
-// l: cell_app_pane_t1
-// w:
-// r: 3.2
-//
-#define qtn_vorec_app_menu_grid "Recorder"
-
-// d: Application name in the App Shell list.
-// l: list_single_large_graphic_pane_t1
-// w:
-// r: 3.2
-//
-#define qtn_vorec_app_menu_list "Recorder"
-
-// d: Text of a list item in shortcut setting view's application list.
-// l: list_set_graphic_pane_t1
-// w:
-// r: 2.8
-//
-#define qtn_apps_recorder_gs "Recorder"
-
-// d: User can personalize idle softkeys to be other application from general settings.
-// d: The text is shown as Left or Right idle softkey.
-// l: control_pane_t1/opt7
-// w:
-// r: 2.8
-//
-#define qtn_apps_recorder_skey "Recorder"
-
-// d: User can personalize idle softkeys to be other application from general settings.
-// d: The text is shown as middle softkey.
-// l: control_pane_t3/opt7
-// w:
-// r: 3.2
-//
-#define qtn_msk_idle_recorder "Recorder"
-
-// d: Application name in the App Shell grid.
-// l: cell_app_pane_t1
-// w:
-// r: 3.2
-//
-#define qtn_apps_sml_grid "Sync"
-
-// d: Application name in the App Shell list.
-// l: list_single_large_graphic_pane_t1_cp2
-// w:
-// r: 3.2
-//
-#define qtn_apps_sml_list "Sync"
-
-// d: User can personalize idle softkeys to be other application from general settings.
-// d: The text is shown as Left or Right idle softkey.
-// l: control_pane_t1/opt7
-// w:
-// r: 3.1
-//
-#define qtn_apps_video_grid "Vid.Services"
-
-// d: User can personalize idle softkeys to be other application from general settings.
-// d: The text is shown as Left or Right idle softkey.
-// l: control_pane_t1/opt7
-// w:
-// r: 3.1
-//
-#define qtn_apps_operatormenu_skey "Oper. menu"
-
-// d: User can personalize idle softkeys to be other application from general settings.
-// d: The text is shown as Left or Right idle softkey.
-// l: control_pane_t1/opt7
-// w:
-// r: 3.1
-//
-#define qtn_apps_fplayer_skey "Flash Player"
-
-// d: User can personalize idle softkeys to be other application from general settings.
-// d: The text is shown as Left or Right idle softkey.
-// l: control_pane_t1/opt7
-// w:
-// r: 3.1
-//
-#define qtn_apps_exchangemail_skey "Exh. mail"
-
-// d: Application name in the App Shell list.
-// l: list_single_large_graphic_pane_t1
-// w:
-// r: 5.0
-//
-#define qtn_apps_connectivity_list "Connectivity"
-
-// d: User can personalize idle softkeys to be other application from general settings.
-// d: The text is shown as Left or Right idle softkey.
-// l: control_pane_t1/opt7
-// w:
-// r: 5.0
-//
-#define qtn_apps_connectivity_skey "Connectivity"
-
-// d: User can personalize idle softkeys to be other application from general settings.
-// d: The text is shown as middle softkey.
-// l: control_pane_t3/opt7
-// w:
-// r: 5.0
-//
-#define qtn_msk_idle_connectivity "Connectivity"
-
-
-// End of File.
--- a/idlefw/plugins/shortcutplugin/rom/aiscutplugin.iby Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,40 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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: Image description file for project aiscutplugin
-*
-*/
-
-
-#ifndef AISCUTPLUGIN_IBY
-#define AISCUTPLUGIN_IBY
-
-#include <data_caging_paths_for_iby.hrh>
-
-// Shortcut plugin
-data=DATAZ_\BITMAP_DIR\aiscutplugin.mif BITMAP_DIR\aiscutplugin.mif
-ECOM_PLUGIN( aiscutplugin.dll, aiscutplugin.rsc )
-
-// Shortcut settings plugin
-ECOM_PLUGIN( aiscutsettings.dll, aiscutsettings.rsc )
-
-file=ABI_DIR\BUILD_DIR\aiscutextserv.dll SHARED_LIB_DIR\aiscutextserv.dll
-
-// Central repository file, temporarily here
-//data=\S60\ActiveIdle2\plugins\shortcutplugin\src\10275104.txt "private\10202BE9\10275104.txt"
-
-data=ZPRIVATE\102750F9\backup_registration.xml private\102750F9\backup_registration.xml
-
-#endif // AISCUTPLUGIN_IBY
-
-// End of File.
--- a/idlefw/plugins/shortcutplugin/rom/aiscutplugin_resources.iby Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,31 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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: Image description file for project aiscutplugin localizable resources
-*
-*/
-
-
-#ifndef AISCUTPLUGIN_RESOURCES_IBY
-#define AISCUTPLUGIN_RESOURCES_IBY
-
-#include <data_caging_paths_for_iby.hrh>
-
-// Shortcut settings plugin localizable resources
-data=DATAZ_\RESOURCE_FILES_DIR\aiscutsettingsres.rsc RESOURCE_FILES_DIR\aiscutsettingsres.rsc
-data=DATAZ_\RESOURCE_FILES_DIR\aiscuttexts.rsc RESOURCE_FILES_DIR\aiscuttexts.rsc
-data=DATAZ_\RESOURCE_FILES_DIR\aiscutpluginres.rsc RESOURCE_FILES_DIR\aiscutpluginres.rsc
-
-#endif // AISCUTPLUGIN_RESOURCES_IBY
-
-// End of File.
--- a/idlefw/plugins/shortcutplugin/src/GenPopupFSM.py Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,350 +0,0 @@
-#
-# 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:
-#
-
-'''
-Finite State Machine generator for Symbian OS projects.
-
-Just define fsmName, actionsIfaceName and stt and the script generates the
-needed files for you.
-
-The files are:
-- State Machine header file (including state classes, overwrites the existing file)
-- State Machine source file (including state classes, overwrites the existing file)
-- Actions interface header (abstract M-class, overwrites the existing file)
-- Header file for tracing (will be generated only if missing)
-
-
-Version 1: 22-Jun-2006, Jaakko Vuori, Initial version
-Version 2: 26-Jun-2006, Jaakko Vuori, Added argument passing
-Version 3: 27-Jun-2006, Jaakko Vuori, Changed state classes nested in FSM class
-
-'''
-from sets import Set
-import os, re, string
-
-#------------------------------------------------------------------------
-#State machine name
-fsmName = "Popup"
-
-#Actions interface name
-actionsIfaceName = "PopupFSMActions"
-
-#State transition table
-stt=[ #source state #event #dest state #actions
- ("NotSetOffFocus", [
- ("HandleUpdate()", "SetOffFocus", ["IssueCleanCaption()"]),
- ("HandleGotFocus()", "NotSetOnFocus", []),
- ("HandleForeground()", "NotSetOffFocus", ["IssuePublishCaption()"]),
- ]),
-
- ("SetOffFocus", [
- ("HandleGotFocus()", "GettingFocus", ["StartShortTimer()"]),
- ("HandleReset()", "NotSetOffFocus", ["IssuePublishCaption()"]),
- ]),
-
- ("GettingFocus", [
- ("HandleRequestCompleted()", "Visible", ["IssuePublishPopup()", "StartLongTimer()"]),
- ("HandleReset()", "NotSetOnFocus", ["IssuePublishCaption()", "CancelRequest()"]),
- ("HandleLostFocus()", "SetOffFocus", ["CancelRequest()"]),
- ]),
-
- ("LosingFocus", [
- ("HandleRequestCompleted()", "SetOffFocus", ["IssueCleanPopup()"]),
- ("HandleReset()", "NotSetOffFocus", ["IssuePublishCaption()", "CancelRequest()"]),
- ("HandleGotFocus()", "Visible", ["CancelRequest()", "StartLongTimer()"]),
- ]),
-
- ("NotSetOnFocus", [
- ("HandleUpdate()", "Visible", ["IssueCleanCaption()", "IssuePublishPopup()", "StartLongTimer()"]),
- ("HandleLostFocus()", "NotSetOffFocus", []),
- ("HandleBackground()", "BackgroundNotSetOnFocus", []),
- ("HandleForeground()", "NotSetOnFocus", ["IssuePublishCaption()"]),
- ]),
-
- ("Visible", [
- ("HandleUpdate()", "Visible", ["IssueCleanCaption()", "IssuePublishPopup()", "StartLongTimer()"]),
- ("HandleReset()", "NotSetOnFocus", ["IssuePublishCaption()", "IssueCleanPopup()", "CancelRequest()"]),
- ("HandleLostFocus()", "LosingFocus", ["CancelRequest()", "CompleteSelf()"]),
- ("HandleRequestCompleted()", "NotVisible", ["IssueCleanPopup()"]),
- ("HandleBackground()", "BackgroundSetOnFocus", ["CancelRequest()", "IssueCleanPopup()"]),
- ]),
-
- ("NotVisible", [
- ("HandleUpdate()", "Visible", ["IssueCleanCaption()", "IssuePublishPopup()", "StartLongTimer()"]),
- ("HandleReset()", "NotSetOnFocus", ["IssuePublishCaption()"]),
- ("HandleLostFocus()", "SetOffFocus", []),
- ]),
-
- ("BackgroundNotSetOnFocus", [
- ("HandleForeground()", "NotSetOnFocus", ["IssuePublishCaption()"]),
- ("HandleUpdate()", "BackgroundSetOnFocus", ["IssueCleanCaption()"]),
- ]),
-
- ("BackgroundSetOnFocus", [
- ("HandleReset()", "BackgroundNotSetOnFocus", ["IssuePublishCaption()"]),
- ("HandleForeground()", "Visible", ["IssuePublishPopup()", "StartLongTimer()"]),
- ]),
-
- ]
-#------------------------------------------------------------------------
-
-def write( s ):
- f.write( s + '\n' )
-
-def writeHeader():
- global f
- fname = '%sFSM.h' % (fsmName)
- print "Generating %s..." % (fname)
- f = open( fname, 'w' )
-
- write( "#ifndef %sFSM_H" % ( fsmName.upper() ) )
- write( "#define %sFSM_H" % ( fsmName.upper() ) )
- write( "" )
- write( "// EXTERNAL INCLUDES" )
- write( "#include <e32base.h>" )
- write( "" )
- write( "// FORWARD DECLARATIONS" )
- write( "class T%sFSM;" % (fsmName) )
- write( "class M%s;" % (actionsIfaceName) )
- write( "" )
- write( "// CLASS DEFINITIONS" )
-
- write( "/**" )
- write( " * %s state machine" % (fsmName) )
- write( " */" )
- write( "class T%sFSM" % (fsmName) )
- write( " {" )
-
- write( " /**" )
- write( " * Base class for states" )
- write( " */" )
- write( " class T%sStateBase" % (fsmName) )
- write( " {" )
- write( " public: // New methods" )
-
- events=[]
- for s in stt:
- for e in s[1]:
- events.append( e[0] )
- for event in Set(events):
- fname, args = re.match('(.*?)[(](.*?)[)]',event).groups()
- if len(args)>0:
- write( " virtual void %s( T%sFSM* a%sFSM, M%s& a%s,%s);" % (fname,fsmName,fsmName,actionsIfaceName,actionsIfaceName,args) )
- else:
- write( " virtual void %s( T%sFSM* a%sFSM, M%s& a%s );" % (fname,fsmName,fsmName,actionsIfaceName,actionsIfaceName) )
-
-
- write( " };" )
- write( "" )
-
- for s in stt:
- write( " /**" )
- write( " * State class T%s" % (s[0]) )
- write( " */" )
- write( " class T%s : public T%sStateBase" % (s[0],fsmName) )
- write( " {" )
- write( " protected: // Methods derived from T%sState" % (fsmName))
- for event in s[1]:
- fname, args = re.match('(.*?)[(](.*?)[)]',event[0]).groups()
- if len(args)>0:
- write( " void %s( T%sFSM* a%sFSM, M%s& a%s,%s);" % (fname,fsmName,fsmName,actionsIfaceName,actionsIfaceName,args) )
- else:
- write( " void %s( T%sFSM* a%sFSM, M%s& a%s );" % (fname,fsmName,fsmName,actionsIfaceName,actionsIfaceName) )
-
- write( " };" )
- write( "" )
-
- write( "" )
- write( " public: // Constructors" )
- write( " T%sFSM( M%s& a%s );" % (fsmName,actionsIfaceName,actionsIfaceName))
- write( "" )
- write( " public: // New methods" )
- for event in Set(events):
- write( " void %s;" % (event))
- write( "" )
- write( " private: // New methods" )
- write( " void SetState( T%sStateBase* aNewState );" % (fsmName) )
- write( "" )
- write( " private: // Data" )
- write( " //Ref:" )
- write( " T%sStateBase* iCurrentState;" % (fsmName))
- write( " M%s& i%s;" % (actionsIfaceName,actionsIfaceName))
- write( "" )
- write( " //Own:" )
- for s in stt:
- write( " T%s i%s;" % (s[0],s[0]))
-
- write( " private: // Friend class definitions" )
- for s in stt:
- write( " friend class T%s;" % (s[0]))
-
- write( " };" )
- write( "" )
- write( "#endif // %sFSM_H" % (fsmName.upper()) )
- write( "" )
- write( "// End of file" )
- f.close()
-
-
-def writeSource():
- global f
- fname = '%sFSM.cpp' % (fsmName)
- print "Generating %s..." % (fname)
- f = open( fname, 'w' )
-
- write( '#include "%sFSM.h"' % (fsmName) )
- write( '#include "M%s.h"' % (actionsIfaceName) )
- write( '#include "%sTrace.h"' % (fsmName) )
- write( '' )
- write( '#pragma warning( disable:4100 )' )
- write( '#pragma warning( disable:4068 )' )
- write( '#pragma warn_unusedarg off' )
-
- write( '' )
- write( 'T%sFSM::T%sFSM( M%s& a%s ) : ' % (fsmName,fsmName,actionsIfaceName,actionsIfaceName) )
- write( ' iCurrentState( &i%s ),' % (stt[0][0]) )
- write( ' i%s( a%s )' % (actionsIfaceName,actionsIfaceName) )
- write( ' {' )
- write( ' }' )
- write( '' )
-
- events=[]
- for s in stt:
- for e in s[1]:
- events.append( e[0] )
-
- for event in Set(events):
- fname, args = re.match('(.*?)[(](.*?)[)]',event).groups()
- if len(args)>0:
- write( 'void T%sFSM::T%sStateBase::%s( T%sFSM* /*a%sFSM*/, M%s& /*a%s*/,%s )' % (fsmName,fsmName,fname,fsmName,fsmName,actionsIfaceName,actionsIfaceName,args))
- else:
- write( 'void T%sFSM::T%sStateBase::%s( T%sFSM* /*a%sFSM*/, M%s& /*a%s*/ )' % (fsmName,fsmName,fname,fsmName,fsmName,actionsIfaceName,actionsIfaceName))
- write( ' {' )
- write( ' TRACE( _L("T%sStateBase::%s") );' % (fsmName,event))
- write( ' }' )
- write( '' )
-
- for event in Set(events):
- fname, args = re.match('(.*?)[(](.*?)[)]',event).groups()
- write( 'void T%sFSM::%s(%s)' % (fsmName,fname,args) )
- write( ' {' )
- arglist=args.split(',')
- argnames = string.join([arg.split()[-1:][0] for arg in arglist if arg!=""], ', ')
- if len(argnames)>0:
- write( ' iCurrentState->%s( this, i%s, %s );' % (fname,actionsIfaceName,argnames) )
- else:
- write( ' iCurrentState->%s( this, i%s );' % (fname,actionsIfaceName) )
- write( ' }' )
- write( '' )
-
- write( 'void T%sFSM::SetState( T%sStateBase* aNewState )' % (fsmName,fsmName) )
- write( ' {' )
- write( ' iCurrentState = aNewState;' )
- write( ' }' )
- write( '' )
-
- for s in stt:
- stateName, events = s
- for event in events:
- eventName = event[0]
- destState = event[1]
- actions = event[2]
- fname, args = re.match('(.*?)[(](.*?)[)]',eventName).groups()
- if len(actions)>0:
- if len(args)>0:
- write( 'void T%sFSM::T%s::%s( T%sFSM* a%sFSM, M%s& a%s,%s )' % (fsmName,stateName,fname,fsmName,fsmName,actionsIfaceName,actionsIfaceName,args) )
- else:
- write( 'void T%sFSM::T%s::%s( T%sFSM* a%sFSM, M%s& a%s )' % (fsmName,stateName,fname,fsmName,fsmName,actionsIfaceName,actionsIfaceName) )
- else:
- if len(args)>0:
- write( 'void T%sFSM::T%s::%s( T%sFSM* a%sFSM, M%s& /*a%s*/,%s )' % (fsmName,stateName,fname,fsmName,fsmName,actionsIfaceName,actionsIfaceName,args) )
- else:
- write( 'void T%sFSM::T%s::%s( T%sFSM* a%sFSM, M%s& /*a%s*/ )' % (fsmName,stateName,fname,fsmName,fsmName,actionsIfaceName,actionsIfaceName) )
-
- write( ' {' )
- write( ' TRACE( _L("T%s::%s") );' % (stateName, eventName) )
- write( ' a%sFSM->SetState( &a%sFSM->i%s );' % (fsmName,fsmName,destState) )
- for action in actions:
- fname, args = re.match('(.*?)[(](.*?)[)]',action).groups()
- if len(args)>0:
- arglist=args.split(',')
- argnames = string.join([arg.split()[-1:][0] for arg in arglist if arg!=""], ', ')
- write( ' a%s.%s( %s );' % (actionsIfaceName,fname,argnames) )
- else:
- write( ' a%s.%s();' % (actionsIfaceName,fname) )
- write( ' }' )
- write( '' )
-
- write( '// End of file' )
-
-
-def writeTraceHeader():
- if not os.path.isfile( '%sTrace.h' % (fsmName) ):
- global f
- fname = '%sTrace.h' % (fsmName)
- print "Generating %s..." % (fname)
- f = open( fname, 'w' )
- write( '#ifndef %sTRACE_H' % (fsmName.upper()) )
- write( '#define %sTRACE_H' % (fsmName.upper()) )
- write( '' )
- write( '// MACROS' )
- write( '#define TRACE' )
- write( '' )
- write( '#endif // %sTRACE_H' % (fsmName.upper()) )
- write( '' )
- write( '// End of file' )
- f.close()
-
-
-def writeActionsIface():
- global f
- fname = 'M%s.h' % (actionsIfaceName)
- print "Generating %s..." % (fname)
- f = open( fname, 'w' )
-
- write( '#ifndef M%s_H' % (actionsIfaceName.upper()) )
- write( '#define M%s_H' % (actionsIfaceName.upper()) )
- write( '' )
- write( '// EXTERNAL INCLUDES' )
- write( '#include <e32def.h>' )
- write( '' )
- write( '// CLASS DEFINITION' )
- write( '/**' )
- write( ' * M%s actions.' % (actionsIfaceName) )
- write( ' * Note: This file has been generated automatically. Do not edit!' )
- write( ' */' )
- write( 'class M%s' % (actionsIfaceName) )
- write( ' {' )
- write( ' public: // Abstract methods' )
-
- actions=[]
- for s in stt:
- for e in s[1]:
- actions.extend( e[2] )
- for action in Set(actions):
- write( ' virtual void %s = 0;' % (action))
- write( ' };' )
- write( '' )
- write( '#endif // M%s_H' % (actionsIfaceName.upper()) )
- write( '' )
- write( '// End of file' )
- f.close()
-
-if __name__ == "__main__":
- writeHeader()
- writeSource()
- writeTraceHeader()
- writeActionsIface()
--- a/idlefw/plugins/shortcutplugin/src/MPopupFSMActions.h Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,43 +0,0 @@
-/*
-* 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:
-*
-*/
-#ifndef MPOPUPFSMACTIONS_H
-#define MPOPUPFSMACTIONS_H
-
-// EXTERNAL INCLUDES
-#include <e32def.h>
-
-// CLASS DEFINITION
-/**
- * MPopupFSMActions actions.
- * Note: This file has been generated automatically. Do not edit!
- */
-class MPopupFSMActions
- {
- public: // Abstract methods
- virtual void StartLongTimer() = 0;
- virtual void IssueCleanPopup() = 0;
- virtual void IssuePublishPopup() = 0;
- virtual void IssuePublishCaption() = 0;
- virtual void IssueCleanCaption() = 0;
- virtual void StartShortTimer() = 0;
- virtual void CompleteSelf() = 0;
- virtual void CancelRequest() = 0;
- };
-
-#endif // MPOPUPFSMACTIONS_H
-
-// End of file
--- a/idlefw/plugins/shortcutplugin/src/PopupFSM.cpp Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,306 +0,0 @@
-/*
-* 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:
-*
-*/
-#include "PopupFSM.h"
-#include "MPopupFSMActions.h"
-#include "PopupTrace.h"
-
-#pragma warning( disable:4100 )
-#pragma warning( disable:4068 )
-#pragma warn_unusedarg off
-
-TPopupFSM::TPopupFSM( MPopupFSMActions& aPopupFSMActions ) :
- iCurrentState( &iNotSetOffFocus ),
- iPopupFSMActions( aPopupFSMActions )
- {
- }
-
-void TPopupFSM::TPopupStateBase::HandleForeground( TPopupFSM* /*aPopupFSM*/, MPopupFSMActions& /*aPopupFSMActions*/ )
- {
- TRACE( _L("TPopupStateBase::HandleForeground()") );
- }
-
-void TPopupFSM::TPopupStateBase::HandleUpdate( TPopupFSM* /*aPopupFSM*/, MPopupFSMActions& /*aPopupFSMActions*/ )
- {
- TRACE( _L("TPopupStateBase::HandleUpdate()") );
- }
-
-void TPopupFSM::TPopupStateBase::HandleRequestCompleted( TPopupFSM* /*aPopupFSM*/, MPopupFSMActions& /*aPopupFSMActions*/ )
- {
- TRACE( _L("TPopupStateBase::HandleRequestCompleted()") );
- }
-
-void TPopupFSM::TPopupStateBase::HandleReset( TPopupFSM* /*aPopupFSM*/, MPopupFSMActions& /*aPopupFSMActions*/ )
- {
- TRACE( _L("TPopupStateBase::HandleReset()") );
- }
-
-void TPopupFSM::TPopupStateBase::HandleBackground( TPopupFSM* /*aPopupFSM*/, MPopupFSMActions& /*aPopupFSMActions*/ )
- {
- TRACE( _L("TPopupStateBase::HandleBackground()") );
- }
-
-void TPopupFSM::TPopupStateBase::HandleGotFocus( TPopupFSM* /*aPopupFSM*/, MPopupFSMActions& /*aPopupFSMActions*/ )
- {
- TRACE( _L("TPopupStateBase::HandleGotFocus()") );
- }
-
-void TPopupFSM::TPopupStateBase::HandleLostFocus( TPopupFSM* /*aPopupFSM*/, MPopupFSMActions& /*aPopupFSMActions*/ )
- {
- TRACE( _L("TPopupStateBase::HandleLostFocus()") );
- }
-
-void TPopupFSM::HandleForeground()
- {
- iCurrentState->HandleForeground( this, iPopupFSMActions );
- }
-
-void TPopupFSM::HandleUpdate()
- {
- iCurrentState->HandleUpdate( this, iPopupFSMActions );
- }
-
-void TPopupFSM::HandleRequestCompleted()
- {
- iCurrentState->HandleRequestCompleted( this, iPopupFSMActions );
- }
-
-void TPopupFSM::HandleReset()
- {
- iCurrentState->HandleReset( this, iPopupFSMActions );
- }
-
-void TPopupFSM::HandleBackground()
- {
- iCurrentState->HandleBackground( this, iPopupFSMActions );
- }
-
-void TPopupFSM::HandleGotFocus()
- {
- iCurrentState->HandleGotFocus( this, iPopupFSMActions );
- }
-
-void TPopupFSM::HandleLostFocus()
- {
- iCurrentState->HandleLostFocus( this, iPopupFSMActions );
- }
-
-void TPopupFSM::SetState( TPopupStateBase* aNewState )
- {
- iCurrentState = aNewState;
- }
-
-void TPopupFSM::TNotSetOffFocus::HandleUpdate( TPopupFSM* aPopupFSM, MPopupFSMActions& aPopupFSMActions )
- {
- TRACE( _L("TNotSetOffFocus::HandleUpdate()") );
- aPopupFSM->SetState( &aPopupFSM->iSetOffFocus );
- aPopupFSMActions.IssueCleanCaption();
- }
-
-void TPopupFSM::TNotSetOffFocus::HandleGotFocus( TPopupFSM* aPopupFSM, MPopupFSMActions& /*aPopupFSMActions*/ )
- {
- TRACE( _L("TNotSetOffFocus::HandleGotFocus()") );
- aPopupFSM->SetState( &aPopupFSM->iNotSetOnFocus );
- }
-
-void TPopupFSM::TNotSetOffFocus::HandleForeground( TPopupFSM* aPopupFSM, MPopupFSMActions& aPopupFSMActions )
- {
- TRACE( _L("TNotSetOffFocus::HandleForeground()") );
- aPopupFSM->SetState( &aPopupFSM->iNotSetOffFocus );
- aPopupFSMActions.IssuePublishCaption();
- }
-
-void TPopupFSM::TSetOffFocus::HandleGotFocus( TPopupFSM* aPopupFSM, MPopupFSMActions& aPopupFSMActions )
- {
- TRACE( _L("TSetOffFocus::HandleGotFocus()") );
- aPopupFSM->SetState( &aPopupFSM->iGettingFocus );
- aPopupFSMActions.StartShortTimer();
- }
-
-void TPopupFSM::TSetOffFocus::HandleReset( TPopupFSM* aPopupFSM, MPopupFSMActions& aPopupFSMActions )
- {
- TRACE( _L("TSetOffFocus::HandleReset()") );
- aPopupFSM->SetState( &aPopupFSM->iNotSetOffFocus );
- aPopupFSMActions.IssuePublishCaption();
- }
-
-void TPopupFSM::TGettingFocus::HandleRequestCompleted( TPopupFSM* aPopupFSM, MPopupFSMActions& aPopupFSMActions )
- {
- TRACE( _L("TGettingFocus::HandleRequestCompleted()") );
- aPopupFSM->SetState( &aPopupFSM->iVisible );
- aPopupFSMActions.IssuePublishPopup();
- aPopupFSMActions.StartLongTimer();
- }
-
-void TPopupFSM::TGettingFocus::HandleReset( TPopupFSM* aPopupFSM, MPopupFSMActions& aPopupFSMActions )
- {
- TRACE( _L("TGettingFocus::HandleReset()") );
- aPopupFSM->SetState( &aPopupFSM->iNotSetOnFocus );
- aPopupFSMActions.IssuePublishCaption();
- aPopupFSMActions.CancelRequest();
- }
-
-void TPopupFSM::TGettingFocus::HandleLostFocus( TPopupFSM* aPopupFSM, MPopupFSMActions& aPopupFSMActions )
- {
- TRACE( _L("TGettingFocus::HandleLostFocus()") );
- aPopupFSM->SetState( &aPopupFSM->iSetOffFocus );
- aPopupFSMActions.CancelRequest();
- }
-
-void TPopupFSM::TLosingFocus::HandleRequestCompleted( TPopupFSM* aPopupFSM, MPopupFSMActions& aPopupFSMActions )
- {
- TRACE( _L("TLosingFocus::HandleRequestCompleted()") );
- aPopupFSM->SetState( &aPopupFSM->iSetOffFocus );
- aPopupFSMActions.IssueCleanPopup();
- }
-
-void TPopupFSM::TLosingFocus::HandleReset( TPopupFSM* aPopupFSM, MPopupFSMActions& aPopupFSMActions )
- {
- TRACE( _L("TLosingFocus::HandleReset()") );
- aPopupFSM->SetState( &aPopupFSM->iNotSetOffFocus );
- aPopupFSMActions.IssuePublishCaption();
- aPopupFSMActions.CancelRequest();
- }
-
-void TPopupFSM::TLosingFocus::HandleGotFocus( TPopupFSM* aPopupFSM, MPopupFSMActions& aPopupFSMActions )
- {
- TRACE( _L("TLosingFocus::HandleGotFocus()") );
- aPopupFSM->SetState( &aPopupFSM->iVisible );
- aPopupFSMActions.CancelRequest();
- aPopupFSMActions.StartLongTimer();
- }
-
-void TPopupFSM::TNotSetOnFocus::HandleUpdate( TPopupFSM* aPopupFSM, MPopupFSMActions& aPopupFSMActions )
- {
- TRACE( _L("TNotSetOnFocus::HandleUpdate()") );
- aPopupFSM->SetState( &aPopupFSM->iVisible );
- aPopupFSMActions.IssueCleanCaption();
- aPopupFSMActions.IssuePublishPopup();
- aPopupFSMActions.StartLongTimer();
- }
-
-void TPopupFSM::TNotSetOnFocus::HandleLostFocus( TPopupFSM* aPopupFSM, MPopupFSMActions& /*aPopupFSMActions*/ )
- {
- TRACE( _L("TNotSetOnFocus::HandleLostFocus()") );
- aPopupFSM->SetState( &aPopupFSM->iNotSetOffFocus );
- }
-
-void TPopupFSM::TNotSetOnFocus::HandleBackground( TPopupFSM* aPopupFSM, MPopupFSMActions& /*aPopupFSMActions*/ )
- {
- TRACE( _L("TNotSetOnFocus::HandleBackground()") );
- aPopupFSM->SetState( &aPopupFSM->iBackgroundNotSetOnFocus );
- }
-
-void TPopupFSM::TNotSetOnFocus::HandleForeground( TPopupFSM* aPopupFSM, MPopupFSMActions& aPopupFSMActions )
- {
- TRACE( _L("TNotSetOnFocus::HandleForeground()") );
- aPopupFSM->SetState( &aPopupFSM->iNotSetOnFocus );
- aPopupFSMActions.IssuePublishCaption();
- }
-
-void TPopupFSM::TVisible::HandleUpdate( TPopupFSM* aPopupFSM, MPopupFSMActions& aPopupFSMActions )
- {
- TRACE( _L("TVisible::HandleUpdate()") );
- aPopupFSM->SetState( &aPopupFSM->iVisible );
- aPopupFSMActions.IssueCleanCaption();
- aPopupFSMActions.IssuePublishPopup();
- aPopupFSMActions.StartLongTimer();
- }
-
-void TPopupFSM::TVisible::HandleReset( TPopupFSM* aPopupFSM, MPopupFSMActions& aPopupFSMActions )
- {
- TRACE( _L("TVisible::HandleReset()") );
- aPopupFSM->SetState( &aPopupFSM->iNotSetOnFocus );
- aPopupFSMActions.IssuePublishCaption();
- aPopupFSMActions.IssueCleanPopup();
- aPopupFSMActions.CancelRequest();
- }
-
-void TPopupFSM::TVisible::HandleLostFocus( TPopupFSM* aPopupFSM, MPopupFSMActions& aPopupFSMActions )
- {
- TRACE( _L("TVisible::HandleLostFocus()") );
- aPopupFSM->SetState( &aPopupFSM->iLosingFocus );
- aPopupFSMActions.CancelRequest();
- aPopupFSMActions.CompleteSelf();
- }
-
-void TPopupFSM::TVisible::HandleRequestCompleted( TPopupFSM* aPopupFSM, MPopupFSMActions& aPopupFSMActions )
- {
- TRACE( _L("TVisible::HandleRequestCompleted()") );
- aPopupFSM->SetState( &aPopupFSM->iNotVisible );
- aPopupFSMActions.IssueCleanPopup();
- }
-
-void TPopupFSM::TVisible::HandleBackground( TPopupFSM* aPopupFSM, MPopupFSMActions& aPopupFSMActions )
- {
- TRACE( _L("TVisible::HandleBackground()") );
- aPopupFSM->SetState( &aPopupFSM->iBackgroundSetOnFocus );
- aPopupFSMActions.CancelRequest();
- aPopupFSMActions.IssueCleanPopup();
- }
-
-void TPopupFSM::TNotVisible::HandleUpdate( TPopupFSM* aPopupFSM, MPopupFSMActions& aPopupFSMActions )
- {
- TRACE( _L("TNotVisible::HandleUpdate()") );
- aPopupFSM->SetState( &aPopupFSM->iVisible );
- aPopupFSMActions.IssueCleanCaption();
- aPopupFSMActions.IssuePublishPopup();
- aPopupFSMActions.StartLongTimer();
- }
-
-void TPopupFSM::TNotVisible::HandleReset( TPopupFSM* aPopupFSM, MPopupFSMActions& aPopupFSMActions )
- {
- TRACE( _L("TNotVisible::HandleReset()") );
- aPopupFSM->SetState( &aPopupFSM->iNotSetOnFocus );
- aPopupFSMActions.IssuePublishCaption();
- }
-
-void TPopupFSM::TNotVisible::HandleLostFocus( TPopupFSM* aPopupFSM, MPopupFSMActions& /*aPopupFSMActions*/ )
- {
- TRACE( _L("TNotVisible::HandleLostFocus()") );
- aPopupFSM->SetState( &aPopupFSM->iSetOffFocus );
- }
-
-void TPopupFSM::TBackgroundNotSetOnFocus::HandleForeground( TPopupFSM* aPopupFSM, MPopupFSMActions& aPopupFSMActions )
- {
- TRACE( _L("TBackgroundNotSetOnFocus::HandleForeground()") );
- aPopupFSM->SetState( &aPopupFSM->iNotSetOnFocus );
- aPopupFSMActions.IssuePublishCaption();
- }
-
-void TPopupFSM::TBackgroundNotSetOnFocus::HandleUpdate( TPopupFSM* aPopupFSM, MPopupFSMActions& aPopupFSMActions )
- {
- TRACE( _L("TBackgroundNotSetOnFocus::HandleUpdate()") );
- aPopupFSM->SetState( &aPopupFSM->iBackgroundSetOnFocus );
- aPopupFSMActions.IssueCleanCaption();
- }
-
-void TPopupFSM::TBackgroundSetOnFocus::HandleReset( TPopupFSM* aPopupFSM, MPopupFSMActions& aPopupFSMActions )
- {
- TRACE( _L("TBackgroundSetOnFocus::HandleReset()") );
- aPopupFSM->SetState( &aPopupFSM->iBackgroundNotSetOnFocus );
- aPopupFSMActions.IssuePublishCaption();
- }
-
-void TPopupFSM::TBackgroundSetOnFocus::HandleForeground( TPopupFSM* aPopupFSM, MPopupFSMActions& aPopupFSMActions )
- {
- TRACE( _L("TBackgroundSetOnFocus::HandleForeground()") );
- aPopupFSM->SetState( &aPopupFSM->iVisible );
- aPopupFSMActions.IssuePublishPopup();
- aPopupFSMActions.StartLongTimer();
- }
-
-// End of file
--- a/idlefw/plugins/shortcutplugin/src/PopupFSM.h Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,192 +0,0 @@
-/*
-* 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:
-*
-*/
-#ifndef POPUPFSM_H
-#define POPUPFSM_H
-
-// EXTERNAL INCLUDES
-#include <e32base.h>
-
-// FORWARD DECLARATIONS
-class TPopupFSM;
-class MPopupFSMActions;
-
-// CLASS DEFINITIONS
-/**
- * Popup state machine
- */
-class TPopupFSM
- {
- /**
- * Base class for states
- */
- class TPopupStateBase
- {
- public: // New methods
- virtual void HandleForeground( TPopupFSM* aPopupFSM, MPopupFSMActions& aPopupFSMActions );
- virtual void HandleUpdate( TPopupFSM* aPopupFSM, MPopupFSMActions& aPopupFSMActions );
- virtual void HandleRequestCompleted( TPopupFSM* aPopupFSM, MPopupFSMActions& aPopupFSMActions );
- virtual void HandleReset( TPopupFSM* aPopupFSM, MPopupFSMActions& aPopupFSMActions );
- virtual void HandleBackground( TPopupFSM* aPopupFSM, MPopupFSMActions& aPopupFSMActions );
- virtual void HandleGotFocus( TPopupFSM* aPopupFSM, MPopupFSMActions& aPopupFSMActions );
- virtual void HandleLostFocus( TPopupFSM* aPopupFSM, MPopupFSMActions& aPopupFSMActions );
- };
-
- /**
- * State class TNotSetOffFocus
- */
- class TNotSetOffFocus : public TPopupStateBase
- {
- protected: // Methods derived from TPopupState
- void HandleUpdate( TPopupFSM* aPopupFSM, MPopupFSMActions& aPopupFSMActions );
- void HandleGotFocus( TPopupFSM* aPopupFSM, MPopupFSMActions& aPopupFSMActions );
- void HandleForeground( TPopupFSM* aPopupFSM, MPopupFSMActions& aPopupFSMActions );
- };
-
- /**
- * State class TSetOffFocus
- */
- class TSetOffFocus : public TPopupStateBase
- {
- protected: // Methods derived from TPopupState
- void HandleGotFocus( TPopupFSM* aPopupFSM, MPopupFSMActions& aPopupFSMActions );
- void HandleReset( TPopupFSM* aPopupFSM, MPopupFSMActions& aPopupFSMActions );
- };
-
- /**
- * State class TGettingFocus
- */
- class TGettingFocus : public TPopupStateBase
- {
- protected: // Methods derived from TPopupState
- void HandleRequestCompleted( TPopupFSM* aPopupFSM, MPopupFSMActions& aPopupFSMActions );
- void HandleReset( TPopupFSM* aPopupFSM, MPopupFSMActions& aPopupFSMActions );
- void HandleLostFocus( TPopupFSM* aPopupFSM, MPopupFSMActions& aPopupFSMActions );
- };
-
- /**
- * State class TLosingFocus
- */
- class TLosingFocus : public TPopupStateBase
- {
- protected: // Methods derived from TPopupState
- void HandleRequestCompleted( TPopupFSM* aPopupFSM, MPopupFSMActions& aPopupFSMActions );
- void HandleReset( TPopupFSM* aPopupFSM, MPopupFSMActions& aPopupFSMActions );
- void HandleGotFocus( TPopupFSM* aPopupFSM, MPopupFSMActions& aPopupFSMActions );
- };
-
- /**
- * State class TNotSetOnFocus
- */
- class TNotSetOnFocus : public TPopupStateBase
- {
- protected: // Methods derived from TPopupState
- void HandleUpdate( TPopupFSM* aPopupFSM, MPopupFSMActions& aPopupFSMActions );
- void HandleLostFocus( TPopupFSM* aPopupFSM, MPopupFSMActions& aPopupFSMActions );
- void HandleBackground( TPopupFSM* aPopupFSM, MPopupFSMActions& aPopupFSMActions );
- void HandleForeground( TPopupFSM* aPopupFSM, MPopupFSMActions& aPopupFSMActions );
- };
-
- /**
- * State class TVisible
- */
- class TVisible : public TPopupStateBase
- {
- protected: // Methods derived from TPopupState
- void HandleUpdate( TPopupFSM* aPopupFSM, MPopupFSMActions& aPopupFSMActions );
- void HandleReset( TPopupFSM* aPopupFSM, MPopupFSMActions& aPopupFSMActions );
- void HandleLostFocus( TPopupFSM* aPopupFSM, MPopupFSMActions& aPopupFSMActions );
- void HandleRequestCompleted( TPopupFSM* aPopupFSM, MPopupFSMActions& aPopupFSMActions );
- void HandleBackground( TPopupFSM* aPopupFSM, MPopupFSMActions& aPopupFSMActions );
- };
-
- /**
- * State class TNotVisible
- */
- class TNotVisible : public TPopupStateBase
- {
- protected: // Methods derived from TPopupState
- void HandleUpdate( TPopupFSM* aPopupFSM, MPopupFSMActions& aPopupFSMActions );
- void HandleReset( TPopupFSM* aPopupFSM, MPopupFSMActions& aPopupFSMActions );
- void HandleLostFocus( TPopupFSM* aPopupFSM, MPopupFSMActions& aPopupFSMActions );
- };
-
- /**
- * State class TBackgroundNotSetOnFocus
- */
- class TBackgroundNotSetOnFocus : public TPopupStateBase
- {
- protected: // Methods derived from TPopupState
- void HandleForeground( TPopupFSM* aPopupFSM, MPopupFSMActions& aPopupFSMActions );
- void HandleUpdate( TPopupFSM* aPopupFSM, MPopupFSMActions& aPopupFSMActions );
- };
-
- /**
- * State class TBackgroundSetOnFocus
- */
- class TBackgroundSetOnFocus : public TPopupStateBase
- {
- protected: // Methods derived from TPopupState
- void HandleReset( TPopupFSM* aPopupFSM, MPopupFSMActions& aPopupFSMActions );
- void HandleForeground( TPopupFSM* aPopupFSM, MPopupFSMActions& aPopupFSMActions );
- };
-
-
- public: // Constructors
- TPopupFSM( MPopupFSMActions& aPopupFSMActions );
-
- public: // New methods
- void HandleForeground();
- void HandleUpdate();
- void HandleRequestCompleted();
- void HandleReset();
- void HandleBackground();
- void HandleGotFocus();
- void HandleLostFocus();
-
- private: // New methods
- void SetState( TPopupStateBase* aNewState );
-
- private: // Data
- //Ref:
- TPopupStateBase* iCurrentState;
- MPopupFSMActions& iPopupFSMActions;
-
- //Own:
- TNotSetOffFocus iNotSetOffFocus;
- TSetOffFocus iSetOffFocus;
- TGettingFocus iGettingFocus;
- TLosingFocus iLosingFocus;
- TNotSetOnFocus iNotSetOnFocus;
- TVisible iVisible;
- TNotVisible iNotVisible;
- TBackgroundNotSetOnFocus iBackgroundNotSetOnFocus;
- TBackgroundSetOnFocus iBackgroundSetOnFocus;
- private: // Friend class definitions
- friend class TNotSetOffFocus;
- friend class TSetOffFocus;
- friend class TGettingFocus;
- friend class TLosingFocus;
- friend class TNotSetOnFocus;
- friend class TVisible;
- friend class TNotVisible;
- friend class TBackgroundNotSetOnFocus;
- friend class TBackgroundSetOnFocus;
- };
-
-#endif // POPUPFSM_H
-
-// End of file
--- a/idlefw/plugins/shortcutplugin/src/PopupTrace.h Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,25 +0,0 @@
-/*
-* 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:
-*
-*/
-#ifndef POPUPTRACE_H
-#define POPUPTRACE_H
-
-// MACROS
-#define TRACE
-
-#endif // POPUPTRACE_H
-
-// End of file
--- a/idlefw/plugins/shortcutplugin/src/aidefaultshortcut.cpp Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,180 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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: Platform default shortcuts.
-*
-*/
-
-
-#include "aidefaultshortcut.h"
-#include "taiscutparser.h"
-#include <centralrepository.h>
-#include <activeidle2domaincrkeys.h>
-#include <e32base.h>
-#include <libc/stddef.h> // For wchar_t
-
-namespace {
-
- struct TDefaultShortcut
- {
- /**
- * Identifier
- */
- TInt id;
-
- /**
- * Key to identify this shortcut
- */
- TInt key;
-
- /**
- * Definition for this shortcut
- */
- const wchar_t* definition;
- };
-
- enum TDefaultShortcutCenrepId
- {
- EDefaultShortcutFirst = 0,
- EDefaultShortcutSecond,
- EDefaultShortcutThird,
- EDefaultShortcutFourth,
- EDefaultShortcutFifth,
- EDefaultShortcutSixth,
- EDefaultShortcutSeventh,
- EDefaultShortcutEighth,
- EDefaultShortcutNaviLeft,
- EDefaultShortcutNaviRight,
- EDefaultShortcutNaviUp,
- EDefaultShortcutNaviDown,
- EDefaultShortcutNaviKey,
- EDefaultShortcutLSK,
- EDefaultShortcutRSK
- };
-
- // Platform default shortcuts.
- const TDefaultShortcut KDefaultShortcuts[] =
- {
- { EDefaultShortcutFirst, 0x00000001, L"localapp:0x101F4CCE" }, // Phonebook,
- { EDefaultShortcutSecond, 0x00000002, L"localapp:0x100058C5" }, // Messaging,
- { EDefaultShortcutThird, 0x00000003, L"localapp:0x10008D39" }, // Browser,
- { EDefaultShortcutFourth, 0x00000004, L"localapp:0x200009EE" }, // Photos,
- { EDefaultShortcutFifth, 0x00000005, L"localapp:0x10005901" }, // Calendar,
- { EDefaultShortcutSixth, 0x00000006, L"localapp:msg?new=msg" }, // New message,
- { EDefaultShortcutSeventh, 0x00000007, L"localapp:0x102072C3" }, // Music Player,
- { EDefaultShortcutEighth, 0x00000008, L"localapp:0x10207A89" }, // Radio,
- { EDefaultShortcutNaviLeft, 0x01000000, L"localapp:0x100058C5?new=msg" }, // New message,
- { EDefaultShortcutNaviRight, 0x01000001, L"localapp:0x10005901" }, // Calendar,
- { EDefaultShortcutNaviUp, 0x01000002, L"localapp:0x101F4CCE" }, // Contacts,
- { EDefaultShortcutNaviDown, 0x01000003, L"localapp:0x101F4CCE" }, // Contacts,
- { EDefaultShortcutNaviKey, 0x01000004, L"localapp:0x100058C5" }, // Messagind,
- { EDefaultShortcutLSK, 0x01000100, L"localapp:0x101F4CD2" }, // Menu,
- { EDefaultShortcutRSK, 0x01000101, L"localapp:0x101F4CCE" } // Contacts,
- };
-
- const TInt KDefaultShortcutCount = (sizeof(KDefaultShortcuts)/sizeof(KDefaultShortcuts[0]));
-}
-
-inline TPtrC16 DefaultDefinition( const TDefaultShortcut& aShortcut )
- {
- return TPtrC16( (const TText16*) aShortcut.definition );
- }
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-void GetPlatformDefaultShortcut(TInt aIndex, TUid& aUid, TDes& aDefinition)
- {
- TInt err = KErrNone;
- TAiScutParser parser;
- if (aIndex < 0)
- {
- aIndex = 0;
- }
-
- aIndex = aIndex % ::KDefaultShortcutCount;
- aDefinition.Copy( ::DefaultDefinition(::KDefaultShortcuts[aIndex]) );
-
- err = parser.Parse( aDefinition );
- if ( err == KErrNone )
- {
- aUid = TAiScutParser::ParseUid( parser.Get( EScutDefTarget) );
- }
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-TInt ResolveCenrepIdFromKey( TInt aKey, TInt &aCenrepId )
- {
- TInt ret = KErrNotFound;
- for ( TInt i = 0; i < KDefaultShortcutCount; ++i )
- {
- if ( KDefaultShortcuts[i].key == aKey )
- {
- aCenrepId = KDefaultShortcuts[i].id;
- ret = KErrNone;
- break;
- }
- }
- return ret;
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-void TAiDefaultShortcut::GetDefaultShortcut(TInt aKey, TUid& aUid, TDes& aDefinition)
-{
- CRepository *cr = NULL;
- TInt err = KErrNone;
- TInt index = KErrNotFound;
- err = ::ResolveCenrepIdFromKey( aKey, index );
- TInt32 crIndex = KAIBackupShortcutDefinitionStart;
- if ( err == KErrNone )
- {
- TRAP( err, cr = CRepository::NewL( TUid::Uid( KCRUidActiveIdleLV ) ) );
-
- aUid.iUid = KErrNotFound;
- if ( err == KErrNone )
- {
- crIndex += index;
- err = cr->Get( crIndex, aDefinition );
- // In case of a null definition use the platform default
- if ( aDefinition.Length() <= 0 )
- {
- err = KErrNotFound;
- }
- else if ( err == KErrNone )
- {
- TAiScutParser parser;
- err = parser.Parse( aDefinition );
- if ( err == KErrNone )
- {
- aUid = TAiScutParser::ParseUid( parser.Get( EScutDefTarget) );
- }
- }
- }
- }
-
- // Ensure that some definition is returned
- // in case of any error occurrs
- if ( err != KErrNone )
- {
- ::GetPlatformDefaultShortcut( index, aUid, aDefinition );
- }
- delete cr;
-}
-
-// End of File.
--- a/idlefw/plugins/shortcutplugin/src/aiscutappuidparser.cpp Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,100 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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: Shortcut definition parser
-*
-*/
-
-
-#include "aiscutappuidparser.h"
-
-// ========================= MEMBER FUNCTIONS ================================
-
-// ---------------------------------------------------------------------------
-// TAiScutAppUidParser::TAiScutAppUidParser
-// ---------------------------------------------------------------------------
-//
-TAiScutAppUidParser::TAiScutAppUidParser(const TDesC& aData, RArray<TUid>& aUidArray)
- :
- iUidArray(aUidArray),
- iLex(aData),
- iLexIsValid(EFalse)
-{
-}
-
-// ---------------------------------------------------------------------------
-// TAiScutAppUidParser::SkipChar
-// ---------------------------------------------------------------------------
-//
-void TAiScutAppUidParser::SkipChar(TChar aChar, TBool aConditionalSkip)
-{
- iLex.SkipSpaceAndMark();
- if (iLex.Peek() == aChar)
- {
- iLex.Inc();
- }
- else
- {
- // If not conditional skip, then the input data is invalid
- if (!aConditionalSkip)
- {
- iLexIsValid = EFalse;
- }
- }
- iLex.SkipSpaceAndMark();
-}
-
-// ---------------------------------------------------------------------------
-// TAiScutAppUidParser::ReadAppUid
-// ---------------------------------------------------------------------------
-//
-TUid TAiScutAppUidParser::ReadAppUid()
-{
- TUint32 appUid;
-
- iLex.Mark();
- while (iLex.Peek().IsHexDigit())
- {
- iLex.Inc();
- }
- TPtrC uidToken = iLex.MarkedToken();
- TLex uidLex(uidToken);
- if (uidLex.Val(appUid, EHex) != KErrNone)
- {
- iLexIsValid = EFalse;
- }
-
- return TUid::Uid(appUid);
-}
-
-// ---------------------------------------------------------------------------
-// TAiScutAppUidParser::ParseL
-// ---------------------------------------------------------------------------
-//
-void TAiScutAppUidParser::ParseL()
-{
- iLexIsValid = ETrue;
-
- while (!iLex.Eos() && iLexIsValid)
- {
- SkipChar(',', ETrue);
- TUid applicationUid = ReadAppUid();
-
- if (iLexIsValid)
- {
- iUidArray.AppendL(TUid(applicationUid));
- }
- }
-}
-
-// End of File
--- a/idlefw/plugins/shortcutplugin/src/aiscutextserv.cpp Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,211 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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 Shortcut xSP Extension API
-*
-*/
-
-
-#include <e32base.h>
-#include <s32mem.h>
-#include <gulicon.h>
-#include <fbs.h>
-
-#include <aiscutextserv.h>
-#include <aiscutextdefs.h>
-
-// ======== LOCAL DEFINITIONS ========
-
-namespace
- {
- // LOCAL CONSTANTS
- /**
- * Default message slots
- */
- const TUint KDefaultMessageSlots = 4;
-
- /**
- * Marshalling buffer expand size
- */
- const TInt KBufExpandSize = 32;
-
- /**
- * Target string format that matches with aiscutplugin
- */
- _LIT( KTargetStringFormat, "localapp:0x%x" );
-
- // LOCAL TYPES
- typedef TBuf<19> TTargetString;
-
- // LOCAL FUNCTIONS
- /**
- * Panics server
- * @aReason Panic reason code
- */
- void Panic( TInt aReason )
- {
- User::Panic( KAiScutExtServerName, aReason );
- }
-
- /**
- * Generates target string from Uid3 of current process
- */
- TTargetString DefaultTargetString()
- {
- TUid uid3 = RProcess().Type()[ 2 ];
- TTargetString targetString;
- targetString.Format( KTargetStringFormat, uid3 );
- return targetString;
- }
- }
-
-// ======== MEMBER FUNCTIONS ========
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TInt RAiScutExtServ::Connect()
- {
- return Connect( DefaultTargetString() );
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TInt RAiScutExtServ::Connect( const TDesC& aTargetDefinition )
- {
- TInt err = CreateSession( KAiScutExtServerName, Version(),
- KDefaultMessageSlots );
- if( err == KErrNone )
- {
- TIpcArgs args( &aTargetDefinition );
- err = SendReceive( EAiScutExtServSetTargetDefinition, args );
- if( err != KErrNone )
- {
- Close();
- }
- }
- return err;
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TVersion RAiScutExtServ::Version() const
- {
- return( TVersion(
- KAiScutExtServMajorVersionNumber,
- KAiScutExtServMinorVersionNumber,
- KAiScutExtServBuildVersionNumber ) );
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TInt RAiScutExtServ::UpdatePopupTextL(
- const MDesCArray& aPopupTextLines )
- {
- TInt lineCount = aPopupTextLines.MdcaCount();
- __ASSERT_ALWAYS( lineCount <= KMaxPopupTextLines, Panic( KErrArgument ) );
- CBufBase* lineArrayBuf = CBufFlat::NewL( KBufExpandSize );
- CleanupStack::PushL( lineArrayBuf );
-
- RBufWriteStream stream( *lineArrayBuf );
-
- stream.WriteUint8L( lineCount );
- for( TInt i = 0; i < lineCount; i++ )
- {
- stream << aPopupTextLines.MdcaPoint( i );
- }
-
- TPtr8 lineArray = lineArrayBuf->Ptr( 0 );
-
- TIpcArgs args( &lineArray );
- TInt err = SendReceive( EAiScutExtServSetPopupText, args );
-
- CleanupStack::PopAndDestroy( lineArrayBuf );
- return err;
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TInt RAiScutExtServ::ResetPopupText()
- {
- return SendReceive( EAiScutExtServResetPopupText );
- }
-
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TInt RAiScutExtServ::UpdateIconL( const CGulIcon& aIcon )
- {
- CBufBase* marshallBuf = CBufFlat::NewL( KBufExpandSize );
- CleanupStack::PushL( marshallBuf );
-
- RBufWriteStream stream( *marshallBuf );
-
- aIcon.Bitmap()->ExternalizeL( stream );
- aIcon.Mask()->ExternalizeL( stream );
-
- TPtr8 marshalledData = marshallBuf->Ptr( 0 );
-
- TIpcArgs args( &marshalledData );
- TInt err = SendReceive( EAiScutExtServSetIcon, args );
-
- CleanupStack::PopAndDestroy( marshallBuf );
- return err;
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TInt RAiScutExtServ::ResetIcon()
- {
- return SendReceive( EAiScutExtServResetIcon );
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TInt RAiScutExtServ::IsInShortcuts( TBool& aIsInShortcuts ) const
- {
- TPtr8 isInShortcutsDes(
- reinterpret_cast< TUint8* >( &aIsInShortcuts ),
- sizeof( aIsInShortcuts ),
- sizeof( aIsInShortcuts ) );
-
- TIpcArgs args( &isInShortcutsDes );
-
- return SendReceive( EAiScutExtServIsInShortcuts, args );
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-EXPORT_C TInt RAiScutExtServ::IssuePutInShortcuts()
- {
- return SendReceive( EAiScutExtServIssuePutInShortcuts );
- }
-
-// End of File.
--- a/idlefw/plugins/shortcutplugin/src/aiscutfactory.cpp Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,52 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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: Shortcut plug-in factory class.
-*
-*/
-
-
-#include "aiscutfactory.h"
-#include "caiscutengine.h"
-#include "caiscutshortcut.h"
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-CAiScutEngine* AiScutFactory::CreateAiScutEngineL( CAiScutPlugin& aPlugin )
- {
- return CAiScutEngine::NewL( aPlugin );
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-CAiScutShortcut* AiScutFactory::CreateAiScutShortcutL( TInt aId,
- const TDesC& aTarget, CAiScutEngine& aEngine )
- {
- return CAiScutShortcut::NewL( aId, aTarget, aEngine );
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-CAiScutShortcut* AiScutFactory::CreateAiScutShortcutLC( TInt aId,
- const TDesC& aTarget, CAiScutEngine& aEngine )
- {
- return CAiScutShortcut::NewLC( aId, aTarget, aEngine );
- }
-
-// End of File.
--- a/idlefw/plugins/shortcutplugin/src/aiscutfactoryext.cpp Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,52 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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: Shortcut plug-in factory class.
-*
-*/
-
-
-#include "aiscutfactory.h"
-#include "caiscutengineext.h"
-#include "caiscutshortcutext.h"
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-CAiScutEngine* AiScutFactory::CreateAiScutEngineL( CAiScutPlugin& aPlugin )
- {
- return CAiScutEngineExt::NewL( aPlugin );
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-CAiScutShortcut* AiScutFactory::CreateAiScutShortcutL( TInt aId,
- const TDesC& aTarget, CAiScutEngine& aEngine )
- {
- return CAiScutShortcutExt::NewL( aId, aTarget, aEngine );
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-CAiScutShortcut* AiScutFactory::CreateAiScutShortcutLC( TInt aId,
- const TDesC& aTarget, CAiScutEngine& aEngine )
- {
- return CAiScutShortcutExt::NewLC( aId, aTarget, aEngine );
- }
-
-// End of File.
--- a/idlefw/plugins/shortcutplugin/src/aiscutplugin.rss Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,57 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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: ECOM plug-in resource file.
-*
-*/
-
-
-#include <ecom/registryinfov2.rh>
-
-#include <platform/mw/aiscutuids.hrh>
-
-// ---------------------------------------------------------------------------
-// registry_info
-//
-// ---------------------------------------------------------------------------
-//
-RESOURCE REGISTRY_INFO registry_info
-{
- resource_format_version = RESOURCE_FORMAT_VERSION_2;
-
- dll_uid = AI_UID_ECOM_DLL_CONTENTPUBLISHER_SCUTPLUGIN;
-
- // Interface info array.
- interfaces =
- {
- INTERFACE_INFO
- {
- // UID of the implemented interface.
- interface_uid = AI_UID_ECOM_INTERFACE_CONTENTPUBLISHER;
-
- implementations =
- {
- IMPLEMENTATION_INFO
- {
- implementation_uid = AI_UID_ECOM_IMPLEMENTATION_CONTENTPUBLISHER_SCUTPLUGIN;
- version_no = 1;
- display_name = "Shortcut Plug-in";
- default_data = "";
- opaque_data = "";
- }
- };
- }
- };
-}
-
-// End of File.
--- a/idlefw/plugins/shortcutplugin/src/aiscutpluginres.rss Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,84 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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: Resource definitions for Shortcut plug-in settings
-*
-*/
-
-
-#include <eikon.rh>
-#include <avkon.rsg>
-#include <avkon.rh>
-
-#include <ai3scutplugin.loc>
-
-NAME SCPL
-
-RESOURCE RSS_SIGNATURE { }
-
-RESOURCE TBUF { buf="SCPL"; }
-
-//----------------------------------------------------
-// EIK_APP_INFO
-// Contains application information.
-//----------------------------------------------------
-//
-RESOURCE EIK_APP_INFO
-{
-}
-
-// ----------------------------------------------------------------------------
-//
-// %U application can show additional information in Shortcut area..."
-//
-// ----------------------------------------------------------------------------
-//
-RESOURCE TBUF r_ai_sc_query_modify_gs
- {
- buf = qtn_ai_sc_query_modify_gs;
- }
-
-//----------------------------------------------------------
-// r_scut_xsptip_note
-//
-//----------------------------------------------------------
-//
-RESOURCE DIALOG r_scut_xsptip_note
-{
- flags = EGeneralQueryFlags | EEikDialogFlagNoBorder | EEikDialogFlagNoShadow;
- buttons = R_AVKON_SOFTKEYS_OK_EMPTY;
- items =
- {
- DLG_LINE
- {
- type = EAknCtPopupHeadingPane;
- id = EAknMessageQueryHeaderId;
- control = AVKON_HEADING
- {
- label = qtn_ai_sc_query_modify_header;
- headinglayout = R_AVKON_WML_SIGN_QUERY_HEADING_PANE;
- // headinglayout = R_AVKON_LIST_HEADING_PANE_POPUPS;
- };
- },
- DLG_LINE
- {
- type = EAknCtMessageQuery;
- id = EAknMessageQueryContentId;
- control = AVKON_MESSAGE_QUERY
- {
- };
- }
- };
-}
-
-// End of File.
--- a/idlefw/plugins/shortcutplugin/src/aiscutrepositorywatcher.cpp Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,139 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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: Shortcut definition parser
-*
-*/
-
-
-#include "aiscutrepositorywatcher.h"
-#include <centralrepository.h> // For CRepository
-
-
-
-CAiScutRepositoryWatcher* CAiScutRepositoryWatcher::NewL(
- const TUid aUid,
- const TUint32 aKey,
- CCenRepNotifyHandler::TCenRepKeyType aKeyType,
- TCallBack aCallBack,
- CRepository* aRepository)
-{
- CAiScutRepositoryWatcher* self =
- new (ELeave) CAiScutRepositoryWatcher(aUid, aKey, aCallBack, aRepository);
-
- CleanupStack::PushL(self);
- self->ConstructL(aKeyType);
- CleanupStack::Pop(self);
-
- return self;
-}
-
-CAiScutRepositoryWatcher* CAiScutRepositoryWatcher::NewL(
- const TUid aUid,
- TCallBack aCallBack,
- CRepository* aRepository)
-{
- CAiScutRepositoryWatcher* self =
- new (ELeave) CAiScutRepositoryWatcher(
- aUid,
- NCentralRepositoryConstants::KInvalidNotificationId,
- aCallBack,
- aRepository);
-
- CleanupStack::PushL(self);
- self->ConstructL();
- CleanupStack::Pop(self);
-
- return self;
-}
-
-CAiScutRepositoryWatcher::~CAiScutRepositoryWatcher()
-{
- if (iNotifyHandler)
- {
- iNotifyHandler->StopListening();
- delete iNotifyHandler;
- }
-}
-
-CAiScutRepositoryWatcher::CAiScutRepositoryWatcher(
- const TUid aUid,
- const TUint32 aKey,
- TCallBack aCallBack,
- CRepository* aRepository)
-:
-iUid(aUid), iKey(aKey), iCallBack(aCallBack), iRepository(aRepository)
-{
-}
-
-void CAiScutRepositoryWatcher::ConstructL(
- CCenRepNotifyHandler::TCenRepKeyType aKeyType)
-{
- iNotifyHandler = CCenRepNotifyHandler::NewL(
- *this, *iRepository, aKeyType, iKey);
-}
-
-void CAiScutRepositoryWatcher::ConstructL()
-{
- iNotifyHandler = CCenRepNotifyHandler::NewL(*this, *iRepository);
-}
-
-void CAiScutRepositoryWatcher::StartListeningL()
-{
- if (iNotifyHandler)
- {
- iNotifyHandler->StartListeningL();
- }
-}
-
-void CAiScutRepositoryWatcher::StopListening()
-{
- if (iNotifyHandler)
- {
- iNotifyHandler->StopListening();
- }
-}
-
-TUint32 CAiScutRepositoryWatcher::ChangedKey()
-{
- return iChangedKey;
-}
-
-void CAiScutRepositoryWatcher::HandleNotifyInt(TUint32 aKey, TInt /*aNewValue*/)
-{
- iChangedKey = aKey;
- iCallBack.CallBack();
- iChangedKey = NCentralRepositoryConstants::KInvalidNotificationId;
-}
-
-void CAiScutRepositoryWatcher::HandleNotifyString(
- TUint32 aKey, const TDesC16& /*aNewValue*/)
-{
- iChangedKey = aKey;
- iCallBack.CallBack();
- iChangedKey = NCentralRepositoryConstants::KInvalidNotificationId;
-}
-
-void CAiScutRepositoryWatcher::HandleNotifyGeneric(TUint32 aKey)
-{
- iChangedKey = aKey;
- iCallBack.CallBack();
- iChangedKey = NCentralRepositoryConstants::KInvalidNotificationId;
-}
-
-void CAiScutRepositoryWatcher::HandleNotifyError(
- TUint32 /*aKey*/, TInt /*aError*/, CCenRepNotifyHandler* /*aHandler*/)
-{
-}
-
-// End of File
--- a/idlefw/plugins/shortcutplugin/src/aiscutsettings.rss Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,57 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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: ECOM plug-in resource file
-*
-*/
-
-
-#include <ecom/registryinfov2.rh>
-
-#include <platform/mw/aiscutuids.hrh>
-
-// ---------------------------------------------------------------------------
-// registry_info
-//
-// ---------------------------------------------------------------------------
-//
-RESOURCE REGISTRY_INFO registry_info
-{
- resource_format_version = RESOURCE_FORMAT_VERSION_2;
-
- dll_uid = AI_UID_ECOM_DLL_SETTINGS_SCUTPLUGIN;
-
- // Interface info array.
- interfaces =
- {
- INTERFACE_INFO
- {
- // UID of the implemented interface.
- interface_uid = 0x10207236;
-
- implementations =
- {
- IMPLEMENTATION_INFO
- {
- implementation_uid = AI_UID_ECOM_IMPLEMENTATION_SETTINGS_SCUTPLUGIN;
- version_no = 1;
- display_name = "Shortcuts";
- default_data = "0x1020723B"; // Parent UID (PrslnPlugin)
- opaque_data = "-1"; // Order number
- }
- };
- }
- };
-}
-
-// End of File.
--- a/idlefw/plugins/shortcutplugin/src/aiscutsettingsres.rss Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,443 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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: Resource definitions for Shortcut plug-in settings
-*
-*/
-
-
-#include <eikon.rh>
-#include <avkon.rsg>
-#include <avkon.rh>
-#include <avkon.mbg>
-#include <eikcore.rsg>
-#include <eikon.rsg>
-#include <appinfo.rh>
-#include <avkon.loc>
-#include <data_caging_paths_strings.hrh>
-#include <gscommon.rh>
-#include <gs.loc>
-
-#include <ai3scutsettings.loc>
-
-#include "aiscutsettings.hrh"
-
-
-NAME SCSE
-
-RESOURCE RSS_SIGNATURE { }
-
-RESOURCE TBUF { buf="SCSE"; }
-
-//----------------------------------------------------
-// EIK_APP_INFO
-// Contains application information.
-//----------------------------------------------------
-//
-RESOURCE EIK_APP_INFO
-{
-}
-
-//----------------------------------------------------
-// r_scutsettings_menubar
-//
-//----------------------------------------------------
-//
-RESOURCE MENU_BAR r_scutsettings_menubar
-{
- titles =
- {
- MENU_TITLE { menu_pane = r_scutsettings_menupane; }
- };
-}
-
-//----------------------------------------------------
-// r_scutsettings_menupane
-// Options menu.
-//----------------------------------------------------
-//
-RESOURCE MENU_PANE r_scutsettings_menupane
-{
- items =
- {
- MENU_ITEM
- {
- command = EAiScutSettingsCmdChange;
- txt = qtn_options_change;
- }
-
-#ifdef __SERIES60_HELP
- ,
- MENU_ITEM
- {
- command = EAknCmdHelp;
- txt = qtn_options_help;
- }
-#endif // __SERIES60_HELP
- ,
- MENU_ITEM
- {
- command = EAknCmdExit;
- txt = qtn_options_exit;
- }
- };
-}
-
-//----------------------------------------------------
-// r_scut_settings_view
-// Settings views.
-//----------------------------------------------------
-//
-RESOURCE AVKON_VIEW r_scut_settings_view
-{
- menubar = r_scutsettings_menubar;
- //cba = R_AVKON_SOFTKEYS_OPTIONS_BACK;
- cba = r_scut_softkeys_options_back_change;
-}
-
-//----------------------------------------------------
-// r_setting_listbox
-// Common listbox editor resource for setting pages.
-//----------------------------------------------------
-//
-RESOURCE LISTBOX r_setting_listbox
-{
- flags = EEikListBoxMultipleSelection;
-}
-
-//----------------------------------------------------
-// r_scut_settings_applist_page
-// Selection key idle softkey setting page.
-//----------------------------------------------------
-//
-RESOURCE AVKON_SETTING_PAGE r_scut_settings_applist_page
-{
- number = EAknSettingPageNoOrdinalDisplayed;
- // label = qtn_set_idle_selec_key;
- // note: default cba resource is ok_cancel_select
- //softkey_resource = R_AVKON_SOFTKEYS_OK_CANCEL;
- type = EAknSetListBox;
- editor_resource_id = r_setting_listbox;
-}
-
-//----------------------------------------------------------
-// r_scut_type_url_page
-// Setting page editing an url.
-//----------------------------------------------------------
-//
-RESOURCE AVKON_SETTING_PAGE r_scut_type_url_page
-{
- softkey_resource = R_AVKON_SOFTKEYS_OK_CANCEL__OK;
- number= EAknSettingPageNoOrdinalDisplayed;
- label= qtn_ai_shorts_type_url;
- type = EEikCtEdwin;
- editor_resource_id = r_scut_url_editor;
-}
-
-//----------------------------------------------------------
-// r_scut_edit_url_page
-// Setting page editing an url.
-//----------------------------------------------------------
-//
-RESOURCE AVKON_SETTING_PAGE r_scut_edit_url_page
-{
- softkey_resource = R_AVKON_SOFTKEYS_OK_CANCEL__OK;
- number= EAknSettingPageNoOrdinalDisplayed;
- label= qtn_ai_shorts_edit_url;
- type = EEikCtEdwin;
- editor_resource_id = r_scut_url_editor;
-}
-
-//----------------------------------------------------------
-// r_scut_url_editor
-// URL editor.
-//----------------------------------------------------------
-//
-RESOURCE EDWIN r_scut_url_editor
-{
- width = 10;
- lines = 2;
- maxlength = 1000;
- numeric_keymap = EAknEditorCalculatorNumberModeKeymap;
- allowed_input_modes = EAknEditorTextInputMode | EAknEditorNumericInputMode;
- default_input_mode = EAknEditorTextInputMode;
- special_character_table = R_AVKON_URL_SPECIAL_CHARACTER_TABLE_DIALOG;
- default_case = EAknEditorLowerCase;
- flags = EEikEdwinAutoSelection | EAknEditorLowerCase | EEikEdwinNoLineOrParaBreaks;
- avkon_flags = EAknEditorFlagNoT9 | EAknEditorFlagLatinInputModesOnly;
-}
-
-//----------------------------------------------------
-// r_scut_change_to_page
-// "Change To" setting page.
-//----------------------------------------------------
-//
-RESOURCE ARRAY r_scut_change_to_page_lbx
-{
- items =
- {
- LBUF { txt = qtn_sc_set_change_apps; },
- LBUF { txt = qtn_sc_set_change_bookmark; }
-
- // Only this menu option disabled.
- // The implementation of url functionality still exists in code,
- // even though this option has been decided to remove due to better
- // usability. Affects lots of code if removed entirely.
- /*,
- LBUF { txt = qtn_sc_set_change_url; }*/
- };
-}
-
-//----------------------------------------------------
-// r_scut_listquery_change_to_page
-// "Change To" setting page.
-//----------------------------------------------------
-//
-RESOURCE AVKON_LIST_QUERY r_scut_listquery_change_to_page
-{
- softkeys=R_AVKON_SOFTKEYS_SELECT_CANCEL;
- items =
- {
- AVKON_LIST_QUERY_DLG_LINE
- {
- control = AVKON_LIST_QUERY_CONTROL
- {
- listtype = EAknCtSinglePopupMenuListBox;
- heading = qtn_sc_set_change_prompt;
- listbox = AVKON_LIST_QUERY_LIST
- {
- // array of items will be defined dynamically
- };
- };
- }
- };
-}
-
-//----------------------------------------------------------
-// r_scut_wait_note
-//
-//----------------------------------------------------------
-//
-RESOURCE DIALOG r_scut_wait_note
-{
- flags = EAknWaitNoteFlags | EEikDialogFlagWait;
- buttons = R_AVKON_SOFTKEYS_EMPTY;
- items=
- {
- DLG_LINE
- {
- type = EAknCtNote;
- id = EGeneralNote;
- control= AVKON_NOTE
- {
- layout = EWaitLayout;
- singular_label = qtn_gen_note_opening;
- animation = R_QGN_GRAF_WAIT_BAR_ANIM;
- };
- }
- };
-}
-
-//----------------------------------------------------
-// r_scut_settings_view_caption
-// View caption for plug-in. max 256
-//----------------------------------------------------
-//
-RESOURCE TBUF r_scut_settings_view_caption
-{
- buf = qtn_set_pers_shortcuts;
-}
-
-//----------------------------------------------------
-// r_scut_settings_view_title
-// View title.
-//----------------------------------------------------
-//
-RESOURCE TITLE_PANE r_scut_settings_view_title
-{
- txt = qtn_set_title_pers_shortcuts;
-}
-
-//----------------------------------------------------
-// r_ai_settings_txt_fixed_item
-// Text used in information note when attempting
-// to change a read-only shortcut
-//----------------------------------------------------
-//
-RESOURCE TBUF r_scut_settings_txt_fixed_item
-{
- buf = qtn_ai_set_app_note_fixed;
-}
-
-//----------------------------------------------------
-// r_scut_settings_txt_all_fixed
-// Text for empty listbox item
-//----------------------------------------------------
-//
-RESOURCE TBUF r_scut_settings_txt_all_fixed
-{
- buf = qtn_ai_sc_set_all_fixed;
-}
-
-//----------------------------------------------------
-// r_scut_settings_txt_linkn
-//
-//----------------------------------------------------
-//
-RESOURCE TBUF r_scut_settings_txt_linkn
-{
- buf = qtn_ai_set_myt_linkn;
-}
-
-//----------------------------------------------------
-// r_scut_settings_softkey_left
-//
-//----------------------------------------------------
-//
-RESOURCE TBUF r_scut_settings_softkey_left
-{
- buf = qtn_set_left_idle_softkey;
-}
-
-//----------------------------------------------------
-// r_scut_settings_softkey_right
-//
-//----------------------------------------------------
-//
-RESOURCE TBUF r_scut_settings_softkey_right
-{
- buf = qtn_set_right_idle_softkey;
-}
-
-//----------------------------------------------------
-// r_scut_settings_scroll_left
-//
-//----------------------------------------------------
-//
-RESOURCE TBUF r_scut_settings_scroll_left
-{
- buf = qtn_set_idle_left_scroll;
-}
-
-//----------------------------------------------------
-// r_scut_settings_scroll_right
-//
-//----------------------------------------------------
-//
-RESOURCE TBUF r_scut_settings_scroll_right
-{
- buf = qtn_set_idle_right_scroll;
-}
-
-//----------------------------------------------------
-// r_scut_settings_scroll_up
-//
-//----------------------------------------------------
-//
-RESOURCE TBUF r_scut_settings_scroll_up
-{
- buf = qtn_set_idle_up_scroll;
-}
-
-//----------------------------------------------------
-// r_scut_settings_scroll_down
-//
-//----------------------------------------------------
-//
-RESOURCE TBUF r_scut_settings_scroll_down
-{
- buf = qtn_set_idle_down_scroll;
-}
-
-//----------------------------------------------------
-// r_scut_settings_selection_key
-//
-//----------------------------------------------------
-//
-RESOURCE TBUF r_scut_settings_selection_key
-{
- buf = qtn_set_idle_selec_key;
-}
-
-// -----------------------------------------------------------------------------
-// r_scut_settings_no_effect
-//
-// -----------------------------------------------------------------------------
-//
-RESOURCE TBUF r_scut_settings_no_effect
-{
- buf = qtn_set_idle_skeys_no_effect;
-}
-
-// -----------------------------------------------------------------------------
-// r_scut_msk_edit
-//
-// -----------------------------------------------------------------------------
-//
-RESOURCE TBUF r_scut_msk_edit
-{
- buf = qtn_msk_edit;
-}
-
-// -----------------------------------------------------------------------------
-// r_scut_msk_change
-//
-// -----------------------------------------------------------------------------
-//
-RESOURCE TBUF r_scut_msk_change
-{
- buf = qtn_msk_change;
-}
-
-/*
-//----------------------------------------------------
-// r_scut_settings_key_press
-//
-//----------------------------------------------------
-//
-//RESOURCE TBUF r_scut_settings_key_press
-// {
-// buf = qtn_ai_shorts_key_press;
-// }
-
-*/
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-RESOURCE CBA r_scut_softkeys_options_back_change
-{
- buttons =
- {
- CBA_BUTTON {id = EAknSoftkeyOptions; txt = text_softkey_option; },
- CBA_BUTTON {id = EAknSoftkeyBack; txt = text_softkey_back; },
- CBA_BUTTON {id = EAiScutSettingsCmdChange; txt = qtn_msk_change; }
- };
-}
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-RESOURCE CBA r_scut_softkeys_options_exit_change
-{
- buttons =
- {
- CBA_BUTTON {id = EAknSoftkeyOptions; txt = text_softkey_option; },
- CBA_BUTTON {id = EAknSoftkeyExit; txt = text_softkey_exit; },
- CBA_BUTTON {id = EAiScutSettingsCmdChange; txt = qtn_msk_change; }
- };
-}
-
-// End of File.
--- a/idlefw/plugins/shortcutplugin/src/aiscuttargetshutter.cpp Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,274 +0,0 @@
-/*
-* 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 <apgtask.h> //TApaTask
-#include <apgcli.h> //RApaLsSession
-
-#include "aiscuttargetshutter.h"
-#include "aiscutdefs.h"
-#include "debug.h"
-
-#include <AknSgcc.h>
-
-const TUid KMenuUID3 = { 0x101F4CD2 };
-
-const TInt KTaskExistsDelay = 1500000; //1.5 second
-const TInt KTaskNotExistsDelay = 500000; //0.5 second
-const TInt KMaxNumberOfTries = 3;
-
-
-// ======== MEMBER FUNCTIONS ========
-
-CAiScutTargetShutter::CAiScutTargetShutter(CCoeEnv* aEnv, TUid aAppUid)
- : CActive(CActive::EPriorityLow)
- , iEnv(aEnv)
- , iAppUid(aAppUid)
-{
- CActiveScheduler::Add(this);
-}
-
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-CAiScutTargetShutter::~CAiScutTargetShutter()
-{
- if (iPeriodic)
- {
- iPeriodic->Cancel();
- delete iPeriodic;
- }
-
- iWsSession.Close();
- Cancel();
-}
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-void CAiScutTargetShutter::ConstructL(TBool aIsRunning, TBool aIsDialog)
-{
- iIsRunning = aIsRunning;
- iIsDialog = aIsDialog;
- iTaskExists = EFalse;
- iTaskKilled = EFalse;
- iCounter = 0;
- iPeriodic = CPeriodic::NewL(CActive::EPriorityLow);
- User::LeaveIfError(iWsSession.Connect());
-}
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-CAiScutTargetShutter* CAiScutTargetShutter::NewL(CCoeEnv* aEnv, TUid aAppUid, TBool aIsRunning, TBool aIsDialog)
-{
- CAiScutTargetShutter* self = new (ELeave) CAiScutTargetShutter(aEnv, aAppUid);
- CleanupStack::PushL(self);
- self->ConstructL(aIsRunning, aIsDialog);
- CleanupStack::Pop(self);
- return self;
-}
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-void CAiScutTargetShutter::StartL()
-{
- __PRINT( __DBG_FORMAT( "XAI: CAiScutTargetShutter::Start() app uid=0x%x"), iAppUid.iUid);
-
-
- TApaTaskList taskList(iWsSession);
- TApaTask idleTask(taskList.FindApp(KScutActiveIdleUid));
-
- if ( idleTask.Exists() && iIsRunning)
- {
- if ( iIsDialog )
- {
- TKeyEvent keyEvent;
- keyEvent.iCode = EKeyEscape;
- keyEvent.iModifiers = 0;
- keyEvent.iRepeats = 0;
- iEnv->SimulateKeyEventL(keyEvent, EEventKey);
- }
- //idleTask.BringToForeground();
- CAknSgcClient::MoveApp(idleTask.WgId(), ESgcMoveAppToForeground);
- iTaskExists = ETrue;
- __PRINTS( "XAI: exists and running");
-
- }
- else
- {
- TKeyEvent keyEvent;
- keyEvent.iCode = EKeyEscape;
- keyEvent.iModifiers = 0;
- keyEvent.iRepeats = 0;
- iEnv->SimulateKeyEventL(keyEvent, EEventKey);
-
- // bring active idle to foreground
- TApaTask idleTask(taskList.FindApp(KScutActiveIdleUid));
- if (idleTask.Exists())
- {
- __PRINTS("XAI: idle to foreground");
- //idleTask.BringToForeground();
- CAknSgcClient::MoveApp(idleTask.WgId(), ESgcMoveAppToForeground);
- }
- TApaTask task(taskList.FindApp(iAppUid));
- if (task.Exists())
- {
- //task.SendToBackground();
- CAknSgcClient::MoveApp(task.WgId(), ESgcMoveAppToBackground);
- }
- }
- if( !iPeriodic->IsActive() )
- {
- if (iTaskExists)
- {
- iPeriodic->Start(KTaskExistsDelay, KTaskExistsDelay,
- TCallBack(TaskExistsCallback, this));
- }
- else
- {
- iPeriodic->Start(KTaskNotExistsDelay, KTaskNotExistsDelay,
- TCallBack(TaskNotExistsCallback, this));
- }
-
- }
-}
-
-// ---------------------------------------------------------------------------
-// From CActive
-// ---------------------------------------------------------------------------
-//
-void CAiScutTargetShutter::DoCancel()
-{
- if (iPeriodic)
- {
- iPeriodic->Cancel();
- }
-}
-
-// ---------------------------------------------------------------------------
-// From CActive.
-// ---------------------------------------------------------------------------
-//
-void CAiScutTargetShutter::RunL()
-{
- __PRINT( __DBG_FORMAT( "XAI: CAiScutTargetShutter::RunL() app uid=0x%x"), iAppUid.iUid);
-
- TUid menuUid = KMenuUID3;
-
- TApaTaskList taskList(iWsSession);
- TApaTask task(taskList.FindApp(iAppUid));
-
- if (iTaskExists)
- {
- RWindowGroup windowGroup = iEnv->RootWin();
-
- if (windowGroup.OrdinalPosition() != 0)
- {
- TApaTask idleTask(taskList.FindApp(KScutActiveIdleUid));
- if (idleTask.Exists())
- {
- __PRINTS( "XAI: idle to foreground");
-
- //idleTask.BringToForeground();
- CAknSgcClient::MoveApp(idleTask.WgId(), ESgcMoveAppToForeground);
- }
- }
- iPeriodic->Cancel();
- }
- else
- {
- if (iCounter >= KMaxNumberOfTries || iTaskKilled)
- {
- iPeriodic->Cancel();
- }
- else if (task.Exists() && iAppUid != menuUid)
- {
- __PRINTS("XAI: shutdown task");
- //task.SendToBackground();
- CAknSgcClient::MoveApp(task.WgId(), ESgcMoveAppToBackground);
- task.SendSystemEvent(EApaSystemEventShutdown);
- iTaskKilled = ETrue;
- }
- else
- {
- iCounter++;
- }
- }
-}
-
-// ---------------------------------------------------------------------------
-// From CActive
-// Handles an error situation.
-// ---------------------------------------------------------------------------
-//
-TInt CAiScutTargetShutter::RunError(TInt aError)
-{
- return aError;
-}
-
-// ---------------------------------------------------------------------------
-//
-//
-// ---------------------------------------------------------------------------
-//
-void CAiScutTargetShutter::Run()
-{
- SetActive();
- TRequestStatus *status = &iStatus;
- User::RequestComplete(status, KErrNone);
-}
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-TInt CAiScutTargetShutter::TaskExistsCallback(TAny* aPtr)
-{
- CAiScutTargetShutter* self = static_cast<CAiScutTargetShutter*>(aPtr);
-
- if (self)
- {
- self->Run();
- }
-
- return KErrNone;
-}
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-TInt CAiScutTargetShutter::TaskNotExistsCallback(TAny* aPtr)
-{
- CAiScutTargetShutter* self = static_cast<CAiScutTargetShutter*>(aPtr);
-
- if (self)
- {
- self->Run();
- }
-
- return KErrNone;
-}
-
-// End of File.
--- a/idlefw/plugins/shortcutplugin/src/aiscuttexts.rss Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,707 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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: Shortcut plug-in common texts
-*
-*/
-
-
-#include <eikon.rh>
-#include <avkon.rsg>
-#include <avkon.rh>
-#include <avkon.mbg>
-#include <eikcore.rsg>
-#include <eikon.rsg>
-//#include <appinfo.rh>
-//#include <avkon.loc>
-//#include <data_caging_paths_strings.hrh>
-//#include <gscommon.rh>
-//#include <gs.loc>
-
-#include <ai3scutsettings.loc>
-
-#include "aiscutapptitle.rh"
-#include "aiscutappuids.hrh"
-
-NAME SCTX
-
-RESOURCE RSS_SIGNATURE { }
-
-RESOURCE TBUF { buf=""; }
-
-//----------------------------------------------------
-// r_scut_plugin_name
-//
-//----------------------------------------------------
-//
-RESOURCE TBUF r_scut_plugin_name
-{
- buf = qtn_ai_set_cont_apps;
-}
-
-//----------------------------------------------------
-// r_scut_settings_change_theme
-//
-//----------------------------------------------------
-//
-RESOURCE TBUF r_scut_settings_change_theme
-{
- buf = qtn_apps_idle_skin_gs;
-}
-
-//----------------------------------------------------
-// r_scut_settings_new_msg
-//
-//----------------------------------------------------
-//
-RESOURCE TBUF r_scut_settings_new_msg
-{
- buf = qtn_set_idle_skey_new_msg;
-}
-
-//----------------------------------------------------
-// r_scut_settings_new_email
-//
-//----------------------------------------------------
-//
-RESOURCE TBUF r_scut_settings_new_email
-{
- buf = qtn_set_idle_skeys_email_editor;
-}
-
-//----------------------------------------------------
-// r_scut_settings_new_syncml_mail
-//
-//----------------------------------------------------
-//
-RESOURCE TBUF r_scut_settings_new_syncml_mail
-{
- buf = qtn_apps_syncml_mail_gs;
-}
-
-//----------------------------------------------------
-// r_scut_settings_new_postcard
-//
-//----------------------------------------------------
-//
-RESOURCE TBUF r_scut_settings_new_postcard
-{
- buf = qtn_apps_mmspostcard_gs;
-}
-
-//----------------------------------------------------
-// r_scut_settings_new_audio_msg
-//
-//----------------------------------------------------
-//
-RESOURCE TBUF r_scut_settings_new_audio_msg
-{
- buf = qtn_apps_audio_msg_gs;
-}
-
-//----------------------------------------------------
-// r_scut_settings_select_msg_type
-//
-//----------------------------------------------------
-//
-RESOURCE TBUF r_scut_settings_select_msg_type
-{
- buf = qtn_set_idle_skey_select_msg_type;
-}
-
-//----------------------------------------------------
-// r_scut_settings_connectivity_status
-//
-//----------------------------------------------------
-//
-RESOURCE TBUF r_scut_settings_connectivity_status
-{
- buf = qtn_apps_connectivity_list;
-}
-
-//----------------------------------------------------
-// r_scut_settings_connectivity_status
-//
-//----------------------------------------------------
-//
-RESOURCE TBUF r_scut_settings_appmngr
-{
- buf = qtn_apps_am_gs;
-}
-
-//----------------------------------------------------
-// r_ai_scut_operation_disabled
-//
-//----------------------------------------------------
-//
-RESOURCE TBUF r_qtn_ai_scut_operation_disabled
- {
- buf = qtn_ai_scut_operation_disabled;
- }
-
-
-// -----------------------------------------------------------------------------
-// r_scut_app_title_list
-//
-// -----------------------------------------------------------------------------
-//
-RESOURCE AI_APP_TITLE_LIST r_scut_app_title_list
-{
- items =
- {
- AI_APP_TITLE_ITEM
- {
- appuid = KScutAboutUidValue;
- //longtitle = qtn_apps_about_list;
- //shorttitle = qtn_apps_about_grid;
- skeytitle = qtn_apps_about_grid;
- msktitle = qtn_apps_about_grid;
- }
- ,
- AI_APP_TITLE_ITEM
- {
- appuid = KScutGeneralSettingsUidValue;
- viewid = KScutInstallationViewIdValue;
- longtitle = qtn_app_caption_string;
- shorttitle = qtn_apps_am_gs;
- skeytitle = qtn_apps_am_skey;
- msktitle = qtn_msk_idle_am;
- }
- ,
- AI_APP_TITLE_ITEM
- {
- appuid = KScutApplicationManagerUidValue;
- //viewid = KScutInstallationViewIdValue;
- //longtitle = qtn_app_caption_string;
- //shorttitle = qtn_app_caption_string;
- skeytitle = qtn_apps_am_skey;
- msktitle = qtn_msk_idle_am;
- }
- ,
- AI_APP_TITLE_ITEM
- {
- appuid = KScutApplicationShellUidValue;
- viewid = 1;
- //longtitle = "";
- //shorttitle = "";
- skeytitle = qtn_apps_menu_skey;
- msktitle = qtn_msk_idle_menu;
- }
- ,
- AI_APP_TITLE_ITEM
- {
- appuid = KScutNavigatorUidValue;
- //longtitle = qtn_apps_blid_list;
- //shorttitle = qtn_apps_blid_grid;
- skeytitle = qtn_apps_blid_skey;
- msktitle = qtn_msk_idle_blid;
- }
- ,
- AI_APP_TITLE_ITEM
- {
- appuid = KScutBluetoothUidValue;
- //longtitle = qtn_apps_bluetooth_list;
- //shorttitle = qtn_apps_bluetooth_grid;
- skeytitle = qtn_apps_bluetooth_skey;
- msktitle = qtn_msk_idle_bluetooth;
- }
- ,
- AI_APP_TITLE_ITEM
- {
- appuid = KScutBrowserUidValue;
- //longtitle = qtn_apps_browserng_grid;
- //shorttitle = qtn_apps_browserng_list;
- skeytitle = qtn_apps_services_skey_new;
- msktitle = qtn_msk_idle_services_new;
- }
- ,
- AI_APP_TITLE_ITEM
- {
- appuid = KScutCalculatorUidValue;
- //longtitle = qtn_apps_calculator_list;
- //shorttitle = qtn_apps_calculator_grid;
- skeytitle = qtn_apps_calculator_skey;
- msktitle = qtn_msk_idle_calculator;
- }
- ,
- AI_APP_TITLE_ITEM
- {
- appuid = KScutCalendarUidValue;
- //longtitle = qtn_apps_calendar_list;
- //shorttitle = qtn_apps_calendar_grid;
- skeytitle = qtn_apps_calendar_skey;
- msktitle = qtn_msk_idle_calendar;
- }
- ,
- AI_APP_TITLE_ITEM
- {
- appuid = KScutCamcorderUidValue;
- //longtitle = qtn_apps_ccor_list;
- //shorttitle = qtn_apps_ccor_grid;
- skeytitle = qtn_apps_ccor_skey;
- msktitle = qtn_msk_idle_ccor;
- }
- ,
- AI_APP_TITLE_ITEM
- {
- appuid = KScutChineseDictionaryUidValue;
- //longtitle = qtn_apps_dict_list;
- //shorttitle = qtn_apps_dict_grid;
- skeytitle = qtn_apps_dict_skey;
- msktitle = qtn_msk_idle_dict;
- }
- ,
- AI_APP_TITLE_ITEM
- {
- appuid = KScutClockUidValue;
- //longtitle = qtn_apps_clock_list;
- //shorttitle = qtn_apps_clock_grid;
- skeytitle = qtn_apps_clock_skey;
- msktitle = qtn_msk_idle_clock;
- }
- ,
- AI_APP_TITLE_ITEM
- {
- appuid = KScutConnectionManagerUidValue;
- //longtitle = qtn_apps_cmon_list;
- //shorttitle = qtn_apps_cmon_grid;
- skeytitle = qtn_apps_cmon_skey;
- msktitle = qtn_msk_idle_cmon;
- }
- ,
- AI_APP_TITLE_ITEM
- {
- appuid = KScutConverterUidValue;
- //longtitle = qtn_cnv_app_caption;
- //shorttitle = qtn_cnv_app_caption_short;
- skeytitle = qtn_apps_converter_skey;
- msktitle = qtn_msk_idle_converter;
- }
- ,
- AI_APP_TITLE_ITEM
- {
- appuid = KScutDeviceManagerUidValue;
- //longtitle = qtn_apps_dm_list;
- //shorttitle = qtn_apps_dm_grid;
- skeytitle = qtn_apps_dm_skey;
- msktitle = qtn_msk_idle_dm;
- }
- ,
- AI_APP_TITLE_ITEM
- {
- appuid = KScutDRMRightsManagerUidValue;
- //longtitle = qtn_apps_drm_list;
- //shorttitle = qtn_apps_drm_grid;
- skeytitle = qtn_apps_drm_skey;
- msktitle = qtn_msk_idle_drm;
- }
- ,
- AI_APP_TITLE_ITEM
- {
- appuid = KScutFaxModemUidValue;
- //longtitle = qtn_apps_fax_modem_list;
- //shorttitle = qtn_apps_fax_modem_grid;
- skeytitle = qtn_apps_fax_modem_skey;
- msktitle = qtn_msk_idle_fax_modem;
- }
- ,
- AI_APP_TITLE_ITEM
- {
- appuid = KScutFileManagerUidValue;
- //longtitle = qtn_apps_fmgr_list;
- //shorttitle = qtn_apps_fmgr_grid;
- skeytitle = qtn_apps_fmgr_skey;
- msktitle = qtn_msk_idle_fmgr;
- }
- ,
- AI_APP_TITLE_ITEM
- {
- appuid = KScutFMRadioUidValue;
- //longtitle = qtn_apps_radio_list;
- //shorttitle = qtn_apps_radio_grid;
- skeytitle = qtn_apps_radio_skey;
- msktitle = qtn_msk_idle_radio;
- },
- AI_APP_TITLE_ITEM
- {
- appuid = KScutFMTXRadioUidValue;
- //longtitle = qtn_apps_radio_list;
- //shorttitle = qtn_apps_radio_grid;
- skeytitle = qtn_fmtx_idle_sk;
- msktitle = qtn_fmtx_idle_msk;
- }
- ,
- AI_APP_TITLE_ITEM
- {
- appuid = KScutGeneralSettingsUidValue;
- //longtitle = qtn_apps_settings_list;
- //shorttitle = qtn_apps_settings_grid;
- skeytitle = qtn_apps_settings_skey;
- msktitle = qtn_msk_idle_gs;
- }
- ,
- AI_APP_TITLE_ITEM
- {
- appuid = KScutControlPanelUidValue;
- //longtitle = qtn_apps_controlpanel_list;
- //shorttitle = qtn_apps_controlpanel_grid;
- skeytitle = qtn_apps_controlpanel_skey;
- msktitle = qtn_msk_idle_controlpanel;
- }
- ,
- AI_APP_TITLE_ITEM
- {
- appuid = KScutHelpUidValue;
- //longtitle = qtn_apps_help_list;
- //shorttitle = qtn_apps_help_grid;
- skeytitle = qtn_apps_help_skey;
- msktitle = qtn_msk_idle_help;
- }
- ,
- AI_APP_TITLE_ITEM
- {
- appuid = KScutIRUidValue;
- //longtitle = qtn_apps_infrared_list;
- //shorttitle = qtn_apps_infrared_grid;
- skeytitle = qtn_apps_infrared_skey;
- msktitle = qtn_msk_idle_infrared;
- }
- ,
- AI_APP_TITLE_ITEM
- {
- appuid = KScutInstantMessagingUidValue;
- //longtitle = qtn_apps_instant_list;
- //shorttitle = qtn_apps_instant_grid;
- skeytitle = qtn_apps_instant_skey;
- msktitle = qtn_msk_idle_instant;
- }
- ,
- AI_APP_TITLE_ITEM
- {
- appuid = KScutUserDictionaryUidValue;
- //longtitle = qtn_apps_udict_list;
- //shorttitle = qtn_apps_udict_grid;
- skeytitle = qtn_apps_udict_skey;
- msktitle = qtn_msk_idle_udict;
- }
- ,
- AI_APP_TITLE_ITEM
- {
- appuid = KScutLandmarksUidValue;
- //longtitle = qtn_apps_lm_list;
- //shorttitle = qtn_apps_lm_grid;
- skeytitle = qtn_apps_lm_skey;
- msktitle = qtn_msk_idle_lm;
- }
- ,
- AI_APP_TITLE_ITEM
- {
- appuid = KScutLogsUidValue;
- //longtitle = qtn_apps_logs_list;
- //shorttitle = qtn_apps_logs_grid;
- skeytitle = qtn_apps_logs_skey;
- msktitle = qtn_msk_idle_logs;
- }
- ,
- AI_APP_TITLE_ITEM
- {
- appuid = KScutMediaGallery2UidValue;
- //longtitle = qtn_apps_mg_list;
- //shorttitle = qtn_apps_mg_grid;
- skeytitle = qtn_apps_mg_skey;
- msktitle = qtn_msk_idle_mg;
- }
- ,
- AI_APP_TITLE_ITEM
- {
- appuid = KScutMediaPlayerUidValue;
- //longtitle = qtn_apps_mp_list;
- //shorttitle = qtn_apps_mp_grid;
- skeytitle = qtn_apps_mp_skey;
- msktitle = qtn_msk_idle_mp;
- }
- ,
- AI_APP_TITLE_ITEM
- {
- appuid = KScutMemoryCardUidValue;
- //longtitle = qtn_apps_memc_appl_list;
- //shorttitle = qtn_apps_memc_appl_grid;
- skeytitle = qtn_apps_mmc_skey;
- msktitle = qtn_msk_idle_mmc;
- }
- ,
- AI_APP_TITLE_ITEM
- {
- appuid = KScutMessagingCenterUidValue;
- //longtitle = qtn_apps_messaging_list;
- //shorttitle = qtn_apps_messaging_grid;
- skeytitle = qtn_apps_messaging_skey;
- msktitle = qtn_msk_idle_messaging;
- }
- ,
- AI_APP_TITLE_ITEM
- {
- appuid = KScutMusicPlayerUidValue;
- //longtitle = qtn_apps_mplayer_list;
- //shorttitle = qtn_apps_mplayer_grid;
- skeytitle = qtn_apps_mplayer_skey;
- msktitle = qtn_msk_idle_mplayer;
- }
- ,
- AI_APP_TITLE_ITEM
- {
- appuid = KScutNotepadUidValue;
- //longtitle = qtn_apps_notepad_list;
- //shorttitle = qtn_apps_notepad_grid;
- skeytitle = qtn_apps_notepad_skey;
- msktitle = qtn_msk_idle_notepad;
- }
- ,
- AI_APP_TITLE_ITEM
- {
- appuid = KScutPersonalisationUidValue;
- //longtitle = qtn_apps_skins_list;
- //shorttitle = qtn_apps_skins_grid;
- skeytitle = qtn_apps_skins_skey;
- msktitle = qtn_msk_idle_skins;
- }
- ,
- AI_APP_TITLE_ITEM
- {
- appuid = KScutPhoneUidValue;
- //longtitle = qtn_apps_phone_list;
- //shorttitle = qtn_apps_phone_grid;
- skeytitle = qtn_apps_phone_grid;
- msktitle = qtn_apps_phone_grid;
- }
- ,
- AI_APP_TITLE_ITEM
- {
- appuid = KScutPhonebookUidValue;
- //longtitle = qtn_apps_phonebook_list;
- //shorttitle = qtn_apps_phonebook_grid;
- skeytitle = qtn_apps_phonebook_skey;
- msktitle = qtn_msk_idle_phonebook;
- }
- ,
- AI_APP_TITLE_ITEM
- {
- appuid = KScutProfilesUidValue;
- //longtitle = qtn_apps_mode_list;
- //shorttitle = qtn_apps_mode_grid;
- skeytitle = qtn_apps_mode_skey;
- msktitle = qtn_msk_idle_mode;
- }
- ,
- AI_APP_TITLE_ITEM
- {
- appuid = KScutPocUidValue;
- //longtitle = qtn_apps_ptt_list;
- //shorttitle = qtn_apps_ptt_grid;
- skeytitle = qtn_apps_ptt_skey;
- msktitle = qtn_msk_idle_ptt;
- }
- ,
- AI_APP_TITLE_ITEM
- {
- appuid = KScutSearchUidValue;
- //longtitle = qtn_apps_search_list;
- //shorttitle = qtn_apps_search_grid;
- skeytitle = qtn_apps_search_skey;
- msktitle = qtn_msk_idle_search;
- }
- ,
- AI_APP_TITLE_ITEM
- {
- appuid = KScutSatUiUidValue;
- //longtitle = qtn_apps_simapps_list;
- //shorttitle = qtn_apps_simapps_grid;
- skeytitle = qtn_apps_simapps_grid;
- msktitle = qtn_apps_simapps_grid;
- }
- ,
- AI_APP_TITLE_ITEM
- {
- appuid = KScutSpeedDialUidValue;
- //longtitle = qtn_apps_sd_list;
- //shorttitle = qtn_apps_sd_grid;
- skeytitle = qtn_apps_sd_skey;
- msktitle = qtn_msk_idle_sd;
- }
- ,
- AI_APP_TITLE_ITEM
- {
- appuid = KScutUSBUidValue;
- //longtitle = qtn_apps_usb_list;
- //shorttitle = qtn_apps_usb_grid;
- skeytitle = qtn_apps_usb_skey;
- msktitle = qtn_msk_idle_usb;
- }
- ,
- AI_APP_TITLE_ITEM
- {
- appuid = KScutVoiceCommandsUidValue;
- //longtitle = qtn_apps_vc_list;
- //shorttitle = qtn_apps_vc_grid;
- skeytitle = qtn_apps_vc_skey;
- msktitle = qtn_msk_idle_vc;
- }
- ,
- AI_APP_TITLE_ITEM
- {
- appuid = KScutVoiceMailboxUidValue;
- //longtitle = qtn_apps_smsvo_list;
- //shorttitle = qtn_apps_smsvo_grid;
- skeytitle = qtn_apps_smsvo_skey;
- msktitle = qtn_msk_idle_smsvo;
- }
- ,
- AI_APP_TITLE_ITEM
- {
- appuid = KScutVoIPUidValue;
- //longtitle = qtn_apps_voip_list;
- //shorttitle = qtn_apps_voip_grid;
- skeytitle = qtn_apps_voip_skey;
- msktitle = qtn_msk_idle_voip;
- }
- ,
- AI_APP_TITLE_ITEM
- {
- appuid = KScutVoiceRecorderUidValue;
- //longtitle = qtn_vorec_app_menu_list;
- //shorttitle = qtn_vorec_app_menu_grid;
- skeytitle = qtn_apps_recorder_skey;
- msktitle = qtn_msk_idle_recorder;
- }
- ,
- AI_APP_TITLE_ITEM
- {
- appuid = KScutSmlSyncUidValue;
- //longtitle = qtn_apps_sml_list;
- //shorttitle = qtn_apps_sml_grid;
- skeytitle = qtn_apps_sml_grid;
- msktitle = qtn_apps_sml_grid;
- }
- ,
- AI_APP_TITLE_ITEM
- {
- appuid = KScutPersonalisationUidValue;
- viewid = KScutChangeThemeViewIdValue;
- longtitle = qtn_apps_idle_skin_gs;
- shorttitle = qtn_apps_idle_skin_skey;
- skeytitle = qtn_apps_idle_skin_skey;
- msktitle = qtn_msk_idle_skin;
- }
- ,
- AI_APP_TITLE_ITEM
- {
- appuid = KScutAmsEditorUidValue;
- longtitle = qtn_apps_audio_msg_gs;
- shorttitle = qtn_apps_audio_msg_skey;
- skeytitle = qtn_apps_audio_msg_skey;
- msktitle = qtn_msk_idle_audio_msg;
- }
- ,
- AI_APP_TITLE_ITEM
- {
- appuid = KScutEmailEditorUidValue;
- longtitle = qtn_set_idle_skeys_email_editor;
- shorttitle = qtn_apps_email_skey;
- skeytitle = qtn_apps_email_skey;
- msktitle = qtn_msk_idle_email;
- }
- ,
- AI_APP_TITLE_ITEM
- {
- appuid = KScutPostcardEditorUidValue;
- longtitle = qtn_apps_mmspostcard_gs;
- shorttitle = qtn_apps_mmspostcard_skey;
- skeytitle = qtn_apps_mmspostcard_skey;
- msktitle = qtn_msk_idle_mmspostcard;
- }
- ,
- AI_APP_TITLE_ITEM
- {
- appuid = KScutUnifiedEditorUidValue;
- longtitle = qtn_set_idle_skey_new_msg;
- shorttitle = qtn_idle_skey_new_msg;
- skeytitle = qtn_idle_skey_new_msg;
- msktitle = qtn_msk_idle_new_msg;
- }
- ,
- AI_APP_TITLE_ITEM
- {
- appuid = KScutEmailEditorUidValue;
- viewid = KScutSyncMlEmailUidValue;
- longtitle = qtn_apps_syncml_mail_gs;
- shorttitle = qtn_apps_syncml_mail_skey;
- skeytitle = qtn_apps_syncml_mail_skey;
- msktitle = qtn_msk_idle_syncml_mail;
- }
- ,
- AI_APP_TITLE_ITEM
- {
- appuid = KScutMessagingCenterUidValue;
- viewid = KScutMessagingCenterUidValue;
- longtitle = qtn_set_idle_skey_select_msg_type;
- shorttitle = qtn_idle_skey_select_msg;
- skeytitle = qtn_idle_skey_select_msg;
- msktitle = qtn_msk_idle_select_msg;
- }
- ,
- AI_APP_TITLE_ITEM
- {
- appuid = KScutGeneralSettingsUidValue;
- viewid = KScutConnectivityStatusViewIdValue;
- longtitle = qtn_apps_connectivity_list;
- shorttitle = qtn_apps_connectivity_skey;
- skeytitle = qtn_apps_connectivity_skey;
- msktitle = qtn_msk_idle_connectivity;
- }
- ,
- AI_APP_TITLE_ITEM
- {
- appuid = KScutVideoServicesUidValue;
- skeytitle = qtn_apps_video_grid;
- }
- ,
- AI_APP_TITLE_ITEM
- {
- appuid = KScutMusicPlayerUidValue;
- skeytitle = qtn_apps_mplayer_skey;
- }
- ,
- AI_APP_TITLE_ITEM
- {
- appuid = KScutFlashPlayerUidValue;
- skeytitle = qtn_apps_fplayer_skey;
- }
- ,
- AI_APP_TITLE_ITEM
- {
- appuid = KScutExchangeMailUidValue;
- skeytitle = qtn_apps_exchangemail_skey;
- }
- ,
- AI_APP_TITLE_ITEM
- {
- appuid = -1;
- //longtitle = "not found";
- //shorttitle = "not found";
- skeytitle = "not found";
- msktitle = "not found";
- }
- };
-}
-
-// End of File.
--- a/idlefw/plugins/shortcutplugin/src/caiscutengine.cpp Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,1787 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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: Shortcut plug-in engine class
-*
-*/
-
-
-#include <coemain.h> // For CCoeEnv
-#include <centralrepository.h> // For CRepository
-#include <w32std.h> // For RWsSession
-#include <apgtask.h> // For TApaTaskList
-#include <viewcli.h> // For CVwsSessionWrapper
-#include <vwsdef.h> // For TVwsViewId
-#include <e32property.h> // For RProperty
-#include <utf.h> // For CnvUtfConverter
-#include <bautils.h>
-#include <featmgr.h>
-#include <activefavouritesdbnotifier.h> // For CActiveFavouritesDbNotifier
-#include <pathinfo.h>
-#include <data_caging_path_literals.hrh>
-#include <AknSgcc.h> // for fast swap
-#ifdef SYMBIAN_ENABLE_SPLIT_HEADERS
-#include <viewclipartner.h>
-#endif
-
-
-#include <ctsydomainpskeys.h>
-#include <UikonInternalPSKeys.h>
-#include <menu2internalcrkeys.h>
-#include <activeidle2internalpskeys.h>
-#include <activeidle2domaincrkeys.h>
-#include <activeidle2domainpskeys.h>
-#include <aipspropertyobserver.h>
-
-#include <aiscuttexts.rsg>
-#include "caiscutengine.h"
-#include "aiscutpluginprivatecrkeys.h"
-#include "aiscutcontentmodel.h"
-#include "caiscutplugin.h"
-#include "caiscutshortcut.h"
-#include "caiscutshortcutinfo.h"
-#include "aidefaultshortcut.h"
-#include "aiscutappuidparser.h"
-#include "aiscutrepositorywatcher.h"
-#include "aiscuttargetshutter.h"
-#include "aiscutdefs.h"
-#include "aiscutfactory.h"
-
-#include <keylockpolicyapi.h>
-#include "debug.h"
-/**
- * Timer delay for access check retry. Two seconds.
- */
-const TInt KScutAccessCheckRetryDelay = 2000000;
-const TUid KVoiceCallUidViewId = { 0x10282D81 };
-const TUid KVideoCallUid = { 0x101F8681 };
-
-_LIT(KScutTextsResourceFileName, "aiscuttexts.rsc");
-_LIT8(KScutDirectOpen, "?open");
-
-// ======== LOCAL FUNCTIONS ========
-
-LOCAL_C TInt CompareKey(const TUint32& aLeft, const TUint32& aRight)
-{
- TUint32 left = aLeft & (KScutBitMaskThemeDefault & KScutBitMaskLocked);
- TUint32 right = aRight & (KScutBitMaskThemeDefault & KScutBitMaskLocked);
-
- if (left < right)
- {
- return -1;
- }
- else if (left > right)
- {
- return 1;
- }
-
- return 0;
-}
-
-static TInt IntFromDesc( const TDesC &aParam )
- {
- TInt err = KErrArgument;
- if (aParam.Length() > 0)
- {
- _LIT(KHexPrefix, "0x");
- const TInt prefixLen = 2;
-
- TRadix radix(EDecimal);
- TPtrC ptr(aParam);
-
- if (aParam.Left(prefixLen).CompareC(KHexPrefix) == 0)
- {
- // Strip the '0x' prefix.
- ptr.Set(aParam.Right(aParam.Length() - prefixLen));
-
- radix = EHex;
- }
-
- TLex lexer(ptr);
- TUint32 id;
-
- err = lexer.Val(id, radix);
- if ( err == KErrNone )
- {
- return id;
- }
- else
- {
- return err;
- }
- }
- return err;
- }
-// ---------------------------------------------------------------------------
-// Timer callback.
-// ---------------------------------------------------------------------------
-//
-TInt DelayedCheckCallBack(TAny* aEngine)
-{
- if (aEngine)
- {
- static_cast<CAiScutEngine*>(aEngine)->RetryAccessCheck();
- }
-
- return KErrNone;
-}
-
-// ======== MEMBER FUNCTIONS ========
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-CAiScutEngine::CAiScutEngine(CAiScutPlugin& aPlugin)
- :
- iPlugin(aPlugin),
- iResourceLoaderTexts(*CCoeEnv::Static()),
- iResourceLoaderSendUi(*CCoeEnv::Static())
-{
-}
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-void CAiScutEngine::ConstructL()
-{
- FeatureManager::InitializeLibL();
-
- User::LeaveIfError(iApaSession.Connect());
- User::LeaveIfError(iBookmarkSess.Connect());
- User::LeaveIfError(iBookmarkDb.Open(iBookmarkSess, KBrowserBookmarks));
-
- iVwsSession = CVwsSessionWrapper::NewL();
- iRepository = CRepository::NewL(KCRUidShortcutItems);
-
- iHiddenAppsRepository = CRepository::NewL(KCRUidMenu);
-
- // Create message server session because it may be needed during shortcut
- // creation for checking mailbox access.
- iMsvSession = CMsvSession::OpenAsObserverL(*this);
-
- iEnv = CCoeEnv::Static();
-
- TParsePtrC driveParse(PathInfo::RomRootPath());
- TFileName resourceName(driveParse.Drive());
- TParse parse;
- parse.Set(KScutTextsResourceFileName, &KDC_RESOURCE_FILES_DIR, NULL);
- resourceName.Append(parse.FullName());
- iResourceLoaderTexts.OpenL(resourceName);
-
- TFileName resourceName2(driveParse.Drive());
- TParse parse2;
- parse2.Set(KSendNormResource, &KDC_RESOURCE_FILES_DIR, NULL);
- resourceName2.Append(parse2.FullName());
- iResourceLoaderSendUi.OpenL(resourceName2);
-
- LoadAppTitleListL();
-
- // Engine should still remain alive even though shortcut construction failed
- // because LaunchByValue must still be possible.
- TRAP_IGNORE(CreateShortcutsL());
-
- // Close message server session for now. It's opened again in Resume if needed.
- delete iMsvSession;
- iMsvSession = NULL;
-
- iKeyEventObserver = AiUtility::CreatePSPropertyObserverL(
- TCallBack(HandlePSCommand, this),
- KUidSystemCategory, KPSUidShortcutCmd);
-
- iCallStateObserver = AiUtility::CreatePSPropertyObserverL(
- TCallBack(CallStateChangeCallback, this),
- KPSUidCtsyCallInformation, KCTsyCallState);
-
- iKeylockApi = CKeyLockPolicyApi::NewL( EPolicyActivateKeyguard );
- if ( !iKeylockApi->HasConfiguration() )
- {
- delete iKeylockApi;
- iKeylockApi = NULL;
- }
- CRepository* repository = CRepository::NewLC(TUid::Uid(KCRUidActiveIdleLV));
-
- repository->Get(KAIFirstKeyLockKey, iFirstLockKey);
- repository->Get(KAISecondKeyLockKey, iSecondLockKey);
- repository->Get(KAIKeyLockTimeout, iDelayTimerDelay);
- CleanupStack::PopAndDestroy(repository);
- // convert micro to milliseconds
- const TInt KUsInMs = 1000;
- iDelayTimerDelay = KUsInMs * iDelayTimerDelay;
- iDelayTimer = CPeriodic::NewL (CActive::EPriorityStandard );
-}
-
-TInt CAiScutEngine::DelayTimerCallBack (TAny *aSelf )
- {
- CAiScutEngine* self = static_cast<CAiScutEngine*>(aSelf );
- TInt err = KErrNone;
- if (self )
- {
- self->iDelayTimer->Cancel();
- TRAP(err,
- self->HandleLaunchByIndexL( *(self->iDelayedLaunchCmd) );
- );
-
- }
- return err;
- }
-
-void CAiScutEngine::DelayedLaunchByIndexL( const TDesC &aParam )
- {
- delete iDelayedLaunchCmd;
- iDelayedLaunchCmd = NULL;
- iDelayedLaunchCmd = aParam.AllocL();
- iDelayTimer->Cancel();
- iDelayTimer->Start( iDelayTimerDelay,
- iDelayTimerDelay,
- TCallBack( DelayTimerCallBack, this ));
-}
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-CAiScutEngine* CAiScutEngine::NewL(CAiScutPlugin& aPlugin)
-{
- CAiScutEngine* self = new (ELeave) CAiScutEngine(aPlugin);
- CleanupStack::PushL(self);
- self->ConstructL();
- CleanupStack::Pop(self);
- return self;
-}
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-CAiScutEngine::~CAiScutEngine()
-{
-#ifdef __WEB_WIDGETS
- if( iWidgetRegistryConnected )
- {
- iWidgetRegistry.Disconnect();
- }
-#endif
- delete iKeylockApi;
- delete iSettingsNotifier;
- delete iRepository;
-
- delete iHiddenAppsNotifier;
- delete iHiddenAppsRepository;
-
- iHiddenApps.Close();
-
- delete iAppNotifier;
- delete iTimer;
- delete iMsvSession;
- delete iVwsSession;
- delete iScutShutter;
-
- Release(iKeyEventObserver);
- Release(iCallStateObserver);
-
- iShortcuts.ResetAndDestroy();
- iThemeShortcuts.ResetAndDestroy();
- iDefaultUsed.Close();
-
- delete iBookmarkDbObserver;
- iBookmarkDb.Close();
- iBookmarkSess.Close();
-
- iApaSession.Close();
-
- while(iAppTitleList.Count())
- {
- delete iAppTitleList[0].iLongTitle;
- delete iAppTitleList[0].iShortTitle;
- delete iAppTitleList[0].iSkeyTitle;
- delete iAppTitleList[0].iMskTitle;
- iAppTitleList.Remove(0);
- }
- iAppTitleList.Close();
-
- iResourceLoaderTexts.Close();
- iResourceLoaderSendUi.Close();
-
- delete iDelayTimer;
- delete iDelayedLaunchCmd;
- iIcons.Close();
- FeatureManager::UnInitializeLib();
-}
-
-// ---------------------------------------------------------------------------
-// From class MMsvSessionObserver.
-// Handles an event from the message server.
-// ---------------------------------------------------------------------------
-//
-void CAiScutEngine::HandleSessionEventL(
- TMsvSessionEvent aEvent, TAny* /*aArg1*/, TAny* /*aArg2*/, TAny* /*aArg3*/)
-{
- switch (aEvent)
- {
- case EMsvEntriesCreated:
- case EMsvEntriesDeleted:
- case EMsvEntriesChanged:
- if (iShortcuts.Count() > 0)
- {
- MergeShortcuts(EScutMailbox, ETrue);
- CheckAccessAndPublish(EScutCheckMailbox, EFalse);
- }
- break;
-
- default:
- break;
- }
-}
-
-// ---------------------------------------------------------------------------
-// From class MApaAppListServObserver.
-// Handles a change in the application list.
-// ---------------------------------------------------------------------------
-//
-void CAiScutEngine::HandleAppListEvent(TInt /*aEvent*/)
-{
- TRAP_IGNORE( CheckForThemeDefaultReinstalledL() );
- MergeShortcuts(EScutAnyType, ETrue);
- CheckAccessAndPublish(EScutCheckApp, ETrue);
-}
-
-// ---------------------------------------------------------------------------
-// Resumes the engine.
-// ---------------------------------------------------------------------------
-//
-void CAiScutEngine::ResumeL(TBool aPublishAll, TAiTransitionReason /*aReason*/)
-{
- // Merge shortcuts and start notifiers only if we have publishable shortcuts.
- if (iShortcuts.Count() > 0)
- {
- if (!iSettingsNotifier)
- {
- iSettingsNotifier = CAiScutRepositoryWatcher::NewL(
- KCRUidShortcutItems,
- TCallBack(HandleShortcutsChanged, this),
- iRepository);
- }
-
- if (!iHiddenAppsNotifier)
- {
- iHiddenAppsNotifier = CAiScutRepositoryWatcher::NewL(
- KCRUidMenu,
- KMenuHideApplication,
- CCenRepNotifyHandler::EStringKey,
- TCallBack(HandleHiddenAppsChanged, this),
- iHiddenAppsRepository);
- }
- }
-#ifdef __WEB_WIDGETS
- if( !iWidgetRegistryConnected )
- {
- TInt cError = iWidgetRegistry.Connect();
- if( cError == KErrNone )
- {
- iWidgetRegistryConnected = ETrue;
- }
- }
-#endif
-
- GetHiddenAppsL();
-
- MergeShortcutsL(EScutAnyType, EFalse);
-
- // Call state check must be done always because RSK "Back"
- // must be published when theme is changed during phone call, too.
- HandleCallStateChange();
-
- CheckAccessAndPublish(EScutCheckAll, aPublishAll);
-
- if (iShortcuts.Count() > 0)
- {
- iSettingsNotifier->StartListeningL();
-
- iHiddenAppsNotifier->StartListeningL();
-
- if (!iAppNotifier)
- {
- iAppNotifier = CApaAppListNotifier::NewL(this, CActive::EPriorityStandard);
- }
- }
-}
-
-// ---------------------------------------------------------------------------
-// Suspends the engine.
-// ---------------------------------------------------------------------------
-//
-void CAiScutEngine::Suspend()
-{
- delete iMsvSession; // This is to stop receiving message server events.
- iMsvSession = NULL;
-
- delete iSettingsNotifier;
- iSettingsNotifier = NULL;
-
- delete iHiddenAppsNotifier;
- iHiddenAppsNotifier = NULL;
-
- delete iAppNotifier;
- iAppNotifier = NULL;
-
- delete iTimer;
- iTimer = NULL;
-
- delete iScutShutter;
- iScutShutter = NULL;
-
- if (iBookmarkDbObserver)
- {
- iBookmarkDbObserver->Cancel();
- }
- delete iBookmarkDbObserver;
- iBookmarkDbObserver = NULL;
-#ifdef __WEB_WIDGETS
- if( iWidgetRegistryConnected )
- {
- TInt cError = iWidgetRegistry.Disconnect();
- if( cError == KErrNone )
- {
- iWidgetRegistryConnected = EFalse;
- }
- }
-#endif
-}
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-TInt CAiScutEngine::HandleShortcutsChanged(TAny* aPtr)
-{
- __PRINTS("XAI: CAiScutEngine::HandleShortcutsChanged");
- CAiScutEngine* self = static_cast<CAiScutEngine*>(aPtr);
-
- if (self)
- {
- self->MergeShortcuts(EScutAnyType, ETrue);
- self->CheckAccessAndPublish(EScutCheckAll, EFalse);
- }
-
- return KErrNone;
-}
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-TInt CAiScutEngine::HandleHiddenAppsChanged(TAny* aPtr)
-{
- CAiScutEngine* self = static_cast<CAiScutEngine*>(aPtr);
-
- if (self)
- {
- TRAP_IGNORE(self->GetHiddenAppsL());
- self->MergeShortcuts(EScutAnyType, ETrue);
- self->CheckAccessAndPublish(EScutCheckAll, EFalse);
- }
-
- return KErrNone;
-}
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-TBool CAiScutEngine::IsLockKey( TInt aScanCode, TScutLockKey aLockKey ) const
- {
- TBool returnValue = EFalse;
- if ( iKeylockApi )
- {
- TInt index = 0;
- TUint32 priKey = 0;
- TUint32 secKey = 0;
- TInt err = KErrNone;
- // Loop through all the combinations in order
- // to find wether this key is part of the locking
- // process or not (1st or 2nd key)
- while( !returnValue )
- {
- err = iKeylockApi->GetKeyCombination(index, priKey, secKey);
- if ( err == KErrNone )
- {
- switch( aLockKey )
- {
- case EScutFirstLockKey:
- returnValue = (priKey == aScanCode);
- break;
- case EScutSecondLockKey:
- returnValue = (secKey == aScanCode);
- break;
- default:
- returnValue = EFalse;
- break;
- }
- }
- else // no more combinations
- {
- break;
- }
- ++index;
- }
- return returnValue;
- }
- switch( aLockKey )
- {
- case EScutFirstLockKey:
- returnValue = iFirstLockKey == aScanCode;
- break;
- case EScutSecondLockKey:
- returnValue = iSecondLockKey == aScanCode;
- break;
- default:
- returnValue = EFalse;
- break;
- }
- return returnValue;
- }
-
-
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-TBool CAiScutEngine::IsHidden(const TUid& aAppUid) const
-{
- if (iHiddenApps.Find(aAppUid) == KErrNotFound)
- {
- return EFalse;
- }
-
- __PRINT( __DBG_FORMAT( "XAI: CAiScutEngine::IsHidden (0x%x) ETrue"), aAppUid);
- return ETrue;
-}
-
-// ---------------------------------------------------------------------------
-// Handles an event sent by the AI framework.
-// ---------------------------------------------------------------------------
-//
-void CAiScutEngine::HandleAiEventL(TInt aEvent, const TDesC& aParam)
-{
- __PRINT( __DBG_FORMAT( "XAI: CAiScutEngine::HandleAiEventL( %d, '%S' ) alive = %d"), aEvent, &aParam, iPlugin.IsAlive());
-
- TUid appUid = KNullUid;
- iFirstLockKeyPressed = EFalse;
- iSoftkeyAppRunning = EFalse;
-
- if (aParam.Compare(KLeftSoftkey) == 0)
- {
- if ( IsLockKey( EStdKeyDevice0, EScutFirstLockKey) || IsLockKey( EStdKeyDevice0 , EScutSecondLockKey))
- {
- // Raise the first lock key pressed flag
- // only when this is raised, keylock skip causes scut launch
- iFirstLockKeyPressed = ETrue;
- appUid = SoftkeyUid(KLeftSoftkeyId);
- }
- }
-
- if (aParam.Compare(KRightSoftkey) == 0)
- {
- if ( IsLockKey( EStdKeyDevice1 , EScutFirstLockKey) || IsLockKey( EStdKeyDevice1 , EScutSecondLockKey))
- {
- // Raise the first lock key pressed flag
- // only when this is raised, keylock skip causes scut launch
- iFirstLockKeyPressed = ETrue;
- appUid = SoftkeyUid(KRightSoftkeyId);
- }
- }
-
- if (iFirstLockKeyPressed && appUid != KNullUid)
- {
- TApaTaskList taskList(iEnv->WsSession());
- TApaTask task(taskList.FindApp(appUid));
-
- if (task.Exists())
- {
- if (IsHiddenFromFSW(appUid))
- iSoftkeyAppRunning = EFalse;
- else
- iSoftkeyAppRunning = ETrue;
- }
- }
-
- if (IsDelayRequired(appUid))
- {
- DelayedLaunchByIndexL( aParam );
- return;
- }
-
- if( iActiveCall && aParam.Compare( KRightSoftkey ) == 0 )
- {
- ActivateTopMostApp();
- return;
- }
-
- switch( aEvent )
- {
- case EAiScutEventLaunchByIndex:
- HandleLaunchByIndexL(aParam);
- break;
-
- case EAiScutEventLaunchByValue:
- HandleLaunchByValueL(aParam);
- break;
-
- case EAiScutEventShowSettings:
- ShowSettingsL(aParam);
- break;
-
- case EAiScutEventShowSetting:
- ShowSettingL(aParam);
- break;
-
- case EAiScutEventLaunchFastswap:
- OpenFastSwap();
- break;
-
- case EAiScutEventLaunchByIndexAlternate:
- HandleLaunchByIndexAlternateL(aParam);
- break;
-
- default:
- break;
- }
-
-}
-
-// ---------------------------------------------------------------------------
-// Called by the timer. Retries the access check for shortcuts.
-// ---------------------------------------------------------------------------
-//
-void CAiScutEngine::RetryAccessCheck()
-{
- CheckAccessAndPublish(EScutCheckAll, iPublishAll);
-
- // One retry is enough.
- iTimer->Cancel();
- delete iTimer;
- iTimer = NULL;
-}
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-TBool CAiScutEngine::IsNonNative(const TUid& aUid)
-{
- TBool ret = EFalse;
-
- const TUid KMidletAppType = { 0x10210E26 };
- TUid typeuid = KNullUid;
-
- if (KErrNone == iApaSession.GetAppType(typeuid, aUid))
- {
- if (typeuid == KMidletAppType)
- {
- ret = ETrue;
- }
- }
-
-#ifdef __WEB_WIDGETS
- if (IsWidget(aUid))
- {
- ret = ETrue;
- }
-#endif
-
- return ret;
-}
-
-#ifdef __WEB_WIDGETS
-TBool CAiScutEngine::IsWidget(const TUid& aUid)
-{
- if( iWidgetRegistryConnected )
- {
- return iWidgetRegistry.IsWidget(aUid);
- }
- else
- {
- return EFalse;
- }
-}
-#endif
-
-// ---------------------------------------------------------------------------
-// Creates the default shortcuts.
-// ---------------------------------------------------------------------------
-//
-void CAiScutEngine::CreateShortcutsL()
-{
- TInt scIndex = 0;
-
- iShortcuts.ResetAndDestroy();
-
- RArray<TUint32> keys;
- CleanupClosePushL(keys);
- // Find the keys that define theme-default shortcut settings.
- iRepository->FindL(KScutCenRepKeyThemeDefault, KScutCenRepKeyMask, keys);
-
-
- TLinearOrder<TUint32> order(CompareKey);
- keys.Sort(order);
-
- HBufC* buffer = HBufC::NewLC(NCentralRepositoryConstants::KMaxUnicodeStringLength);
- TPtr bufferPtr = buffer->Des();
-
- if (iSettingsNotifier)
- {
- iSettingsNotifier->StopListening();
- }
- if (iHiddenAppsNotifier)
- {
- iHiddenAppsNotifier->StopListening();
- }
-
- for (TInt i = 0; i < keys.Count(); ++i)
- {
- TUint32 key = keys[i];
- if (iRepository->Get(key, bufferPtr) == KErrNone)
- {
- // Strip off the default-setting-bit, it's not part of the shortcut id.
- key &= KScutBitMaskThemeDefault;
-
- // Parse the icon from the URL and fetch the icon to our icon array
- // The actual icon => shortcut matching and overriding is done in
- // CheckAccessAndPublishL() just before publishing
- iParser.Parse(bufferPtr);
- TAiScutIcon icon = iParser.Icon();
- if ( icon.iType != EScutIconNone )
- {
- AddOverrideIcon( icon );
- }
- // Keys over 0x20000000 means that they are just icon overrides
- if ( !(key & KScutFlagBitIconOverride ) )
- {
- key &= KScutMaskAdditionalSetting;
- // Ignore possible errors during shortcut construction
- // and simply try to move on to the next shortcut.
- CAiScutShortcut* shortcut = NULL;
- TRAPD(err, shortcut = AiScutFactory::CreateAiScutShortcutL(key, bufferPtr, *this));
- if (err == KErrNone)
- {
- // If shortcut is not accessible, replace it with platform default.
- TBool access = EFalse;
- if (shortcut)
- {
- // Append theme default to our array, incase of uninstall/reinstall/mem card removal
- // restoration is required.
- CAiScutShortcutInfo* shortcutInfo = NULL;
- TRAP_IGNORE(shortcutInfo = CAiScutShortcutInfo::NewL(key | KScutFlagBitThemeDefault,
- bufferPtr));
- if ( shortcutInfo )
- {
- iThemeShortcuts.Append(shortcutInfo);
- }
-
- TScutDefault usedDefault = EScutDefaultToPlatform;
-
- TRAP_IGNORE(access = shortcut->CheckAccessL(EScutCheckAll));
- if (!access)
- {
- HBufC* target = HBufC::NewLC(NCentralRepositoryConstants::KMaxUnicodeStringLength);
- TPtr targetPtr = target->Des();
- TUid dummy;
-
- // Get the default shortcut definition for index 'scIndex'.
- // uid is ignored.
- TAiDefaultShortcut::GetDefaultShortcut(key, dummy, targetPtr);
-
- delete shortcut;
- shortcut = NULL;
- TRAP(err, shortcut = AiScutFactory::CreateAiScutShortcutL(key, targetPtr, *this));
-
- if (err == KErrNone)
- {
- // Add the bit that indicates this is a default shortcut setting.
- key |= KScutFlagBitThemeDefault;
- iRepository->Set(key, targetPtr);
-
- // Try to locate a icon override from the default
- // definition
- iParser.Parse( targetPtr );
- TAiScutIcon tIcon = iParser.Icon();
- if ( tIcon.iType != EScutIconNone )
- {
- AddOverrideIcon( tIcon );
- }
- }
- CleanupStack::PopAndDestroy( target );
- }
- else
- {
- usedDefault = EScutDefaultToTheme;
- }
-
- scIndex++;
-
- if (shortcut) // This test ensures that the creation right above went well.
- {
- iDefaultUsed.Append(usedDefault);
- err = iShortcuts.Append(shortcut);
-
- if (err != KErrNone)
- {
- delete shortcut;
- shortcut = NULL;
- }
- }
- }
- }
- }
- }
- }
-
- if (iSettingsNotifier)
- {
- iSettingsNotifier->StartListeningL();
- }
- if (iHiddenAppsNotifier)
- {
- iHiddenAppsNotifier->StartListeningL();
- }
-
- CleanupStack::PopAndDestroy(buffer);
- CleanupStack::PopAndDestroy(&keys);
-}
-
-// ---------------------------------------------------------------------------
-// Check whether theme default sc was reinstalled.
-// ---------------------------------------------------------------------------
-//
-void CAiScutEngine::CheckForThemeDefaultReinstalledL()
-{
- HBufC* buffer = HBufC::NewLC(NCentralRepositoryConstants::KMaxUnicodeStringLength);
- TPtr bufferPtr = buffer->Des();
-
- if (iSettingsNotifier)
- {
- iSettingsNotifier->StopListening();
- }
- if (iHiddenAppsNotifier)
- {
- iHiddenAppsNotifier->StopListening();
- }
-
- TInt count = iThemeShortcuts.Count();
- for (TInt i = 0; (i < count) &&
- (i < iDefaultUsed.Count()) &&
- (i < iShortcuts.Count());
- ++i)
- {
- if (iDefaultUsed[i] == EScutDefaultToPlatform ||
- iDefaultUsed[i] == EScutUserDefined)
- {
- bufferPtr.Zero();
- CAiScutShortcut*& shortcut = iShortcuts[i];
- // Strip off the default-setting-bit, it's not part of the shortcut id.
- TUint32 scutKey = iThemeShortcuts[i]->Id() & KScutBitMaskThemeDefault;
- bufferPtr.Append(iThemeShortcuts[i]->Target());
- CAiScutShortcut* newScut = NULL;
- TRAPD(err, newScut = AiScutFactory::CreateAiScutShortcutL(scutKey, bufferPtr, *this));
- if (err == KErrNone)
- {
- delete shortcut;
- shortcut = NULL;
- shortcut = newScut;
- // Add the bit that indicates this is a default shortcut setting.
- scutKey |= KScutFlagBitThemeDefault;
- iRepository->Set(scutKey, bufferPtr);
- }
- iDefaultUsed[i] = EScutDefaultToTheme;
- // Recheck access
- shortcut->CheckAccessL(EScutCheckAll);
- }
- }
- if (iSettingsNotifier)
- {
- iSettingsNotifier->StartListeningL();
- }
- if (iHiddenAppsNotifier)
- {
- iHiddenAppsNotifier->StartListeningL();
- }
-
- CleanupStack::PopAndDestroy(buffer);
-}
-
-// ---------------------------------------------------------------------------
-// Merges the user defined shortcuts with the defaults and checks shortcut access.
-// ---------------------------------------------------------------------------
-//
-void CAiScutEngine::MergeShortcuts(TShortcutType aType, TBool aRecreateAll)
-{
- TRAP_IGNORE(MergeShortcutsL(aType, aRecreateAll));
-}
-
-// ---------------------------------------------------------------------------
-// Merges the user defined shortcuts with the defaults.
-// ---------------------------------------------------------------------------
-//
-void CAiScutEngine::MergeShortcutsL(TShortcutType aType, TBool aRecreateAll)
-{
- RArray<TUint32> keys;
- CleanupClosePushL(keys);
-
- // Find the keys that define user defined shortcut settings.
- iRepository->FindL(KScutCenRepKeyUserDefined, KScutCenRepKeyMask, keys);
-
- HBufC* buffer = HBufC::NewLC(
- NCentralRepositoryConstants::KMaxUnicodeStringLength);
- TPtr bufferPtr = buffer->Des();
-
- for (TInt i = 0; i < iShortcuts.Count(); ++i)
- {
- CAiScutShortcut* shortcut = iShortcuts[i];
- if (aType == EScutAnyType || shortcut->Type() == aType)
- {
-
- TInt keyIndex = keys.Find(shortcut->Id());
- if (keyIndex != KErrNotFound)
- {
- // Set the new user target.
- if (keys.Count() > keyIndex && keyIndex >= 0 &&
- iRepository->Get(keys[keyIndex], bufferPtr) == KErrNone)
- {
- iParser.Parse(bufferPtr);
- TAiScutIcon icon = iParser.Icon();
- if ( icon.iType != EScutIconNone )
- {
- AddOverrideIcon( icon );
- }
- if ( aRecreateAll ||
- buffer->CompareC( shortcut->ActiveDefinition() ) != 0 )
- {
- shortcut->DeleteUserTarget();
- shortcut->SetUserTarget(bufferPtr);
- }
- if (i < iDefaultUsed.Count())
- {
- iDefaultUsed[i] = EScutUserDefined;
- }
- }
- }
- }
- }
-
- CleanupStack::PopAndDestroy(buffer);
- CleanupStack::PopAndDestroy(&keys);
-}
-
-// ---------------------------------------------------------------------------
-// Checks shortcut accessibility.
-// ---------------------------------------------------------------------------
-//
-void CAiScutEngine::CheckAccessAndPublish(TInt aCheckType, TBool aPublishAll)
-{
- TRAPD(err, CheckAccessAndPublishL(aCheckType, aPublishAll));
-
- if (err == KErrNotReady)
- {
- // Access check failed, create a timer to try again later.
- iTimer = CPeriodic::New(CActive::EPriorityStandard);
- iTimer->Start(KScutAccessCheckRetryDelay, KScutAccessCheckRetryDelay,
- TCallBack(DelayedCheckCallBack));
- }
-}
-
-// ---------------------------------------------------------------------------
-// Tells each shortcut to check whether or not its target is accessible.
-// ---------------------------------------------------------------------------
-//
-void CAiScutEngine::CheckAccessAndPublishL(TInt aCheckType, TBool aPublishAll)
-{
- __PRINTS("XAI: CheckAccessAndPublishL");
- if (!iMsvSession && IsMsvSessionNeeded())
- {
- iMsvSession = CMsvSession::OpenAsObserverL(*this);
- }
-
- if (!iBookmarkDbObserver && IsBookmarkObserverNeeded())
- {
- iBookmarkDbObserver =
- new (ELeave) CActiveFavouritesDbNotifier(iBookmarkDb, *this);
- if (! iBookmarkDbObserver->IsActive())
- {
- iBookmarkDbObserver->Start();
- }
- }
-
- iPublishAll = aPublishAll;
-
- TInt count = iShortcuts.Count();
- for (TInt i = 0; i < count; ++i)
- {
- CAiScutShortcut*& shortcut = iShortcuts[i];
-
- // Check shortcut access and publish it if its target has changed.
- // When the plug-in is being resumed, all shortcuts are published.
- // Non-visible and locked shortcuts are never published.
- if ( !shortcut->CheckAccessL(aCheckType) )
- {
- HBufC* target = HBufC::NewLC(NCentralRepositoryConstants::KMaxUnicodeStringLength);
- TPtr targetPtr = target->Des();
- TUid dummy;
- // Get the default shortcut definition from cenrep using key 'key'.
- // uid is ignored.
- TUint32 key = shortcut->Id();
- TAiDefaultShortcut::GetDefaultShortcut(key, dummy, targetPtr);
- delete shortcut;
- shortcut = NULL;
- TRAPD(err, shortcut = AiScutFactory::CreateAiScutShortcutL(key, targetPtr, *this));
- if (err == KErrNone)
- {
- // Add the bit that indicates this is a default shortcut setting.
- key |= KScutFlagBitThemeDefault;
- iRepository->Set(key, targetPtr);
-
- // Try to locate a icon override from the default
- // definition
- iParser.Parse( targetPtr );
- TAiScutIcon tIcon = iParser.Icon();
- if ( tIcon.iType != EScutIconNone )
- {
- AddOverrideIcon( tIcon );
- }
- }
- CleanupStack::PopAndDestroy( target );
- if (i < iDefaultUsed.Count())
- {
- iDefaultUsed[i] = EScutDefaultToPlatform;
- }
- // Recheck access
- shortcut->CheckAccessL(aCheckType);
- }
-
- TBool targetChanged = shortcut->IsTargetChanged();
- TInt32 id = shortcut->Id();
- TBool nonVisible = (0 != (id & KScutFlagBitNonVisible));
-
- if (aCheckType == EScutCheckBkm && shortcut->Type() == EScutBookmark)
- {
- targetChanged = ETrue;
- }
-
- shortcut->SetToBePublished(
- (targetChanged || iPublishAll) &&
- !nonVisible
- );
-
- // Assign overridden icons to shortcuts if needed
- for ( TInt j = 0; j < iIcons.Count(); j++)
- {
- // Check that the appuid and type matches
- if ( shortcut->AppUid() == iIcons[j].iAppUid &&
- shortcut->Type() == iIcons[j].iShortcutType )
- {
- // We need to check also the view id / bkm id if present or otherwise all bookmarks
- // app views would be overridden
- if ( iIcons[j].iViewId.iUid <= 0 ||
- iIcons[j].iViewId == shortcut->AdditionalUid() )
- {
- shortcut->SetIcon(iIcons[j]);
- }
- }
- }
-
- __PRINT( __DBG_FORMAT( "XAI: id = 0x%x, type = %d, publish = %d"),
- shortcut->Id(), shortcut->Type(), shortcut->NeedsToBePublished());
- }
-
- iPlugin.PublishShortcutsL(iShortcuts);
-}
-
-// ---------------------------------------------------------------------------
-// Finds the shortcut object with the given id.
-// ---------------------------------------------------------------------------
-//
-TInt CAiScutEngine::FindShortcutIndex(TInt32 aId)
-{
- for (TInt i = 0; i < iShortcuts.Count(); ++i)
- {
- if (iShortcuts[i]->Id() == aId)
- {
- return i;
- }
- }
-
- return KErrNotFound;
-}
-
-// ---------------------------------------------------------------------------
-// Handles the shortcut launch by index.
-// ---------------------------------------------------------------------------
-//
-void CAiScutEngine::HandleLaunchByIndexL(const TDesC& aParam)
-{
- __PRINT( __DBG_FORMAT( "XAI: CAiScutEngine::HandleLaunchByIndexL ('%S')"), &aParam);
- if (aParam.Length() > 0)
- {
- _LIT(KHexPrefix, "0x");
- const TInt prefixLen = 2;
-
- TRadix radix(EDecimal);
- TPtrC ptr(aParam);
-
- if (aParam.Left(prefixLen).CompareC(KHexPrefix) == 0)
- {
- // Strip the '0x' prefix.
- ptr.Set(aParam.Right(aParam.Length() - prefixLen));
-
- radix = EHex;
- }
-
- TLex lexer(ptr);
- TUint32 id;
- if (lexer.Val(id, radix) == KErrNone)
- {
- TInt idx = FindShortcutIndex(id);
- if (idx != KErrNotFound && idx >= 0 && iShortcuts.Count() > idx)
- {
- iShortcuts[idx]->LaunchL();
- }
- }
- }
-}
-// ---------------------------------------------------------------------------
-// Handles the shortcut launch by index.
-// ---------------------------------------------------------------------------
-//
-void CAiScutEngine::HandleLaunchByIndexAlternateL(const TDesC& aParam)
-/**
- * These are the cases at the moment that are handled here.
- * 1) Appshell targeted => Fastswap opened
- */
-{
- __PRINT( __DBG_FORMAT( "XAI: CAiScutEngine::HandleLaunchByIndexAlternateL ('%S')"), &aParam);
- TInt index = IntFromDesc( aParam );
- TInt idx = FindShortcutIndex( index );
- if (idx != KErrNotFound && idx >= 0 && iShortcuts.Count() > idx)
- {
- CAiScutShortcut *scut = iShortcuts[idx];
- // Open fastswap in case appshell was targeted with alternate launch
- if ( scut->AppUid() == KScutAppShellUid )
- {
- OpenFastSwap();
- return;
- }
- // add other special cases here
- /*if ( index == EAiScutSoftKeyLeft )
- {
- // do something
- }*/
- }
-}
-
-// ---------------------------------------------------------------------------
-// Handles the shortcut launch by value.
-// ---------------------------------------------------------------------------
-//
-void CAiScutEngine::HandleLaunchByValueL(const TDesC& aParam)
-{
- __PRINT( __DBG_FORMAT( "XAI: CAiScutEngine::HandleLaunchByIndexL ('%S')"), &aParam);
-
- if (aParam.Length() > 0)
- {
- CAiScutShortcut* shortcut = AiScutFactory::CreateAiScutShortcutLC(0x0, aParam, *this);
- shortcut->CheckAccessL(EScutCheckAll);
- shortcut->LaunchL();
- CleanupStack::PopAndDestroy(shortcut);
- }
-}
-
-// ---------------------------------------------------------------------------
-// Shows the plug-in settings dialog.
-// ---------------------------------------------------------------------------
-//
-void CAiScutEngine::ShowSettingsL(const TDesC& aParam)
-{
- __PRINT( __DBG_FORMAT( "XAI: CAiScutEngine::ShowSettingsL ('%S')"), &aParam);
-
- _LIT(KGeneralSettings, "localapp:0x100058EC?view=0x102750FC");
-
- CAiScutShortcut* shortcut = CAiScutShortcut::NewLC(0x0, KGeneralSettings, *this);
- shortcut->CheckAccessL(EScutCheckAll);
-
- if (aParam.Length() > 0)
- {
- HBufC8* param = CnvUtfConverter::ConvertFromUnicodeToUtf8L(aParam);
- CleanupStack::PushL(param);
-
- const TDesC8& msg(*param);
-
- shortcut->LaunchL(msg);
-
- CleanupStack::PopAndDestroy(param);
- }
- else
- {
- shortcut->LaunchL(KNullDesC8);
- }
-
-
- CleanupStack::PopAndDestroy(shortcut);
-}
-
-// ---------------------------------------------------------------------------
-// Shows the plug-in setting.
-// ---------------------------------------------------------------------------
-//
-void CAiScutEngine::ShowSettingL(const TDesC& aParam)
-{
- __PRINT( __DBG_FORMAT( "XAI: CAiScutEngine::ShowSettingL ('%S')"), &aParam);
-
- _LIT(KGeneralSettings, "localapp:0x100058EC?view=0x102750FC");
-
- CAiScutShortcut* shortcut = CAiScutShortcut::NewLC(0x0, KGeneralSettings, *this);
- shortcut->CheckAccessL(EScutCheckAll);
-
- if (aParam.Length() > 0)
- {
- HBufC8* param = CnvUtfConverter::ConvertFromUnicodeToUtf8L(aParam);
- CleanupStack::PushL(param);
-
- HBufC8* param2 = HBufC8::NewLC(param->Des().Length()+KScutDirectOpen.iTypeLength);
- param2->Des().Copy(param->Des());
- param2->Des().Append(KScutDirectOpen);
- const TDesC8& msg(*param2);
-
- shortcut->LaunchL(msg);
-
- CleanupStack::PopAndDestroy(param2);
- CleanupStack::PopAndDestroy(param);
- }
- else
- {
- shortcut->LaunchL(KNullDesC8);
- }
-
-
- CleanupStack::PopAndDestroy(shortcut);
-}
-
-// ---------------------------------------------------------------------------
-// Opens the fastswap window
-// ---------------------------------------------------------------------------
-//
-void CAiScutEngine::OpenFastSwap()
-{
- RAknUiServer* uiServer = CAknSgcClient::AknSrv();
- if ( uiServer )
- {
- uiServer->MakeTaskListVisible( ETrue );
- }
-}
-
-
-
-// ---------------------------------------------------------------------------
-// Handles PS commands from WSPlugin.
-// ---------------------------------------------------------------------------
-//
-TInt CAiScutEngine::HandlePSCommand(TAny* aAny)
-{
- CAiScutEngine* self = reinterpret_cast< CAiScutEngine* >(aAny);
- TInt err = KErrNone;
- if (self)
- {
- TRAP(err, self->DoHandlePSCommandL());
- }
-
- return err;
-}
-
-// ---------------------------------------------------------------------------
-// Handles call state changes.
-// ---------------------------------------------------------------------------
-//
-TInt CAiScutEngine::CallStateChangeCallback(TAny* /*aAny*/)
-{
- return KErrNone;
-}
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-TUid CAiScutEngine::SoftkeyUid(TUint32 aSoftkeyId)
-{
- TUid uid = KNullUid;
-
- TInt idx = FindShortcutIndex(aSoftkeyId);
- if (idx != KErrNotFound && idx >= 0 && iShortcuts.Count() > idx)
- {
- uid = iShortcuts[idx]->AppUid();
-
- __PRINT( __DBG_FORMAT( "XAI: SoftkeyUid %d app uid = 0x%x"), idx, uid.iUid);
- }
-
- return uid;
-}
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-TBool CAiScutEngine::IsDelayRequired(TUid aAppUid)
-{
- // softkey delay is reuired for these applications because of problems
- // in killing them immediatly after keylock activation.
- if (aAppUid.iUid == KScutBrowserUidValue ||
- aAppUid.iUid == KScutOperatorMenuUidValue ||
- aAppUid.iUid == KScutVideoServicesUidValue ||
- IsNonNative( aAppUid )
- )
- {
- return ETrue;
- }
-
- return EFalse;
-}
-
-// ---------------------------------------------------------------------------
-// Handles PS commands from WSPlugin.
-// ---------------------------------------------------------------------------
-//
-void CAiScutEngine::DoHandlePSCommandL()
-{
- TBuf<RProperty::KMaxPropertySize> command;
- TUint32 lockKeyId = 0;
- iKeyEventObserver->Get(command);
-
- __PRINT( __DBG_FORMAT( "XAI: CAiScutEngine::DoHandlePSCommandL command = '%S'"), &command);
-
- TUid appUid = KNullUid;
-
- if (iFirstLockKey == EStdKeyDevice0)
- {
- appUid = SoftkeyUid(KLeftSoftkeyId);
- lockKeyId = KLeftSoftkeyId;
- }
-
- if (iFirstLockKey == EStdKeyDevice1)
- {
- appUid = SoftkeyUid(KRightSoftkeyId);
- lockKeyId = KRightSoftkeyId;
- }
-
- if (iFirstLockKeyPressed && command.Compare(KAiPSEnableKeyLock) == 0)
- {
- if (appUid != KNullUid)
- {
- TBool isDialog = EFalse;
- TInt idx = 0;
- delete iScutShutter;
- iScutShutter = NULL;
-
- // In case new message shortcut in lockkey
- // we need to dismiss the dialog
- if ( lockKeyId > 0 )
- {
- idx = FindShortcutIndex( lockKeyId );
- if (idx != KErrNotFound)
- {
- switch (iShortcuts[idx]->Type())
- {
- case EScutNewMsgType:
- isDialog = ETrue;
- break;
- default:
- isDialog = EFalse;
- break;
- }
- }
-
- }
- iDelayTimer->Cancel();
- iScutShutter = CAiScutTargetShutter::NewL(iEnv, appUid, iSoftkeyAppRunning, isDialog);
- iScutShutter->StartL();
- }
- }
-
- if (command.Compare(KAiPSSkipKeyLock) == 0)
- {
- iDelayTimer->Cancel();
- return ;
- }
- else if (command.Compare(KAiPSKeyLockTimeout) == 0)
- {
- if (iFirstLockKeyPressed)
- {
- iFirstLockKeyPressed = EFalse;
-
- if (iFirstLockKey == EStdKeyDevice0)
- {
- if (IsDelayRequired(appUid))
- {
- HandleLaunchByIndexL(KLeftSoftkey);
- }
- return ;
- }
-
- if (iFirstLockKey == EStdKeyDevice1)
- {
- if (IsDelayRequired(appUid))
- {
- HandleLaunchByIndexL(KRightSoftkey);
- }
- return ;
- }
- }
- return ;
- }
-
- if (FeatureManager::FeatureSupported(KFeatureIdKeypadNoVoiceKey) &&
- command.Compare(KAiPSSkipNameDialer) == 0)
- {
- HandleLaunchByIndexL(KRightSoftkey);
- return ;
- }
-
- HandleLaunchByValueL(command);
-}
-
-// ---------------------------------------------------------------------------
-// Handles call state changes.
-// ---------------------------------------------------------------------------
-//
-void CAiScutEngine::HandleCallStateChange()
-{
- TInt value = 0;
- TInt err = iCallStateObserver->Get(value);
- iActiveCall = (value > EPSCTsyCallStateNone) && err == KErrNone;
-
- __PRINT( __DBG_FORMAT( "XAI: CAiScutEngine::HandleCallStateChange = %d"), value);
- __PRINT( __DBG_FORMAT( "XAI: iActiveCall = %d"), iActiveCall);
-
- for (TInt i = 0; i < iShortcuts.Count(); ++i)
- {
- iShortcuts[i]->SetCallState(iActiveCall);
- }
-}
-
-// ---------------------------------------------------------------------------
-// Activates TopMost Application
-// ---------------------------------------------------------------------------
-//
-void CAiScutEngine::ActivateTopMostApp()
-{
- // Phone Topmost app as default
- TInt idleAppUid = 0;
- TInt topMostAppId = 0;
-
- RProperty::Get(KPSUidAiInformation, KActiveIdleUid, idleAppUid);
-
- RProperty property;
- TInt err = property.Attach(KPSUidUikon, KUikVideoCallTopApp);
-
- if (err == KErrNone)
- {
- property.Get(topMostAppId);
- }
-
- property.Close();
-
- __PRINT( __DBG_FORMAT( "XAI: ActivateTopMostApp idle uid = 0x%x topmost = 0x%x"), idleAppUid, topMostAppId);
-
- TUid appId(TUid::Uid(topMostAppId));
-
- if(appId == KVideoCallUid)
- {
- const TVwsViewId viewId(appId, appId);
- err = iVwsSession->CreateActivateViewEvent(viewId, KNullUid, KNullDesC8());
-
- __PRINT( __DBG_FORMAT( "XAI: CreateActivateViewEvent = %d"), err);
- }
- else
- {
- const TVwsViewId viewId(appId, KVoiceCallUidViewId);
- err = iVwsSession->CreateActivateViewEvent(viewId, KVoiceCallUidViewId, KNullDesC8());
-
- __PRINT( __DBG_FORMAT( "XAI: CreateActivateViewEvent = %d"), err);
- }
-
-}
-
-// ---------------------------------------------------------------------------
-// From class MFavouritesDbObserver.
-// Handles database event.
-// ---------------------------------------------------------------------------
-//
-void CAiScutEngine::HandleFavouritesDbEventL(RDbNotifier::TEvent aEvent)
-{
- __PRINT( __DBG_FORMAT( "XAI: CAiScutEngine::HandleFavouritesDbEventL aEvent = %d"), aEvent);
-
- if (aEvent == RDbNotifier::ECommit)
- {
- MergeShortcuts(EScutBookmark, ETrue);
- CheckAccessAndPublish(EScutCheckBkm, EFalse);
- }
-}
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-TBool CAiScutEngine::IsMsvSessionNeeded()
-{
- TInt count = iShortcuts.Count();
-
- for (TInt i = 0; i < count; ++i)
- {
- CAiScutShortcut* shortcut = iShortcuts[i];
- TShortcutType type = shortcut->Type();
-
- if (type == EScutNewMessage ||
- type == EScutNewEmail ||
- type == EScutNewSyncMLMail ||
- type == EScutNewPostcard ||
- type == EScutNewAudioMsg ||
- type == EScutNewMsgType ||
- type == EScutMailbox)
- {
- return ETrue;
- }
- }
-
- return EFalse;
-}
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-TBool CAiScutEngine::IsBookmarkObserverNeeded()
-{
- TInt count = iShortcuts.Count();
-
- for (TInt i = 0; i < count; ++i)
- {
- CAiScutShortcut* shortcut = iShortcuts[i];
- if (shortcut->Type() == EScutBookmark)
- {
- return ETrue;
- }
- }
-
- return EFalse;
-}
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-TBool CAiScutEngine::GetAppTitle(
- const TUid& aAppUid, const TUid& aViewId, TDes& aTitle, TAiScutAppTitleType aType)
-{
- TBool ret = EFalse;
- TInt count = iAppTitleList.Count();
-
- for (TInt i = 0; i < count; i++)
- {
- TAiScutAppTitleEntry entry = iAppTitleList[i];
-
- if (entry.iAppUid == aAppUid && entry.iViewId == aViewId)
- {
- switch (aType)
- {
- case EAiScutLongTitle:
- if (entry.iLongTitle)
- {
- aTitle = *entry.iLongTitle;
- ret = ETrue;
- }
- break;
-
- case EAiScutShortTitle:
- if (entry.iShortTitle)
- {
- aTitle = *entry.iShortTitle;
- ret = ETrue;
- }
- break;
-
- case EAiScutSkeyTitle:
- if (entry.iSkeyTitle)
- {
- aTitle = *entry.iSkeyTitle;
- ret = ETrue;
- }
- break;
-
- case EAiScutMskTitle:
- if (entry.iMskTitle)
- {
- aTitle = *entry.iMskTitle;
- ret = ETrue;
- }
- break;
- default :
- break;
- }
-
- break; // break the for loop
- }
- }
-
- if (! ret) __PRINT( __DBG_FORMAT( "XAI: GetAppTitle NOT found for uid = 0x%x"), aAppUid);
-
- return ret;
-}
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-void CAiScutEngine::LoadAppTitleListL()
-{
- TResourceReader reader;
- iEnv->CreateResourceReaderLC(reader, R_SCUT_APP_TITLE_LIST);
-
- TInt items = reader.ReadInt16();
-
- __PRINT( __DBG_FORMAT( "XAI: LoadAppTitleListL items = %d"), items);
-
- TUid appuid;
- TUid viewid;
-
- for (TInt i = 0; i < items; i++)
- {
- appuid.iUid = reader.ReadInt32();
- viewid.iUid = reader.ReadInt32();
-
- HBufC16* longTitle = reader.ReadHBufC16L();
- CleanupStack::PushL(longTitle);
-
- HBufC16* shortTitle = reader.ReadHBufC16L();
- CleanupStack::PushL(shortTitle);
-
- HBufC16* skeyTitle = reader.ReadHBufC16L();
- CleanupStack::PushL(skeyTitle);
-
- HBufC16* mskTitle = reader.ReadHBufC16L();
- CleanupStack::PushL(mskTitle);
-
- TAiScutAppTitleEntry entry;
-
- entry.iAppUid = appuid;
- entry.iViewId = viewid;
- entry.iLongTitle = longTitle;
- entry.iShortTitle = shortTitle;
- entry.iSkeyTitle = skeyTitle;
- entry.iMskTitle = mskTitle;
-
- User::LeaveIfError(iAppTitleList.Append(entry));
-
- // Title names are deleted in destructor.
- CleanupStack::Pop(4, longTitle);
- }
-
- CleanupStack::PopAndDestroy(); // reader
-}
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-void CAiScutEngine::GetHiddenAppsL()
-{
- HBufC* buffer = HBufC::NewLC(
- NCentralRepositoryConstants::KMaxUnicodeStringLength);
- TPtr bufferPtr = buffer->Des();
-
- iHiddenAppsRepository->Get(KMenuHideApplication, bufferPtr);
-
- __PRINT( __DBG_FORMAT( "XAI: CAiScutSettingsModel::GetHiddenAppsL '%S' "), buffer);
-
- iHiddenApps.Reset();
- TAiScutAppUidParser uidParser(bufferPtr, iHiddenApps);
- uidParser.ParseL();
-
- CleanupStack::PopAndDestroy(buffer);
-}
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-TBool CAiScutEngine::IsHiddenFromFSW( const TUid& aAppUid )
-{
- const TUid KPSUidUikon = { 0x101F8773 };
- const TUint32 KUikAppHiddenList = 0x00000010;
- const TInt KMaxHiddenApps = 25;
-
- TBuf16 <2*KMaxHiddenApps> retrievedList;
- TInt err = RProperty::Get( KPSUidUikon, KUikAppHiddenList,
-retrievedList );
- TInt i = 0;
-
- TUint32 listValue;
- while( i < KMaxHiddenApps && KErrNone == err )
- {
- // 32-bit uid values are retrieved in two 16-bit parts
- listValue = retrievedList[2*i] << 16;
- listValue += retrievedList[2*i+1];
-
- if ( listValue )
- {
- TUid t ( KNullUid );
- t.iUid = listValue;
- if( t == aAppUid )
- {
- return ETrue;
- }
- }
- else
- {
- err = KErrEof;
- return EFalse;
- }
- i++;
- }
- return EFalse;
-}
-// ---------------------------------------------------------------------------
-// Adds an override icon to iIcons array in case the same icon
-// isn't there already
-// ---------------------------------------------------------------------------
-//
-TInt CAiScutEngine::AddOverrideIcon( TAiScutIcon &aIcon )
- {
- TBool foundExisting = EFalse;
-
- for ( TInt i = 0; i < iIcons.Count(); i++)
- {
- if ( aIcon.iAppUid == iIcons[i].iAppUid &&
- aIcon.iShortcutType == iIcons[i].iShortcutType &&
- aIcon.iViewId == iIcons[i].iViewId &&
- aIcon.iDestination == iIcons[i].iDestination )
- {
- foundExisting = ETrue;
- break;
- }
- }
- if ( !foundExisting )
- {
- return iIcons.Append( aIcon );
- }
- return KErrNone;
- }
-// End of File.
--- a/idlefw/plugins/shortcutplugin/src/caiscutengineext.cpp Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,326 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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: Shortcut plug-in engine extension
-*
-*/
-
-#include <gslauncher.h>
-#include <gulicon.h>
-#include <viewcli.h>
-#include <coemain.h>
-
-#include <aiscutextdefs.h>
-
-#include "caiscutengineext.h"
-#include "caiscutextserver.h"
-#include "taiscutparser.h"
-#include "caiscutshortcut.h"
-#include "caiscutplugin.h"
-#include "aiscutcontentmodel.h"
-#include "caiscutextdata.h"
-#include "caiscutextdatamodel.h"
-
-// ======== LOCAL DEFINITIONS ========
-
-namespace
- {
- // LOCAL CONSTANTS
- /**
- * Target id hex format
- */
- _LIT( KTargetIdFormat, "0x%08x" );
-
- /**
- * Maximum length of target id
- */
- const TInt KTargetIdMaxLength = 11;
- }
-
-// ======== MEMBER FUNCTIONS ========
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-CAiScutEngineExt* CAiScutEngineExt::NewL( CAiScutPlugin& aPlugin )
- {
- CAiScutEngineExt* self = new( ELeave ) CAiScutEngineExt( aPlugin );
- CleanupStack::PushL( self );
- self->ConstructL();
- CleanupStack::Pop( self );
- return self;
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-CAiScutEngineExt::~CAiScutEngineExt()
- {
- delete iAiScutExtServer;
- delete iExtDataModel;
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-CAiScutEngineExt::CAiScutEngineExt( CAiScutPlugin& aPlugin )
- : CAiScutEngine( aPlugin )
- {
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-void CAiScutEngineExt::ConstructL()
- {
- CAiScutEngine::ConstructL();
-
- iExtDataModel = CAiScutExtDataModel::NewL();
- iAiScutExtServer = new( ELeave ) CAiScutExtServer( *this, Env()->WsSession() );
- iAiScutExtServer->ConstructL();
- TRAPD( err, iAiScutExtServer->StartL( KAiScutExtServerName ) );
-
- if( err != KErrNone && err != KErrAlreadyExists )
- {
- User::Leave( err );
- }
-
- //Send EAiScutEventGainFocus to the leftmost shortcut in order to put
- //its state machine in correct state
- if( iShortcuts.Count() > 0 )
- {
- static_cast< CAiScutShortcutExt* >( iShortcuts[ 0 ] )->HandleAIEventL(
- EAiScutEventGainFocus );
- }
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-void CAiScutEngineExt::CheckAccessAndPublish( CAiScutShortcut& aShortcut )
- {
- TRAPD( err,
- RAiShortcutArray shortcutArray;
- CleanupClosePushL( shortcutArray );
- shortcutArray.AppendL( &aShortcut );
- aShortcut.SetToBePublished( ETrue );
- iPlugin.PublishShortcutsL( shortcutArray );
- CleanupStack::PopAndDestroy( &shortcutArray );
- );
-
- if( err != KErrNone )
- {
- //Delegate publishing to the original engine
- CAiScutEngine::CheckAccessAndPublish( EScutCheckAll, ETrue );
- }
- }
-
-// ---------------------------------------------------------------------------
-// Handles an event sent by the AI framework.
-// ---------------------------------------------------------------------------
-//
-void CAiScutEngineExt::HandleAiEventL( TInt aEvent, const TDesC& aParam )
- {
- CAiScutShortcutExt* shortcut = FindShortcutById( aParam );
- if( shortcut )
- {
- shortcut->HandleAIEventL( aEvent );
- }
- CAiScutEngine::HandleAiEventL( aEvent, aParam );
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-void CAiScutEngineExt::ResumeL( TBool aPublishAll, TAiTransitionReason aReason )
- {
- TArray<CAiScutExtData*> extDataArray = iExtDataModel->AiScutExtDataArray();
- const TInt count = extDataArray.Count();
- //Iterate extension data items and populate to matching shortcuts.
- //Remove the items that are not used in any shortcut.
- for( TInt i = 0; i < count; i++ )
- {
- CAiScutExtData* extData = extDataArray[ i ];
- const TDesC& targetDefinition = extData->TargetDefinition();
- if( !PopulateExtData( targetDefinition, extData ) )
- {
- iExtDataModel->RemoveAiScutExtData( targetDefinition );
- }
- }
-
- TAiTransitionReason resumeReason = iPlugin.ResumeReason();
- const TInt shortcutCount = iShortcuts.Count();
- for( TInt i = 0; i < shortcutCount; i++ )
- {
- CAiScutShortcutExt* shortcut = static_cast< CAiScutShortcutExt* >
- ( iShortcuts[ i ] );
- shortcut->HandleResumed( resumeReason );
- }
-
- iAiScutExtServer->ResumeL( aReason );
-
- CAiScutEngine::ResumeL( aPublishAll, aReason );
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-void CAiScutEngineExt::HandleSetPopupLineArrayL( const TDesC& aDefinition,
- CDesCArray* aLineArray )
- {
- CAiScutExtData* extData = iExtDataModel->SetPopupLineArrayL(
- aDefinition, aLineArray );
- TBool shortcutsFound = PopulateExtData(
- aDefinition, extData );
- if( !shortcutsFound )
- {
- iExtDataModel->RemoveAiScutExtData( aDefinition );
- }
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-void CAiScutEngineExt::HandleResetPopupLineArrayL( const TDesC& aDefinition )
- {
- CAiScutExtData* extData = iExtDataModel->ResetPopupLineArray( aDefinition );
- TBool shortcutsFound = PopulateExtData(
- aDefinition, extData );
- if( !shortcutsFound )
- {
- iExtDataModel->RemoveAiScutExtData( aDefinition );
- }
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-void CAiScutEngineExt::HandleSetIconL( const TDesC& aDefinition, CGulIcon* aIcon )
- {
- CAiScutExtData* extData = iExtDataModel->SetIconL( aDefinition, aIcon );
- TBool shortcutsFound = PopulateExtData(
- aDefinition, extData );
- if( !shortcutsFound )
- {
- iExtDataModel->RemoveAiScutExtData( aDefinition );
- }
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-void CAiScutEngineExt::HandleResetIconL( const TDesC& aDefinition )
- {
- CAiScutExtData* extData = iExtDataModel->ResetIcon( aDefinition );
- TBool shortcutsFound = PopulateExtData(
- aDefinition, extData );
- if( !shortcutsFound )
- {
- iExtDataModel->RemoveAiScutExtData( aDefinition );
- }
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-TBool CAiScutEngineExt::HandleIsInShortcutsL( const TDesC& aDefinition ) const
- {
- const TInt shortcutCount = iShortcuts.Count();
- for( TInt i = 0; i < shortcutCount; i++ )
- {
- CAiScutShortcutExt* shortcut = static_cast< CAiScutShortcutExt* >
- ( iShortcuts[ i ] );
- TPtrC activeTargetDefinition = shortcut->ActiveTargetDefinition();
- if( activeTargetDefinition.CompareF( aDefinition ) == 0 )
- {
- return ETrue;
- }
- }
-
- return EFalse;
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-void CAiScutEngineExt::HandleIssuePutInShortcutsL( const TDesC& /*aDefinition*/ )
- {
- CGSLauncher* l = CGSLauncher::NewLC();
- l->LaunchGSViewL ( TUid::Uid( AI_UID_ECOM_IMPLEMENTATION_SETTINGS_SCUTPLUGIN ),
- KScutActiveIdleUid,
- KNullDesC8 );
- CleanupStack::PopAndDestroy( l );
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-TBool CAiScutEngineExt::PopulateExtData( const TDesC& aDefinition,
- const MAiScutExtData* aAiScutExtData )
- {
- //Iterate shortcuts and update matching ones with new extData
- TBool shortcutsFound = EFalse;
- const TInt shortcutCount = iShortcuts.Count();
- for( TInt i = 0; i < shortcutCount; i++ )
- {
- CAiScutShortcutExt* shortcut = static_cast< CAiScutShortcutExt* >
- ( iShortcuts[ i ] );
- TPtrC activeTargetDefinition = shortcut->ActiveTargetDefinition();
- if( activeTargetDefinition.CompareF( aDefinition ) == 0 )
- {
- shortcut->SetAiScutExtData( aAiScutExtData );
- shortcutsFound = ETrue;
- }
- }
-
- return shortcutsFound;
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-CAiScutShortcutExt* CAiScutEngineExt::FindShortcutById(
- const TDesC& aId ) const
- {
- const TInt shortcutCount = iShortcuts.Count();
- for( TInt i = 0; i < shortcutCount; i++ )
- {
- CAiScutShortcutExt* shortcut = static_cast< CAiScutShortcutExt* >
- ( iShortcuts[ i ] );
-
- TBuf< KTargetIdMaxLength > id;
- id.Format( KTargetIdFormat, shortcut->Id() );
-
- if( id.CompareF( aId ) == 0 )
- {
- return shortcut;
- }
- }
- return NULL;
- }
-
-// End of File.
--- a/idlefw/plugins/shortcutplugin/src/caiscutextdata.cpp Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,183 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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: Shortcut plug-in engine extension
-*
-*/
-
-
-#include "caiscutextdata.h"
-#include <fbs.h>
-#include <gulicon.h>
-
-// ======== LOCAL DEFINITIONS ========
-
-namespace
- {
- }
-
-// ======== MEMBER FUNCTIONS ========
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-CAiScutExtData* CAiScutExtData::NewL( const TDesC& aTargetDefinition )
- {
- CAiScutExtData* self = CAiScutExtData::NewLC( aTargetDefinition );
- CleanupStack::Pop( self );
- return self;
- }
-
-CAiScutExtData* CAiScutExtData::NewLC( const TDesC& aTargetDefinition )
- {
- CAiScutExtData* self = new( ELeave ) CAiScutExtData;
- CleanupStack::PushL( self );
- self->ConstructL( aTargetDefinition );
- return self;
- }
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-CAiScutExtData::~CAiScutExtData()
- {
- delete iIcon;
- delete iPopupLineArray;
- delete iTargetDefinition;
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-CAiScutExtData::CAiScutExtData()
- {
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-void CAiScutExtData::ConstructL( const TDesC& aTargetDefinition )
- {
- iTargetDefinition = aTargetDefinition.AllocL();
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-const TDesC& CAiScutExtData::TargetDefinition() const
- {
- return *iTargetDefinition;
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-void CAiScutExtData::SwitchPopupLineArray( CDesCArray* aPopupLineArray )
- {
- delete iPopupLineArray;
- iPopupLineArray = aPopupLineArray;
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-void CAiScutExtData::ResetPopupLineArray()
- {
- delete iPopupLineArray;
- iPopupLineArray = NULL;
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-void CAiScutExtData::SwitchIcon( CGulIcon* aIcon )
- {
- delete iIcon;
- iIcon = aIcon;
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-void CAiScutExtData::ResetIcon()
- {
- delete iIcon;
- iIcon = NULL;
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-const MDesCArray* CAiScutExtData::PopupLineArray() const
- {
- return iPopupLineArray;
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-const CGulIcon* CAiScutExtData::Icon() const
- {
- return iIcon;
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-/*
-CGulIcon* CAiScutExtData::DuplicateIconL() const
- {
- if( !iIcon )
- {
- return NULL;
- }
-
- CGulIcon* newIcon = CGulIcon::NewLC();
-
- CFbsBitmap* iconBitmap = iIcon->Bitmap();
- if( iconBitmap && iconBitmap->Handle() != 0 )
- {
- CFbsBitmap* newBitmap = new( ELeave ) CFbsBitmap();
- CleanupStack::PushL( newBitmap );
- User::LeaveIfError( newBitmap->Duplicate( iconBitmap->Handle() ) );
- CleanupStack::Pop( newBitmap );
- newIcon->SetBitmap( newBitmap );
- }
-
- CFbsBitmap* iconMask = iIcon->Mask();
- if( iconMask && iconMask->Handle() != 0 )
- {
- CFbsBitmap* newMask = new( ELeave ) CFbsBitmap();
- CleanupStack::PushL( newMask );
- User::LeaveIfError( newMask->Duplicate( iconMask->Handle() ) );
- CleanupStack::Pop( newMask );
- newIcon->SetMask( newMask );
- }
-
- CleanupStack::Pop( newIcon );
- return newIcon;
- }
-*/
-
-// End of File.
--- a/idlefw/plugins/shortcutplugin/src/caiscutextdatamodel.cpp Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,190 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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: Shortcut plug-in extension data model
-*
-*/
-
-
-#include "caiscutextdatamodel.h"
-#include "caiscutextdata.h"
-
-// ======== LOCAL DEFINITIONS ========
-
-namespace
- {
- }
-
-// ======== MEMBER FUNCTIONS ========
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-CAiScutExtDataModel* CAiScutExtDataModel::NewL()
- {
- CAiScutExtDataModel* self = CAiScutExtDataModel::NewLC();
- CleanupStack::Pop( self );
- return self;
- }
-
-CAiScutExtDataModel* CAiScutExtDataModel::NewLC()
- {
- CAiScutExtDataModel* self = new( ELeave ) CAiScutExtDataModel;
- CleanupStack::PushL( self );
- self->ConstructL();
- return self;
- }
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-CAiScutExtDataModel::~CAiScutExtDataModel()
- {
- iAiScutExtDataArray.ResetAndDestroy();
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-CAiScutExtDataModel::CAiScutExtDataModel()
- {
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-void CAiScutExtDataModel::ConstructL()
- {
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-CAiScutExtData* CAiScutExtDataModel::SetPopupLineArrayL(
- const TDesC& aDefinition, CDesCArray* aLineArray )
- {
- CAiScutExtData* extData = NULL;
- TInt index = FindAiScutExtData( aDefinition );
- if( index != KErrNotFound )
- {
- extData = iAiScutExtDataArray[ index ];
- }
- else
- {
- extData = CreateAiScutExtDataL( aDefinition );
- }
-
- extData->SwitchPopupLineArray( aLineArray ); //Takes ownership
- return extData;
- }
-
-CAiScutExtData* CAiScutExtDataModel::ResetPopupLineArray( const TDesC& aDefinition )
- {
- CAiScutExtData* extData = NULL;
- TInt index = FindAiScutExtData( aDefinition );
- if( index != KErrNotFound )
- {
- extData = iAiScutExtDataArray[ index ];
- if( extData->Icon() )
- {
- extData->ResetPopupLineArray();
- }
- else
- {
- iAiScutExtDataArray.Remove( index );
- delete extData;
- extData = NULL;
- }
- }
- return extData;
- }
-
-CAiScutExtData* CAiScutExtDataModel::SetIconL( const TDesC& aDefinition, CGulIcon* aIcon )
- {
- CAiScutExtData* extData = NULL;
- TInt index = FindAiScutExtData( aDefinition );
- if( index != KErrNotFound )
- {
- extData = iAiScutExtDataArray[ index ];
- }
- else
- {
- extData = CreateAiScutExtDataL( aDefinition );
- }
-
- extData->SwitchIcon( aIcon ); //Takes ownership
- return extData;
- }
-
-CAiScutExtData* CAiScutExtDataModel::ResetIcon( const TDesC& aDefinition )
- {
- CAiScutExtData* extData = NULL;
- TInt index = FindAiScutExtData( aDefinition );
- if( index != KErrNotFound )
- {
- extData = iAiScutExtDataArray[ index ];
- if( extData->PopupLineArray() )
- {
- extData->ResetIcon();
- }
- else
- {
- iAiScutExtDataArray.Remove( index );
- delete extData;
- extData = NULL;
- }
- }
- return extData;
- }
-
-TArray<CAiScutExtData*> CAiScutExtDataModel::AiScutExtDataArray() const
- {
- return iAiScutExtDataArray.Array();
- }
-
-void CAiScutExtDataModel::RemoveAiScutExtData( const TDesC& aDefinition )
- {
- TInt index = FindAiScutExtData( aDefinition );
- if( index != KErrNotFound )
- {
- CAiScutExtData* extData = iAiScutExtDataArray[ index ];
- iAiScutExtDataArray.Remove( index );
- delete extData;
- }
- }
-
-TInt CAiScutExtDataModel::FindAiScutExtData( const TDesC& aDefinition ) const
- {
- const TInt count = iAiScutExtDataArray.Count();
- for( TInt i = 0; i < count; i++ )
- {
- if( iAiScutExtDataArray[ i ]->TargetDefinition().CompareF( aDefinition ) == 0 )
- {
- return i;
- }
- }
- return KErrNotFound;
- }
-
-CAiScutExtData* CAiScutExtDataModel::CreateAiScutExtDataL( const TDesC& aDefinition )
- {
- CAiScutExtData* extData = CAiScutExtData::NewLC( aDefinition );
- iAiScutExtDataArray.AppendL( extData ); //Takes ownership
- CleanupStack::Pop( extData );
- return extData;
- }
-// End of File.
--- a/idlefw/plugins/shortcutplugin/src/caiscutextserver.cpp Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,396 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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: Shortcut plug-in xSP extension server class.
-*
-*/
-
-
-#include <centralrepository.h>
-#include <apgcli.h>
-#include <apadef.h>
-#include <apgwgnam.h>
-#include <bautils.h>
-#include <e32property.h>
-
-#include <aknmessagequerydialog.h>
-#include <StringLoader.h>
-
-#include <aiscutplugindomaincrkeys.h>
-#include <aiscutpluginres.rsg>
-#include <aiscutextdefs.h>
-
-#include "caiscutextserver.h"
-#include "caiscutextsession.h"
-#include "taiscutparser.h"
-#include "caiscutextserver.h"
-#include "activeidle2domainpskeys.h"
-
-
-// Amount of bytes the data buffer increases at a time.
-const TInt KAppsListDataGranularity = 100;
-
-// The length of '0x' in front of a hex literal.
-const TInt KTokenPrefix = 2;
-
-// Index to UID 3
-const TInt KUidIndex = 2;
-
-// Count of characters one UID occupies in CenRep (prefix + 8 digits + spacer)
-const TInt KUidStorageLength = KTokenPrefix + 8 + 1;
-
-_LIT(KUidFormat, "0x%08X ");
-
-_LIT(KResource, "z:\\resource\\aiscutpluginres.rsc");
-
-_LIT(KRomDrive, "z");
-
-
-CLinkParams::CLinkParams(CAiScutExtServer& aServer, HBufC* aTargetDefinition)
- : iServer(aServer)
- {
- iTargetDefinition = aTargetDefinition;
- }
-
-CLinkParams::~CLinkParams()
- {
- delete iTargetDefinition;
- }
-
-// ======== MEMBER FUNCTIONS ========
-
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-CAiScutExtServer::CAiScutExtServer( MAiScutExtMessageHandler& aObserver, RWsSession& aWsSession )
- : CServer2( CActive::EPriorityStandard ), iObserver( aObserver ), iWsSession(aWsSession)
- {
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-void CAiScutExtServer::ConstructL()
-{
- iIdle = CIdle::NewL( EPriorityStandard );
-
- TFileName fileName( KResource );
- CEikonEnv* env = CEikonEnv::Static();
- BaflUtils::NearestLanguageFile( env->FsSession(), fileName );
- iResourceOffset = env->AddResourceFileL( fileName );
-
- ReadAppListL();
-}
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-CAiScutExtServer::~CAiScutExtServer()
- {
- if( iIdle )
- {
- iIdle->Cancel();
- delete iIdle;
- }
-
- CEikonEnv::Static()->DeleteResourceFile( iResourceOffset );
-
- iShowUids.Close();
- iUids.Close();
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-CSession2* CAiScutExtServer::NewSessionL(
- const TVersion& aVersion, const RMessage2& /*aMessage*/ ) const
- {
- TVersion version(
- KAiScutExtServMajorVersionNumber,
- KAiScutExtServMinorVersionNumber,
- KAiScutExtServBuildVersionNumber );
-
- if ( !User::QueryVersionSupported( version, aVersion ) )
- {
- User::Leave( KErrNotSupported );
- }
- CAiScutExtSession* session = new( ELeave ) CAiScutExtSession( iObserver );
- return session;
-}
-
-// ---------------------------------------------------------------------------
-// Read a list of application UIDs which we must not show the tip.
-// ---------------------------------------------------------------------------
-//
-void CAiScutExtServer::ReadAppListL()
- {
- CRepository* repository = CRepository::NewL( KCRUidShortcutItems );
- CleanupStack::PushL( repository );
-
- RBuf buffer;
- buffer.CreateL( KAppsListDataGranularity );
- buffer.CleanupClosePushL();
-
- TInt err = repository->Get( KAIxSPNoTipAppsList, buffer );
- while( err == KErrOverflow )
- {
- buffer.ReAllocL( buffer.MaxLength() + KAppsListDataGranularity );
- err = repository->Get( KAIxSPNoTipAppsList, buffer );
- }
-
- // Handle error silently if reading from Central Repository fails.
- if( err == KErrNone )
- {
- // Parse application UIDs and put them to list.
- TLex lex(buffer);
-
- while( !lex.Eos() )
- {
- TPtrC token( lex.NextToken() );
- if( token.Length() < KTokenPrefix )
- {
- break;
- }
- TLex lexUid( token.Right( token.Length() - KTokenPrefix ) );
-
- TUint32 uid;
- if( lexUid.Val( uid, EHex ) == KErrNone )
- {
- iUids.AppendL( TUid::Uid( uid ) );
- }
- }
- }
-
- CleanupStack::PopAndDestroy(); // buffer
- CleanupStack::PopAndDestroy( repository );
- }
-
-// ---------------------------------------------------------------------------
-// Saves the list of applications UIDs.
-// ---------------------------------------------------------------------------
-//
-void CAiScutExtServer::WriteAppListL()
- {
- CRepository* repository = CRepository::NewL( KCRUidShortcutItems );
- CleanupStack::PushL( repository );
-
- RBuf buffer;
- buffer.CreateL( iUids.Count() * KUidStorageLength );
- buffer.Zero();
- buffer.CleanupClosePushL();
-
- TBuf<KUidStorageLength> uidString;
-
- for(TInt c = 0; c < iUids.Count(); c++)
- {
- uidString.Format( KUidFormat, iUids[c] );
- buffer.Append( uidString ); // Ignore error
- }
-
- User::LeaveIfError( repository->Set( KAIxSPNoTipAppsList, buffer ) );
-
- CleanupStack::PopAndDestroy(); // buffer
- CleanupStack::PopAndDestroy( repository );
- }
-
-// ---------------------------------------------------------------------------
-// Tests if the client has connected us before, i.e. determines if
-// the tip message should be shown.
-// ---------------------------------------------------------------------------
-//
-TBool CAiScutExtServer::HasConnectedBefore( TUid& aUid, const RMessage2& aMessage )
- {
- // First test if the current theme supports the xSP feature
- TInt isXspSupported = EPSAiXspNotSupported;
- TInt err = RProperty::Get( KPSUidAiInformation, KActiveIdleThemeSupportsXsp,
- isXspSupported );
-
- if( err != KErrNone || isXspSupported == EPSAiXspNotSupported)
- {
- // xSP is not supported so don't show the dialog. Also if we could not
- // read the P&S key we won't show the dialog.
- return ETrue;
- }
-
- RThread threadClient;
-
- if( aMessage.Client( threadClient ) != KErrNone )
- {
- // In case of error we report that the client has connected us
- // before in order not to show the dialog.
- return ETrue;
- }
-
- RProcess processClient;
-
- if( threadClient.Process(processClient) != KErrNone )
- {
- // Prevent dialog from showing in case of error.
- return ETrue;
- }
-
- // See if client application is in ROM
- TFileName fileName = processClient.FileName();
- TPtr processDrive( fileName.LeftTPtr( KRomDrive().Length() ) );
- processDrive.LowerCase();
-
- if( processDrive == KRomDrive() )
- {
- // Don't show tip message for ROM clients.
- return ETrue;
- }
-
- TUidType uidType = processClient.Type();
-
- // UID3 of the client process
- TUid uid3( uidType[ KUidIndex ] );
- aUid = uid3;
-
- // See if the uid is already in the list
- if( iUids.Find( uid3 ) != KErrNotFound )
- {
- return ETrue;
- }
-
- return EFalse;
- }
-
-void CAiScutExtServer::ShowTipMessage( TUid aUid )
- {
- if( iShowUids.Find( aUid ) == KErrNotFound )
- {
- iShowUids.Append( aUid );
- iIdle->Cancel();
- iIdle->Start( TCallBack( CAiScutExtServer::IdleCallBack, this ) );
- }
- }
-
-TInt CAiScutExtServer::IdleCallBack(TAny* aParam)
- {
- CAiScutExtServer* p = (CAiScutExtServer*) aParam;
-
- p->iIdle->Cancel();
-
- if( p->iIsForeground )
- {
- TRAP_IGNORE( p->DoShowTipMessageL() );
- }
-
- return KErrNone;
- }
-
-// ---------------------------------------------------------------------------
-// Shows a dialog
-// ---------------------------------------------------------------------------
-//
-void CAiScutExtServer::DoShowTipMessageL()
- {
- // Find out the name of the application
- RApaLsSession als;
- User::LeaveIfError( als.Connect() );
- CleanupClosePushL( als );
-
- while( iShowUids.Count() > 0 && !iIsTipMessageVisible)
- {
- TUid uid = iShowUids[ 0 ];
- TApaAppInfo appInfo;
- User::LeaveIfError( als.GetAppInfo( appInfo, uid ) );
-
- // Prepare the parameters for the link function
- HBufC* definitionBuf = HBufC::NewLC( KMaxDefinitionLength );
- TPtr definition( definitionBuf->Des() );
- definition.Format( KScutFormatApplication, uid );
-
- TBool isInShortcuts = iObserver.HandleIsInShortcutsL( definition );
-
- CLinkParams* params = new( ELeave) CLinkParams( *this, definitionBuf );
- CleanupStack::Pop( definitionBuf );
- CleanupStack::PushL( params );
-
- TCallBack cb(CAiScutExtServer::LinkCallBack, params);
-
- // Read and format tip message from the resource file
- HBufC* messageBuf = StringLoader::LoadLC( R_AI_SC_QUERY_MODIFY_GS, appInfo.iCaption );
- TPtr message( messageBuf->Des() );
-
- // Don't show the tip if the application is already in shortcuts
- if( !isInShortcuts )
- {
- iIsTipMessageVisible = ETrue;
- CAknMessageQueryDialog* note = CAknMessageQueryDialog::NewL( message );
- params->iNote = note;
-
- note->SetLink( cb );
- note->ExecuteLD( R_SCUT_XSPTIP_NOTE );
- iIsTipMessageVisible = EFalse;
- }
-
- // Update the list so we don't show the tip message
- // again for this application.
- iUids.Append( uid ); // Ignore error
- iShowUids.Remove( 0 );
-
- // Save the list of uids to persistant memory.
- WriteAppListL();
-
- CleanupStack::PopAndDestroy( messageBuf );
- CleanupStack::PopAndDestroy( params );
- }
-
- CleanupStack::PopAndDestroy(); // als
- }
-
-// ---------------------------------------------------------------------------
-// Opens the shurtcuts settings view
-// ---------------------------------------------------------------------------
-//
-TInt CAiScutExtServer::LinkCallBack(TAny* aParam)
- {
- CLinkParams* params = (CLinkParams*) aParam;
-
- TRAP_IGNORE(
- params->iServer.iObserver.HandleIssuePutInShortcutsL(
- params->iTargetDefinition->Des() );
- );
-
- return KErrNone;
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-void CAiScutExtServer::ResumeL( TAiTransitionReason aReason )
- {
- switch( aReason )
- {
- case EAiIdleForeground:
- iIsForeground = ETrue;
- DoShowTipMessageL();
- break;
-
- case EAiIdleBackground:
- iIsForeground = EFalse;
- break;
-
- default:
- break;
- }
- }
-
-// End of File.
--- a/idlefw/plugins/shortcutplugin/src/caiscutextsession.cpp Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,296 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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: Shortcut plug-in xSP extension session class.
-*
-*/
-
-
-#include <s32mem.h>
-#include <badesca.h>
-#include <gulicon.h>
-#include <fbs.h>
-
-#include <aiscutextdefs.h>
-
-#include "caiscutextsession.h"
-#include "maiscutextmessagehandler.h"
-
-#include "caiscutextserver.h"
-
-
-// ======== MEMBER FUNCTIONS ========
-
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-CAiScutExtSession::CAiScutExtSession( MAiScutExtMessageHandler& aObserver )
- : iObserver( aObserver )
- {
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-CAiScutExtSession::~CAiScutExtSession()
- {
- CAiScutExtServer* server = const_cast<CAiScutExtServer*>(
- dynamic_cast<const CAiScutExtServer*>( Server() ) );
-
- if( iTargetDefinition && server )
- {
- TRAP_IGNORE(
- iObserver.HandleResetPopupLineArrayL( *iTargetDefinition );
- iObserver.HandleResetIconL( *iTargetDefinition );
- );
- }
-
- delete iTargetDefinition;
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-void CAiScutExtSession::ServiceL( const RMessage2& aMessage )
- {
- CAiScutExtServer* server = const_cast<CAiScutExtServer*>(
- dynamic_cast<const CAiScutExtServer*>( Server() ) );
-
- __ASSERT_ALWAYS( server, User::Leave( KErrCorrupt ) );
-
- TUid uid;
- if( !server->HasConnectedBefore(uid, aMessage) )
- {
- server->ShowTipMessage( uid );
- }
-
- TRAPD( err, DispatchMessageL( aMessage ) );
-
- if( !aMessage.IsNull() )
- {
- aMessage.Complete( err );
- }
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-void CAiScutExtSession::DispatchMessageL( const RMessage2& aMessage )
- {
- switch ( aMessage.Function() )
- {
- case EAiScutExtServSetTargetDefinition:
- {
- SetTargetDefinitionL( aMessage );
- break;
- }
- case EAiScutExtServSetPopupText:
- {
- SetPopupTextL( aMessage );
- break;
- }
- case EAiScutExtServResetPopupText:
- {
- ResetPopupTextL( aMessage );
- break;
- }
- case EAiScutExtServSetIcon:
- {
- SetIconL( aMessage );
- break;
- }
- case EAiScutExtServResetIcon:
- {
- ResetIconL( aMessage );
- break;
- }
- case EAiScutExtServIsInShortcuts:
- {
- IsInShortcutsL( aMessage );
- break;
- }
- case EAiScutExtServIssuePutInShortcuts:
- {
- IssuePutInShortcutsL( aMessage );
- break;
- }
- default:
- {
- User::Leave( KErrNotSupported );
- }
- }
- }
-
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-void CAiScutExtSession::SetTargetDefinitionL( const RMessage2& aMessage )
- {
- HBufC* targetStringBuf = HBufC::NewLC( aMessage.GetDesLengthL( 0 ) );
- TPtr targetString( targetStringBuf->Des() );
- aMessage.ReadL( 0, targetString, 0 );
- delete iTargetDefinition;
- iTargetDefinition = targetStringBuf;
- CleanupStack::Pop( targetStringBuf );
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-void CAiScutExtSession::SetPopupTextL( const RMessage2& aMessage )
- {
- if( !iTargetDefinition )
- {
- return;
- }
- HBufC8* marshalledLineArrayBuf = HBufC8::NewLC(
- aMessage.GetDesLengthL( 0 ) );
- TPtr8 marshalledLineArray( marshalledLineArrayBuf->Des() );
- aMessage.ReadL( 0, marshalledLineArray, 0 );
-
- RDesReadStream stream( marshalledLineArray );
- CleanupClosePushL( stream );
-
- const TInt lineCount = stream.ReadUint8L();
- __ASSERT_ALWAYS( lineCount >= 0 && lineCount <= KMaxPopupTextLines,
- User::Leave( KErrArgument ) );
-
- CDesCArray* array = new( ELeave ) CDesCArrayFlat(
- lineCount > 0 ? lineCount : 1 );
- CleanupStack::PushL( array );
-
- for( TInt i = 0; i < lineCount; i++ )
- {
- HBufC* lineBuf = HBufC::NewLC( stream, KMaxTInt );
- array->AppendL( *lineBuf );
- CleanupStack::PopAndDestroy( lineBuf );
- }
-
- iObserver.HandleSetPopupLineArrayL( *iTargetDefinition, array ); //Takes ownership of array
-
- CleanupStack::Pop( array );
- CleanupStack::PopAndDestroy( &stream );
- CleanupStack::PopAndDestroy( marshalledLineArrayBuf );
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-void CAiScutExtSession::ResetPopupTextL( const RMessage2& /*aMessage*/ )
- {
- if( iTargetDefinition )
- {
- iObserver.HandleResetPopupLineArrayL( *iTargetDefinition );
- }
- }
-
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-void CAiScutExtSession::SetIconL( const RMessage2& aMessage )
- {
- if( !iTargetDefinition )
- {
- return;
- }
- HBufC8* marshallBuf = HBufC8::NewLC( aMessage.GetDesLengthL( 0 ) );
- TPtr8 marshalledData( marshallBuf->Des() );
- aMessage.ReadL( 0, marshalledData, 0 );
-
- RDesReadStream stream( marshalledData );
- CleanupClosePushL( stream );
-
- CFbsBitmap* bitmap = new( ELeave ) CFbsBitmap;
- CleanupStack::PushL( bitmap );
- bitmap->InternalizeL( stream );
-
- CFbsBitmap* mask = new( ELeave ) CFbsBitmap;
- CleanupStack::PushL( mask );
- mask->InternalizeL( stream );
-
- CGulIcon* icon = CGulIcon::NewL( bitmap, mask );
- CleanupStack::Pop( 2, bitmap );
- CleanupStack::PushL( icon );
-
- iObserver.HandleSetIconL( *iTargetDefinition, icon );
-
- CleanupStack::Pop( icon );
-
- CleanupStack::PopAndDestroy( &stream );
- CleanupStack::PopAndDestroy( marshallBuf );
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-void CAiScutExtSession::ResetIconL( const RMessage2& /*aMessage*/ )
- {
- if( iTargetDefinition )
- {
- iObserver.HandleResetIconL( *iTargetDefinition );
- }
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-void CAiScutExtSession::IsInShortcutsL( const RMessage2& aMessage )
- {
- if( iTargetDefinition )
- {
- TBool isInShortcuts = iObserver.HandleIsInShortcutsL( *iTargetDefinition );
-
- TPtr8 isInShortcutsDes(
- reinterpret_cast< TUint8* >( &isInShortcuts ),
- sizeof( isInShortcuts ),
- sizeof( isInShortcuts ) );
- aMessage.WriteL( 0, isInShortcutsDes, 0 );
- }
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-void CAiScutExtSession::IssuePutInShortcutsL( const RMessage2& /*aMessage*/ )
- {
- if( iTargetDefinition )
- {
- iObserver.HandleIssuePutInShortcutsL( *iTargetDefinition );
- }
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-void CAiScutExtSession::PanicClient(
- const RMessage2& aMessage, TInt aPanicCode ) const
- {
- aMessage.Panic( KAiScutExtServerName, aPanicCode );
- }
-
-// End of File.
--- a/idlefw/plugins/shortcutplugin/src/caiscutplugin.cpp Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,467 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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: Plug-in main class
-*
-*/
-
-
-#include <ecom/implementationproxy.h>
-#include <centralrepository.h>
-
-#include <aicontentobserver.h>
-#include <aipluginsettings.h>
-
-#include <platform/mw/aiscutuids.hrh>
-#include "aiscutpluginprivatecrkeys.h"
-#include "aiscutdefs.h"
-#include "aiscutcontentmodel.h"
-#include "caiscutplugin.h"
-#include "caiscutengine.h"
-#include "aiscutfactory.h"
-#include "caiscutshortcut.h"
-
-#include "debug.h"
-
-const TImplementationProxy KImplementationTable[] =
-{
- IMPLEMENTATION_PROXY_ENTRY(KImplUidScutPlugin, CAiScutPlugin::NewL)
-};
-
-// ======== MEMBER FUNCTIONS ========
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-CAiScutPlugin::CAiScutPlugin()
-{
-}
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-void CAiScutPlugin::ConstructL()
-{
- // Initialize the info which the fw uses to identify the plug-in.
- // Fill in only the uid at this point, the fw will send this back with the
- // name filled in later through SetPropertyL().
- iInfo.iUid.iUid = AI_UID_ECOM_IMPLEMENTATION_CONTENTPUBLISHER_SCUTPLUGIN;
-
- iContent = AiUtility::CreateContentItemArrayIteratorL(KAiScutContent);
- iResources = AiUtility::CreateContentItemArrayIteratorL(KAiScutResources);
- iEvents = AiUtility::CreateContentItemArrayIteratorL(KAiScutEvents);
-
- CRepository* repository = NULL;
- TRAP_IGNORE(repository = CRepository::NewL(KCRUidShortcutItems));
- // No leaving code here since 'repository' is not in cleanup stack.
- if (repository)
- {
- // A theme might not contain any publishable shortcuts at all, only
- // locked ones. To take this into account we must always delete old
- // theme-default settings to make sure the engine won't create any
- // unwanted shortcut objects. Any errors that might happen during
- // deletion are ignored to make sure the plug-in is kept alive.
- TUint32 errorKey;
-
- repository->Delete(KScutCenRepKeyThemeDefault, KScutCenRepKeyMask, errorKey);
- }
- delete repository;
-}
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-CAiScutPlugin* CAiScutPlugin::NewL()
-{
- CAiScutPlugin* self = new (ELeave) CAiScutPlugin;
- CleanupStack::PushL(self);
- self->ConstructL();
- CleanupStack::Pop(self);
- return self;
-}
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-CAiScutPlugin::~CAiScutPlugin()
-{
- TRAP_IGNORE( DeleteDefaultShortcutsL() );
- Release(iContent);
- Release(iResources);
- Release(iEvents);
- delete iEngine;
- iObservers.Close();
-}
-
-// ---------------------------------------------------------------------------
-// Publishes the given shortcut.
-// ---------------------------------------------------------------------------
-//
-void CAiScutPlugin::PublishShortcutsL(RAiShortcutArray& aShortcuts)
-{
- TInt err = KErrNone;
- TInt observers = iObservers.Count();
- TInt shortcuts = aShortcuts.Count();
-
- for (TInt i = 0; i < observers; ++i)
- {
- MAiContentObserver* observer = iObservers[i];
- TBool transactionStarted = EFalse;
- TInt transactionId = reinterpret_cast<TInt>(this);
- err = observer->StartTransaction(transactionId);
-
- if (err != KErrNotSupported)
- {
- // The observer does not support transactions, check for real errors.
- User::LeaveIfError(err);
- transactionStarted = ETrue;
- }
- err = KErrAlreadyExists;
- for (TInt j = 0; j < shortcuts; j++)
- {
- CAiScutShortcut* shortcut = aShortcuts[j];
-
- if (shortcut->NeedsToBePublished())
- {
- shortcut->Publish(*this, *observer);
- err = KErrNone;
- }
- }
-
- if ( transactionStarted && err == KErrNone )
- {
- User::LeaveIfError(observer->Commit(transactionId));
- }
- else if ( transactionStarted )
- {
- User::LeaveIfError(observer->CancelTransaction(transactionId));
- }
- }
-}
-
-// ---------------------------------------------------------------------------
-// Is plug-in suspended or not.
-// ---------------------------------------------------------------------------
-//
-TBool CAiScutPlugin::IsAlive() const
-{
- return iAlive;
-}
-
-// ---------------------------------------------------------------------------
-// Resume reason
-// ---------------------------------------------------------------------------
-//
-TAiTransitionReason CAiScutPlugin::ResumeReason() const
- {
- return iResumeReason;
- }
-
-// ---------------------------------------------------------------------------
-// From class CAiContentPublisher.
-// Resumes the plug-in.
-// ---------------------------------------------------------------------------
-//
-void CAiScutPlugin::Resume(TAiTransitionReason aReason)
-{
- TRAP_IGNORE(DoResumeL(aReason));
-}
-
-// ---------------------------------------------------------------------------
-// Resumes the plug-in.
-// ---------------------------------------------------------------------------
-//
-void CAiScutPlugin::DoResumeL(TAiTransitionReason aReason)
-{
- __PRINT( __DBG_FORMAT( "XAI: CAiScutPlugin::Resume reason %d alive = %d"), aReason, iAlive);
- iResumeReason = aReason;
- // Reload the engine in case general theme changed or
- // the engine has been suspended.
- if (aReason == EAiGeneralThemeChanged || !iAlive)
- {
- // if general theme changed, free engine so that is will be
- // loaded again because shortcut icons must be re-created.
- FreeEngine();
- }
-
- if (!iEngine)
- {
- iEngine = AiScutFactory::CreateAiScutEngineL(*this);
- }
-
- iEngine->ResumeL( (iAlive == EFalse) ||
- (
- aReason != EAiBacklightOn &&
- aReason != EAiBacklightOff &&
- aReason != EAiIdleBackground &&
- aReason != EAiIdleForeground
- ),
- aReason
- );
-
- iAlive = ETrue;
-}
-
-// ---------------------------------------------------------------------------
-// From class CAiContentPublisher.
-// Suspends the plug-in.
-// ---------------------------------------------------------------------------
-//
-void CAiScutPlugin::Suspend(TAiTransitionReason aReason)
-{
- __PRINT( __DBG_FORMAT( "XAI: CAiScutPlugin::Suspend reason %d"), aReason);
-
- if (iEngine)
- {
- iEngine->Suspend();
- }
-
- iAlive = EFalse;
-}
-
-// ---------------------------------------------------------------------------
-// From class CAiContentPublisher.
-// Frees the plug-in engine.
-// ---------------------------------------------------------------------------
-//
-void CAiScutPlugin::Stop(TAiTransitionReason aReason)
-{
- __PRINT( __DBG_FORMAT( "XAI: CAiScutPlugin::Stop reason %d"), aReason);
-
- if ( aReason == EAiBackupRestoreStarted )
- {
- Suspend( aReason );
- }
- else
- {
- FreeEngine();
- }
-}
-// ---------------------------------------------------------------------------
-// From class CAiContentPublisher.
-// Adds the content observer / subscriber to plug-in.
-// ---------------------------------------------------------------------------
-//
-void CAiScutPlugin::SubscribeL(MAiContentObserver& aObserver)
-{
- iObservers.AppendL(&aObserver);
-}
-
-void CAiScutPlugin::DeleteDefaultShortcutsL()
- {
- // Ignore any errors that might occur when deleting
- // the default keys
- TUint32 errorKey;
- CRepository* cr = CRepository::NewL(KCRUidShortcutItems);
- cr->Delete(KScutCenRepKeyThemeDefault, KScutCenRepKeyMask, errorKey);
- delete cr;
- }
-
-// ---------------------------------------------------------------------------
-// From class CAiContentPublisher.
-// Configures the plug-in.
-// ---------------------------------------------------------------------------
-//
-void CAiScutPlugin::ConfigureL(RAiSettingsItemArray& aSettings)
-{
- CRepository* repository = NULL;
-
- TRAPD(err, repository = CRepository::NewL(KCRUidShortcutItems));
-
- if (err == KErrNotFound)
- {
- // CenRep file is missing from the image, this is a serious error.
- User::Leave(err);
- }
-
- // Write settings if repository was successfully opened. All other errors
- // are ignored to ensure that the plug-in is up and running, even if
- // crippled.
-
- // No leaving code here since 'repository' is not in cleanup stack.
- if (repository)
- {
- repository->StartTransaction(CRepository::EConcurrentReadWriteTransaction);
-
- // A theme might not contain any publishable shortcuts at all, only
- // locked ones. To take this into account we must always delete old
- // theme-default settings to make sure the engine won't create any
- // unwanted shortcut objects. Any errors that might happen during
- // deletion are ignored to make sure the plug-in is kept alive.
- TUint32 errorKey;
-
- repository->Delete(KScutCenRepKeyThemeDefault, KScutCenRepKeyMask, errorKey);
-
- __PRINTS( "XAI: CAiScutPlugin::ConfigureL");
-
- TInt count = aSettings.Count();
- if (count > 0)
- {
- // Write new shortcut definitions.
- for (TInt i = 0; i < count; ++i)
- {
- MAiPluginSettings* settings = aSettings[ i ];
-
- if( settings->AiPluginItemType() == EAiPluginSettingsItem )
- {
- MAiPluginSettingsItem& item = settings->AiPluginSettingsItem();
- TUint32 key = item.Key(); // implicit cast from TInt32 to TUint32.
-
- __PRINT( __DBG_FORMAT( "XAI: %d. key = 0x%x"), i+1, key);
-
- // Add the bit that indicates this is a default shortcut setting.
- key |= KScutFlagBitThemeDefault;
-
- // Ignore possible error and keep going.
- repository->Create(key, item.Value());
- }
- }
- }
-
- TUint32 info = 0;
- repository->CommitTransaction(info);
-
- delete repository;
- repository = NULL;
-
- if (iEngine)
- {
- iEngine->CreateShortcutsL();
- iEngine->ResumeL( ETrue, EAiGeneralThemeChanged );
- }
- }
-
- // We don't need to store the settings so clear the array.
- aSettings.ResetAndDestroy();
-}
-
-// ---------------------------------------------------------------------------
-// From class CAiContentPublisher.
-// Returns the extension interface.
-// ---------------------------------------------------------------------------
-//
-TAny* CAiScutPlugin::Extension(TUid aUid)
-{
- if (aUid == KExtensionUidProperty)
- {
- return static_cast<MAiPropertyExtension*>(this);
- }
- else if (aUid == KExtensionUidEventHandler)
- {
- return static_cast<MAiEventHandlerExtension*>(this);
- }
- else
- {
- return NULL;
- }
-}
-
-// ---------------------------------------------------------------------------
-// From class MAiEventHandlerExtension.
-// Handles an event sent by the AI framework.
-// ---------------------------------------------------------------------------
-//
-void CAiScutPlugin::HandleEvent(TInt aEvent, const TDesC& aParam)
-{
- if (iEngine)
- {
- // We have no way of reporting errors to framework so just ignore them.
- TRAP_IGNORE(iEngine->HandleAiEventL(aEvent, aParam));
- }
-}
-
-// ---------------------------------------------------------------------------
-// CAiScutPlugin::HasMenuItem
-//
-// ---------------------------------------------------------------------------
-//
-TBool CAiScutPlugin::HasMenuItem(const TDesC16& /*aMenuItem*/)
- {
- return EFalse;
- }
-
-// ---------------------------------------------------------------------------
-// From class MAiPropertyExtension
-// Returns a plug-in property.
-// ---------------------------------------------------------------------------
-//
-TAny* CAiScutPlugin::GetPropertyL(TInt aProperty)
-{
- switch (aProperty)
- {
- case EAiPublisherInfo:
- return static_cast<TAiPublisherInfo*>(&iInfo);
-
- case EAiPublisherContent:
- return static_cast<MAiContentItemIterator*>(iContent);
-
- case EAiPublisherResources:
- return static_cast<MAiContentItemIterator*>(iResources);
-
- case EAiPublisherEvents:
- return static_cast<MAiContentItemIterator*>(iEvents);
-
- default:
- break;
- }
-
- return NULL;
-}
-
-// ---------------------------------------------------------------------------
-// From class MAiPropertyExtension
-// Sets a plug-in property to optimize the content model.
-// ---------------------------------------------------------------------------
-//
-void CAiScutPlugin::SetPropertyL(TInt aProperty, TAny* aValue)
- {
- if( aProperty == EAiPublisherInfo )
- {
- ASSERT( aValue );
-
- const TAiPublisherInfo* info(
- static_cast<const TAiPublisherInfo*>( aValue ) );
-
- iInfo = *info;
- }
- }
-
-// ---------------------------------------------------------------------------
-//
-//
-// ---------------------------------------------------------------------------
-//
-void CAiScutPlugin::FreeEngine()
-{
- delete iEngine;
- iEngine = NULL;
- iAlive = EFalse;
-}
-
-// ======== GLOBAL FUNCTIONS ========
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-EXPORT_C const TImplementationProxy* ImplementationGroupProxy(TInt& aTableCount)
-{
- aTableCount = sizeof(KImplementationTable) / sizeof(TImplementationProxy);
- return KImplementationTable;
-}
-
-// End of File.
--- a/idlefw/plugins/shortcutplugin/src/caiscutsettings.cpp Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,435 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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: Shortcut settings plug-in main class.
-*
-*/
-
-
-#include <e32std.h>
-#include <eikmenup.h>
-#include <eikbtgpc.h>
-#include <StringLoader.h>
-#include <gsfwviewuids.h>
-#include <gsprivatepluginproviderids.h>
-#include <bautils.h>
-#include <pathinfo.h>
-#include <hlplch.h>
-#include <featmgr.h>
-#include <e32property.h> // For RProperty
-#include <activeidle2domainpskeys.h> // For KPSUidActiveIdle2
-
-#include <avkon.rsg>
-#include <aiscutsettingsres.rsg>
-#include <aiscuttexts.rsg>
-
-#include "aiscutsettings.hrh"
-#include "caiscutsettings.h"
-#include "caiscutsettingsitem.h"
-#include "caiscutsettingscontainer.h"
-#include "caiscutsettingsmodel.h"
-#include <platform/mw/aiscutuids.hrh>
-#include "aiscutdefs.h"
-#include <aisystemuids.hrh>
-
-const TUid KUidScutSettingsPlugin =
-{
- AI_UID_ECOM_IMPLEMENTATION_SETTINGS_SCUTPLUGIN
-};
-
-_LIT(KScutSettingsResourceFileName, "aiscutsettingsres.rsc");
-_LIT(KScutTextsResourceFileName, "aiscuttexts.rsc");
-_LIT8(KScutDirectOpenTag, "?open");
-
-
-// ======== LOCAL FUNCTIONS ========
-
-
-static void ParseKeysL( const TDesC8& aCustomMessage, RArray<TUint32>& aKeys, TBool& aOpen )
- {
- HBufC8* message = aCustomMessage.AllocLC();
-
- TPtr8 ptr( message->Des() );
-
- TInt pos;
- TInt openPos;
- TBool openTag=EFalse;
-
- do
- {
- pos = ptr.Locate( ',' );
-
- if( pos != KErrNotFound )
- {
- const TDesC8& str1 = ptr.Left( pos );
- const TDesC8& str2 = str1.Right( str1.Length() - 2 );
-
- TUint32 value;
- TLex8 lex( str2 );
-
- if( lex.Val( value, EHex ) == KErrNone )
- {
- aKeys.AppendL( value );
- }
-
- ptr = ptr.MidTPtr( pos + 1 );
- }
- else
- {
- const TDesC8& str1 = ptr;
- const TDesC8& str2 = str1.Right( str1.Length() - 2 );
- openPos = ptr.Find( KScutDirectOpenTag );
- TLex8 lex;
- if( openPos != KErrNotFound )
- {
- openTag=ETrue;
- const TDesC8& str3 = str2.Left( openPos -2 );
- lex.Assign( str3 );
- }
- else
- {
- lex.Assign( str2 );
- }
- TUint32 value;
-
-
- if( lex.Val( value, EHex ) == KErrNone )
- {
- aKeys.AppendL( value );
- }
- }
- }
- while( pos != KErrNotFound );
-
- if( openTag && aKeys.Count() == 1 )
- {
- aOpen = ETrue;
- }
- CleanupStack::PopAndDestroy();
- }
-// ======== MEMBER FUNCTIONS ========
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-CAiScutSettings::CAiScutSettings() : iResourceLoaderTexts(*iCoeEnv)
-{
-}
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-void CAiScutSettings::ConstructL()
-{
- FeatureManager::InitializeLibL();
-
- TParsePtrC driveParse(PathInfo::RomRootPath());
- TFileName resourceName(driveParse.Drive());
-
- // Find the resource file.
- TParse parse;
- parse.Set(KScutSettingsResourceFileName, &KDC_RESOURCE_FILES_DIR, NULL);
- resourceName.Append(parse.FullName());
-
- // Open resource file.
- iResourceLoader.OpenL(resourceName);
-
- resourceName.Copy(driveParse.Drive());
- parse.Set(KScutTextsResourceFileName, &KDC_RESOURCE_FILES_DIR, NULL);
- resourceName.Append(parse.FullName());
-
- // Open resource file.
- iResourceLoaderTexts.OpenL(resourceName);
-
- iModel = CAiScutSettingsModel::NewL(*this, iCoeEnv);
-
- iListBoxTimer = CIdle::NewL(CActive::EPriorityHigh);
-
-
- BaseConstructL(R_SCUT_SETTINGS_VIEW);
-}
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-CAiScutSettings* CAiScutSettings::NewL(TAny* /*aInitParams*/)
-{
- CAiScutSettings* self = new (ELeave) CAiScutSettings;
- CleanupStack::PushL(self);
- self->ConstructL();
- CleanupStack::Pop(self);
- return self;
-}
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-CAiScutSettings::~CAiScutSettings()
-{
- FeatureManager::UnInitializeLib();
-
- if( iListBoxTimer )
- {
- iListBoxTimer->Cancel();
- delete iListBoxTimer;
- }
-
- iResourceLoader.Close();
- iResourceLoaderTexts.Close();
-
- delete iModel;
-}
-
-// ---------------------------------------------------------------------------
-// From CAknView
-// Returns view id.
-// ---------------------------------------------------------------------------
-//
-TUid CAiScutSettings::Id() const
-{
- return KUidScutSettingsPlugin;
-}
-
-// ---------------------------------------------------------------------------
-// From CAknView
-// Handles commands.
-// ---------------------------------------------------------------------------
-//
-void CAiScutSettings::HandleCommandL(TInt aCommand)
-{
- switch (aCommand)
- {
- case EAiScutSettingsCmdChange:
- Container()->HandleChangeCommandL();
- break;
-
- case EAknCmdHelp:
- /*
- TUid fwUid = TUid::Uid( AI_UID3_AIFW_COMMON );
- TCoeContextName helpString;
- helpString.Copy( KSET_HLP_HOME_SCREEN_SHORTCUTS );
-
- CArrayFixFlat<TCoeHelpContext>* array =
- new (ELeave) CArrayFixFlat<TCoeHelpContext>(1);
- CleanupStack::PushL( array );
- array->AppendL( TCoeHelpContext( fwUid, helpString ) );
- HlpLauncher::LaunchHelpApplicationL( CCoeEnv::Static()->WsSession(), array );
- CleanupStack::Pop( array );
- */
- break;
-
- case EAknSoftkeyBack:
- if (iAppUi->View(KGSMainViewUid))
- {
- // if we are in GS activate parent plugin view (standby view)...
- iAppUi->ActivateLocalViewL(KGSPrslnPluginUid);
- }
- else
- {
- iAppUi->ActivateLocalViewL(iPrevViewId.iViewUid);
- }
- break;
-
- case EAknSoftkeyExit:
- iAppUi->HandleCommandL(EAknCmdExit);
- break;
-
- default:
- iAppUi->HandleCommandL(aCommand);
- break;
- }
-}
-
-// ----------------------------------------------------------------------------
-// From CAknView
-// First method called by the Avkon framwork
-// ----------------------------------------------------------------------------
-//
-void CAiScutSettings::DoActivateL(const TVwsViewId& aPrevViewId, TUid aCustomMessageId, const TDesC8& aCustomMessage)
-{
-#ifdef MY_DEBUG
- RDebug::Print(_L("XAI: CAiScutSettings::DoActivateL"));
- RDebug::Print(_L("XAI: aCustomMessageId = 0x%08x"), aCustomMessageId.iUid);
- RDebug::Print(_L("XAI: aPrevViewId = 0x%08x"), aPrevViewId.iAppUid.iUid);
-#endif
-
- CEikButtonGroupContainer* cba = Cba();
-
- if (cba)
- {
- if (aCustomMessageId == KScutActiveIdleUid)
- {
- cba->SetCommandSetL(R_SCUT_SOFTKEYS_OPTIONS_EXIT_CHANGE);
- }
- else
- {
- cba->SetCommandSetL(R_SCUT_SOFTKEYS_OPTIONS_BACK_CHANGE);
- }
- cba->DrawDeferred();
- }
-
- CGSBaseView::DoActivateL(aPrevViewId, aCustomMessageId, aCustomMessage);
-
- TBool open=EFalse;
- if( aCustomMessage != KNullDesC8 )
- {
- RArray<TUint32> keys;
- CleanupClosePushL( keys );
-
- ParseKeysL( aCustomMessage, keys, open );
-
- iModel->SetSettingsKeys( keys );
-
- CleanupStack::PopAndDestroy();
- }
-
- iModel->UpdateSettingsContainerL();
-
- if( open )
- {
- /* Let idle timer do this job. */
- iListBoxTimer->Cancel();
- iListBoxTimer->Start(TCallBack(DoHandleListBoxSelectionL, this));
- }
-}
-
-// ----------------------------------------------------------------------------
-// From CAknView
-// Called by the Avkon view framework when closing.
-// ----------------------------------------------------------------------------
-//
-void CAiScutSettings::DoDeactivate()
-{
- iModel->ActivateObservers(EFalse);
-
- // deletes iContainer.
- CGSBaseView::DoDeactivate();
-
- iModel->SetContainer(Container());
-}
-
-void CAiScutSettings::HandleForegroundEventL(TBool /*aForeground*/)
- {
- // No implementation required
- }
-
-// ----------------------------------------------------------------------------
-// From MEikMenuObserver
-// ----------------------------------------------------------------------------
-//
-void CAiScutSettings::DynInitMenuPaneL(
- TInt aResourceId, CEikMenuPane* aMenuPane)
-{
- if (aMenuPane && aResourceId == R_SCUTSETTINGS_MENUPANE)
- {
- if (!FeatureManager::FeatureSupported(KFeatureIdHelp))
- {
- // Disable help if not supported
- aMenuPane->SetItemDimmed(EAknCmdHelp, ETrue);
- }
- if (iModel->MdcaCount() == 0)
- {
- aMenuPane->SetItemDimmed(EAiScutSettingsCmdChange, ETrue);
- }
- }
-}
-
-// ---------------------------------------------------------------------------
-// From CGSPluginInterface. 256
-// ---------------------------------------------------------------------------
-//
-void CAiScutSettings::GetCaptionL(TDes& aCaption) const
-{
- iCoeEnv->ReadResourceL(aCaption, R_SCUT_SETTINGS_VIEW_CAPTION);
-}
-
-// ---------------------------------------------------------------------------
-// From CGSPluginInterface
-// ---------------------------------------------------------------------------
-//
-TInt CAiScutSettings::PluginProviderCategory() const
-{
- return KGSPluginProviderInternal;
-}
-
-// ---------------------------------------------------------------------------
-// From CGSPluginInterface
-// ---------------------------------------------------------------------------
-//
-TBool CAiScutSettings::Visible() const
-{
- return EFalse;
-}
-
-// ---------------------------------------------------------------------------
-// From CGSBaseView
-// Returns view id.
-// ---------------------------------------------------------------------------
-//
-CAiScutSettingsContainer* CAiScutSettings::Container()
-{
- return static_cast<CAiScutSettingsContainer*>(iContainer);
-}
-
-// ---------------------------------------------------------------------------
-// From CGSBaseView
-// ---------------------------------------------------------------------------
-//
-void CAiScutSettings::NewContainerL()
-{
- delete iContainer;
- iContainer = NULL;
-
- iContainer = new (ELeave) CAiScutSettingsContainer();
- Container()->SetModel(iModel);
- iModel->SetContainer(Container());
-}
-
-// ---------------------------------------------------------------------------
-// From CGSBaseView
-// ---------------------------------------------------------------------------
-//
-void CAiScutSettings::HandleListBoxSelectionL()
-{
- Container()->HandleChangeCommandL();
-}
-
-// ---------------------------------------------------------------------------
-// ---------------------------------------------------------------------------
-//
-TBool CAiScutSettings::Activated() const
- {
- return iContainer ? ETrue : EFalse;
- }
-
-// -----------------------------------------------------------------------------
-// CActiveIdleState::DoUpdateSaSetting
-// -----------------------------------------------------------------------------
-//
-TInt CAiScutSettings::DoHandleListBoxSelectionL(TAny* aAny)
- {
- CAiScutSettings* self = static_cast<CAiScutSettings*>(aAny);
- if(self)
- {
- self->iListBoxTimer->Cancel();
- self->HandleListBoxSelectionL();
- }
- return KErrNone;
- }
-
-
-// End of File.
--- a/idlefw/plugins/shortcutplugin/src/caiscutsettingsapplist.cpp Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,1087 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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: Application list for settings listbox
-*
-*/
-
-
-#include <msvuids.h> // For KMsvRootIndexEntryIdValue
-#include <SenduiMtmUids.h>
-#include <StringLoader.h>
-
-#include <aiscutsettingsres.rsg>
-#include <aiscuttexts.rsg>
-
-#include <featmgr.h>
-#include <centralrepository.h>
-#include <settingsinternalcrkeys.h>
-#include <javaregistry.h>
-#include <javaregistryentry.h>
-#include <pathinfo.h>
-
-#include "caiscutsettingsapplist.h"
-#include "taiscutparser.h"
-#include "caiscutsettingsitem.h"
-#include "aiscutdefs.h"
-#include <activeidle2domaincrkeys.h>
-
-#include "debug.h"
-
-using namespace Java;
-
-
-const TInt KDriveAndColon = 2; //drive char and colon string length, e.g. "c:"
-
-// ======== MEMBER FUNCTIONS ========
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-CAiScutSettingsAppList::CAiScutSettingsAppList(CCoeEnv* aEnv, MAiScutListObserver& aObserver)
- : CActive(CActive::EPriorityLow) // Background task priority.
- // Higher priority would block the wait dialog.
- , iEnv(aEnv)
- , iObserver(aObserver)
- {
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-void CAiScutSettingsAppList::ConstructL()
- {
- User::LeaveIfError(iApaSession.Connect());
- iMsvSession = CMsvSession::OpenAsObserverL(*this);
-
- CActiveScheduler::Add(this);
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-CAiScutSettingsAppList* CAiScutSettingsAppList::NewL(CCoeEnv* aEnv,
- MAiScutListObserver& aObserver)
- {
- CAiScutSettingsAppList* self = new (ELeave) CAiScutSettingsAppList(aEnv, aObserver);
- CleanupStack::PushL(self);
- self->ConstructL();
- CleanupStack::Pop(self);
- return self;
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-CAiScutSettingsAppList::~CAiScutSettingsAppList()
- {
- if (IsActive())
- {
- Cancel();
- }
-
- delete iAppNotifier;
- delete iMsvSession;
- iApaSession.Close();
- iListItems.ResetAndDestroy();
- iMailboxes.Close(); // Do not call ResetAndDestroy() to this.
- }
-
-// ---------------------------------------------------------------------------
-// From MDesCArray
-// Returns the number of descriptor elements in a descriptor array.
-// ---------------------------------------------------------------------------
-//
-TInt CAiScutSettingsAppList::MdcaCount() const
- {
- return iListItems.Count();
- }
-
-// ---------------------------------------------------------------------------
-// From MDesCArray
-// Indexes into a descriptor array.
-// ---------------------------------------------------------------------------
-//
-TPtrC CAiScutSettingsAppList::MdcaPoint(TInt aIndex) const
- {
- if (aIndex < 0 || aIndex >= iListItems.Count())
- {
- TPtrC ret(KNullDesC);
- return ret;
- }
- return iListItems[aIndex]->Caption();
- }
-
-// ---------------------------------------------------------------------------
-// From class MMsvSessionObserver.
-// Handles an event from the message server.
-// ---------------------------------------------------------------------------
-//
-void CAiScutSettingsAppList::HandleSessionEventL(
- TMsvSessionEvent aEvent, TAny* /*aArg1*/, TAny* /*aArg2*/, TAny* /*aArg3*/)
- {
- TBool updated = ETrue;
- TBool added = EFalse;
-
- switch (aEvent)
- {
- case EMsvEntriesCreated:
- case EMsvEntriesDeleted:
- case EMsvEntriesChanged:
- if (iObserving)
- {
- CMsvEntry* rootEntry = GetRootEntryL();
-
- CleanupStack::PushL(rootEntry);
- TBuf<255> mailboxId;
-
- // Reset iMailboxes
- for (TInt j = iMailboxes.Count() - 1; j >= 0; --j)
- {
- RemoveMailboxL(iMailboxes[j]->Params());
- }
-
- // Add all mailboxes
- for (TInt i = rootEntry->Count() - 1; i >= 0; --i)
- {
- const TMsvEntry& tentry = (*rootEntry)[i];
-
- if (tentry.iMtm == KSenduiMtmImap4Uid || tentry.iMtm == KSenduiMtmPop3Uid)
- {
- mailboxId.Num(tentry.Id());
- AddMailboxL(tentry.iDetails, mailboxId);
- }
- }
-
- CleanupStack::PopAndDestroy(rootEntry);
- }
-
- if (updated)
- {
- iObserver.HandleScutListEventL(MAiScutListObserver::EAppListUpdated, added);
- }
- break;
-
- default:
- break;
- }
- }
-
-// ---------------------------------------------------------------------------
-// From class MApaAppListServObserver.
-// Handles a change in the application list.
-// ---------------------------------------------------------------------------
-//
-void CAiScutSettingsAppList::HandleAppListEvent(TInt /*aEvent*/)
- {
- TRAP_IGNORE(UpdateAppListL());
- }
-
-// ---------------------------------------------------------------------------
-// Starts the asynchronous application list initialization.
-// ---------------------------------------------------------------------------
-//
-void CAiScutSettingsAppList::StartL()
- {
- iListItems.ResetAndDestroy();
-
- AddStaticItemsL();
- AddMailboxesL();
- AddExtraItemsFromCRL();
-
- if (iApaSession.GetAllApps() == KErrNone &&
- iApaSession.AppCount(iTotalAppCount) == KErrNone)
- {
- CompleteSelf();
- }
- }
-
-// ---------------------------------------------------------------------------
-// Checks if the application list is ready to be shown.
-// ---------------------------------------------------------------------------
-//
-TBool CAiScutSettingsAppList::IsReady() const
- {
- return iReady;
- }
-
-// ---------------------------------------------------------------------------
-// Tells the application list to start or stop observing for changes.
-// ---------------------------------------------------------------------------
-//
-void CAiScutSettingsAppList::SetObservingL(TBool aObserving)
- {
- delete iAppNotifier;
- iAppNotifier = NULL;
-
- if (aObserving)
- {
- UpdateAppListL();
-
- iAppNotifier = CApaAppListNotifier::NewL(this, CActive::EPriorityStandard);
- }
-
- iObserving = aObserving;
- }
-
-// ---------------------------------------------------------------------------
-// Finds the index of the given settings item in the application list.
-// ---------------------------------------------------------------------------
-//
-TInt CAiScutSettingsAppList::FindIndex(CAiScutSettingsItem& aItem)
- {
- TInt index = KErrNotFound;
-
- TAiScutParser parser;
- parser.Parse(aItem.Value());
- TPtrC params(parser.Get(EScutDefParamNameAndValue));
-
- TUid uid = aItem.Uid();
- for (TInt i = iListItems.Count() - 1; i >= 0; --i)
- {
- CAppListItem* item = iListItems[i];
- if ( (item->Uid() == uid) && params.Compare(item->Params()) == 0)
- {
- index = i;
- break;
- }
- // Url => compare the whole url not just the parameters
- else if( item->Type() == EAiScutSettingTypeUrl )
- {
- if ( parser.Get(EScutDefComplete).Compare(item->Params()) == 0 )
- {
- index = i;
- break;
- }
- }
- }
-
- return index;
- }
-
-// ---------------------------------------------------------------------------
-// Returns target application data from the given index.
-// ---------------------------------------------------------------------------
-//
-TInt CAiScutSettingsAppList::GetDataByIndex(TInt aIndex, TUid& aUid,
- TPtrC& aParams, TPtrC& aCaption, TAiScutSettingType& aType ) const
- {
- if (aIndex >= 0 && aIndex < iListItems.Count())
- {
- CAppListItem* item = iListItems[aIndex];
- aUid = item->Uid();
- aType = item->Type();
- aParams.Set(item->Params());
- aCaption.Set(item->Caption());
- return KErrNone;
- }
-
- return KErrNotFound;
- }
-
-// ---------------------------------------------------------------------------
-// From CActive
-// Implements cancellation of an outstanding request.
-// ---------------------------------------------------------------------------
-//
-void CAiScutSettingsAppList::DoCancel()
- {
- }
-
-// ---------------------------------------------------------------------------
-// From CActive
-// Performs one step of the app list initialization.
-// ---------------------------------------------------------------------------
-//
-void CAiScutSettingsAppList::RunL()
- {
- TApaAppInfo appInfo;
- TInt err = GetNextValidApp(appInfo);
-
- switch (err)
- {
- case KErrNone:
- AddApplicationL(appInfo);
- CompleteSelf();
- break;
-
- case RApaLsSession::ENoMoreAppsInList:
- iReady = ETrue;
- iObserver.HandleScutListEventL(MAiScutListObserver::EAppListReady, EFalse);
- break;
-
- //Indicates that an RApaLsSession member function was called before the session's
- // application list is fully populated.
- case RApaLsSession::EAppListInvalid:
- StartL(); // Just try again.
- break;
-
- default:
- User::LeaveIfError(err);
- break;
- }
- }
-
-// ---------------------------------------------------------------------------
-// From CActive
-// Handles an error situation.
-// ---------------------------------------------------------------------------
-//
-TInt CAiScutSettingsAppList::RunError(TInt aError)
- {
- return aError;
- }
-
-// ---------------------------------------------------------------------------
-// Completes own request status to make sure active scheduler calls RunL again.
-// ---------------------------------------------------------------------------
-//
-void CAiScutSettingsAppList::CompleteSelf()
- {
- if (!IsActive())
- {
- TRequestStatus* status = &iStatus;
- User::RequestComplete(status, KErrNone);
- SetActive();
- }
- }
-
-// ---------------------------------------------------------------------------
-// Adds an application to the list.
-// ---------------------------------------------------------------------------
-//
-void CAiScutSettingsAppList::AddApplicationL(TApaAppInfo& aAppInfo)
- {
- TBool allowed = ETrue;
-
- // EasyVoIP is only added when VoIP is supported
- if (aAppInfo.iUid == KScutEasyVoIPApplicationUid)
- {
- // Check VoIP variation status
- TInt voipStatus = 0;
- // For checking VoIP variation status
- CRepository* repository = CRepository::NewL(KCRUidTelephonySettings);
- repository->Get(KDynamicVoIP, voipStatus);
- delete repository;
- allowed = (voipStatus && FeatureManager::FeatureSupported(KFeatureIdCommonVoip));
-
- __PRINTS( "XAI: CAiScutSettingsAppList::AddApplicationL");
- __PRINT( __DBG_FORMAT( "XAI: voipStatus = %d, allowed = %d"), voipStatus, allowed);
- }
-
- // VoIP launcher is always invisible in shortcuts.
- if (aAppInfo.iUid == KScutVoIPLauncherUid)
- {
- allowed = EFalse;
- }
-
- if (iObserver.IsHidden(aAppInfo.iUid))
- {
- allowed = EFalse;
- }
-
- if (allowed)
- {
- CAppListItem* listItem = CAppListItem::NewLC(aAppInfo.iUid, aAppInfo.iCaption);
- listItem->SetType( EAiScutSettingTypeApplication );
- TLinearOrder<CAppListItem> sortMethod(CAppListItem::CompareCaption);
- User::LeaveIfError(iListItems.InsertInOrderAllowRepeats(listItem, sortMethod));
- CleanupStack::Pop(listItem);
- }
- }
-
-// ---------------------------------------------------------------------------
-// Adds the static list items to the application list.
-// ---------------------------------------------------------------------------
-//
-void CAiScutSettingsAppList::AddStaticItemsL()
- {
- HBufC* caption = NULL;
- CAppListItem* listItem = NULL;
- TLinearOrder<CAppListItem> sortMethod(CAppListItem::CompareCaption);
-
- // Connectivity Status item
- caption = StringLoader::LoadLC(R_SCUT_SETTINGS_CONNECTIVITY_STATUS, iEnv);
- listItem = CAppListItem::NewLC(KScutGeneralSettingsUid, *caption);
- listItem->SetParamsL(KScutParamConnectivityView);
- listItem->SetType( EAiScutSettingTypeApplication );
- User::LeaveIfError(iListItems.InsertInOrderAllowRepeats(listItem, sortMethod));
- CleanupStack::Pop(listItem);
- CleanupStack::PopAndDestroy(caption);
- caption = NULL;
- listItem = NULL;
-
- // New Message item.
- caption = StringLoader::LoadLC(R_SCUT_SETTINGS_NEW_MSG, iEnv);
- listItem = CAppListItem::NewLC(KScutMessagingUid, *caption);
- listItem->SetParamsL(KScutParamNewMsg);
- listItem->SetType( EAiScutSettingTypeApplication );
- User::LeaveIfError(iListItems.InsertInOrderAllowRepeats(listItem, sortMethod));
- CleanupStack::Pop(listItem);
- CleanupStack::PopAndDestroy(caption);
- caption = NULL;
- listItem = NULL;
-
- // New Email item.
- caption = StringLoader::LoadLC(R_SCUT_SETTINGS_NEW_EMAIL, iEnv);
- listItem = CAppListItem::NewLC(KScutMessagingUid, *caption);
- listItem->SetParamsL(KScutParamNewEmail);
- listItem->SetType( EAiScutSettingTypeApplication );
- User::LeaveIfError(iListItems.InsertInOrderAllowRepeats(listItem, sortMethod));
- CleanupStack::Pop(listItem);
- CleanupStack::PopAndDestroy(caption);
- caption = NULL;
- listItem = NULL;
-
-#ifdef __SYNCML_DS_EMAIL
- // New SyncML mail item.
- caption = StringLoader::LoadLC(R_SCUT_SETTINGS_NEW_SYNCML_MAIL, iEnv);
- listItem = CAppListItem::NewLC(KScutMessagingUid, *caption);
- listItem->SetParamsL(KScutParamNewSyncMLMail);
- listItem->SetType( EAiScutSettingTypeApplication );
- User::LeaveIfError(iListItems.InsertInOrderAllowRepeats(listItem, sortMethod));
- CleanupStack::Pop(listItem);
- CleanupStack::PopAndDestroy(caption);
- caption = NULL;
- listItem = NULL;
-#endif
-
- if (FeatureManager::FeatureSupported(KFeatureIdMmsPostcard)
- && IsInRom( KScutPostcardEditorUid ) )
- {
- // New Postcard item.
- caption = StringLoader::LoadLC(R_SCUT_SETTINGS_NEW_POSTCARD, iEnv);
- listItem = CAppListItem::NewLC(KScutMessagingUid, *caption);
- listItem->SetParamsL(KScutParamNewPostcard);
- listItem->SetType( EAiScutSettingTypeApplication );
- User::LeaveIfError(iListItems.InsertInOrderAllowRepeats(listItem, sortMethod));
- CleanupStack::Pop(listItem);
- CleanupStack::PopAndDestroy(caption);
- caption = NULL;
- listItem = NULL;
- }
-
- if (FeatureManager::FeatureSupported(KFeatureIdAudioMessaging))
- {
- // New Audio Message item.
- caption = StringLoader::LoadLC(R_SCUT_SETTINGS_NEW_AUDIO_MSG, iEnv);
- listItem = CAppListItem::NewLC(KScutMessagingUid, *caption);
- listItem->SetParamsL(KScutParamNewAudioMsg);
- listItem->SetType( EAiScutSettingTypeApplication );
- User::LeaveIfError(iListItems.InsertInOrderAllowRepeats(listItem, sortMethod));
- CleanupStack::Pop(listItem);
- CleanupStack::PopAndDestroy(caption);
- caption = NULL;
- listItem = NULL;
- }
-
- // Select Message type item.
- caption = StringLoader::LoadLC(R_SCUT_SETTINGS_SELECT_MSG_TYPE, iEnv);
- listItem = CAppListItem::NewLC(KScutMessagingUid, *caption);
- listItem->SetParamsL(KScutParamSelectMsgType);
- listItem->SetType( EAiScutSettingTypeApplication );
- User::LeaveIfError(iListItems.InsertInOrderAllowRepeats(listItem, sortMethod));
- CleanupStack::Pop(listItem);
- CleanupStack::PopAndDestroy(caption);
- caption = NULL;
- listItem = NULL;
- // Installation view.
- caption = StringLoader::LoadLC(R_SCUT_SETTINGS_APPMNGR, iEnv);
- listItem = CAppListItem::NewLC(KScutGeneralSettingsUid, *caption);
- listItem->SetParamsL(KScutParamInstallationsView);
- listItem->SetType( EAiScutSettingTypeApplication );
- User::LeaveIfError(iListItems.InsertInOrderAllowRepeats(listItem, sortMethod));
- CleanupStack::Pop(listItem);
- CleanupStack::PopAndDestroy(caption);
- caption = NULL;
- listItem = NULL;
- }
-
-// ---------------------------------------------------------------------------
-// Adds extra list items to the application list.
-// ---------------------------------------------------------------------------
-//
-void CAiScutSettingsAppList::AddExtraItemsL()
- {
- // No Effect item.
- HBufC* caption = StringLoader::LoadLC(R_SCUT_SETTINGS_NO_EFFECT, iEnv);
- CAppListItem* listItem = CAppListItem::NewLC(KScutSettingsDllUid, *caption);
- listItem->SetParamsL(KScutParamNoEffect);
- listItem->SetType( EAiScutSettingTypeApplication );
- User::LeaveIfError(iListItems.Insert(listItem, 0)); // insert as first item.
- CleanupStack::Pop(listItem);
- CleanupStack::PopAndDestroy(caption);
- }
-
-void CAiScutSettingsAppList::AddExtraItemsFromCRL()
- {
- CRepository *cr = CRepository::NewL( TUid::Uid( KCRUidActiveIdleLV ) );
- User::LeaveIfNull( cr );
-
- CleanupStack::PushL( cr );
-
- TUint32 crKey = KAIExtraShortcutsKeyRangeStart;
- TBool moreSettings = ETrue;
- TInt err = KErrNone;
- TAiScutParser parser;
-
- HBufC* settingValue = HBufC::NewLC(NCentralRepositoryConstants::KMaxUnicodeStringLength);
- TPtr settingValuePtr = settingValue->Des();
-
- while( moreSettings )
- {
- err = cr->Get( crKey++, settingValuePtr );
- if ( err == KErrNone && settingValue->Length() > 0 )
- {
- CAppListItem* listItem = NULL;
- parser.Parse( *settingValue );
-
- // First try to find the custom title
- HBufC* caption = HBufC::NewLC( settingValue->Length() );
- TPtr captionPtr = caption->Des();
- TInt err = parser.CustomTitle( captionPtr );
- TUid appUid = parser.Uid();
-
- if ( err != KErrNone || caption->Length() <= 0 )
- {
- CleanupStack::PopAndDestroy( caption );
- caption = NULL;
- }
-
- if ( !caption )
- {
- // Web address...
- if ( parser.Type() == EScutWebAddress || parser.Type() == EScutUnknown )
- {
- TUriParser parser;
- TInt err = parser.Parse(*settingValue);
-
- if (err == KErrNone)
- {
- // Remove scheme from the url.
- caption = parser.Extract(EUriHost).AllocLC();
- }
- else
- {
- caption = settingValue->AllocLC();
- }
- }
- // ...application. Nothing else supported at the moment
- else
- {
- TApaAppInfo appInfo;
- err = iApaSession.GetAppInfo(appInfo, appUid);
- if (err == KErrNone)
- {
- caption = appInfo.iCaption.AllocLC();
- }
- }
- }
- if ( caption )
- {
- listItem = CAppListItem::NewLC( KNullUid , *caption );
- listItem->SetParamsL( *settingValue );
- listItem->SetType( EAiScutSettingTypeUrl );
- TLinearOrder<CAppListItem> sortMethod(CAppListItem::CompareCaption);
- User::LeaveIfError(iListItems.InsertInOrderAllowRepeats(listItem, sortMethod));
- CleanupStack::Pop( listItem );
- CleanupStack::PopAndDestroy( caption );
- }
- }
- else
- {
- moreSettings = EFalse;
- }
- }
-
-
-
- CleanupStack::PopAndDestroy( settingValue );
- CleanupStack::PopAndDestroy( cr );
- }
-// ---------------------------------------------------------------------------
-// Removes extra list items from the application list.
-// ---------------------------------------------------------------------------
-//
-void CAiScutSettingsAppList::RemoveExtraItemsL()
- {
- // No Effect item.
- CAppListItem* listItem = iListItems[0];
- iListItems.Remove(0);
- if (listItem)
- {
- delete listItem;
- listItem = NULL;
- }
- }
-
-// ---------------------------------------------------------------------------
-// Returns the root entry containing mailboxes.
-// ---------------------------------------------------------------------------
-//
-CMsvEntry* CAiScutSettingsAppList::GetRootEntryL()
- {
- return iMsvSession->GetEntryL(KMsvRootIndexEntryIdValue);
- }
-
-// ---------------------------------------------------------------------------
-// Adds remote mailboxes to the application list.
-// ---------------------------------------------------------------------------
-//
-void CAiScutSettingsAppList::AddMailboxesL()
- {
- CMsvEntry* rootEntry = GetRootEntryL();
-
- CleanupStack::PushL(rootEntry);
- TBuf<255> mailboxId;
-
- for (TInt i = rootEntry->Count() - 1; i >= 0; --i)
- {
- const TMsvEntry& tentry = (*rootEntry)[i];
-
- if (tentry.iMtm == KSenduiMtmImap4Uid || tentry.iMtm == KSenduiMtmPop3Uid)
- {
- mailboxId.Num(tentry.Id());
- AddMailboxL(tentry.iDetails, mailboxId);
- }
- }
-
- CleanupStack::PopAndDestroy(rootEntry);
- }
-
-// ---------------------------------------------------------------------------
-// Adds a mailbox to the list.
-// ---------------------------------------------------------------------------
-//
-void CAiScutSettingsAppList::AddMailboxL(const TDesC& aMailbox, const TDesC& aMailboxId)
-{
- CAppListItem* listItem = CAppListItem::NewLC(KScutMessagingUid, aMailbox);
-
- // Insert params containing mailbox id
- HBufC* params = HBufC::NewLC(KScutParamMailbox().Length() + aMailboxId.Length());
- params->Des().Copy(KScutParamMailbox);
- params->Des().Append(aMailboxId);
- listItem->SetParamsL(*params);
- listItem->SetType( EAiScutSettingTypeApplication );
- CleanupStack::PopAndDestroy(params);
-
- TLinearOrder<CAppListItem> sortMethod(CAppListItem::CompareCaption);
- User::LeaveIfError(iListItems.InsertInOrderAllowRepeats(listItem, sortMethod));
- CleanupStack::Pop(listItem);
- User::LeaveIfError(iMailboxes.Append(listItem));
- listItem = NULL;
-}
-
-// ---------------------------------------------------------------------------
-// Removes a mailbox from the list.
-// ---------------------------------------------------------------------------
-//
-void CAiScutSettingsAppList::RemoveMailboxL(const TDesC& aMailboxParam)
- {
- for (TInt i = iListItems.Count() - 1; i >= 0; --i)
- {
- CAppListItem* listItem = iListItems[i];
- if (aMailboxParam.Compare(listItem->Params()) == 0)
- {
- // Also remove the mailbox from the mailbox array
- for (TInt j = iMailboxes.Count() - 1; j >= 0; --j)
- {
- if (aMailboxParam.Compare(iMailboxes[j]->Params()) == 0)
- {
- iMailboxes.Remove(j);
- }
- }
-
- iListItems.Remove(i);
- delete listItem;
- listItem = NULL;
-
- break;
- }
- }
- }
-
-// ---------------------------------------------------------------------------
-// Gets the next valid application from application architecture server.
-// ---------------------------------------------------------------------------
-//
-TInt CAiScutSettingsAppList::GetNextValidApp(TApaAppInfo& aAppInfo)
- {
- TInt err = KErrNone;
- TBool validAppFound = EFalse;
-
- while (!validAppFound)
- {
- TApaAppInfo appInfo;
- err = iApaSession.GetNextApp(appInfo);
- if (err == KErrNone)
- {
- TApaAppCapabilityBuf capBuf;
- TApaAppCapability cap;
-
- if ((iApaSession.GetAppCapability(capBuf, appInfo.iUid) == KErrNone))
- {
- cap = capBuf();
-
- TInt screenNumber(0);
- err = iApaSession.GetDefaultScreenNumber( screenNumber, appInfo.iUid );
-
- if ((err == KErrNone) && (cap.iAppIsHidden == EFalse) && (screenNumber == 0))
- {
- aAppInfo = appInfo;
- validAppFound = ETrue;
- }
- }
- }
- else
- {
- return err;
- }
- }
-
- return err;
- }
-
-// ---------------------------------------------------------------------------
-// Updates the application list.
-// ---------------------------------------------------------------------------
-//
-void CAiScutSettingsAppList::UpdateAppListL()
- {
- TBool updated = EFalse;
- TBool added = EFalse;
-
- TInt totalAppCount = 0;
-
- if (iApaSession.AppCount(totalAppCount) == KErrNone)
- {
- if (totalAppCount < iTotalAppCount)
- {
- RemoveUninstalledAppFromListL(iTotalAppCount - totalAppCount);
- updated = ETrue;
- added = EFalse;
- }
- else if (totalAppCount > iTotalAppCount)
- {
- AddInstalledAppToListL(totalAppCount - iTotalAppCount);
- updated = ETrue;
- added = ETrue;
- }
-
- iTotalAppCount = totalAppCount;
- }
-
- if (updated)
- {
- iObserver.HandleScutListEventL(MAiScutListObserver::EAppListUpdated, added);
- }
- }
-
-// ---------------------------------------------------------------------------
-// Figures out which application is missing from the list and adds it.
-// ---------------------------------------------------------------------------
-//
-void CAiScutSettingsAppList::AddInstalledAppToListL(TInt aCount)
- {
- TInt added = 0;
- TApaAppInfo appInfo;
- TInt err = GetNextValidApp(appInfo);
-
- while (err == KErrNone)
- {
- TBool found = EFalse;
-
- for (TInt i = iListItems.Count() - 1; i >= 0; --i)
- {
- if (iListItems[i]->Uid() == appInfo.iUid)
- {
- found = ETrue;
- break;
- }
- }
-
- if (!found)
- {
- AddApplicationL(appInfo);
- if (++added == aCount)
- {
- // Found all of them, no need to go further
- return ;
- }
- }
-
- err = GetNextValidApp(appInfo);
- }
-
- // create registry
- CJavaRegistry* registry = CJavaRegistry::NewLC();
-
- // get all uids stored in registry
- RArray<TUid> uids;
- registry->GetRegistryEntryUidsL( uids );
-
- CleanupClosePushL(uids);
-
- for (TInt javaIndex = 0; javaIndex < uids.Count(); ++javaIndex)
- {
- TInt found = EFalse;
- for (TInt listIndex = 0; listIndex < iListItems.Count(); ++listIndex )
- {
- if (iListItems[listIndex]->Uid() == uids[javaIndex])
- {
- found = ETrue;
- }
- }
- if (!found)
- {
- // get registry entry by uid (i.e. the first entry)
- CJavaRegistryEntry* entry =
- registry->RegistryEntryL( uids[javaIndex] );
- if( entry )
- {
- CleanupStack::PushL(entry);
-
- // get entry properties (i.e. name)
- const TDesC& name = entry->Name();
- TUid uid = entry->Uid();
-
- CAppListItem* listItem = CAppListItem::NewLC(uid, name);
- listItem->SetType( EAiScutSettingTypeApplication );
- TLinearOrder<CAppListItem> sortMethod(CAppListItem::CompareCaption);
- if (entry->Type() >= EGeneralApplication)
- {
- User::LeaveIfError(iListItems.InsertInOrderAllowRepeats(listItem, sortMethod));
- ++added;
- }
- else
- {
- delete listItem;
- }
- CleanupStack::Pop(listItem);
-
- CleanupStack::PopAndDestroy(entry);
- }
- if (added == aCount)
- {
- break;
- }
- }
- }
- CleanupStack::PopAndDestroy(); // uids
- CleanupStack::PopAndDestroy(registry);
- }
-
-// ---------------------------------------------------------------------------
-// Figures out which application should not be in the list and removes it.
-// ---------------------------------------------------------------------------
-//
-void CAiScutSettingsAppList::RemoveUninstalledAppFromListL(TInt aCount)
- {
- TInt removed = 0;
-
- for (TInt i = iListItems.Count() - 1; i >= 0; --i)
- {
- CAppListItem* listItem = iListItems[i];
- TApaAppInfo ignored;
- if (iApaSession.GetAppInfo(ignored, listItem->Uid()) == KErrNotFound)
- {
- iListItems.Remove(i);
- delete listItem;
- listItem = NULL;
-
- if (++removed == aCount)
- {
- return ;
- }
- }
- }
- // create registry
- CJavaRegistry* registry = CJavaRegistry::NewLC();
- // get all uids stored in registry
- RArray<TUid> uids;
- registry->GetRegistryEntryUidsL( uids );
-
- CleanupClosePushL(uids);
-
- for (TInt listIndex = iListItems.Count(); listIndex >= 0 ; --listIndex )
- {
- TInt found = EFalse;
- for (TInt javaIndex = 0; javaIndex < uids.Count(); ++javaIndex)
- {
- if (iListItems[listIndex]->Uid() == uids[javaIndex])
- {
- found = ETrue;
- }
- }
- if (!found)
- {
- // Item removed, remove from item list
- CAppListItem* listItem = iListItems[listIndex];
- iListItems.Remove(listIndex);
- delete listItem;
- if (++removed == aCount)
- {
- break;
- }
- }
- }
- CleanupStack::PopAndDestroy(); // uids
- CleanupStack::PopAndDestroy(registry);
- }
-
-TBool CAiScutSettingsAppList::IsNonNative(const TUid& aUid)
- {
- TBool ret = EFalse;
-
- const TUid KMidletAppType = { 0x10210E26 };
- TUid typeuid = KNullUid;
-
- if (KErrNone == iApaSession.GetAppType(typeuid, aUid))
- {
- if (typeuid == KMidletAppType)
- {
- ret = ETrue;
- }
- }
-
- return ret;
- }
-
-
-TBool CAiScutSettingsAppList::IsInRom( const TUid& aUid )
- {
- TBool inROM = EFalse;
-
- TApaAppInfo appInfo;
- if( iApaSession.GetAppInfo( appInfo, aUid ) == KErrNone )
- {
- // Does the full path start with z:
- if( appInfo.iFullName.FindC(
- PathInfo::RomRootPath().Left( KDriveAndColon ) ) >= 0 )
- {
- inROM = ETrue;
- }
- }
- return inROM;
- }
-
-
-// ---------------------------------------------------------------------------
-// Nested class to store individual application list items
-// ---------------------------------------------------------------------------
-//
-CAiScutSettingsAppList::CAppListItem::CAppListItem(TUid aUid) : iUid(aUid)
- {
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-void CAiScutSettingsAppList::CAppListItem::ConstructL(const TDesC& aCaption)
- {
- iCaption = aCaption.AllocL();
- // Defaults to application
- iType = EAiScutSettingTypeApplication;
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-CAiScutSettingsAppList::CAppListItem* CAiScutSettingsAppList::CAppListItem::NewLC(
- TUid aUid, const TDesC& aCaption)
- {
- CAppListItem* self = new (ELeave) CAppListItem(aUid);
- CleanupStack::PushL(self);
- self->ConstructL(aCaption);
- return self;
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-CAiScutSettingsAppList::CAppListItem::~CAppListItem()
- {
- delete iCaption;
- delete iParams;
- }
-
-// ---------------------------------------------------------------------------
-// Compare method used to add the items to the list in sorted order.
-// ---------------------------------------------------------------------------
-//
-TInt CAiScutSettingsAppList::CAppListItem::CompareCaption(const CAppListItem& aFirst,
- const CAppListItem& aSecond)
- {
- return aFirst.iCaption->Des().CompareC(*aSecond.iCaption);
- }
-
-// ---------------------------------------------------------------------------
-// Returns the item target application uid.
-// ---------------------------------------------------------------------------
-//
-TUid CAiScutSettingsAppList::CAppListItem::Uid() const
- {
- return iUid;
- }
-
-// ---------------------------------------------------------------------------
-// Returns the item target application caption.
-// ---------------------------------------------------------------------------
-//
-TPtrC CAiScutSettingsAppList::CAppListItem::Caption() const
- {
- return TPtrC(*iCaption);
- }
-
-// ---------------------------------------------------------------------------
-// Returns the possible parameters for item target.
-// ---------------------------------------------------------------------------
-//
-TPtrC CAiScutSettingsAppList::CAppListItem::Params() const
- {
- TPtrC params;
- if (iParams)
- {
- params.Set(*iParams);
- }
- return params;
- }
-
-// ---------------------------------------------------------------------------
-// Sets the parameters for the item target.
-// ---------------------------------------------------------------------------
-//
-void CAiScutSettingsAppList::CAppListItem::SetParamsL(const TDesC& aParams)
- {
- HBufC* newParams = aParams.AllocL();
- delete iParams;
- iParams = newParams;
- }
-
-TAiScutSettingType CAiScutSettingsAppList::CAppListItem::Type() const
-{
- return iType;
-}
-
-void CAiScutSettingsAppList::CAppListItem::SetType( TAiScutSettingType aType )
-{
- iType = aType;
-}
-// End of File.
--- a/idlefw/plugins/shortcutplugin/src/caiscutsettingsbkmlist.cpp Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,307 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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: Bookmark list for settings listbox
-*
-*/
-
-
-#include <StringLoader.h>
-#include <activefavouritesdbnotifier.h> // For CActiveFavouritesDbNotifier
-
-#include <aiscutsettingsres.rsg>
-#include <aiscuttexts.rsg>
-
-#include "caiscutsettingsmodel.h"
-#include "caiscutsettingsapplist.h"
-#include "caiscutsettingsbkmlist.h"
-#include "taiscutparser.h"
-#include "caiscutsettingsitem.h"
-#include "aiscutdefs.h"
-
-#include "debug.h"
-
-
-_LIT( KText, "bkm=0x%x" );
-const TInt KTBUF16 = 16;
-
-// ======== MEMBER FUNCTIONS ========
-
-CAiScutSettingsBkmList::CAiScutSettingsBkmList(
- CCoeEnv* aEnv,
- CAiScutSettingsModel* aModel,
- MAiScutListObserver& aObserver
- )
- : iEnv(aEnv)
- , iModel(aModel)
- , iObserver(aObserver)
-{
-}
-
-void CAiScutSettingsBkmList::ConstructL()
-{
-}
-
-CAiScutSettingsBkmList* CAiScutSettingsBkmList::NewL(
- CCoeEnv* aEnv,
- CAiScutSettingsModel* aModel,
- MAiScutListObserver& aObserver)
-{
- CAiScutSettingsBkmList* self = new (ELeave) CAiScutSettingsBkmList(
- aEnv, aModel, aObserver);
- CleanupStack::PushL(self);
- self->ConstructL();
- CleanupStack::Pop(self);
- return self;
-}
-
-CAiScutSettingsBkmList::~CAiScutSettingsBkmList()
-{
- iListItems.ResetAndDestroy();
- delete iBookmarkDbObserver;
-}
-
-// ---------------------------------------------------------------------------
-// From MDesCArray
-// Returns the number of descriptor elements in a descriptor array.
-// ---------------------------------------------------------------------------
-//
-TInt CAiScutSettingsBkmList::MdcaCount() const
-{
- return iListItems.Count();
-}
-
-// ---------------------------------------------------------------------------
-// From MDesCArray
-// Indexes into a descriptor array.
-// ---------------------------------------------------------------------------
-//
-TPtrC CAiScutSettingsBkmList::MdcaPoint(TInt aIndex) const
-{
- if (aIndex < 0 || aIndex >= iListItems.Count())
- {
- TPtrC ret(KNullDesC);
- return ret;
- }
- return iListItems[aIndex]->Caption();
-}
-
-// ---------------------------------------------------------------------------
-// Gets bookmark list.
-// ---------------------------------------------------------------------------
-//
-void CAiScutSettingsBkmList::GetBookmarkListL()
-{
- iListItems.ResetAndDestroy();
-
- iModel->ReadBookmarksL();
-
- TInt count = iModel->BookmarkCount();
-
- for (TInt i = count - 1; i >= 0; i--) // newest on top
- {
- CFavouritesItem* item = iModel->GetBookmark(i);
-
- TUid uid = TUid::Uid(item->Uid());
- TPtrC name = item->Name();
-
- AddBookmarkL(uid, name);
- }
-}
-
-// ---------------------------------------------------------------------------
-// Tells the bookmark list to start or stop observing for changes.
-// ---------------------------------------------------------------------------
-//
-void CAiScutSettingsBkmList::SetObservingL(TBool aObserving)
-{
- delete iBookmarkDbObserver;
- iBookmarkDbObserver = NULL;
-
- if (aObserving)
- {
-
- iBookmarkDbObserver = new (ELeave) CActiveFavouritesDbNotifier(
- iModel->FavouritesDb(), *this);
- iBookmarkDbObserver->Start();
- }
-
- iObserving = aObserving;
-}
-
-// ---------------------------------------------------------------------------
-// Finds the index of the given settings item in the bookmark list.
-// ---------------------------------------------------------------------------
-//
-TInt CAiScutSettingsBkmList::FindIndex(CAiScutSettingsItem& aItem)
-{
- TInt index = KErrNotFound;
-
- TAiScutParser parser;
- parser.Parse(aItem.Value());
- TUid uid = parser.ParseUid(parser.Get(EScutDefParamValue));
-
- for (TInt i = iListItems.Count() - 1; i >= 0; --i)
- {
- if (iListItems[i]->Uid() == uid)
- {
- index = i;
- break;
- }
- }
-
- return index;
-}
-
-// ---------------------------------------------------------------------------
-// Returns target bookmark data from the given index.
-// ---------------------------------------------------------------------------
-//
-TInt CAiScutSettingsBkmList::GetDataByIndex(
- TInt aIndex, TPtrC& aParams, TPtrC& aCaption) const
-{
- if (aIndex >= 0 && aIndex < iListItems.Count())
- {
- CBkmListItem* item = iListItems[aIndex];
- aParams.Set(item->Params());
- aCaption.Set(item->Caption());
- return KErrNone;
- }
-
- return KErrNotFound;
-}
-
-// ---------------------------------------------------------------------------
-// Adds an bookmark to the list.
-// ---------------------------------------------------------------------------
-//
-void CAiScutSettingsBkmList::AddBookmarkL(TUid aUid, const TDesC& aCaption)
-{
- CBkmListItem* listItem = CBkmListItem::NewLC(aUid, aCaption);
-
- TBuf<KTBUF16> buf;
- buf.Format( KText, aUid.iUid );
-
- listItem->SetParamsL(buf);
- TLinearOrder<CBkmListItem> sortMethod(CBkmListItem::CompareCaption);
- User::LeaveIfError(iListItems.InsertInOrderAllowRepeats(listItem, sortMethod));
- CleanupStack::Pop(listItem);
-}
-
-// ---------------------------------------------------------------------------
-// Updates the bookmark list.
-// ---------------------------------------------------------------------------
-//
-void CAiScutSettingsBkmList::UpdateBkmListL()
-{
- GetBookmarkListL();
- iObserver.HandleScutListEventL(MAiScutListObserver::EBkmListUpdated, EFalse);
-}
-
-// -----------------------------------------------------------------------------
-// From class MFavouritesDbObserver.
-// Handles database event.
-// -----------------------------------------------------------------------------
-//
-void CAiScutSettingsBkmList::HandleFavouritesDbEventL(RDbNotifier::TEvent aEvent)
-{
- __PRINT( __DBG_FORMAT( "XAI: CAiScutSettingsBkmList::HandleFavouritesDbEventL aEvent = %d"), aEvent);
-
- if (aEvent == RDbNotifier::ECommit)
- {
- UpdateBkmListL();
- }
-}
-
-// ---------------------------------------------------------------------------
-//Nested class to store individual bookmark list items
-// ---------------------------------------------------------------------------
-//
-CAiScutSettingsBkmList::CBkmListItem::CBkmListItem(TUid aUid) : iUid(aUid)
-{
-}
-
-void CAiScutSettingsBkmList::CBkmListItem::ConstructL(const TDesC& aCaption)
-{
- iCaption = aCaption.AllocL();
-}
-
-CAiScutSettingsBkmList::CBkmListItem* CAiScutSettingsBkmList::CBkmListItem::NewLC(
- TUid aUid, const TDesC& aCaption)
-{
- CBkmListItem* self = new (ELeave) CBkmListItem(aUid);
- CleanupStack::PushL(self);
- self->ConstructL(aCaption);
- return self;
-}
-
-CAiScutSettingsBkmList::CBkmListItem::~CBkmListItem()
-{
- delete iCaption;
- delete iParams;
-}
-
-// ---------------------------------------------------------------------------
-// Compare method used to add the items to the list in sorted order.
-// ---------------------------------------------------------------------------
-//
-TInt CAiScutSettingsBkmList::CBkmListItem::CompareCaption(const CBkmListItem& aFirst,
- const CBkmListItem& aSecond)
-{
- return aFirst.iCaption->Des().CompareC(*aSecond.iCaption);
-}
-
-// ---------------------------------------------------------------------------
-// Returns the item target bookmark uid.
-// ---------------------------------------------------------------------------
-//
-TUid CAiScutSettingsBkmList::CBkmListItem::Uid() const
-{
- return iUid;
-}
-
-// ---------------------------------------------------------------------------
-// Returns the item target bookmark caption.
-// ---------------------------------------------------------------------------
-//
-TPtrC CAiScutSettingsBkmList::CBkmListItem::Caption() const
-{
- return TPtrC(*iCaption);
-}
-
-// ---------------------------------------------------------------------------
-// Returns the possible parameters for item target.
-// ---------------------------------------------------------------------------
-//
-TPtrC CAiScutSettingsBkmList::CBkmListItem::Params() const
-{
- TPtrC params;
- if (iParams)
- {
- params.Set(*iParams);
- }
- return params;
-}
-
-// ---------------------------------------------------------------------------
-// Sets the parameters for the item target.
-// ---------------------------------------------------------------------------
-//
-void CAiScutSettingsBkmList::CBkmListItem::SetParamsL(const TDesC& aParams)
-{
- HBufC* newParams = aParams.AllocL();
- delete iParams;
- iParams = newParams;
-}
-
-// End of File.
--- a/idlefw/plugins/shortcutplugin/src/caiscutsettingscontainer.cpp Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,488 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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: Shortcut settings plug-in container.
-*
-*/
-
-
-#include <aknlists.h>
-#include <AknWaitDialog.h>
-#include <aknnotewrappers.h>
-#include <eikbtgpc.h>
-#include <gslistbox.h>
-#include <gsfwviewuids.h>
-//#include <csxhelp/ai.hlp.hrh>
-#include <aknradiobuttonsettingpage.h>
-#include <akntextsettingpage.h>
-#include <centralrepository.h>
-#include <StringLoader.h>
-
-#include <aiscutsettingsres.rsg>
-#include <aiscuttexts.rsg>
-
-#include "caiscutsettingscontainer.h"
-#include "caiscutsettingsmodel.h"
-#include "caiscutsettingsbkmlist.h"
-#include "caiscutsettingsitem.h"
-#include "aiscutpluginprivatecrkeys.h"
-#include "aiscutdefs.h"
-
-const TUid KUidAI = { 0x101F8701 }; // Active Standby Shortcuts help uid
-
-// ======== MEMBER FUNCTIONS ========
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-CAiScutSettingsContainer::CAiScutSettingsContainer()
-{
-}
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-void CAiScutSettingsContainer::ConstructL(const TRect& aRect)
-{
- iListBox = new (ELeave) CAknSettingStyleListBox;
- BaseConstructL(aRect, R_SCUT_SETTINGS_VIEW_TITLE, NULL);
-
- iOldType = EAiScutSettingTypeUndefined;
-
- CheckMiddleSoftkeyLabelL();
-
- iModel->ActivateObservers(ETrue);
-}
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-CAiScutSettingsContainer::~CAiScutSettingsContainer()
-{
- HideWaitNoteDialog();
-}
-
-// ---------------------------------------------------------------------------
-// Sets pointer to settings plug-in model.
-// ---------------------------------------------------------------------------
-//
-void CAiScutSettingsContainer::SetModel(CAiScutSettingsModel* aModel)
-{
- iModel = aModel;
-}
-
-// ---------------------------------------------------------------------------
-// Chandles a setting change command.
-// ---------------------------------------------------------------------------
-//
-void CAiScutSettingsContainer::HandleChangeCommandL()
-{
- if ( iChangeProcessInProgress )
- {
- return;
- }
- TBool changed = EFalse;
- TInt current = iListBox->CurrentItemIndex();
- CAiScutSettingsItem* item = iModel->Item(current);
- if (!item)
- {
- return ;
- }
-
- TUint32 key = item->Key();
- TBool locked = (0 != (key & KScutFlagBitLocked));
-
- if (locked)
- {
- HBufC* text = iCoeEnv->AllocReadResourceLC(R_SCUT_SETTINGS_TXT_FIXED_ITEM);
- CAknInformationNote* note = new (ELeave) CAknInformationNote(ETrue);
- note->ExecuteLD(*text);
- CleanupStack::PopAndDestroy(text);
- }
- else
- {
- TAiScutSettingType oldType = item->Type();
- TInt newType = oldType;
-
- CDesCArrayFlat* array = iCoeEnv->ReadDesC16ArrayResourceL(
- R_SCUT_CHANGE_TO_PAGE_LBX);
- CleanupStack::PushL(array);
-
- CAknListQueryDialog* dialog = new(ELeave)CAknListQueryDialog(&newType);
- CleanupStack::PushL(dialog);
- dialog->PrepareLC(R_SCUT_LISTQUERY_CHANGE_TO_PAGE);
- CleanupStack::Pop(dialog);
- dialog->SetItemTextArray(array);
- dialog->SetOwnershipType(ELbmDoesNotOwnItemArray);
- iChangeProcessInProgress = ETrue;
- if (dialog->RunLD())
- {
- item = iModel->Item(current);
- if (newType == EAiScutSettingTypeUrl)
- {
- changed = HandleUrlChangeCommandL(*item, (newType != oldType));
- }
- else if (newType == EAiScutSettingTypeBookmark)
- {
- changed = HandleBookmarkChangeCommandL(*item, (newType != oldType));
- }
- else
- {
- changed = HandleAppListChangeCommandL(*item, (newType != oldType));
- }
- if ( changed )
- {
- ResetCurrentListL(current);
- }
-
- }
- iChangeProcessInProgress = EFalse;
- CleanupStack::PopAndDestroy(array);
- }
-}
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-TBool CAiScutSettingsContainer::IsChangeDialogShowing()
-{
- return (iAppListDialog || iBkmListDialog || iEditDialog);
-}
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-void CAiScutSettingsContainer::CloseChangeDialog()
-{
- TKeyEvent keyEvent;
-
- keyEvent.iCode = EKeyEscape;
- keyEvent.iScanCode = EStdKeyEscape;
- keyEvent.iModifiers = 0;
- keyEvent.iRepeats = 0;
-
- CCoeControl* dialog = NULL;
-
- if (iAppListDialog)
- {
- dialog = static_cast<CCoeControl*>(iAppListDialog);
- }
- else if (iBkmListDialog)
- {
- dialog = static_cast<CCoeControl*>(iBkmListDialog);
- }
- else if (iEditDialog)
- {
- dialog = static_cast<CCoeControl*>(iEditDialog);
- }
-
- if (dialog)
- {
- TRAP_IGNORE(dialog->OfferKeyEventL(keyEvent, EEventKey));
- }
-}
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-void CAiScutSettingsContainer::ResetCurrentListL(TInt aIndex)
-{
- if (iModel->MdcaCount() == 0)
- {
- iListBox->HandleItemRemovalL();
- }
- else
- {
- iListBox->HandleItemAdditionL();
- }
-
- iListBox->SetCurrentItemIndex(aIndex);
-
- CheckMiddleSoftkeyLabelL();
-}
-
-// ---------------------------------------------------------------------------
-// From CGSBaseContainer
-// Constructs the settings listbox.
-// ---------------------------------------------------------------------------
-//
-void CAiScutSettingsContainer::ConstructListBoxL(TInt /*aResLbxId*/)
-{
- iListBox->ConstructL(this, EAknListBoxSelectionList);
-
- // Set empty listbox's text.
- HBufC* text = iCoeEnv->AllocReadResourceLC(R_SCUT_SETTINGS_TXT_ALL_FIXED);
- iListBox->View()->SetListEmptyTextL(*text);
- CleanupStack::PopAndDestroy(text);
-
- iListBox->Model()->SetItemTextArray(iModel);
- iListBox->Model()->SetOwnershipType(ELbmDoesNotOwnItemArray);
-}
-
-// ---------------------------------------------------------------------------
-// Chandles a setting change command to select application from a list.
-// ---------------------------------------------------------------------------
-//
-TBool CAiScutSettingsContainer::HandleAppListChangeCommandL(CAiScutSettingsItem& aItem,
- TBool /*aNew*/)
-{
-
- TBool changed = EFalse;
-
- iChangeProcessStopped = EFalse;
-
- if (!iModel->AppList()->IsReady())
- {
- ShowWaitNoteDialogL(); // Blocks until applist reports that it is ready.
- }
- // If wait note was "killed" then don't continue the change process
- // If the process is not stopped here it could lead to situation where
- // self is deleted before the ShowWaitNoteDialogL() returns
- if ( iChangeProcessStopped )
- {
- return EFalse;
- }
-
- TUint32 key = aItem.Key();
- TBool optional = (0 != (key & KScutFlagBitOptionallyVisible));
- TBool scrollkey = (0 != ((key & 0xFFFF) < EAiScutSoftKeyLeft));
-
- if (optional && scrollkey)
- {
- iModel->AppList()->AddExtraItemsL();
- }
-
- TInt index = iModel->AppList()->FindIndex(aItem);
- TInt oldIndex = index;
-
- iAppListDialog = new (ELeave) CAknRadioButtonSettingPage(
- R_SCUT_SETTINGS_APPLIST_PAGE, index, iModel->AppList());
-
- iAppListDialog->SetSettingTextL(aItem.Title());
- iAppListDialog->ConstructL();
-
- if (iAppListDialog->ExecuteLD(CAknSettingPage::EUpdateWhenChanged) &&
- index != oldIndex)
- {
- TUid uid;
- TPtrC params;
- TPtrC caption;
- TAiScutSettingType type;
- if (iModel->AppList()->GetDataByIndex(index, uid, params, caption, type) == KErrNone)
- {
- if ( type == EAiScutSettingTypeUrl )
- {
- aItem.ChangeUrlL( params );
- }
- else
- {
- aItem.ChangeApplicationL(uid, params, caption);
- }
- iModel->SaveItemL(aItem);
- changed = ETrue;
- }
- }
-
- if (optional && scrollkey)
- {
- iModel->AppList()->RemoveExtraItemsL();
- }
-
- iAppListDialog = NULL;
- return changed;
-}
-
-// ---------------------------------------------------------------------------
-// Chandles a setting change command to select bookmark from a list.
-// ---------------------------------------------------------------------------
-//
-TBool CAiScutSettingsContainer::HandleBookmarkChangeCommandL(CAiScutSettingsItem& aItem,
- TBool /*aNew*/)
-{
-
- TBool changed = EFalse;
- iModel->BkmList()->GetBookmarkListL();
- TInt index = iModel->BkmList()->FindIndex(aItem);
- TInt oldIndex = index;
-
- iBkmListDialog = new (ELeave) CAknRadioButtonSettingPage(
- R_SCUT_SETTINGS_APPLIST_PAGE, index, iModel->BkmList());
-
- iBkmListDialog->SetSettingTextL(aItem.Title());
- iBkmListDialog->ConstructL();
-
- if (iBkmListDialog->ExecuteLD(CAknSettingPage::EUpdateWhenChanged) &&
- index != oldIndex)
- {
- TPtrC params;
- TPtrC caption;
- if (iModel->BkmList()->GetDataByIndex(index, params, caption) == KErrNone)
- {
- aItem.ChangeBookmarkL(params, caption);
- iModel->SaveItemL(aItem);
- changed = ETrue;
- }
- }
-
- iBkmListDialog = NULL;
- return changed;
-}
-
-// ---------------------------------------------------------------------------
-// Chandles a setting change command to edit an URL.
-// ---------------------------------------------------------------------------
-//
-TBool CAiScutSettingsContainer::HandleUrlChangeCommandL(CAiScutSettingsItem& aItem,
- TBool aNew)
-{
- TBool changed = EFalse;
- HBufC* newUrl = HBufC::NewLC(NCentralRepositoryConstants::KMaxUnicodeStringLength);
- TPtr urlPtr = newUrl->Des();
-
- if (!aNew)
- {
- urlPtr.Copy(aItem.Value());
- }
-
- if (EditTextL(R_SCUT_TYPE_URL_PAGE , urlPtr))
- {
- aItem.ChangeUrlL(urlPtr);
- iModel->SaveItemL(aItem);
- changed = ETrue;
- }
-
- CleanupStack::PopAndDestroy(newUrl);
- return changed;
-}
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-TBool CAiScutSettingsContainer::EditTextL(TInt aResId, TDes& aDes)
-{
- TBool ret = EFalse;
-
- iEditDialog = new (ELeave) CAknTextSettingPage(aResId, aDes);
-
- if (iEditDialog->ExecuteLD(CAknSettingPage::EUpdateWhenChanged))
- {
- if (aDes.Length())
- {
- ret = ETrue;
- }
- }
-
- iEditDialog = NULL;
-
- return ret;
-}
-
-// ---------------------------------------------------------------------------
-// Shows the wait note dialog.
-// ---------------------------------------------------------------------------
-//
-void CAiScutSettingsContainer::ShowWaitNoteDialogL()
-{
- if (!iWaitDialog)
- {
- iWaitDialog = new (ELeave) CAknWaitDialog(
- (reinterpret_cast<CEikDialog**> (&iWaitDialog)),
- ETrue // aVisibilityDelayOff
- );
- iWaitDialog->ExecuteLD(R_SCUT_WAIT_NOTE);
- }
-}
-
-// ---------------------------------------------------------------------------
-// Hides the wait note dialog.
-// ---------------------------------------------------------------------------
-//
-void CAiScutSettingsContainer::HideWaitNoteDialog()
-{
- if (iWaitDialog)
- {
- TRAP_IGNORE(iWaitDialog->ProcessFinishedL()); // deletes the dialog.
- iWaitDialog = NULL;
- }
-}
-
-void CAiScutSettingsContainer::StopShortcutChangeProcess()
-{
- iChangeProcessStopped = ETrue;
- HideWaitNoteDialog();
- if ( IsChangeDialogShowing() )
- {
- CloseChangeDialog();
- }
-}
-
-// ---------------------------------------------------------------------------
-// Gets Help
-// ---------------------------------------------------------------------------
-//
-void CAiScutSettingsContainer::GetHelpContext(TCoeHelpContext& aContext) const
-{
- aContext.iMajor = KUidAI;
- //aContext.iContext = KSET_HLP_PERSONAL_SHORTCUTS; // This is specified in HRH file
-}
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-TKeyResponse CAiScutSettingsContainer::OfferKeyEventL(
- const TKeyEvent& aKeyEvent, TEventCode aType)
-{
- switch (aKeyEvent.iCode)
- {
- case EKeyUpArrow:
- case EKeyDownArrow:
- {
- TKeyResponse resp = iListBox->OfferKeyEventL(aKeyEvent, aType);
- return resp;
- }
-
- case EKeyLeftArrow:
- case EKeyRightArrow:
- // Listbox takes all event even if it doesn't use them:
- return EKeyWasNotConsumed;
-
- default:
- break;
- }
-
- // Now it's iListBox's job to process the key event
- return iListBox->OfferKeyEventL(aKeyEvent, aType);
-}
-
-// ---------------------------------------------------------------------------
-// Checks if there is a need to update the middle softkey label.
-// ---------------------------------------------------------------------------
-//
-void CAiScutSettingsContainer::CheckMiddleSoftkeyLabelL()
-{
- CEikButtonGroupContainer* cba = CEikButtonGroupContainer::Current();
- if (cba)
- {
- cba->MakeCommandVisible(EAiScutSettingsCmdChange, (iModel->MdcaCount() != 0));
- }
-}
-
-// End of File.
--- a/idlefw/plugins/shortcutplugin/src/caiscutsettingsimplementationtable.cpp Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,45 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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: Implementation table for shortcut settings plug-in
-*
-*/
-
-
-#include <e32std.h>
-#include <ecom/implementationproxy.h>
-
-#include "caiscutsettings.h"
-#include <platform/mw/aiscutuids.hrh>
-
-/** Implementation table for shortcut settings plug-in */
-const TImplementationProxy KAiScutSettingsImplementationTable[] =
-{
- IMPLEMENTATION_PROXY_ENTRY(
- AI_UID_ECOM_IMPLEMENTATION_SETTINGS_SCUTPLUGIN, CAiScutSettings::NewL)
-};
-
-
-// ---------------------------------------------------------------------------
-// Gate/factory function.
-// ---------------------------------------------------------------------------
-//
-EXPORT_C const TImplementationProxy* ImplementationGroupProxy(TInt& aTableCount)
-{
- aTableCount =
- sizeof(KAiScutSettingsImplementationTable) /
- sizeof(TImplementationProxy);
- return KAiScutSettingsImplementationTable;
-}
-
-// End of File.
--- a/idlefw/plugins/shortcutplugin/src/caiscutsettingsitem.cpp Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,588 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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: Class for shortcut setting items
-*
-*/
-
-
-
-#include <StringLoader.h>
-#include <centralrepository.h>
-#include <msvuids.h> // For KMsvRootIndexEntryIdValue
-#include <SenduiMtmUids.h>
-#include <uri16.h> // For TUriParser16
-#include <aiscutsettingsres.rsg>
-#include <aiscuttexts.rsg>
-#include "caiscutsettingsitem.h"
-#include "caiscutsettingsmodel.h"
-#include "aiscutpluginprivatecrkeys.h"
-#include "taiscutparser.h"
-#include "aiscutdefs.h"
-#include "aiscutsettings.hrh"
-#include "aidefaultshortcut.h"
-#include "debug.h"
-
-const TInt KMaxBufSize = 250;
-// ======== MEMBER FUNCTIONS ========
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-
-CAiScutSettingsItem::CAiScutSettingsItem(
- CAiScutSettingsModel& aModel,
- TInt aIndex,
- TUint32 aKey)
- : iModel(aModel)
- , iIndex(aIndex)
- , iKey(aKey)
-{
-}
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-void CAiScutSettingsItem::ReadL(CRepository* aRepository)
-{
- if( !aRepository )
- {
- return;
- }
-
- HBufC* buffer = HBufC::NewLC(NCentralRepositoryConstants::KMaxUnicodeStringLength);
- TPtr bufferPtr = buffer->Des();
-
- // try user key first.
- TUint32 key = iKey & KScutBitMaskThemeDefault;
- TInt err = aRepository->Get(key, bufferPtr);
-
- if (err == KErrNone)
- {
- err = ParseValueL(bufferPtr);
- }
-
- if (err == KErrNone)
- {
- iKey = key;
- }
- else
- {
- // if no user key try default key then.
- key = iKey | KScutFlagBitThemeDefault;
- err = aRepository->Get(key, bufferPtr);
- if (err == KErrNone)
- {
- err = ParseValueL(bufferPtr);
- }
-
- }
-
- if (err != KErrNone ||
- (iType == EAiScutSettingTypeApplication && iModel.IsHidden(iUid)))
- {
- HBufC* buf = HBufC::NewLC(NCentralRepositoryConstants::KMaxUnicodeStringLength);
- TPtr bufPtr = buf->Des();
- HBufC* caption = NULL;
-
- // Get the default shortcut uid for key 'key'
- iType = EAiScutSettingTypeApplication;
- TAiDefaultShortcut::GetDefaultShortcut(key, iUid, bufPtr);
-
- err = iModel.GetAppCaption(iUid, bufPtr);
- if (err == KErrNone)
- {
- caption = bufPtr.AllocLC();
- CreateListBoxLineL(*caption);
- CleanupStack::PopAndDestroy(caption);
- }
-
- CleanupStack::PopAndDestroy(buf);
-
- }
-
- delete iValue;
- iValue = NULL;
- iValue = bufferPtr.AllocL();
-
- CleanupStack::PopAndDestroy(buffer);
-
- }
-
- // ---------------------------------------------------------------------------
- //
- // ---------------------------------------------------------------------------
- //
- TInt CAiScutSettingsItem::Save(CRepository* aRepository)
- {
-
- if( !aRepository )
- {
- return KErrGeneral;
- }
-
- iKey = iKey & KScutBitMaskThemeDefault;
-
- TInt err = aRepository->Set(iKey, Value());
-
- return err;
- }
-
-
- // ---------------------------------------------------------------------------
- // Constructs a new settings item leaving it on the cleanup stack.
- // ---------------------------------------------------------------------------
- //
- CAiScutSettingsItem* CAiScutSettingsItem::NewLC(
- CAiScutSettingsModel& aModel,
- TInt aIndex,
- TUint32 aKey)
- {
- CAiScutSettingsItem* self = new (ELeave) CAiScutSettingsItem(
- aModel, aIndex, aKey);
-
- CleanupStack::PushL(self);
- self->ConstructL();
- return self;
- }
-
- // ---------------------------------------------------------------------------
- //
- // ---------------------------------------------------------------------------
- //
- CAiScutSettingsItem* CAiScutSettingsItem::NewLC(
- CAiScutSettingsModel& aModel,
- TInt aIndex,
- TUint32 aKey,
- const TDesC& aValue)
- {
- CAiScutSettingsItem* self = new (ELeave) CAiScutSettingsItem(
- aModel, aIndex, aKey);
-
- CleanupStack::PushL(self);
- self->ConstructL(aValue);
- return self;
- }
-
- // ---------------------------------------------------------------------------
- //
- // ---------------------------------------------------------------------------
- //
- void CAiScutSettingsItem::ConstructL()
- {
-
- }
-
- // ---------------------------------------------------------------------------
- //
- // ---------------------------------------------------------------------------
- //
- void CAiScutSettingsItem::ConstructL(const TDesC& aValue)
- {
- ParseValueL(aValue);
- iValue = aValue.AllocL();
- }
-
- // ---------------------------------------------------------------------------
- //
- // ---------------------------------------------------------------------------
- //
- CAiScutSettingsItem::~CAiScutSettingsItem()
- {
- delete iValue;
- delete iListBoxLine;
- }
-
- // ---------------------------------------------------------------------------
- //
- // ---------------------------------------------------------------------------
- //
- TInt CAiScutSettingsItem::ParseValueL(const TDesC& aValue)
- {
- HBufC* caption = NULL;
- TInt err = KErrNone;
- HBufC* buf = HBufC::NewLC(KMaxBufSize);
- TPtr bufPtr = buf->Des();
-
- TAiScutParser parser;
- parser.Parse(aValue);
-
- TShortcutType type = parser.Type();
-
- iUid = parser.Uid();
- iType = EAiScutSettingTypeApplication;
-
- switch (type)
- {
- case EScutApplication:
- case EScutApplicationWithParams:
- case EScutApplicationView:
- case EScutLogsMissedCallsView:
- case EScutLogsDialledCallsView:
- case EScutLogsReceivedCallsView:
- case EScutLogsMainView:
- err = iModel.GetAppCaption(iUid, bufPtr);
- if (err == KErrNone)
- {
- caption = bufPtr.AllocLC();
- }
- break;
-
- case EScutNewMessage:
- caption = StringLoader::LoadLC(
- R_SCUT_SETTINGS_NEW_MSG, iModel.Env());
- break;
-
- case EScutNewEmail:
- caption = StringLoader::LoadLC(
- R_SCUT_SETTINGS_NEW_EMAIL, iModel.Env());
- break;
-
- #ifdef __SYNCML_DS_EMAIL
- case EScutNewSyncMLMail:
- caption = StringLoader::LoadLC(
- R_SCUT_SETTINGS_NEW_SYNCML_MAIL, iModel.Env());
- break;
- #endif
-
- case EScutNewPostcard:
- caption = StringLoader::LoadLC(
- R_SCUT_SETTINGS_NEW_POSTCARD, iModel.Env());
- break;
-
- case EScutNewAudioMsg:
- caption = StringLoader::LoadLC(
- R_SCUT_SETTINGS_NEW_AUDIO_MSG, iModel.Env());
- break;
-
- case EScutNewMsgType:
- caption = StringLoader::LoadLC(
- R_SCUT_SETTINGS_SELECT_MSG_TYPE, iModel.Env());
- break;
-
- case EScutChangeTheme:
- caption = StringLoader::LoadLC(
- R_SCUT_SETTINGS_CHANGE_THEME, iModel.Env());
- break;
-
- case EScutMailbox:
- {
- err = KErrNotFound;
- // Parse the mailbox id from the definition
- TLex lex(parser.Get(EScutDefParamValue));
- TInt mailboxId = KErrNone;
- lex.Val(mailboxId);
-
- CMsvSession* msvSession = CMsvSession::OpenAsObserverL(*iModel.AppList());
- CleanupStack::PushL(msvSession);
-
- CMsvEntry* rootEntry = msvSession->GetEntryL(KMsvRootIndexEntryIdValue);
- CleanupStack::PushL(rootEntry);
-
- // Searching the mailbox name
- for (TInt i = rootEntry->Count() - 1; i >= 0; --i)
- {
- const TMsvEntry& tentry = (*rootEntry)[i];
-
- if ((tentry.iMtm == KSenduiMtmImap4Uid || tentry.iMtm == KSenduiMtmPop3Uid) &&
- tentry.Id() == mailboxId)
- {
- caption = tentry.iDetails.AllocL();
- err = KErrNone;
- break;
- }
- }
- CleanupStack::PopAndDestroy(rootEntry);
- CleanupStack::PopAndDestroy(msvSession);
- if ( caption )
- {
- CleanupStack::PushL( caption );
- }
- }
- break;
-
- case EScutNoEffect:
- caption = StringLoader::LoadLC(
- R_SCUT_SETTINGS_NO_EFFECT, iModel.Env());
- break;
-
- case EScutConnectivityStatusView:
- caption = StringLoader::LoadLC(
- R_SCUT_SETTINGS_CONNECTIVITY_STATUS, iModel.Env());
- break;
-
- case EScutApplicationManagerView:
- caption = StringLoader::LoadLC(
- R_SCUT_SETTINGS_APPMNGR, iModel.Env());
- break;
-
- case EScutBookmark:
- {
- // aValue = "localapp:0x102750fb?bkm=0x12345678"
- iUid = KScutSettingsDllUid;
- iType = EAiScutSettingTypeBookmark;
- TUid uid = parser.ParseUid(parser.Get(EScutDefParamValue));
- TRAP(err, iModel.GetBkmCaptionL(uid, bufPtr));
- if (err == KErrNone)
- {
- caption = bufPtr.AllocLC();
-
- __PRINT( __DBG_FORMAT( "XAI: CAiScutSettingsItem bkm uid = 0x%x caption = '%S' "),
- uid.iUid, caption);
- }
- }
- break;
-
- case EScutWebAddress:
- default:
- // treat unknown shortcuts as typed urls.
- iUid.iUid = 0;
- iType = EAiScutSettingTypeUrl;
- HBufC* tmp = HBufC::NewLC( aValue.Length() );
- TPtr tmpPtr = tmp->Des();
- TInt err = parser.CustomTitle( tmpPtr );
-
- if ( err != KErrNone || tmp->Length() <= 0 )
- {
- CleanupStack::PopAndDestroy( tmp );
- caption = aValue.AllocLC();
- }
- else
- {
- caption = tmp;
- }
- break;
- }
-
- if (caption)
- {
- CreateListBoxLineL(*caption);
- CleanupStack::PopAndDestroy(caption);
- }
-
- CleanupStack::PopAndDestroy(buf);
- return err;
- }
-
- // ---------------------------------------------------------------------------
- // Changes the setting item target application.
- // ---------------------------------------------------------------------------
- //
- void CAiScutSettingsItem::ChangeApplicationL(TUid aUid, const TDesC& aParams,
- const TDesC& aCaption)
- {
- iUid = aUid;
- iType = EAiScutSettingTypeApplication;
-
- HBufC* newValue = NULL;
- TAiScutParser parser;
- parser.ComposeL(newValue, iUid, aParams);
-
- delete iValue;
- iValue = NULL;
- iValue = newValue;
-
- CreateListBoxLineL(aCaption);
- }
-
- // -----------------------------------------------------------------------------
- // Changes the setting item target bookmark.
- // -----------------------------------------------------------------------------
- //
- void CAiScutSettingsItem::ChangeBookmarkL(const TDesC& aParams, const TDesC& aCaption)
- {
- iUid = KScutSettingsDllUid;
- iType = EAiScutSettingTypeBookmark;
-
- HBufC* newValue = NULL;
- TAiScutParser parser;
- parser.ComposeL(newValue, iUid, aParams);
-
- delete iValue;
- iValue = NULL;
- iValue = newValue;
-
- CreateListBoxLineL(aCaption);
- }
-
- // -----------------------------------------------------------------------------
- // Changes the setting item target url.
- // -----------------------------------------------------------------------------
- //
- void CAiScutSettingsItem::ChangeUrlL(const TDesC& aUrl)
- {
- iUid.iUid = 0;
- iType = EAiScutSettingTypeUrl;
-
- delete iValue;
- iValue = NULL;
- iValue = aUrl.AllocL();
-
- CreateListBoxLineL(*iValue);
- }
-
- // -----------------------------------------------------------------------------
- // Creates a formatted listbox line.
- // -----------------------------------------------------------------------------
- //
- void CAiScutSettingsItem::CreateListBoxLineL(const TDesC& aCaption)
- {
- HBufC* title = CreateItemTitleLC();
-
- TPtrC caption;
- caption.Set(aCaption);
-
- TUriParser parser;
- TInt err = parser.Parse(aCaption);
- if (err == KErrNone)
- {
- // Remove scheme from the url.
- const TDesC& host = parser.Extract(EUriHost);
- if (host.Length())
- {
- caption.Set(host);
- }
- }
-
- // Format (" \t%S\t\t%S") without %S characters.
- TInt formatLength = KSettingListboxLineFormat().Length();
-
- HBufC* listBoxLine =
- HBufC::NewLC(title->Length() + caption.Length() + formatLength);
-
- TPtr ptr = listBoxLine->Des();
- ptr.Format(KSettingListboxLineFormat, title, &caption);
-
- delete iListBoxLine;
- iListBoxLine = NULL;
- iListBoxLine = listBoxLine;
- CleanupStack::Pop(listBoxLine);
-
- TInt titlePos = ptr.Find(*title);
- if (titlePos < 0)
- {
- titlePos = 0;
- }
- iTitle.Set(ptr.Mid(titlePos, title->Length()));
-
- CleanupStack::PopAndDestroy(title);
- }
-
- // -----------------------------------------------------------------------------
- // Creates a setting item title.
- // -----------------------------------------------------------------------------
- //
- HBufC* CAiScutSettingsItem::CreateItemTitleLC()
- {
- HBufC* title = NULL;
- if (iKey & KScutFlagBitOptionallyVisible)
- {
- // Optionally visible shortcuts are either navigation keys or soft keys.
- title = CreateOptionallyVisibleKeyTitleLC();
- }
-
- // Make sure something gets loaded and put to cleanup stack.
- if (!title)
- {
- title = StringLoader::LoadLC(
- R_SCUT_SETTINGS_TXT_LINKN, iIndex+1, iModel.Env());
- }
-
- __PRINT( __DBG_FORMAT( "XAI: CreateItemTitleLC %d key = 0x%x (0x%x) title = '%S' "),
- iIndex+1, iKey, (iKey & 0xFFFF), title);
-
- return title;
- }
-
- // -----------------------------------------------------------------------------
- // Creates a key title for an optionally visible shortcut.
- // -----------------------------------------------------------------------------
- //
- HBufC* CAiScutSettingsItem::CreateOptionallyVisibleKeyTitleLC()
- {
- HBufC* title = NULL;
- TInt resourceId = 0;
-
- switch (iKey & 0xFFFF)
- {
- case EAiScutScrollKeyLeft:
- resourceId = R_SCUT_SETTINGS_SCROLL_LEFT;
- break;
-
- case EAiScutScrollKeyRight:
- resourceId = R_SCUT_SETTINGS_SCROLL_RIGHT;
- break;
-
- case EAiScutScrollKeyUp:
- resourceId = R_SCUT_SETTINGS_SCROLL_UP;
- break;
-
- case EAiScutScrollKeyDown:
- resourceId = R_SCUT_SETTINGS_SCROLL_DOWN;
- break;
-
- case EAiScutSelectionKey:
- resourceId = R_SCUT_SETTINGS_SELECTION_KEY;
- break;
-
- case EAiScutSoftKeyLeft:
- resourceId = R_SCUT_SETTINGS_SOFTKEY_LEFT;
- break;
-
- case EAiScutSoftKeyRight:
- resourceId = R_SCUT_SETTINGS_SOFTKEY_RIGHT;
- break;
-
- default:
- resourceId = 0;
- break;
- }
-
- if (resourceId)
- {
- title = StringLoader::LoadLC(resourceId, iModel.Env());
- }
- else
- {
- title = NULL;
- }
-
- return title;
- }
-
- // ---------------------------------------------------------------------------
- // Returns the setting item value.
- // ---------------------------------------------------------------------------
- //
- TPtrC CAiScutSettingsItem::Value() const
- {
- if(iValue)
- {
- return TPtrC( *iValue );
- }
- return TPtrC(KNullDesC);
- }
-
- // ---------------------------------------------------------------------------
- // Returns the formatted listbox line descriptor.
- // ---------------------------------------------------------------------------
- //
- TPtrC CAiScutSettingsItem::ListBoxLine() const
- {
- if(iListBoxLine)
- {
- return TPtrC( *iListBoxLine );
- }
- return TPtrC(KNullDesC);
- }
-// End of File.
--- a/idlefw/plugins/shortcutplugin/src/caiscutsettingsmodel.cpp Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,603 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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: Shrortcut settings plug-in model.
-*
-*/
-
-
-#include <centralrepository.h>
-#include <eikenv.h>
-#include <menu2internalcrkeys.h>
-
-#include "caiscutsettings.h"
-#include "caiscutsettingsmodel.h"
-#include "caiscutsettingscontainer.h"
-#include "caiscutsettingsitem.h"
-#include "aiscutpluginprivatecrkeys.h"
-#include "aiscutdefs.h"
-#include "aiscutappuidparser.h"
-#include "aiscutrepositorywatcher.h"
-
-#include "debug.h"
-
-LOCAL_C TInt CompareKey(const TUint32& aLeft, const TUint32& aRight)
-{
- TBool softkey1 = (0 != ((aLeft & 0xFFFF) >= EAiScutSoftKeyLeft));
- TBool softkey2 = (0 != ((aRight & 0xFFFF) >= EAiScutSoftKeyLeft));
- TUint32 left = aLeft & (KScutBitMaskThemeDefault & KScutBitMaskLocked);
- TUint32 right = aRight & (KScutBitMaskThemeDefault & KScutBitMaskLocked);
-
- // Softkey shortcuts are always sorted to be smallest.
- if (!(softkey1 && softkey2))
- {
- if (softkey1)
- {
- return -1;
- }
- else if (softkey2)
- {
- return 1;
- }
- }
-
- if (left < right)
- {
- return -1;
- }
- else if (left > right)
- {
- return 1;
- }
-
- return 0;
-}
-
-
-
-// ======== MEMBER FUNCTIONS ========
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-CAiScutSettingsModel* CAiScutSettingsModel::NewL(CAiScutSettings& aPlugin,
- CCoeEnv* aEnv)
-{
- CAiScutSettingsModel* self = new (ELeave) CAiScutSettingsModel(aPlugin, aEnv);
-
- CleanupStack::PushL(self);
- self->ConstructL();
- CleanupStack::Pop(self);
-
- return self;
-}
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-CAiScutSettingsModel::CAiScutSettingsModel(CAiScutSettings& aPlugin, CCoeEnv* aEnv)
- : iPlugin(aPlugin), iEnv(aEnv)
-{
-}
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-CAiScutSettingsModel::~CAiScutSettingsModel()
-{
- ActivateObservers(EFalse);
-
- delete iSettingsNotifier;
- delete iRepository;
-
- delete iHiddenAppsNotifier;
- delete iHiddenAppsRepository;
-
- iHiddenApps.Close();
-
- delete iAppList;
- delete iBkmList;
-
- iSettings.ResetAndDestroy();
- iKeys.Reset();
- delete iFavItemList;
- iBookmarkDb.Close();
- iBookmarkSess.Close();
- iApaSession.Close();
-}
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-void CAiScutSettingsModel::ConstructL()
-{
- User::LeaveIfError(iApaSession.Connect());
- User::LeaveIfError(iBookmarkSess.Connect());
- User::LeaveIfError(iBookmarkDb.Open(iBookmarkSess, KBrowserBookmarks));
-
- iRepository = CRepository::NewL(KCRUidShortcutItems);
-
- iHiddenAppsRepository = CRepository::NewL(KCRUidMenu);
-
- // Create cenrep key observer for monitoring settings changes
- // when theme is changed.
- iSettingsNotifier = CAiScutRepositoryWatcher::NewL(
- KCRUidShortcutItems,
- TCallBack(HandleShortcutsChanged, this),
- iRepository);
-
- iSettingsNotifier->StartListeningL();
-
- iHiddenAppsNotifier = CAiScutRepositoryWatcher::NewL(
- KCRUidMenu,
- KMenuHideApplication,
- CCenRepNotifyHandler::EStringKey,
- TCallBack(HandleHiddenAppsChanged, this),
- iHiddenAppsRepository);
-
- iHiddenAppsNotifier->StartListeningL();
-
- GetHiddenAppsL();
-
- iAppList = CAiScutSettingsAppList::NewL(iEnv, *this);
- iAppList->StartL();
-
- iBkmList = CAiScutSettingsBkmList::NewL(iEnv, this, *this);
-}
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-void CAiScutSettingsModel::SetSettingsKeys(RArray<TUint32>& aKeys)
- {
- iKeys.Reset();
-
- for( TInt i = 0; i < aKeys.Count(); i++ )
- {
- TUint32 value( aKeys[i] );
-
- iKeys.Append( value );
- }
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-void CAiScutSettingsModel::UpdateSettingsL()
-{
- if( !iPlugin.Activated() )
- {
- return;
- }
-
- iSettings.ResetAndDestroy();
-
- TInt keyCount( iKeys.Count() );
-
- if( keyCount > 0 )
- {
- for( TInt i = 0; i < keyCount; i++ )
- {
- CAiScutSettingsItem* setting = CAiScutSettingsItem::NewLC(
- *this, i, iKeys[i] );
-
- setting->ReadL( iRepository );
-
- User::LeaveIfError( iSettings.Append( setting ) );
- CleanupStack::Pop( setting );
- }
-
- return;
- }
-
- RArray<TUint32> defaultKeys;
- CleanupClosePushL(defaultKeys);
-
- // Find the default keys and user defined keys.
- iRepository->FindL(
- KScutCenRepKeyThemeDefault, KScutCenRepKeyMask, defaultKeys);
-
- TInt i;
- TUint32 defaultKey;
- TUint32 userKey;
- TInt count;
- TInt lockedKeys = 0;
- TInt visibleKeys = 0;
-
- TLinearOrder<TUint32> order(CompareKey);
- defaultKeys.Sort(order);
-
- count = defaultKeys.Count();
- for (i = 0; i < count; ++i)
- {
- defaultKey = defaultKeys[i];
- userKey = defaultKey & KScutBitMaskThemeDefault;
- // We show only actual shortcuts
- if ( (! ( defaultKey & KScutFlagBitIconOverride )) &&
- (! ( defaultKey & KScutFlagBitToolbarShortcut )))
- {
- __PRINT( __DBG_FORMAT( "XAI: %d. key = 0x%x"), i+1,
- (defaultKey & (KScutBitMaskThemeDefault & KScutBitMaskLocked)));
-
- if (!(userKey & KScutFlagBitOptionallyVisible))
- {
- visibleKeys++;
- }
-
- TBool locked = (0 != (userKey & KScutFlagBitLocked));
-
- if (locked)
- {
- lockedKeys++;
- }
- else
- {
- CAiScutSettingsItem* setting = CAiScutSettingsItem::NewLC(
- *this, visibleKeys-1, defaultKey);
-
- setting->ReadL(iRepository);
-
- User::LeaveIfError(iSettings.Append(setting));
- CleanupStack::Pop(setting);
- }
- }
-
- }
-
- __PRINT( __DBG_FORMAT("XAI: %d keys, %d locked"), count, lockedKeys);
-
- CleanupStack::PopAndDestroy(&defaultKeys);
-}
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-void CAiScutSettingsModel::UpdateSettingsContainerL()
-{
- if (iContainer)
- {
- if (iContainer->IsChangeDialogShowing())
- {
- iContainer->CloseChangeDialog();
- }
- }
-
- UpdateSettingsL();
-
- if (iContainer)
- {
- iContainer->ResetCurrentListL(0);
- }
-}
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-void CAiScutSettingsModel::GetHiddenAppsL()
-{
- HBufC* buffer = HBufC::NewLC(
- NCentralRepositoryConstants::KMaxUnicodeStringLength);
- TPtr bufferPtr = buffer->Des();
-
- iHiddenAppsRepository->Get(KMenuHideApplication, bufferPtr);
-
- __PRINT( __DBG_FORMAT("XAI: CAiScutSettingsModel::GetHiddenAppsL '%S' "), buffer);
-
- iHiddenApps.Reset();
- TAiScutAppUidParser uidParser(bufferPtr, iHiddenApps);
- uidParser.ParseL();
-
- CleanupStack::PopAndDestroy(buffer);
-}
-
-// ---------------------------------------------------------------------------
-// From MDesCArray
-// Returns the number of descriptor elements in a descriptor array.
-// ---------------------------------------------------------------------------
-//
-TInt CAiScutSettingsModel::MdcaCount() const
-{
- return iSettings.Count();
-}
-
-// ---------------------------------------------------------------------------
-// From MDesCArray
-// Indexes into a descriptor array.
-// ---------------------------------------------------------------------------
-//
-TPtrC CAiScutSettingsModel::MdcaPoint(TInt aIndex) const
-{
- if (aIndex < 0 || aIndex >= iSettings.Count())
- {
- TPtrC ret(KNullDesC);
- return ret;
- }
-
- return iSettings[aIndex]->ListBoxLine();
-}
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-TInt CAiScutSettingsModel::HandleShortcutsChanged(TAny* aPtr)
-{
- __PRINTS( "XAI: CAiScutSettingsModel::HandleShortcutsChanged");
-
- if (aPtr)
- {
- CAiScutSettingsModel* self = static_cast<CAiScutSettingsModel*>(aPtr);
- TRAP_IGNORE(self->UpdateSettingsContainerL());
- }
-
- return KErrNone;
-}
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-TInt CAiScutSettingsModel::HandleHiddenAppsChanged(TAny* aPtr)
-{
- __PRINTS("XAI: CAiScutSettingsModel::HandleHiddenAppsChanged");
-
- if (aPtr)
- {
- CAiScutSettingsModel* self = static_cast<CAiScutSettingsModel*>(aPtr);
-
- TRAP_IGNORE(
- self->iAppList->StartL();
- self->GetHiddenAppsL();
- self->UpdateSettingsContainerL() ) // TRAP_IGNORE
- }
-
- return KErrNone;
-}
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-TBool CAiScutSettingsModel::IsHidden(const TUid& aAppUid) const
-{
- if (iHiddenApps.Find(aAppUid) == KErrNotFound)
- {
- return EFalse;
- }
-
- __PRINT( __DBG_FORMAT( "XAI: CAiScutSettingsModel::IsHidden (0x%x) ETrue"), aAppUid);
-
- return ETrue;
-}
-
-// ---------------------------------------------------------------------------
-// From MAiScutListObserver
-// Callback for application list events.
-// ---------------------------------------------------------------------------
-//
-void CAiScutSettingsModel::HandleScutListEventL(TScutListEvent aEvent,
- TBool /*aAdded*/)
-{
- switch (aEvent)
- {
- case MAiScutListObserver::EAppListReady:
- if (iContainer)
- {
- iContainer->HideWaitNoteDialog();
- }
- break;
-
- case MAiScutListObserver::EAppListUpdated:
- case MAiScutListObserver::EBkmListUpdated:
- UpdateSettingsContainerL();
- break;
-
- default:
- break;
- }
-}
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-void CAiScutSettingsModel::ActivateObservers(TBool aActivate)
-{
- TRAP_IGNORE(
- if (iAppList)
- {
- iAppList->SetObservingL(aActivate);
- }
- if (iBkmList)
- {
- iBkmList->SetObservingL(aActivate);
- }
- )
-}
-
-// ---------------------------------------------------------------------------
-// Returns a setting item for the given index.
-// ---------------------------------------------------------------------------
-//
-CAiScutSettingsItem* CAiScutSettingsModel::Item(TInt aIndex) const
-{
- if (aIndex >= 0 && aIndex < iSettings.Count())
- {
- return iSettings[aIndex];
- }
-
- return NULL;
-}
-
-// ---------------------------------------------------------------------------
-// Utility function to retrieve a bookmark caption from an uid.
-// ---------------------------------------------------------------------------
-//
-TInt CAiScutSettingsModel::GetBkmCaptionL(const TUid aUid, TDes& aCaption)
-{
- CFavouritesItem* favItem = CFavouritesItem::NewLC();
- TInt err = iBookmarkDb.Get(aUid.iUid, *favItem);
- if (err == KErrNone)
- {
- aCaption.Copy(favItem->Name());
- }
-
- CleanupStack::PopAndDestroy(favItem);
-
- return err;
-}
-
-// ---------------------------------------------------------------------------
-// Utility function to retrieve an appliation caption from an uid.
-// ---------------------------------------------------------------------------
-//
-TInt CAiScutSettingsModel::GetAppCaption(const TUid aUid, TDes& aCaption)
-{
- TInt err = KErrNone;
- TApaAppInfo appInfo;
-
- err = iApaSession.GetAppInfo(appInfo, aUid);
- if (err == KErrNone)
- {
- aCaption.Copy(appInfo.iCaption);
- }
-
- return err;
-}
-
-// ---------------------------------------------------------------------------
-// Returns a pointer to the coe environment.
-// ---------------------------------------------------------------------------
-//
-CCoeEnv* CAiScutSettingsModel::Env()
-{
- return iEnv;
-}
-
-// ---------------------------------------------------------------------------
-// Handles saving a setting item to central repository.
-// ---------------------------------------------------------------------------
-//
-void CAiScutSettingsModel::SaveItemL(CAiScutSettingsItem& aItem)
-{
- // Stop monitoring own settings changes.
- iSettingsNotifier->StopListening();
-
- TInt err = aItem.Save(iRepository);
-
- __PRINT( __DBG_FORMAT( "XAI: CAiScutSettingsModel::SaveItemL key = 0x%x, err = %d"),
- aItem.Key(), err);
- UpdateSettingsL();
- iSettingsNotifier->StartListeningL();
-}
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-void CAiScutSettingsModel::SetContainer(CAiScutSettingsContainer* aContainer)
-{
- iContainer = aContainer;
-}
-
-// -----------------------------------------------------------------------------
-// Using the Favorites dB, get the bookmarked pages
-// -----------------------------------------------------------------------------
-//
-void CAiScutSettingsModel::ReadBookmarksL()
-{
- // Get bookmarks
- delete iFavItemList;
- iFavItemList = NULL;
-
- iFavItemList = new (ELeave) CFavouritesItemList();
- TInt err = iBookmarkDb.GetAll(
- *iFavItemList, KFavouritesNullUid, CFavouritesItem::EItem);
-}
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-TInt CAiScutSettingsModel::BookmarkCount() const
-{
- if (iFavItemList)
- {
- return iFavItemList->Count();
- }
- else
- {
- return 0;
- }
-}
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-CFavouritesItem* CAiScutSettingsModel::GetBookmark(TInt aIndex)
-{
- if (aIndex >= 0 && aIndex < iFavItemList->Count())
- {
-
- if (iFavItemList)
- {
- return iFavItemList->At(aIndex);
- }
- else
- {
- return NULL;
- }
- }
- else
- {
- return NULL;
- }
-}
-
-// ---------------------------------------------------------------------------
-// Returns reference to the bookmark database owned by the engine.
-// ---------------------------------------------------------------------------
-//
-RFavouritesDb& CAiScutSettingsModel::FavouritesDb()
-{
- return iBookmarkDb;
-}
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-CAiScutSettingsAppList* CAiScutSettingsModel::AppList()
-{
- return iAppList;
-}
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-CAiScutSettingsBkmList* CAiScutSettingsModel::BkmList()
-{
- return iBkmList;
-}
-
-// End of File.
--- a/idlefw/plugins/shortcutplugin/src/caiscutshortcut.cpp Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,913 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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: Implementation for a shortcut.
-*
-*/
-
-
-#include <aicontentobserver.h>
-#include <gulicon.h> // For CGulIcon
-#include <fbs.h> // For CFbsBitmap
-#include <e32property.h> // For RProperty
-
-#include <activeidle2domainpskeys.h>
-#include "aiscutcontentmodel.h"
-#include "caiscutshortcut.h"
-#include "aiscutdefs.h"
-#include "caiscuttargetapp.h"
-#include "caiscuttargetbkm.h"
-#include "caiscuttargethttp.h"
-#include "caiscuttargetmessagingview.h"
-#include "caiscuttargetnewmsg.h"
-#include "caiscuttargetkeylock.h"
-#include "caiscuttargetempty.h"
-#include "aiscutpluginprivatecrkeys.h"
-
-#include "debug.h"
-
-
-// ======== MEMBER FUNCTIONS ========
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-CAiScutShortcut::CAiScutShortcut(TInt aId, CAiScutEngine& aEngine)
- : CTimer( CActive::EPriorityLow )
- , iId(aId)
- , iEngine(aEngine)
-{
-}
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-void CAiScutShortcut::ConstructL(const TDesC& aTarget)
-{
- iDefaultTarget = CreateTargetL(aTarget, EFalse);
-
- if (!iDefaultTarget)
- {
- iDefaultTarget = CAiScutTargetEmpty::NewL(iEngine, EScutUnknown, aTarget);
- }
- CTimer::ConstructL();
- CActiveScheduler::Add( this );
-}
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-CAiScutShortcut* CAiScutShortcut::NewLC(TInt aId, const TDesC& aTarget,
- CAiScutEngine& aEngine)
-{
- CAiScutShortcut* self = new (ELeave) CAiScutShortcut(aId, aEngine);
- CleanupStack::PushL(self);
- self->ConstructL(aTarget);
- return self;
-}
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-CAiScutShortcut* CAiScutShortcut::NewL(TInt aId, const TDesC& aTarget,
- CAiScutEngine& aEngine)
-{
- CAiScutShortcut* self = CAiScutShortcut::NewLC(aId, aTarget, aEngine);
- CleanupStack::Pop(self);
- return self;
-}
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-CAiScutShortcut::~CAiScutShortcut()
-{
- Cancel();
- delete iDefaultTarget;
- delete iUserTarget;
- delete iRetiredTarget;
-}
-
-// -----------------------------------------------------------------------------
-// Returns the shortcut id.
-// -----------------------------------------------------------------------------
-//
-TInt32 CAiScutShortcut::Id() const
-{
- return iId;
-}
-
-// -----------------------------------------------------------------------------
-// Publishes the shortcut content, non leaving version.
-// -----------------------------------------------------------------------------
-//
-void CAiScutShortcut::Publish(
- MAiPropertyExtension& aPlugin, MAiContentObserver& aObserver)
-{
- TRAPD(err, PublishL(aPlugin, aObserver));
- //Possible forcing done already so reset the flag
- iForcePublish = EFalse;
- if (err == KErrNone)
- {
- delete iRetiredTarget;
- iRetiredTarget = NULL;
- iLastPublishedTarget = iActiveTarget;
- }
- else
- {
- // Publish failed, roll back to previous content.
- TInt transactionId = reinterpret_cast<TInt>(this);
- aObserver.CancelTransaction(transactionId);
-
- // Delete the new target and put the retired one back to work.
- if (iRetiredTarget)
- {
- delete iUserTarget;
- iUserTarget = iRetiredTarget;
- iRetiredTarget = NULL;
- }
-
- iActiveTarget = iLastPublishedTarget;
- }
-
-
-}
-
-// -----------------------------------------------------------------------------
-// Checks if the application or messaging view pointed to can be launched.
-// -----------------------------------------------------------------------------
-//
-TBool CAiScutShortcut::CheckAccessL(TInt aCheckType)
-{
- TBool userTargetAccessible = EFalse;
-
- __PRINT( __DBG_FORMAT( "XAI: CAiScutShortcut::CheckAccessL( %d )"), aCheckType);
-
- // First try the user setting if it is defined.
- if (iUserTarget && iUserTarget->IsAccessibleL(aCheckType))
- {
- iActiveTarget = iUserTarget;
- userTargetAccessible = ETrue;
- }
-
- if (!userTargetAccessible)
- {
-
- __PRINTS("XAI: *** user target NOT accessible ***");
- // User setting was not accessible or not defined, try the default.
- if (iDefaultTarget->IsAccessibleL(aCheckType))
- {
- iActiveTarget = iDefaultTarget;
- }
- else
- {
- // The default is not accessible either, the shortcut is empty.
- iActiveTarget = NULL;
-
- __PRINTS( "XAI: *** default target NOT accessible ***");
- }
- }
-
- if (iActiveTarget)
- {
- return ETrue;
- }
- else
- {
- return EFalse;
- }
-}
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-TBool CAiScutShortcut::IsTargetChanged() const
-{
- // We need to publish if target changed during access checking.
- return (iLastPublishedTarget != iActiveTarget);
-}
-
-// -----------------------------------------------------------------------------
-// Changes the shortcut target to the user defined setting.
-// -----------------------------------------------------------------------------
-//
-void CAiScutShortcut::SetUserTarget(const TDesC& aNewTarget)
-{
-
- TPtrC defaultTarget(iDefaultTarget->Definition());
- __PRINTS( "XAI: CAiScutShortcut::SetUserTarget");
- __PRINT( __DBG_FORMAT( "XAI: id = 0x%x"), iId);
- __PRINT( __DBG_FORMAT( "XAI: default target = '%S'"), &defaultTarget);
- __PRINT( __DBG_FORMAT("XAI: new target = '%S'"), &aNewTarget);
- if (iUserTarget)
- {
- TPtrC userTarget(iUserTarget->Definition());
- __PRINT( __DBG_FORMAT("XAI: user target = '%S'"), &userTarget);
- }
-
-
- if (iUserTarget && (aNewTarget.CompareC(iUserTarget->Definition()) == 0))
- {
- return;
- }
-
-
- // Creating the new target might leave, so it is done before the old target
- // is deleted to ensure that the shortcut object remains in a consistent state
- // in case of a leave. If target creation leaves, nothing has changed.
- //
- // As a side effect this means that the new target is allocated to a different
- // memory address than the old one, the address of the old target will not be re-used
- // by this target. That doesn't mean anything for the plug-in, but it helps the
- // plug-in tester to notice premature target deletion, since the address will still
- // contain 0xDEDEDEDE instead of the new target.
- CAiScutTarget* tempTarget = NULL;
-
- TRAPD(err, tempTarget = CreateTargetL(aNewTarget, ETrue));
-
- if (err == KErrNone)
- {
- DeleteUserTarget();
- iUserTarget = tempTarget;
- }
-}
-
-// -----------------------------------------------------------------------------
-// Deletes the user target.
-// -----------------------------------------------------------------------------
-//
-void CAiScutShortcut::DeleteUserTarget()
-{
- if (iUserTarget)
- {
-
- __PRINTS("XAI: CAiScutShortcut::DeleteUserTarget");
-
- if (iLastPublishedTarget == iUserTarget && !(iId & KScutFlagBitNonVisible))
- {
- // Previous user target was the last published target so the Ai framework
- // is still using the icon pointer. Deleting the target now would cause a
- // KERN-EXEC 3 panic when the framework tries to access the deleted icon.
- // The target must be kept alive until the new target has been successfully
- // published and the framework is no longer using its icon.
- // This is unnecessary for non-visible shortcuts because they are not published.
- iRetiredTarget = iUserTarget;
- iUserTarget = NULL;
-
- __PRINTS("XAI: iUserTarget = NULL");
-
- }
-
- if (iActiveTarget == iUserTarget)
- {
- // Previous user target was the active target. We don't know if the new
- // user target is accessible, so the shortcut is effectively empty until
- // the access check has been run.
- iActiveTarget = NULL;
- }
-
- delete iUserTarget;
- iUserTarget = NULL;
-
- __PRINTS( "XAI: delete iUserTarget");
- }
-}
-
-// -----------------------------------------------------------------------------
-// Launches the shortcut.
-// -----------------------------------------------------------------------------
-//
-void CAiScutShortcut::LaunchL()
-{
- Cancel();
- RProperty::Set(
- KPSUidAiInformation,
- KActiveIdleLaunch,
- EPSAiLaunchIsActive );
-
- if (iActiveTarget)
- {
- TRAP_IGNORE( iActiveTarget->BeginEffectL() ); //start a full screen effect
- iActiveTarget->LaunchL();
- }
-
- // When preparing for backup, the plugin is suspended and calling After() would
- // cause a crash
- if ( IsAdded() )
- {
- After(1000000);
- }
-}
-
-// -----------------------------------------------------------------------------
-// Launches the shortcut.
-// -----------------------------------------------------------------------------
-//
-void CAiScutShortcut::LaunchL(const TDesC8& aMessage)
-{
- Cancel();
- RProperty::Set(
- KPSUidAiInformation,
- KActiveIdleLaunch,
- EPSAiLaunchIsActive );
-
- if (iActiveTarget)
- {
- TRAP_IGNORE( iActiveTarget->BeginEffectL() ); //start a full screen effect
- iActiveTarget->LaunchL(aMessage);
- }
-
- // When preparing for backup, the plugin is suspended and calling After() would
- // cause a crash
- if ( IsAdded() )
- {
- After(1000000);
- }
-}
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CAiScutShortcut::SetToBePublished(TBool aFlag)
-{
- if ( !iForcePublish )
- {
- iNeedsToBePublished = aFlag;
- }
- else
- {
- iNeedsToBePublished = iForcePublish;
- }
-}
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-TBool CAiScutShortcut::NeedsToBePublished()
-{
- return iNeedsToBePublished;
-}
-
-// -----------------------------------------------------------------------------
-// Return shortcut type.
-// -----------------------------------------------------------------------------
-//
-TShortcutType CAiScutShortcut::Type() const
-{
- if (iUserTarget)
- {
- return iUserTarget->Type();
- }
- else
- {
- return iDefaultTarget->Type();
- }
-}
-
-// ---------------------------------------------------------------------------
-// Return application uid of this shortcut.
-// ---------------------------------------------------------------------------
-//
-TUid CAiScutShortcut::AppUid() const
-{
- if (iUserTarget)
- {
- return iUserTarget->AppUid();
- }
- else
- {
- return iDefaultTarget->AppUid();
- }
-}
-void CAiScutShortcut::SetIcon(TAiScutIcon aIcon)
- {
- switch(aIcon.iDestination)
- {
- case EScutDestinationSoftkey:
- SetSoftkeyIcon(aIcon);
- break;
- case EScutDestinationToolbar:
- SetToolbarIcon(aIcon);
- break;
- case EScutDestinationNormal:
- SetOverrideIcon(aIcon);
- break;
- default:
- break;
- }
- }
-void CAiScutShortcut::SetOverrideIcon(TAiScutIcon aIcon)
-{
- if (iUserTarget)
- {
- iUserTarget->SetOverrideIcon(aIcon);
- }
- else
- {
- iDefaultTarget->SetOverrideIcon(aIcon);
- }
-}
-
-void CAiScutShortcut::SetSoftkeyIcon(TAiScutIcon aIcon)
-{
- if (iUserTarget)
- {
- iUserTarget->SetSoftkeyIcon(aIcon);
- }
- else
- {
- iDefaultTarget->SetSoftkeyIcon(aIcon);
- }
-}
-
-
-void CAiScutShortcut::SetToolbarIcon(TAiScutIcon aIcon)
-{
- if (iUserTarget)
- {
- iUserTarget->SetToolbarIcon(aIcon);
- }
- else
- {
- iDefaultTarget->SetToolbarIcon(aIcon);
- }
-}
-
-
-// -----------------------------------------------------------------------------
-// Creates a shortcut target object.
-// -----------------------------------------------------------------------------
-//
-CAiScutTarget* CAiScutShortcut::CreateTargetL(
- const TDesC& aDefinition, TBool aCreateUserTarget)
-{
-
- __PRINTS("XAI: CAiScutShortcut::CreateTargetL");
- __PRINT( __DBG_FORMAT("XAI: id = 0x%x, target = '%S'"), iId, &aDefinition);
-
- CAiScutTarget* target = NULL;
- TAiScutParser parser;
- TInt err = parser.Parse(aDefinition);
-
- if (parser.IsValid())
- {
- TShortcutType type = parser.Type();
-
- switch (type)
- {
- case EScutApplication:
- case EScutChangeTheme:
- case EScutApplicationView:
- case EScutApplicationWithParams:
- case EScutLogsMissedCallsView:
- case EScutLogsDialledCallsView:
- case EScutLogsReceivedCallsView:
- case EScutLogsMainView:
- target = CAiScutTargetApp::NewL(iEngine, type, parser);
- break;
-
- case EScutNewMsgType:
- case EScutNewMessage:
- case EScutNewEmail:
-#ifdef __SYNCML_DS_EMAIL
- case EScutNewSyncMLMail:
-#endif
- case EScutNewPostcard:
- case EScutNewAudioMsg:
- target = CAiScutTargetNewMsg::NewL(iEngine, type, parser);
- break;
-
- case EScutMailbox:
- target = CAiScutTargetMessagingView::NewL(iEngine, type, parser);
- break;
-
- case EScutWebAddress:
- target = CAiScutTargetHttp::NewL(iEngine, type, parser);
- break;
-
- case EScutKeylock:
- target = CAiScutTargetKeyLock::NewL(iEngine, type, aDefinition);
- break;
-
- case EScutNoEffect:
- target = CAiScutTargetEmpty::NewL(iEngine, type, aDefinition);
- break;
-
- case EScutBookmark:
- target = CAiScutTargetBkm::NewL(iEngine, type, parser);
- break;
-
- case EScutConnectivityStatusView:
- target = CAiScutTargetApp::NewL(iEngine, EScutApplicationView, parser);
- break;
-
- case EScutApplicationManagerView:
- target = CAiScutTargetApp::NewL(iEngine, EScutApplicationView, parser);
- break;
-
- default:
- break;
- }
- }
-
- if (!target && aCreateUserTarget)
- {
- // treat unknown user targets as web addresses.
- target = CAiScutTargetHttp::NewL(iEngine, EScutWebAddress, parser);
- }
-
- if (!target)
- {
- __PRINTS( "XAI: *** empty target ***");
- }
-
-
- return target;
-}
-
-// -----------------------------------------------------------------------------
-// Publishes the shortcut content, leaving version.
-// -----------------------------------------------------------------------------
-//
-void CAiScutShortcut::PublishL(
- MAiPropertyExtension& aPlugin, MAiContentObserver& aObserver)
- {
- TInt err = KErrNone;
- TBool cbaIconPublished = EFalse;
-
- __PRINT( __DBG_FORMAT("XAI: CAiScutShortcut::PublishL 0x%x"), iId);
-
- // Publish caption if the framework can handle it.
- if (!aObserver.CanPublish(
- aPlugin, KAiScutContent[EAiScutContentShortcutCaption].id, iId))
- {
- err = KErrNotSupported;
- }
- else
- {
- err = PublishCaption(
- aPlugin, aObserver, KAiScutContent[EAiScutContentShortcutCaption].id);
-
- if (err != KErrNone)
- __PRINT( __DBG_FORMAT( "XAI: publish caption err = %d"), err);
- }
-
- // Publish short caption if the framework can handle it.
- if (!aObserver.CanPublish(
- aPlugin, KAiScutContent[EAiScutContentShortcutShortCaption].id, iId))
- {
- err = KErrNotSupported;
- }
- else
- {
- err = PublishCaption(
- aPlugin, aObserver, KAiScutContent[EAiScutContentShortcutShortCaption].id);
-
- if (err != KErrNone)
- __PRINT( __DBG_FORMAT( "XAI: publish short caption err = %d"), err);
- }
-
- /** softkeys **/
- // Publish short caption if the framework can handle it.
- if (!aObserver.CanPublish(
- aPlugin, KAiScutContent[EAiScutContentShortcutSkIcon].id, iId))
- {
- err = KErrNotSupported;
- }
- else
- {
- err = PublishIcon(
- aPlugin, aObserver, KAiScutContent[EAiScutContentShortcutSkIcon].id);
-
- if ( err == KErrNone )
- {
- cbaIconPublished = ETrue;
- }
- if (err != KErrNone)
- __PRINT( __DBG_FORMAT("XAI: publish icon err = %d"), err);
- }
-
- // No CBA icon published so publish the caption
- if ( !cbaIconPublished )
- {
- // Publish sk caption if the framework can handle it.
- if (!aObserver.CanPublish(
- aPlugin, KAiScutContent[EAiScutContentShortcutSkCaption].id, iId))
- {
- err = KErrNotSupported;
- }
- else
- {
- err = PublishCaption(
- aPlugin, aObserver, KAiScutContent[EAiScutContentShortcutSkCaption].id);
-
- if (err != KErrNone)
- __PRINT( __DBG_FORMAT( "XAI: publish short caption err = %d"), err);
- }
- }
-
- /** end of softkeys **/
-
- // Publish MSK caption if the framework can handle it.
- if (!aObserver.CanPublish(
- aPlugin, KAiScutContent[EAiScutContentShortcutMskCaption].id, iId))
- {
- err = KErrNotSupported;
- }
- else
- {
- err = PublishCaption(
- aPlugin, aObserver, KAiScutContent[EAiScutContentShortcutMskCaption].id);
-
- if (err != KErrNone)
- __PRINT( __DBG_FORMAT( "XAI: publish msk caption err = %d"), err);
- }
-
- // Publish icon if the framework can handle it.
- if (!aObserver.CanPublish(
- aPlugin, KAiScutContent[EAiScutContentShortcutIcon].id, iId))
- {
- err = KErrNotSupported;
- }
- else
- {
- err = PublishIcon(
- aPlugin, aObserver, KAiScutContent[EAiScutContentShortcutIcon].id);
-
- if (err != KErrNone)
- __PRINT( __DBG_FORMAT("XAI: publish icon err = %d"), err);
- }
-
- // Publish toolbar caption if the framework can handle it.
- if (!aObserver.CanPublish(
- aPlugin, KAiScutContent[EAiScutContentShortcutToolbarCaption].id, iId))
- {
- err = KErrNotSupported;
- }
- else
- {
- err = PublishCaption(
- aPlugin, aObserver, KAiScutContent[EAiScutContentShortcutToolbarCaption].id);
-
- if (err != KErrNone)
- __PRINT( __DBG_FORMAT( "XAI: publish toolbar caption err = %d"), err);
- }
-
- // Publish the toolbar icon if the framework can handle it
- if (!aObserver.CanPublish(
- aPlugin, KAiScutContent[EAiScutContentShortcutToolbarIcon].id, iId))
- {
- err = KErrNotSupported;
- }
- else
- {
- err = PublishIcon(
- aPlugin, aObserver, KAiScutContent[EAiScutContentShortcutToolbarIcon].id);
-
- if (err != KErrNone)
- __PRINT( __DBG_FORMAT("XAI: publish toolbar icon err = %d"), err);
- }
- }
-
-// -----------------------------------------------------------------------------
-// Publishes shortcut caption.
-// -----------------------------------------------------------------------------
-//
-TInt CAiScutShortcut::PublishCaption(MAiPropertyExtension& aPlugin,
- MAiContentObserver& aObserver, TInt aCaptionContentId) const
-{
- TInt err = KErrNone;
-
- if (iId == KRightSoftkeyId)
- {
- if (iActiveCall)
- {
- TInt backCaptionResId = KAiScutResources[EAiScutResourceBackCaption].id;
- err = aObserver.Publish(aPlugin, aCaptionContentId, backCaptionResId, iId);
- return err;
- }
- }
-
- if (!iActiveTarget)
- {
- // Publish the EmptyCaption resource id.
- TInt emptyCaptionResId = KAiScutResources[EAiScutResourceEmptyCaption].id;
- err = aObserver.Publish(aPlugin, aCaptionContentId, emptyCaptionResId, iId);
- }
- else
- {
- TPtrC captionDes;
- TInt captionResId = 0;
- TAiScutAppTitleType titleType = EAiScutLongTitle;
- if (aCaptionContentId == KAiScutContent[EAiScutContentShortcutShortCaption].id ||
- aCaptionContentId == KAiScutContent[EAiScutContentShortcutSkCaption].id ||
- aCaptionContentId == KAiScutContent[EAiScutContentShortcutToolbarCaption].id)
- {
- titleType = EAiScutSkeyTitle;
- }
- else if (aCaptionContentId == KAiScutContent[EAiScutContentShortcutMskCaption].id)
- {
- titleType = EAiScutMskTitle;
- }
-
- captionResId = iActiveTarget->GetCaption(captionDes, titleType);
-
- if (captionResId == 0)
- {
- // Publish descriptor.
- err = aObserver.Publish(aPlugin, aCaptionContentId, captionDes, iId);
- }
- else if (captionResId > 0)
- {
- // Publish resource.
- err = aObserver.Publish(aPlugin, aCaptionContentId, captionResId, iId);
-
- __PRINT( __DBG_FORMAT("XAI: publish resource = %d"), captionResId);
- }
- }
-
- return err;
-}
-
-// -----------------------------------------------------------------------------
-// Publishes shortcut icon.
-// -----------------------------------------------------------------------------
-//
-TInt CAiScutShortcut::PublishIcon(MAiPropertyExtension& aPlugin,
- MAiContentObserver& aObserver, TInt aIconContentId )
-{
- TInt emptyIconResId = KAiScutResources[EAiScutResourceEmptyIcon].id;
- TInt err = KErrNone;
- // In case of an active call cancel the SK icon publication
- // to RSK
- if ( iActiveCall && iId == KRightSoftkeyId )
- {
- return KErrCancel;
- }
- if (!iActiveTarget)
- {
- // Publish the EmptyIcon resource id.
-
- __PRINT( __DBG_FORMAT( "XAI: PublishIcon publish empty #1 = %d"), emptyIconResId);
-
- err = aObserver.Publish(aPlugin, aIconContentId, emptyIconResId, iId);
- }
- else
- {
- CGulIcon* iconPtr = NULL;
- TInt iconResId = 0;
- // Normal icon
- if (aIconContentId == KAiScutContent[EAiScutContentShortcutIcon].id)
- {
- iconResId = iActiveTarget->GetIcon(iconPtr);
- }
- // Soft key icon
- else if ( aIconContentId == KAiScutContent[EAiScutContentShortcutSkIcon].id )
- {
- iconResId = iActiveTarget->GetSoftkeyIcon(iconPtr);
- }
- else if ( aIconContentId == KAiScutContent[EAiScutContentShortcutToolbarIcon].id )
- {
- iconResId = iActiveTarget->GetToolbarIcon(iconPtr);
- }
-
- // No error, continue with the publish
- if (iconResId == 0)
- {
- if (iconPtr)
- {
- // Publish pointer.
- err = aObserver.PublishPtr(aPlugin, aIconContentId, iconPtr, iId);
-
- if( err != KErrNone )
- {
- delete iconPtr;
- }
- }
- else
- {
- // The target hasn't been able to initialize its icon, publish the empty icon.
-
- __PRINT( __DBG_FORMAT("XAI: PublishIcon publish empty #2 = %d"), emptyIconResId);
-
- err = aObserver.Publish(aPlugin, aIconContentId, emptyIconResId, iId);
- }
- }
- // Publish by resource
- else if (iconResId > 0)
- {
- // Publish resource.
-
- __PRINT( __DBG_FORMAT("XAI: PublishIcon publish resource = %d"), iconResId);
-
- err = aObserver.Publish(aPlugin, aIconContentId, iconResId, iId);
- }
- // < 0 error occurred, return it
- else
- {
- err = iconResId;
- }
- }
-
- return err;
-}
-
-// -----------------------------------------------------------------------------
-// Set call state
-// -----------------------------------------------------------------------------
-//
-void CAiScutShortcut::SetCallState(TBool aStatus)
-{
- // Call state changed force the publish of RSK
- if ( iActiveCall != aStatus )
- {
- if ( iId == KRightSoftkeyId )
- {
- iForcePublish = ETrue;
- }
- }
- iActiveCall = aStatus;
-}
-
-TPtrC CAiScutShortcut::ActiveDefinition()
- {
- if( iUserTarget )
- {
- return iUserTarget->Definition();
- }
- if( iDefaultTarget )
- {
- return iDefaultTarget->Definition();
- }
- return TPtrC();
- }
-
-// ---------------------------------------------------------------------------
-// Return the possible additional id
-// ---------------------------------------------------------------------------
-//
-TUid CAiScutShortcut::AdditionalUid() const
- {
- if( iUserTarget )
- {
- return iUserTarget->AdditionalUid();
- }
- if( iDefaultTarget )
- {
- return iDefaultTarget->AdditionalUid();
- }
- return TUid::Uid(-1);
- }
-
-// ---------------------------------------------------------------------------
-// CActive
-// ---------------------------------------------------------------------------
-//
-TInt CAiScutShortcut::RunError(TInt /*aError*/)
- {
- return KErrNone;
- }
-
-// ---------------------------------------------------------------------------
-// CActive
-// ---------------------------------------------------------------------------
-//
-void CAiScutShortcut::DoCancel()
- {
- CTimer::DoCancel();
- RProperty::Set(
- KPSUidAiInformation,
- KActiveIdleLaunch,
- EPSAiLaunchNotActive );
- }
-
-// ---------------------------------------------------------------------------
-// CActive
-// ---------------------------------------------------------------------------
-//
-void CAiScutShortcut::RunL()
- {
- RProperty::Set(
- KPSUidAiInformation,
- KActiveIdleLaunch,
- EPSAiLaunchNotActive );
- }
-// End of File.
--- a/idlefw/plugins/shortcutplugin/src/caiscutshortcutext.cpp Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,419 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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: Shortcut plug-in shortcut extensions
-*
-*/
-
-
-#include <aicontentobserver.h>
-#include <gulicon.h>
-#include <fbs.h>
-#include <e32property.h>
-
-#include "caiscutshortcutext.h"
-#include "aiscutcontentmodel.h"
-#include "caiscuttarget.h"
-#include "caiscutengineext.h"
-#include "PopupFSM.h"
-#include "cpopupeventhandler.h"
-#include "maiscutextdata.h"
-#include "activeidle2domainpskeys.h"
-
-#include "debug.h"
-
-
-// P&S access policies
-_LIT_SECURITY_POLICY_C1( KAiScutReadPolicy, ECapabilityReadDeviceData );
-_LIT_SECURITY_POLICY_C1( KAiScutWritePolicy, ECapabilityWriteDeviceData );
-
-
-// ======== MEMBER FUNCTIONS ========
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-CAiScutShortcutExt* CAiScutShortcutExt::NewL(
- TInt aId, const TDesC& aTarget, CAiScutEngine& aEngine )
- {
- CAiScutShortcutExt* self = CAiScutShortcutExt::NewLC(
- aId, aTarget, aEngine );
- CleanupStack::Pop( self );
- return self;
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-CAiScutShortcutExt* CAiScutShortcutExt::NewLC(
- TInt aId, const TDesC& aTarget, CAiScutEngine& aEngine )
- {
- CAiScutShortcutExt* self = new( ELeave ) CAiScutShortcutExt(
- aId, aEngine );
- CleanupStack::PushL( self );
- self->ConstructL( aTarget );
- return self;
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-CAiScutShortcutExt::~CAiScutShortcutExt()
- {
- delete iPopupEventHandler;
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-CAiScutShortcutExt::CAiScutShortcutExt( TInt aId, CAiScutEngine& aEngine )
- : CAiScutShortcut( aId, aEngine )//,
- //iPublishLineArray( EFalse )
- {
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-void CAiScutShortcutExt::ConstructL( const TDesC& aTarget )
- {
- iPopupEventHandler = CPopupEventHandler::NewL( *this );
- CAiScutShortcut::ConstructL( aTarget );
-
- RProperty::Define(
- KPSUidAiInformation,
- KActiveIdleThemeSupportsXsp,
- RProperty::EInt,
- KAiScutReadPolicy,
- KAiScutWritePolicy );
- RProperty::Set( KPSUidAiInformation, KActiveIdleThemeSupportsXsp, EPSAiXspNotSupported );
- }
-
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-TPtrC CAiScutShortcutExt::ActiveTargetDefinition() const
- {
- if( iActiveTarget )
- {
- return iActiveTarget->Definition();
- }
- return KNullDesC();
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-void CAiScutShortcutExt::HandleAIEventL( TInt aEvent )
- {
- switch ( aEvent )
- {
- case EAiScutEventLoseFocus:
- {
- iPopupEventHandler->PopupFSM().HandleLostFocus();
- break;
- }
- case EAiScutEventGainFocus:
- {
- iPopupEventHandler->PopupFSM().HandleGotFocus();
- break;
- }
- default:
- {
- break;
- }
- }
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-void CAiScutShortcutExt::HandleResumed( TAiTransitionReason aResumeReason )
- {
- switch( aResumeReason )
- {
- case EAiIdleBackground:
- {
- iPopupEventHandler->PopupFSM().HandleBackground();
- break;
- }
- case EAiIdleForeground:
- {
- // Handleforeground() calls unnecessary publishes in case nothing
- // has changed.
- if ( iTextChanged || iIconChanged )
- {
- iPopupEventHandler->PopupFSM().HandleForeground();
- }
- break;
- }
- default:
- {
- break;
- }
- }
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-void CAiScutShortcutExt::SetAiScutExtData(
- const MAiScutExtData* aAiScutExtData )
- {
- iAiScutExtData = aAiScutExtData;
-
- const MDesCArray* newPopupLineArray =
- aAiScutExtData ? aAiScutExtData->PopupLineArray() : NULL;
- const CGulIcon* newIcon =
- aAiScutExtData ? aAiScutExtData->Icon() : NULL;
-
- if( iPreviousPopupLineArray != newPopupLineArray &&
- newPopupLineArray )
- {
- iTextChanged = ETrue;
- iPopupEventHandler->PopupFSM().HandleUpdate();
- }
- else if( iPreviousPopupLineArray && !newPopupLineArray )
- {
- iTextChanged = ETrue;
- iPopupEventHandler->PopupFSM().HandleReset();
- }
-
- if( iPreviousIcon != newIcon )
- {
- iIconChanged = ETrue;
- CAiScutEngineExt& engine = static_cast< CAiScutEngineExt& > ( iEngine );
- engine.CheckAccessAndPublish( *this );
- }
-
- iPreviousPopupLineArray = newPopupLineArray;
- iPreviousIcon = newIcon;
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-void CAiScutShortcutExt::PublishL(
- MAiPropertyExtension& aPlugin, MAiContentObserver& aObserver )
- {
- if( iLastPublishedTarget && iActiveTarget &&
- iLastPublishedTarget->Definition() != iActiveTarget->Definition() )
- {
- iAiScutExtData = NULL;
- iPopupEventHandler->PopupFSM().HandleReset();
- }
-
- if( aObserver.CanPublish(
- aPlugin, KAiScutContent[EAiScutContentPopupTextFirstLine].id, iId) &&
- aObserver.CanPublish(
- aPlugin, KAiScutContent[EAiScutContentPopupTextSecondLine].id, iId) &&
- aObserver.CanPublish(
- aPlugin, KAiScutContent[EAiScutContentPopupTextThirdLine].id, iId) )
- {
- PublishPopupText( aPlugin, aObserver );
- RProperty::Set( KPSUidAiInformation, KActiveIdleThemeSupportsXsp, EPSAiXspIsSupported );
- }
-
- CAiScutShortcut::PublishL( aPlugin, aObserver );
- iTextChanged = EFalse;
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-TInt CAiScutShortcutExt::PublishCaption(
- MAiPropertyExtension& aPlugin, MAiContentObserver& aObserver,
- TInt aCaptionContentId ) const
- {
- if( iPopupEventHandler->PublishCaption() )
- {
- if( !iPopupEventHandler->CaptionVisible() )
- {
- return aObserver.Clean( aPlugin, aCaptionContentId, iId );
- }
- else
- {
- return CAiScutShortcut::PublishCaption(
- aPlugin, aObserver, aCaptionContentId );
- }
- }
- else
- {
- return CAiScutShortcut::PublishCaption(
- aPlugin, aObserver, aCaptionContentId );
- }
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-void CAiScutShortcutExt::PublishPopupText(
- MAiPropertyExtension& aPlugin, MAiContentObserver& aObserver ) const
- {
- if( iPopupEventHandler->PublishPopup() )
- {
- TAiScutContentIds popupTextContentIds[] =
- {
- EAiScutContentPopupTextFirstLine,
- EAiScutContentPopupTextSecondLine,
- EAiScutContentPopupTextThirdLine
- };
- const TInt idCount =
- sizeof( popupTextContentIds ) / sizeof( TAiScutContentIds );
-
- TInt err = KErrNone;
-
- //iLineArray is set or reset via xSP API. iPublishLineArray is controlled
- //by state machine in iPopupEventHandler
- if( iAiScutExtData && iAiScutExtData->PopupLineArray() &&
- iPopupEventHandler->PopupVisible() )
- {
- //Publish caption line in popup text box
- TPtrC captionDes;
- TInt captionResId = iActiveTarget->GetCaption( captionDes, EAiScutLongTitle );
-
- if ( captionResId == 0 )
- {
- // Publish descriptor
- err = aObserver.Publish( aPlugin,
- KAiScutContent[ EAiScutContentPopupTextCaptionLine ].id,
- captionDes, iId );
- if( err != KErrNone )
- {
- __PRINT( __DBG_FORMAT( "XAI: publish Popup caption text err = %d" ), err );
- }
- }
- else if ( captionResId > 0 )
- {
- // Publish resource
- err = aObserver.Publish( aPlugin,
- KAiScutContent[ EAiScutContentPopupTextCaptionLine ].id,
- captionResId, iId );
- if( err != KErrNone )
- {
- __PRINT( __DBG_FORMAT( "XAI: publish Popup caption text (resource) err = %d" ), err );
- }
- }
-
- const MDesCArray& lineArray = *iAiScutExtData->PopupLineArray();
- TInt numberOfLines = lineArray.MdcaCount();
- //Iterate each popup text content and either publish or clean it
- //depending on the number or lines in iLineArray
- for( TInt i = 0; i < idCount; i++ )
- {
- if( numberOfLines > i )
- {
- err = aObserver.Publish( aPlugin,
- KAiScutContent[ popupTextContentIds[ i ] ].id,
- lineArray.MdcaPoint( i ), iId );
- if( err != KErrNone )
- {
- __PRINT( __DBG_FORMAT( "XAI: publish Popup text err = %d" ), err );
- }
- }
- else
- {
- err = aObserver.Clean( aPlugin,
- KAiScutContent[ popupTextContentIds[ i ] ].id, iId );
- if( err != KErrNone )
- {
- __PRINT( __DBG_FORMAT( "XAI: clean Popup text err = %d" ), err );
- }
- }
- }
- }
- else
- {
- //Clean each popup text content
- for( TInt i = 0; i < idCount; i++ )
- {
- err = aObserver.Clean( aPlugin,
- KAiScutContent[ popupTextContentIds[ i ] ].id, iId );
- if ( err != KErrNone )
- {
- __PRINT( __DBG_FORMAT( "XAI: clean Popup text err = %d" ), err );
- }
- }
- }
- }
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-TInt CAiScutShortcutExt::PublishIcon( MAiPropertyExtension& aPlugin,
- MAiContentObserver& aObserver, TInt aIconContentId )
- {
- if( aIconContentId == KAiScutContent[EAiScutContentShortcutIcon].id &&
- iAiScutExtData && iAiScutExtData->Icon() )
- {
- const CGulIcon& icon = *iAiScutExtData->Icon();
- CGulIcon* duplicatedIcon = NULL;
- TRAP_IGNORE(
- CFbsBitmap* bitmap = new( ELeave ) CFbsBitmap();
- CleanupStack::PushL( bitmap );
- CFbsBitmap* mask = new( ELeave ) CFbsBitmap();
- CleanupStack::PushL( mask );
-
- User::LeaveIfError( bitmap->Duplicate( icon.Bitmap()->Handle() ) );
- User::LeaveIfError( mask->Duplicate( icon.Mask()->Handle() ) );
-
- duplicatedIcon = CGulIcon::NewL( bitmap, mask );
-
- CleanupStack::Pop( 2, bitmap );
- );
-
- if( duplicatedIcon )
- {
- TInt err = aObserver.PublishPtr( aPlugin,
- aIconContentId, duplicatedIcon, iId );
- if( err != KErrNone )
- {
- delete duplicatedIcon;
- }
- return err;
- }
- }
-
- TInt err = CAiScutShortcut::PublishIcon( aPlugin, aObserver, aIconContentId );
- iIconChanged = EFalse;
- return err;
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-void CAiScutShortcutExt::IssuePublishShortcut()
- {
-// iPublishLineArray = aVisiblePopup;
- CAiScutEngineExt& engine = static_cast< CAiScutEngineExt& >( iEngine );
- engine.CheckAccessAndPublish( *this );
- }
-
-
-// End of File.
--- a/idlefw/plugins/shortcutplugin/src/caiscutshortcutinfo.cpp Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,84 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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: Small container for shortcut info.
-*
-*/
-
-
-#include "caiscutshortcutinfo.h"
-
-// ======== MEMBER FUNCTIONS ========
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-CAiScutShortcutInfo::CAiScutShortcutInfo(TInt aId)
- : iId(aId)
-{
-}
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-void CAiScutShortcutInfo::ConstructL(const TDesC& aTarget)
-{
- iTarget = aTarget.AllocL();
-}
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-CAiScutShortcutInfo* CAiScutShortcutInfo::NewL(TInt aId, const TDesC& aTarget)
-{
- CAiScutShortcutInfo* self = new(ELeave) CAiScutShortcutInfo(aId);
- CleanupStack::PushL(self);
- self->ConstructL(aTarget);
- CleanupStack::Pop(self);
- return self;
-}
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-CAiScutShortcutInfo::~CAiScutShortcutInfo()
-{
- delete iTarget;
-}
-
-// -----------------------------------------------------------------------------
-// Returns the shortcut id.
-// -----------------------------------------------------------------------------
-//
-TInt32 CAiScutShortcutInfo::Id() const
-{
- return iId;
-}
-
-// -----------------------------------------------------------------------------
-// Returns the shortcut target string.
-// -----------------------------------------------------------------------------
-//
-const TDesC& CAiScutShortcutInfo::Target()
- {
- if( iTarget )
- return *iTarget;
- else
- return KNullDesC;
- }
-
-// Eof
--- a/idlefw/plugins/shortcutplugin/src/caiscuttarget.cpp Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,243 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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: Base class for shortcut target
-*
-*/
-
-
-#include "caiscutengine.h"
-#include "caiscuttarget.h"
-#include <AknIconUtils.h>
-#include <AknsUtils.h> // For AknsUtils
-#include <mifconvdefs.h>
-#include <gulicon.h>
-#include <bautils.h>
-#include <AknTaskList.h> // For CAknTaskList
-#include <apgwgnam.h> // For CApaWindowGroupName
-#include <gfxtranseffect/gfxtranseffect.h> // For Transition effect
-#include <akntranseffect.h>
-#include <akntransitionutils.h>
-
-// ======== MEMBER FUNCTIONS ========
-_LIT(KFileLoadDir,"z:\\resource\\");
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-CAiScutTarget::CAiScutTarget(CAiScutEngine& aEngine, TShortcutType aType)
- : iEngine(aEngine)
- , iType(aType)
-{
-}
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-CAiScutTarget::~CAiScutTarget()
-{
-
-}
-
-// ---------------------------------------------------------------------------
-// Returns the shortcut target caption.
-// ---------------------------------------------------------------------------
-//
-TInt CAiScutTarget::GetCaption(TPtrC& /*aDes*/, TAiScutAppTitleType /*aTitleType*/) const
-{
- // Default implementation.
- return KErrNotSupported;
-}
-
-TUid CAiScutTarget::AdditionalUid() const
- {
- return TUid::Uid(-1);
- }
-
-// ---------------------------------------------------------------------------
-// Returns the shortcut target icon.
-// ---------------------------------------------------------------------------
-//
-TInt CAiScutTarget::GetIcon(const TAiScutIcon &aIconToLoad, CGulIcon*& aIcon ) const
-{
- TInt err = KErrNotSupported;
-
- if ( aIconToLoad.iType == EScutIconSkin )
- {
- TRAP(err, LoadIconFromSkinL(aIconToLoad, aIcon));
- }
- else if ( aIconToLoad.iType == EScutIconMif )
- {
- TRAP(err, LoadIconFromFileL(aIconToLoad, aIcon));
- }
- else if ( aIconToLoad.iType == EScutIconMbm )
- {
- TRAP(err, LoadIconFromFileL(aIconToLoad, aIcon));
- }
-
- return err;
-}
-
-TInt CAiScutTarget::GetIcon(CGulIcon*& aIcon) const
- {
- return GetIcon(iOverrideIcon, aIcon);
- }
-
-TInt CAiScutTarget::GetSoftkeyIcon(CGulIcon*& aIcon) const
- {
- return GetIcon(iSoftkeyIcon, aIcon);
- }
-
-TInt CAiScutTarget::GetToolbarIcon(CGulIcon*& aIcon) const
- {
- return GetIcon(iToolbarIcon, aIcon);
- }
-
-void CAiScutTarget::SetOverrideIcon(TAiScutIcon aIcon)
- {
- iOverrideIcon = aIcon;
- }
-
-void CAiScutTarget::SetSoftkeyIcon(TAiScutIcon aIcon)
- {
- iSoftkeyIcon = aIcon;
- }
-
-void CAiScutTarget::SetToolbarIcon(TAiScutIcon aIcon)
- {
- iToolbarIcon = aIcon;
- }
-
-void CAiScutTarget::LoadIconFromSkinL(const TAiScutIcon &aIconToLoad, CGulIcon*& aIcon) const
- {
- CFbsBitmap* bitmap = NULL;
- CFbsBitmap* bitmapMask = NULL;
-
- // With colour group support
- if ( aIconToLoad.iColourGroup >= EAknsCIQsnTextColorsCG1 &&
- aIconToLoad.iColourGroup <= EAknsCIQsnTextColorsCG62)
- {
-
- AknsUtils::CreateColorIconLC(
- AknsUtils::SkinInstance(),
- aIconToLoad.iSkinId,
- KAknsIIDQsnTextColors,
- aIconToLoad.iColourGroup,
- bitmap,
- bitmapMask,
- KNullDesC, /* no backup */
- 0, /* no backup */
- 0, /* no backup */
- KRgbBlack );
-
- if ( bitmap )
- {
- aIcon = CGulIcon::NewL( bitmap, bitmapMask );
- }
- CleanupStack::Pop( 2 ); // bitmap, bitmapMask
- }
- // no colour group support
- else
- {
- aIcon = AknsUtils::CreateGulIconL( AknsUtils::SkinInstance(), aIconToLoad.iSkinId, KNullDesC, 0, 0 );
- }
- if ( !aIcon )
- {
- User::Leave( KErrNotFound );
- }
- }
-
-void CAiScutTarget::LoadIconFromFileL(const TAiScutIcon &aIconToLoad, CGulIcon*& aIcon) const
- {
- CFbsBitmap* bitmap = NULL;
- CFbsBitmap* bitmapMask = NULL;
- TFileName actualPath;
- TInt iconIndexStart = 0;
-
- if ( aIconToLoad.iType == EScutIconMif )
- {
- iconIndexStart = KMifIdFirst;
- }
- actualPath.Append(KFileLoadDir);
- actualPath.Append(aIconToLoad.iPath);
-
- RFs fs; fs.Connect();
- if ( aIconToLoad.iIconId < 0 || !BaflUtils::FileExists(fs, actualPath))
- {
- fs.Close();
- User::Leave( KErrNotFound );
- }
- fs.Close();
- // Mask is next after bitmap
- AknIconUtils::CreateIconLC(bitmap,bitmapMask, actualPath,
- aIconToLoad.iIconId+iconIndexStart, aIconToLoad.iIconId+iconIndexStart+1);
-
-
- aIcon = CGulIcon::NewL(bitmap, bitmapMask);
-
- CleanupStack::Pop(bitmapMask);
- CleanupStack::Pop(bitmap);
-
- if ( !aIcon )
- {
- User::Leave( KErrNotFound );
- }
-
- }
-
-// ---------------------------------------------------------------------------
-// Returns the shortcut target type.
-// ---------------------------------------------------------------------------
-//
-TShortcutType CAiScutTarget::Type() const
-{
- return iType;
-}
-
-// ---------------------------------------------------------------------------
-// Determines which effect should be shown, and starts it.
-// ---------------------------------------------------------------------------
-//
-void CAiScutTarget::BeginEffectL()
- {
- RWsSession& aWs = iEngine.Env()->WsSession();
- TUid appUid = AppUid();
- TInt effectType = AknTransEffect::EApplicationStart;
- CAknTaskList* taskList = CAknTaskList::NewL( aWs );
- TApaTask task = taskList->FindRootApp( appUid );
- delete taskList;
-
- if ( task.Exists() )
- {
- TBool inHiddenList = iEngine.IsHiddenFromFSW(appUid);
- CApaWindowGroupName* wgName = CApaWindowGroupName::NewL( aWs, task.WgId() );
- wgName->SetAppUid( appUid );
- const TBool isHidden = wgName->Hidden() || inHiddenList;
- delete wgName;
-
- if (!isHidden)
- {
- effectType = AknTransEffect::EApplicationStartSwitchRect;
- }
-
- //start a full screen effect
- GfxTransEffect::BeginFullScreen( effectType,
- TRect(0,0,0,0),
- AknTransEffect::EParameterType,
- AknTransEffect::GfxTransParam( appUid,
- AknTransEffect::TParameter::EActivateExplicitContinue ) );
- }
- }
-
-// End of File.
--- a/idlefw/plugins/shortcutplugin/src/caiscuttargetapp.cpp Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,633 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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: Class for application shortcut target
-*
-*/
-
-
-#include <coemain.h> // For CCoeEnv
-#include <w32std.h> // For RWsSession
-#include <akntranseffect.h>
-#include <akntransitionutils.h>
-#include <apacmdln.h> // For CApaCommandLine
-#include <apgtask.h> // For TApaTaskList
-#include <apgwgnam.h> // For CApaWindowGroupName
-#include <gulicon.h> // For CGulIcon
-#include <AknsUtils.h> // For AknsUtils
-#include <AknTaskList.h> // For CAknTaskList
-#include <gfxtranseffect/gfxtranseffect.h> // For Transition effect
-#include <gslauncher.h>
-#include <viewcli.h> // For CVwsSessionWrapper
-#include <escapeutils.h>
-#ifdef SYMBIAN_ENABLE_SPLIT_HEADERS
-#include <viewclipartner.h>
-#endif
-
-#include <featmgr.h>
-#include <centralrepository.h>
-#include <e32property.h>
-#include <settingsinternalcrkeys.h>
-#include <UikonInternalPSKeys.h>
-
-#include <aiscuttexts.rsg>
-//#include <pslnactiveidleplugin.mbg>
-#include <data_caging_path_literals.hrh>
-
-#include <activeidle2domainpskeys.h>
-
-#include "aiscutcontentmodel.h"
-#include "caiscuttargetapp.h"
-#include "caiscutengine.h"
-
-#include <aiscutplugin.mbg>
-#include "debug.h"
-
-#include <AknSgcc.h>
-
-const TInt KIconSizeArray = 4;
-
-// ======== MEMBER FUNCTIONS =================================================
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-CAiScutTargetApp::CAiScutTargetApp(
- CAiScutEngine& aEngine, TShortcutType aType, const TUid aUid)
- : CAiScutTarget(aEngine, aType)
- , iAppUid(aUid)
- {
- }
-
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-void CAiScutTargetApp::ConstructL(const TAiScutParser& aParser)
- {
- iDefinition = aParser.Get(EScutDefComplete).AllocL();
-
- iViewUid.iUid = -1;
-
- switch (Type())
- {
- case EScutApplicationView:
- case EScutChangeTheme:
- if (iAppUid == KScutAppShellUid)
- {
- iViewUid.iUid = 1; // activate always appshell main view.
- }
- else
- {
- iViewUid = TAiScutParser::ParseUid(aParser.Get(EScutDefParamValue));
- }
- break;
-
- case EScutLogsMissedCallsView:
- iMsg = TPtrC8(KLogsMissedCallsView).AllocL();
- break;
-
- case EScutLogsDialledCallsView:
- iMsg = TPtrC8(KLogsDialledCallsView).AllocL();
- break;
-
- case EScutLogsReceivedCallsView:
- iMsg = TPtrC8(KLogsReceivedCallsView).AllocL();
- break;
-
- case EScutLogsMainView:
- iMsg = TPtrC8(KLogsMainView).AllocL();
- break;
-
- case EScutApplicationWithParams:
- {
- TPtrC ptr = aParser.Get(EScutDefParamNameAndValue);
- iMsg = EscapeUtils::ConvertFromUnicodeToUtf8L(ptr);
- break;
- }
-
- default:
- break;
- }
-
- }
-
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-CAiScutTargetApp* CAiScutTargetApp::NewL(
- CAiScutEngine& aEngine, TShortcutType aType, const TAiScutParser& aParser)
- {
- CAiScutTargetApp* self =
- new (ELeave) CAiScutTargetApp(aEngine, aType, aParser.Uid());
-
- CleanupStack::PushL(self);
- self->ConstructL(aParser);
-
- CleanupStack::Pop(self);
-
- return self;
- }
-
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-CAiScutTargetApp::~CAiScutTargetApp()
- {
- delete iCaption;
- delete iShortCaption;
- delete iMsg;
- delete iDefinition;
- }
-
-
-// ---------------------------------------------------------------------------
-// Returns the shortcut definition string.
-// ---------------------------------------------------------------------------
-//
-TPtrC CAiScutTargetApp::Definition() const
- {
- return iDefinition ? TPtrC(*iDefinition) : TPtrC();
- }
-
-
-// ---------------------------------------------------------------------------
-// Returns the shortcut target caption.
-// ---------------------------------------------------------------------------
-//
-TInt CAiScutTargetApp::GetCaption(TPtrC& aDes, TAiScutAppTitleType aTitleType) const
- {
- TRAP_IGNORE(GetCaptionL(aTitleType));
-
- if (aTitleType == EAiScutSkeyTitle)
- {
- aDes.Set(iShortCaption ? *iShortCaption : KNullDesC());
- }
- else
- {
- aDes.Set(iCaption ? *iCaption : KNullDesC());
- }
-
- return 0;
- }
-
-// ---------------------------------------------------------------------------
-// Returns the shortcut target caption.
-// ---------------------------------------------------------------------------
-//
-void CAiScutTargetApp::GetCaptionL(TAiScutAppTitleType aTitleType) const
- {
- TApaAppInfo appInfo;
-
- // Use lazy evaluation, create the caption only when it is first needed.
- if (aTitleType == EAiScutSkeyTitle)
- {
- if( !iShortCaption )
- {
- iEngine.ApaSession().GetAppInfo(appInfo, iAppUid);
- iShortCaption = appInfo.iShortCaption.AllocL();
- }
- }
- else
- {
- if (!iCaption)
- {
- iEngine.ApaSession().GetAppInfo(appInfo, iAppUid);
- iCaption = appInfo.iCaption.AllocL();
- }
- }
- }
-
-// ---------------------------------------------------------------------------
-// Returns the shortcut target icon.
-// ---------------------------------------------------------------------------
-//
-TInt CAiScutTargetApp::GetIcon(CGulIcon*& aIcon) const
- {
- // First try to make the override icon
- // if not successful then do it ourself
- if ( CAiScutTarget::GetIcon(aIcon) != KErrNone )
- {
- TRAP_IGNORE(CreateAppIconL(aIcon));
- }
-
-
- return 0;
- }
-
-// ---------------------------------------------------------------------------
-// Returns the shortcut target icon for toolbar.
-// ---------------------------------------------------------------------------
-//
-TInt CAiScutTargetApp::GetToolbarIcon(CGulIcon*& aIcon) const
- {
- if ( CAiScutTarget::GetToolbarIcon(aIcon) != KErrNone)
- {
- TRAP_IGNORE(CreateAppIconL(aIcon));
- }
-
- return 0;
- }
-
-// ---------------------------------------------------------------------------
-// Creates the application icon.
-// ---------------------------------------------------------------------------
-//
-
-void CAiScutTargetApp::CreateAppIconL(CGulIcon*& aIcon) const
- {
- // To make sure we won't end up with a partially created icon, we first create
- // a temporary icon and take it into use only when it is propertly initialized.
- CGulIcon* tempIcon = NULL;
- TInt err = KErrNone;
-
- // If no scalable icon support is available then the icon is constructed the "old way"
- // java icon separately from the native icon. If the support is available then the
- // java icon is constructed the same way the native icon is constructed.
-
- const TBool isNonNative = iEngine.IsNonNative(iAppUid);
-
- // First try to create a normal non-native icon
- if (isNonNative)
- {
- TRAP(err,
- tempIcon = CreateNonNativeIconL()
- );
- // Just to be sure
- if (err != KErrNone)
- {
- tempIcon = NULL;
- }
- }
- // No icon yet so either native icon or non-native SVG icon.
- if (!tempIcon)
- {
- MAknsSkinInstance* skin = AknsUtils::SkinInstance();
- if ((iAppUid == KScutPersonalisationUid && iViewUid == KScutChangeThemeViewId)
- || (iAppUid == KScutGeneralSettingsUid && (iViewUid == KScutInstallationViewId
- || iViewUid == KScutConnectivityViewId))
- )
- {
- tempIcon = CreateSubstituteIconL(skin, iAppUid, iViewUid);
- }
- else
- {
- CFbsBitmap* bitmap = NULL;
- CFbsBitmap* mask = NULL;
-
- AknsUtils::CreateAppIconLC(skin, iAppUid, EAknsAppIconTypeList, bitmap, mask);
- if (bitmap)
- {
- tempIcon = CGulIcon::NewL(bitmap, mask);
- CleanupStack::Pop(2); // Bitmap and mask. They have to be popped out by number
- // because the order in which they are pushed in is undefined.
- }
-
- }
-
- }
-
- aIcon = tempIcon;
- }
-
-
-CGulIcon* CAiScutTargetApp::CreateSubstituteIconL( MAknsSkinInstance* aSkin, TUid aAppUid, TUid iViewUid ) const
- {
- CGulIcon* tempIcon = NULL;
- TParse* parse = new (ELeave) TParse;
- CleanupStack::PushL(parse);
- parse->Set(KBitmapFile, &KDC_APP_BITMAP_DIR, NULL);
- HBufC* fileName = parse->FullName().AllocLC();
- TPtr fileNamePtr = fileName->Des();
-
- //change idle theme
- if (aAppUid == KScutPersonalisationUid && iViewUid == KScutChangeThemeViewId)
- {
- tempIcon = AknsUtils::CreateGulIconL(
- aSkin,
- KAknsIIDQgnPropPslnAiSub,
- fileNamePtr,
- EMbmAiscutpluginQgn_prop_psln_ai_sub,
- EMbmAiscutpluginQgn_prop_psln_ai_sub_mask);
- }
- //appmngr
- else if(aAppUid == KScutGeneralSettingsUid && iViewUid == KScutInstallationViewId)
- {
- CFbsBitmap* bitmap = NULL;
- CFbsBitmap* mask = NULL;
-
- AknsUtils::CreateAppIconLC(aSkin, KScutAppMngrUid, EAknsAppIconTypeList, bitmap, mask);
-
- // The icon may reside in cache so we need to exclude in order
- // for updated icons to be loaded properly.
- AknIconUtils::ExcludeFromCache( bitmap );
- if (bitmap)
- {
- tempIcon = CGulIcon::NewL(bitmap, mask);
- CleanupStack::Pop(2); // Bitmap and mask. They have to be popped out by number
- // because the order in which they are pushed in is undefined.
- }
- }
- //connectivity view
- else if(aAppUid == KScutGeneralSettingsUid && iViewUid == KScutConnectivityViewId)
- {
- tempIcon = AknsUtils::CreateGulIconL(
- aSkin,
- KAknsIIDQgnPropAiShortcut,
- fileNamePtr,
- EMbmAiscutpluginQgn_prop_cp_conn_shortcut,
- EMbmAiscutpluginQgn_prop_cp_conn_shortcut_mask);
- }
- else
- {
- //never should go here!
- }
-
- CleanupStack::PopAndDestroy(2, parse); // fileName, parse
- return tempIcon;
- }
-
-// ---------------------------------------------------------------------------
-// Creates the NonNative application icon.
-// ---------------------------------------------------------------------------
-//
-
-CGulIcon* CAiScutTargetApp::CreateNonNativeIconL() const
- {
- CApaMaskedBitmap* maskedbitmap = CApaMaskedBitmap::NewLC();
-
- CArrayFixFlat<TSize>* sizesArray = new (ELeave) CArrayFixFlat<TSize>(KIconSizeArray);
- CleanupStack::PushL(sizesArray);
-
- TInt err = iEngine.ApaSession().GetAppIconSizes(iAppUid, *sizesArray);
-
- // If there is no error and there is something in array
- // use first icon size and get an icon.
- if (!err && sizesArray->Count())
- {
- err = iEngine.ApaSession().GetAppIcon(iAppUid, sizesArray->At(0), *maskedbitmap);
- }
-
- // If there was an error, delete every allocated object and leave.
- if (err)
- {
- CleanupStack::PopAndDestroy(sizesArray);
- CleanupStack::PopAndDestroy(maskedbitmap);
- User::Leave(err);
- }
-
- CFbsBitmap* bitmap = new (ELeave) CFbsBitmap();
- CleanupStack::PushL(bitmap);
- CFbsBitmap* mask = new (ELeave) CFbsBitmap();
- CleanupStack::PushL(mask);
-
- User::LeaveIfError(bitmap->Duplicate(maskedbitmap->Handle()));
- User::LeaveIfError(mask->Duplicate(maskedbitmap->Mask()->Handle()));
-
- CGulIcon* icon = CGulIcon::NewL(bitmap, mask);
- //icon->SetBitmapsOwnedExternally(ETrue);
-
- CleanupStack::Pop(mask);
- CleanupStack::Pop(bitmap);
-
- CleanupStack::PopAndDestroy(sizesArray);
- CleanupStack::PopAndDestroy(maskedbitmap);
-
- return icon;
- }
-
-// ---------------------------------------------------------------------------
-// Checks if the target application is accessible.
-// ---------------------------------------------------------------------------
-//
-TBool CAiScutTargetApp::IsAccessibleL(TInt /*aCheckType*/)
- {
- if (iAppUid == KNullUid || iEngine.IsHidden(iAppUid))
- {
- return EFalse;
- }
-
- TApaAppInfo appInfo;
- TInt ret = iEngine.ApaSession().GetAppInfo(appInfo, iAppUid);
-
- if (ret == RApaLsSession::EAppListInvalid)
- {
- // Application list not fully populated yet. Leave with KErrNotReady so
- // the engine can trap it and start the timer to check accessiblity later.
- User::Leave(KErrNotReady);
- }
-
- return (ret == KErrNone);
- }
-
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-void CAiScutTargetApp::LaunchL()
- {
- LaunchL( KNullDesC8 );
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-void CAiScutTargetApp::LaunchL( const TDesC8& aCustomMessage )
- {
- __PRINTS( "XAI: CAiScutShortcut::LaunchL");
- __PRINT( __DBG_FORMAT("XAI: type = %d"), Type());
-
- if (iAppUid != KNullUid)
- {
-
- // Some special cases
- // ---------------------------------
- if( Type() == EScutApplicationView &&
- iAppUid == KScutGeneralSettingsUid )
- {
- CGSLauncher* l = CGSLauncher::NewLC();
- l->LaunchGSViewL ( iViewUid,
- KScutActiveIdleUid,
- aCustomMessage );
- CleanupStack::PopAndDestroy( l );
-
- return;
- }
- else if ( ( ( Type() == EScutChangeTheme) && ( iAppUid == KScutPersonalisationUid ) ) || // For AI2 Themes
- ( iAppUid == KScutDiallerUid ) ) // Dialer
- {
- const TVwsViewId viewId(iAppUid, iViewUid);
- TUid msgId = KScutGeneralSettingsUid;
-
- if( iAppUid == KScutDiallerUid )
- {
- msgId = KScutDiallerViewCommand;
- RProperty::Set(KPSUidAiInformation, KActiveIdleState, EPSAiNumberEntry );
- }
-
- TInt err = iEngine.VwsSession()->CreateActivateViewEvent( viewId, msgId, aCustomMessage );
-
- return;
- }
-
- TBool exists = EFalse;
-
- CAknTaskList* taskList = CAknTaskList::NewL(iEngine.Env()->WsSession());
- TApaTask task(taskList->FindRootApp(iAppUid));
- delete taskList;
-
- exists = task.Exists();
-
- // If not found, try again little harder
- // ----------------------------------------
- if (!exists)
- {
- RWsSession wsSession = iEngine.Env()->WsSession();
- task.SetWgId(0); // Set task to non-existant task
- TInt wgId=0;
- CApaWindowGroupName::FindByAppUid(iAppUid, wsSession, wgId);
-
- if (wgId != KErrNotFound)
- {
- exists = ETrue;
- task.SetWgId(wgId);
- }
- }
-
- // Actual reactivatio / starting
- // -----------------------------
- if (exists) // Found, reactivate
- {
- if (iMsg && iMsg->Length())
- {
- task.SendMessage(KNullUid, *iMsg);
- }
- if ( iAppUid == KScutAppShellUid ) // AppShell effect is an exception
- {
- //start different fullscreen effect when launching appshell
- GfxTransEffect::BeginFullScreen( AknTransEffect::EApplicationActivate ,
- TRect(0,0,0,0),
- AknTransEffect::EParameterType,
- AknTransEffect::GfxTransParam( iAppUid,
- AknTransEffect::TParameter::EActivateExplicitContinue ) );
- }
-
- if( iAppUid == KScutAppShellUid ) // Appshell starting is an exception
- {
- task.SendMessage( KUidApaMessageSwitchOpenFile , KNullDesC8 );
- }
- else
- {
- // If message was sent, don't try to bring task to foreground as task will do it itself
- if ( !( (iAppUid == KScutLogsUid) && (iMsg && iMsg->Length() > 0)) )
- {
- CAknSgcClient::MoveApp(task.WgId(), ESgcMoveAppToForeground);
- }
- }
- }
- else // Not exists, starting
- {
- TApaAppInfo appInfo;
-
- if (iEngine.ApaSession().GetAppInfo(appInfo, iAppUid) == KErrNone)
- {
- if (FeatureManager::FeatureSupported(KFeatureIdCommonVoip) &&
- (iAppUid == KScutEasyVoIPApplicationUid) )
- {
- SetEasyVoIPShortcutStartL();
- }
-
- CApaCommandLine* cmdLine = CApaCommandLine::NewLC();
- cmdLine->SetExecutableNameL(appInfo.iFullName);
- if (iMsg && iMsg->Length())
- {
- cmdLine->SetCommandL(EApaCommandRun);
- cmdLine->SetTailEndL(*iMsg);
- }
- if (iBackground)
- {
- cmdLine->SetCommandL(EApaCommandBackground);
- }
- if ( iAppUid == KScutVoiceDialUid )
- {
- cmdLine ->SetCommandL( EApaCommandRunWithoutViews );
- }
-
- TInt err = iEngine.ApaSession().StartApp(*cmdLine);
-
-
- __PRINT( __DBG_FORMAT("XAI: StartApp err = %d"), err);
-
- User::LeaveIfError(err);
-
- CleanupStack::PopAndDestroy(cmdLine);
- }
- }
- }
- }
-
-
-// ---------------------------------------------------------------------------
-// Return application uid this target launches.
-// ---------------------------------------------------------------------------
-//
-TUid CAiScutTargetApp::AppUid() const
- {
-
-#ifdef __WEB_WIDGETS
- // for widgets return widgetapp uid.
- if (iEngine.IsWidget(iAppUid))
- {
- return KUidWidgetUi;
- }
-#endif
-
- return iAppUid;
- }
-
-// ---------------------------------------------------------------------------
-// Return the view id
-// ---------------------------------------------------------------------------
-//
-TUid CAiScutTargetApp::AdditionalUid() const
- {
- return iViewUid;
- }
-
-// ---------------------------------------------------------------------------
-// CScShortcutNativeApp::SetEasyVoIPShortcutStartL()
-//
-// Performs Central Repository shortcut set for EasyVoIP application.
-// ---------------------------------------------------------------------------
-//
-void CAiScutTargetApp::SetEasyVoIPShortcutStartL() const
- {
- CRepository* repository = CRepository::NewL(KUidEasyVoIPRepository);
- CleanupStack::PushL(repository);
-
- // Set shortcut start for EasyVoIP application.
- TInt error = repository->Set(KEasyVoIPShortcutStartup, 1);
- User::LeaveIfError(error);
-
- CleanupStack::PopAndDestroy(repository);
- }
-
-// End of File.
--- a/idlefw/plugins/shortcutplugin/src/caiscuttargetbkm.cpp Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,247 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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: Class for bookmark shortcut target
-*
-*/
-
-
-#include <coemain.h> // For CCoeEnv
-#include <w32std.h> // For RWsSession
-#include <apgtask.h> // For TApaTaskList
-#include <gulicon.h> // For CGulIcon
-#include <AknsUtils.h> // For AknsUtils
-#include <data_caging_path_literals.hrh>
-
-#include "aiscutcontentmodel.h"
-#include "caiscuttargetbkm.h"
-#include "caiscutengine.h"
-#include <aiscutplugin.mbg>
-
-#include "debug.h"
-
-
-
-_LIT16(KParam, "1 ");
-const TInt KTBUF16 = 16;
-
-// ======== MEMBER FUNCTIONS ========
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-CAiScutTargetBkm::CAiScutTargetBkm(CAiScutEngine& aEngine, TShortcutType aType)
- : CAiScutTarget(aEngine, aType)
-{
-}
-
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-void CAiScutTargetBkm::ConstructL(const TAiScutParser& aParser)
-{
- iDefinition = aParser.Get(EScutDefComplete).AllocL();
- iBkmUid = aParser.ParseUid(aParser.Get(EScutDefParamValue));
-}
-
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-CAiScutTargetBkm* CAiScutTargetBkm::NewL(
- CAiScutEngine& aEngine, TShortcutType aType, const TAiScutParser& aParser)
-{
- CAiScutTargetBkm* self = new (ELeave) CAiScutTargetBkm(aEngine, aType);
-
- CleanupStack::PushL(self);
- self->ConstructL(aParser);
- CleanupStack::Pop(self);
-
- return self;
-}
-
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-CAiScutTargetBkm::~CAiScutTargetBkm()
-{
- delete iCaption;
- delete iDefinition;
-}
-
-
-// ---------------------------------------------------------------------------
-// Returns the shortcut definition string.
-// ---------------------------------------------------------------------------
-//
-TPtrC CAiScutTargetBkm::Definition() const
-{
- return iDefinition ? TPtrC(*iDefinition) : TPtrC();
-}
-
-
-// ---------------------------------------------------------------------------
-// Returns the shortcut target caption.
-// ---------------------------------------------------------------------------
-//
-TInt CAiScutTargetBkm::GetCaption(TPtrC& aDes, TAiScutAppTitleType /*aTitleType*/) const
-{
- // Use lazy evaluation, create the caption only when it is first needed.
- if (!iCaption)
- {
- // Get the caption.
- TRAP_IGNORE(GetCaptionL());
- }
-
- aDes.Set(iCaption ? *iCaption : KNullDesC());
-
- return 0;
-}
-
-// ---------------------------------------------------------------------------
-// Returns the shortcut target caption.
-// ---------------------------------------------------------------------------
-//
-void CAiScutTargetBkm::GetCaptionL() const
-{
- RFavouritesDb& db = iEngine.FavouritesDb();
-
- CFavouritesItem* favItem = CFavouritesItem::NewLC();
- TInt err = db.Get(iBkmUid.iUid, *favItem);
- iCaption = favItem->Name().AllocL();
-
- CleanupStack::PopAndDestroy(favItem);
-}
-
-
-// ---------------------------------------------------------------------------
-// Returns the shortcut target icon.
-// ---------------------------------------------------------------------------
-//
-TInt CAiScutTargetBkm::GetIcon(CGulIcon*& aIcon) const
-{
- if ( CAiScutTarget::GetIcon(aIcon) != KErrNone )
- {
-
- CGulIcon* tempIcon = NULL;
-
- TFileName pluginIconFile(KDC_APP_BITMAP_DIR);
- pluginIconFile.Append(KBitmapFile);
-
- TRAP_IGNORE(
- tempIcon = AknsUtils::CreateGulIconL(
- AknsUtils::SkinInstance(),
- KAknsIIDQgnPropAiShortcut,
- pluginIconFile,
- EMbmAiscutpluginQgn_menu_url,
- EMbmAiscutpluginQgn_menu_url_mask
- )
- );
-
- aIcon = tempIcon;
- }
-
- return 0;
-}
-
-// -----------------------------------------------------------------------------
-// Checks if the target bookmark is accessible.
-// -----------------------------------------------------------------------------
-//
-TBool CAiScutTargetBkm::IsAccessibleL(TInt /*aCheckType*/)
-{
- if (iBkmUid == KNullUid)
- {
- return EFalse;
- }
-
- // Search bookmark from favourites.
- RFavouritesDb& db = iEngine.FavouritesDb();
-
- TBool exists = EFalse;
- TInt err = db.ItemExists(iBkmUid.iUid, exists);
- if (err != KErrNone)
- {
- exists = EFalse;
- }
-
- return exists;
-}
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CAiScutTargetBkm::LaunchL()
-{
-/*
-1. Start/Continue the browser and nothing is specified (the default case) Parameter = <Any text>
-2. Start/Continue the browser specifying a Bookmark Parameter = "1"+"<Space>"+"<Uid of the Bookmark>"
-3. Start/Continue the browser specifying a Saved deck Parameter = "2"+"<Space>"+"<Uid of the Saved deck>"
-4. Start/Continue the browser specifying a URL Parameter = "4"+"<Space>"+"<Url>"
-5. Start/Continue the browser specifying a URL and an Access Point Parameter = "4"+"<Space>"+"<Url>"+"<Space>"+"<Uid of Ap>"
-6. Start/Continue the browser with the start page.
- (Used when starting the browser with a long press of "0" in the
- Idle state of the phone. Parameter = "5"
-7. Start/Continue the browser specifying a Bookmark folder Parameter = "6"+"<Space>"+"<Uid of the Folder>"
-*/
-
- TApaTaskList taskList(iEngine.Env()->WsSession());
- TApaTask task = taskList.FindApp(KScutBrowserUid);
-
-
- TBuf<KTBUF16> param(KParam);
- param.AppendNum(iBkmUid.iUid);
-
- __PRINT( __DBG_FORMAT("XAI: CAiScutTargetBkm::LaunchL '%S' "), ¶m);
-
- if (task.Exists())
- {
- HBufC8* param8 = HBufC8::NewLC(param.Length());
- param8->Des().Copy(param);
- task.SendMessage(KNullUid, *param8); // Uid is not used.
- CleanupStack::PopAndDestroy(param8);
- }
- else
- {
- TThreadId id;
- User::LeaveIfError(iEngine.ApaSession().StartDocument(
- param, KScutBrowserUid, id));
- }
-}
-
-// ---------------------------------------------------------------------------
-// Return application uid this target launches.
-// ---------------------------------------------------------------------------
-//
-TUid CAiScutTargetBkm::AppUid() const
-{
- return KScutBrowserUid;
-}
-
-// ---------------------------------------------------------------------------
-// Return the bkm id
-// ---------------------------------------------------------------------------
-TUid CAiScutTargetBkm::AdditionalUid() const
- {
- return iBkmUid;
- }
-
-// End of File.
--- a/idlefw/plugins/shortcutplugin/src/caiscuttargetempty.cpp Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,119 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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: Class for empty target.
-*
-*/
-
-
-#include "caiscuttargetempty.h"
-
-// ----------------------------------------------------------------------------
-// CAiScutEmpty::CAiScutEmpty
-// ----------------------------------------------------------------------------
-//
-CAiScutTargetEmpty::CAiScutTargetEmpty(CAiScutEngine& aEngine, TShortcutType aType)
- : CAiScutTarget(aEngine, aType)
-{
-}
-
-// ----------------------------------------------------------------------------
-// CAiScutEmpty::ConstructL
-// ----------------------------------------------------------------------------
-//
-void CAiScutTargetEmpty::ConstructL(const TDesC& aTarget)
-{
- iDefinition = aTarget.AllocL();
-}
-
-// ----------------------------------------------------------------------------
-// CAiScutEmpty::NewL
-// ----------------------------------------------------------------------------
-//
-CAiScutTargetEmpty* CAiScutTargetEmpty::NewL(
- CAiScutEngine& aEngine, TShortcutType aType, const TDesC& aTarget)
-{
- CAiScutTargetEmpty* self = new (ELeave) CAiScutTargetEmpty(aEngine, aType);
-
- CleanupStack::PushL(self);
- self->ConstructL(aTarget);
- CleanupStack::Pop(self);
-
- return self;
-}
-
-// ----------------------------------------------------------------------------
-// CAiScutEmpty::~CAiScutEmpty
-// ----------------------------------------------------------------------------
-//
-CAiScutTargetEmpty::~CAiScutTargetEmpty()
-{
- delete iDefinition;
-}
-
-// ---------------------------------------------------------------------------
-// Returns the shortcut definition string
-// ---------------------------------------------------------------------------
-//
-TPtrC CAiScutTargetEmpty::Definition() const
-{
- return iDefinition ? TPtrC(*iDefinition) : TPtrC();
-}
-
-// ---------------------------------------------------------------------------
-// Returns the shortcut target caption.
-// ---------------------------------------------------------------------------
-//
-TInt CAiScutTargetEmpty::GetCaption(TPtrC& aDes, TAiScutAppTitleType /*aTitleType*/) const
-{
- aDes.Set(KNullDesC());
- return 0;
-}
-
-// ---------------------------------------------------------------------------
-// Returns the shortcut target icon.
-// ---------------------------------------------------------------------------
-//
-TInt CAiScutTargetEmpty::GetIcon(CGulIcon*& aIcon) const
-{
- aIcon = NULL;
- return 0;
-}
-
-// -----------------------------------------------------------------------------
-// Checks if the target is accessible
-// -----------------------------------------------------------------------------
-//
-TBool CAiScutTargetEmpty::IsAccessibleL(TInt /*aCheckType*/)
-{
- return (iType != EScutUnknown);
-}
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CAiScutTargetEmpty::LaunchL()
-{
-}
-
-// ---------------------------------------------------------------------------
-// Return application uid this target launches.
-// ---------------------------------------------------------------------------
-//
-TUid CAiScutTargetEmpty::AppUid() const
-{
- return KNullUid;
-}
-
-// End of File.
--- a/idlefw/plugins/shortcutplugin/src/caiscuttargethttp.cpp Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,226 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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: Class for http shortcut target
-*
-*/
-
-
-#include <coemain.h> // For CCoeEnv
-#include <w32std.h> // For RWsSession
-#include <apgtask.h> // For TApaTaskList
-#include <gulicon.h> // For CGulIcon
-#include <AknsUtils.h> // For AknsUtils
-#include <data_caging_path_literals.hrh>
-
-#include "caiscuttargethttp.h"
-#include "caiscutengine.h"
-#include <aiscutplugin.mbg>
-
-#include "debug.h"
-
-// ======== MEMBER FUNCTIONS ========
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-CAiScutTargetHttp::CAiScutTargetHttp(CAiScutEngine& aEngine, TShortcutType aType)
- : CAiScutTarget(aEngine, aType)
-{
-}
-
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-void CAiScutTargetHttp::ConstructL(const TAiScutParser& aParser)
-{
- iDefinition = aParser.Get( EScutDefComplete ).AllocL();
- iChecksum = TUid::Uid( aParser.ChecksumForString( *iDefinition) );
-
- // Get the possible custom title string from the parser
- iCaption = HBufC::NewL( iDefinition->Length() );
- TPtr captionPtr = iCaption->Des();
- TInt err = aParser.CustomTitle( captionPtr );
-
- if ( err != KErrNone || iCaption->Length() <= 0 )
- {
- delete iCaption;
- iCaption = NULL;
- }
- TPtr defPtr = iDefinition->Des();
- // we need to strip the possible icon definitions away from
- // the URL as they are not part of it.
- aParser.RemoveExtraDefinitionsL( defPtr );
-}
-
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-CAiScutTargetHttp* CAiScutTargetHttp::NewL(
- CAiScutEngine& aEngine, TShortcutType aType, const TAiScutParser& aParser)
-{
- CAiScutTargetHttp* self = new (ELeave) CAiScutTargetHttp(aEngine, aType);
-
- CleanupStack::PushL(self);
- self->ConstructL(aParser);
- CleanupStack::Pop(self);
-
- return self;
-}
-
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-CAiScutTargetHttp::~CAiScutTargetHttp()
-{
- delete iDefinition;
- delete iCaption;
-}
-
-
-// ---------------------------------------------------------------------------
-// Returns the shortcut definition string.
-// ---------------------------------------------------------------------------
-//
-TPtrC CAiScutTargetHttp::Definition() const
-{
- return iDefinition ? TPtrC(*iDefinition) : TPtrC();
-}
-
-
-// ---------------------------------------------------------------------------
-// Returns the shortcut target caption.
-// ---------------------------------------------------------------------------
-//
-TInt CAiScutTargetHttp::GetCaption(TPtrC& aDes, TAiScutAppTitleType /*aTitleType*/) const
-{
- // Custom title is fetched when constructing. If no custom
- // title then use part of the URL as title
- if ( !iCaption )
- {
- TUriParser parser;
- TInt err = parser.Parse(*iDefinition);
-
- if (err == KErrNone)
- {
- // Remove scheme from the url.
- iCaption = parser.Extract(EUriHost).Alloc();
- }
- else
- {
- iCaption = iDefinition->Alloc();
- }
- }
-
- aDes.Set(*iCaption);
-
- return 0;
-}
-
-
-// ---------------------------------------------------------------------------
-// Returns the shortcut target icon.
-// ---------------------------------------------------------------------------
-//
-TInt CAiScutTargetHttp::GetIcon(CGulIcon*& aIcon) const
-{
-
- if ( CAiScutTarget::GetIcon(aIcon) != KErrNone )
- {
- CGulIcon* tempIcon = NULL;
-
- TFileName pluginIconFile(KDC_APP_BITMAP_DIR);
- pluginIconFile.Append(KBitmapFile);
-
- TRAP_IGNORE(
- tempIcon = AknsUtils::CreateGulIconL(
- AknsUtils::SkinInstance(),
- KAknsIIDQgnPropAiShortcut,
- pluginIconFile,
- EMbmAiscutpluginQgn_menu_url,
- EMbmAiscutpluginQgn_menu_url_mask
- )
- );
-
- aIcon = tempIcon;
- }
- return 0;
-}
-
-
-// ---------------------------------------------------------------------------
-// Checks if the shortcut target is accessible.
-// ---------------------------------------------------------------------------
-//
-TBool CAiScutTargetHttp::IsAccessibleL(TInt /*aCheckType*/)
-{
- return (iDefinition->Length() > 0);
-}
-
-
-// -----------------------------------------------------------------------------
-// Launches the browser
-// -----------------------------------------------------------------------------
-//
-void CAiScutTargetHttp::LaunchL()
-{
- // Store the http address directly in the browser parameter format.
- // For example "4 http://www.nokia.com". 4 = open an url.
- HBufC* param = HBufC::NewLC(iDefinition->Length() + KOpenUrlParam().Length());
- param->Des().Copy(KOpenUrlParam());
- param->Des().Append(*iDefinition);
-
- __PRINT( __DBG_FORMAT("XAI: CAiScutTargetHttp::LaunchL '%S' "), param);
-
- TApaTaskList taskList(iEngine.Env()->WsSession());
- TApaTask task = taskList.FindApp(KScutBrowserUid);
-
- if (task.Exists())
- {
- HBufC8* param8 = HBufC8::NewLC(param->Length());
- param8->Des().Copy(*param);
- task.SendMessage(KNullUid, *param8); // Uid is not used.
- CleanupStack::PopAndDestroy(param8);
- }
- else
- {
- TThreadId id;
- User::LeaveIfError(iEngine.ApaSession().StartDocument(
- *param, KScutBrowserUid, id));
- }
-
- CleanupStack::PopAndDestroy(param);
-}
-
-// ---------------------------------------------------------------------------
-// Return application uid this target launches.
-// ---------------------------------------------------------------------------
-//
-TUid CAiScutTargetHttp::AppUid() const
-{
- return KScutBrowserUid;
-}
-
-TUid CAiScutTargetHttp::AdditionalUid() const
-{
- return iChecksum;
-}
-
-// End of File.
--- a/idlefw/plugins/shortcutplugin/src/caiscuttargetkeylock.cpp Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,165 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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: Class for key lock
-*
-*/
-
-
-#include "caiscuttargetkeylock.h"
-#include <featmgr.h>
-
-// Amount of attempts to try to connect to server.
-const TInt KTriesToConnectServer(3);
-
-// Delay between retries to connect.
-const TInt KTimeBeforeRetryingServerConnection(50000);
-
-// ----------------------------------------------------------------------------
-// CAiScutKeyLock::CAiScutKeyLock
-// ----------------------------------------------------------------------------
-//
-CAiScutTargetKeyLock::CAiScutTargetKeyLock(CAiScutEngine& aEngine, TShortcutType aType)
- : CAiScutTarget(aEngine, aType)
-{
-}
-
-// ----------------------------------------------------------------------------
-// CAiScutKeyLock::ConstructL
-// ----------------------------------------------------------------------------
-//
-void CAiScutTargetKeyLock::ConstructL(const TDesC& aTarget)
-{
- iDefinition = aTarget.AllocL();
-
- TInt err(KErrGeneral);
- TInt thisTry(0);
-
- // Try connect successfully with server limited a number of times
- err = iKeyLock.Connect();
- while ((err != KErrNone) && (thisTry++ < KTriesToConnectServer))
- {
- User::After(KTimeBeforeRetryingServerConnection);
- err = iKeyLock.Connect();
- }
- User::LeaveIfError(err);
-
-}
-
-// ----------------------------------------------------------------------------
-// CAiScutKeyLock::NewL
-// ----------------------------------------------------------------------------
-//
-CAiScutTargetKeyLock* CAiScutTargetKeyLock::NewL(
- CAiScutEngine& aEngine, TShortcutType aType, const TDesC& aTarget)
-{
- CAiScutTargetKeyLock* self = new (ELeave) CAiScutTargetKeyLock(aEngine, aType);
-
- CleanupStack::PushL(self);
- self->ConstructL(aTarget);
- CleanupStack::Pop(self);
-
- return self;
-}
-
-// ----------------------------------------------------------------------------
-// CAiScutKeyLock::~CAiScutKeyLock
-// ----------------------------------------------------------------------------
-//
-CAiScutTargetKeyLock::~CAiScutTargetKeyLock()
-{
- delete iDefinition;
- iKeyLock.Close();
-}
-
-// ---------------------------------------------------------------------------
-// Returns the shortcut definition string
-// ---------------------------------------------------------------------------
-//
-TPtrC CAiScutTargetKeyLock::Definition() const
-{
- return iDefinition ? TPtrC(*iDefinition) : TPtrC();
-}
-
-
-// ---------------------------------------------------------------------------
-// Returns the shortcut target caption.
-// ---------------------------------------------------------------------------
-//
-TInt CAiScutTargetKeyLock::GetCaption(TPtrC& aDes, TAiScutAppTitleType /*aTitleType*/) const
-{
- aDes.Set(KNullDesC());
- return 0;
-}
-
-
-// ---------------------------------------------------------------------------
-// Returns the shortcut target icon.
-// ---------------------------------------------------------------------------
-//
-TInt CAiScutTargetKeyLock::GetIcon(CGulIcon*& aIcon) const
-{
- aIcon = NULL;
- return 0;
-}
-
-
-// -----------------------------------------------------------------------------
-// Checks if the target is accessible
-// -----------------------------------------------------------------------------
-//
-TBool CAiScutTargetKeyLock::IsAccessibleL(TInt /*aCheckType*/)
-{
- return ETrue;
-}
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CAiScutTargetKeyLock::LaunchL()
-{
- EnableKeyLock();
-}
-
-// ---------------------------------------------------------------------------
-// Return application uid this target launches.
-// ---------------------------------------------------------------------------
-//
-TUid CAiScutTargetKeyLock::AppUid() const
-{
- return KNullUid;
-}
-
-
-// ----------------------------------------------------------------------------
-// CAiScutTargetKeyLock::EnableKeyLock
-// ----------------------------------------------------------------------------
-//
-void CAiScutTargetKeyLock::EnableKeyLock()
-{
- iKeyLock.EnableKeyLock();
-}
-
-
-// ----------------------------------------------------------------------------
-// CAiScutTargetKeyLock::IsKeyLockEnabled
-// ----------------------------------------------------------------------------
-//
-TBool CAiScutTargetKeyLock::IsKeyLockEnabled()
-{
- return iKeyLock.IsKeyLockEnabled();
-}
-
-// End of File.
--- a/idlefw/plugins/shortcutplugin/src/caiscuttargetmessagingview.cpp Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,236 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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: Class for messaging view shortcut target
-*
-*/
-
-
-#include <msvuids.h> // For KMsvRootIndexEntryIdValue
-#include <gulicon.h> // For CGulIcon
-#include <SenduiMtmUids.h>
-#include <viewcli.h> // For CVwsSessionWrapper
-#include <AknsUtils.h> // For AknsUtils
-#include <data_caging_path_literals.hrh>
-#ifdef SYMBIAN_ENABLE_SPLIT_HEADERS
-#include <viewclipartner.h>
-#endif
-
-#include "caiscuttargetmessagingview.h"
-#include "caiscutengine.h"
-#include <aiscutplugin.mbg>
-
-#include "debug.h"
-
-// ======== MEMBER FUNCTIONS ========
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-CAiScutTargetMessagingView::CAiScutTargetMessagingView(CAiScutEngine& aEngine, TShortcutType aType)
- : CAiScutTarget(aEngine, aType)
-{
-}
-
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-void CAiScutTargetMessagingView::ConstructL(const TAiScutParser& aParser)
-{
- iDefinition = aParser.Get(EScutDefComplete).AllocL();
- // Updates the view name also
- FindViewIdL();
-}
-
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-CAiScutTargetMessagingView* CAiScutTargetMessagingView::NewL(
- CAiScutEngine& aEngine, TShortcutType aType, const TAiScutParser& aParser)
-{
- CAiScutTargetMessagingView* self = new (ELeave) CAiScutTargetMessagingView(aEngine, aType);
-
- CleanupStack::PushL(self);
- self->ConstructL(aParser);
- CleanupStack::Pop(self);
-
- return self;
-}
-
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-CAiScutTargetMessagingView::~CAiScutTargetMessagingView()
-{
- delete iDefinition;
- delete iViewName;
-}
-
-
-// ---------------------------------------------------------------------------
-// Returns the shortcut definition string.
-// ---------------------------------------------------------------------------
-//
-TPtrC CAiScutTargetMessagingView::Definition() const
-{
- return TPtrC(*iDefinition);
-}
-
-
-// ---------------------------------------------------------------------------
-// Returns the shortcut target caption.
-// ---------------------------------------------------------------------------
-//
-TInt CAiScutTargetMessagingView::GetCaption(TPtrC& aDes, TAiScutAppTitleType /*aTitleType*/) const
-{
- aDes.Set(*iViewName);
- return 0;
-}
-
-
-// ---------------------------------------------------------------------------
-// Returns the shortcut target icon.
-// ---------------------------------------------------------------------------
-//
-TInt CAiScutTargetMessagingView::GetIcon(CGulIcon*& aIcon) const
-{
- if ( CAiScutTarget::GetIcon(aIcon) != KErrNone )
- {
- TRAP_IGNORE(GetIconL(aIcon));
- }
-
- return 0;
-}
-
-// ---------------------------------------------------------------------------
-// Returns the shortcut target icon.
-// ---------------------------------------------------------------------------
-//
-void CAiScutTargetMessagingView::GetIconL(CGulIcon*& aIcon) const
-{
- CGulIcon* tempIcon = NULL;
-
- CFbsBitmap* bitmap = NULL;
- CFbsBitmap* mask = NULL;
-
- MAknsSkinInstance* skin = AknsUtils::SkinInstance();
- AknsUtils::CreateAppIconLC(skin, KScutMessagingUid, EAknsAppIconTypeList, bitmap, mask);
-
- tempIcon = CGulIcon::NewL(bitmap, mask);
-
- CleanupStack::Pop(2); // Bitmap and mask. They have to be popped out by number
- // because the order in which they are pushed in is undefined.
-
- //Do not need to sets the bitmap and mask to be owned externally
-
- aIcon = tempIcon;
-}
-
-
-// ---------------------------------------------------------------------------
-// Checks if the shortcut target is accessible.
-// ---------------------------------------------------------------------------
-//
-TBool CAiScutTargetMessagingView::IsAccessibleL(TInt /*aCheckType*/)
-{
- return FindViewIdL() != KErrNotFound;
-}
-
-
-// ---------------------------------------------------------------------------
-// Launches a remote mailbox.
-// ---------------------------------------------------------------------------
-//
-void CAiScutTargetMessagingView::LaunchL()
-{
- TMsvId id(FindViewIdL());
- if (id != KErrNotFound)
- {
- const TVwsViewId viewId(KScutMessagingUid, KScutRemoteMailboxViewId);
- iEngine.VwsSession()->CreateActivateViewEvent(viewId, TUid::Uid(id), KNullDesC8());
- }
-}
-
-// ---------------------------------------------------------------------------
-// Return application uid this target launches.
-// ---------------------------------------------------------------------------
-//
-TUid CAiScutTargetMessagingView::AppUid() const
-{
- return KScutMessagingUid;
-}
-
-
-// ---------------------------------------------------------------------------
-// Tries to find a view id.
-// ---------------------------------------------------------------------------
-//
-TMsvId CAiScutTargetMessagingView::FindViewIdL()
- {
- TMsvId id(KErrNotFound);
-
- TInt mailboxId = KErrNone;
- TAiScutParser parser;
- parser.Parse(*iDefinition);
- TLex lex(parser.Get(EScutDefParamValue));
- lex.Val(mailboxId);
-
- if (iEngine.MsvSession())
- {
- // KErrNotReady is the only allowed leave code. Engine will trap it and start a timer
- // to check access later. Other possible leaves emitted by the message server are
- // substituted with KErrNotReady.
- CMsvEntry* rootEntry = NULL;
- TRAPD(err, rootEntry = iEngine.MsvSession()->GetEntryL(KMsvRootIndexEntryIdValue));
- if (err != KErrNone)
- {
- User::Leave(KErrNotReady);
- }
-
- if(rootEntry)
- {
- // No leaving code here since rootEntry is not in cleanup stack.
- for (TInt i = rootEntry->Count(); --i >= 0;)
- {
- const TMsvEntry& tentry = (*rootEntry)[i];
-
- __PRINT( __DBG_FORMAT("XAI: CAiScutTargetMessagingView::FindViewIdL id = 0x%x '%S'"),
- tentry.Id(), &tentry.iDetails);
- if ((tentry.iMtm == KSenduiMtmImap4Uid || tentry.iMtm == KSenduiMtmPop3Uid) &&
- tentry.Id() == mailboxId)
- {
- id = tentry.Id();
- delete iViewName;
- iViewName = NULL;
- iViewName = tentry.iDetails.AllocL();
- break;
- }
- }
-
- delete rootEntry;
- rootEntry = NULL;
-
- }
- }
-
- return id;
-}
-
-// End of File.
--- a/idlefw/plugins/shortcutplugin/src/caiscuttargetnewmsg.cpp Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,448 +0,0 @@
-/*
-* Copyright (c) 2005-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".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: Class for new message shortcut target
-*
-*/
-
-
-#include <sendui.h> // For CSendUi
-#include <Sendnorm.rsg> // For settings not ok - error dialog
-#include <gulicon.h> // For CGulIcon
-#include <SenduiMtmUids.h>
-#include <cemailaccounts.h> // For finding out available email account counts
-#include <AknsUtils.h> // For AknsUtils
-
-#include <avkon.rsg>
-
-#include <data_caging_path_literals.hrh>
-#include <AknGlobalNote.h> // For error note
-#include <MuiuMsvUiServiceUtilities.h>
-#include <StringLoader.h>
-
-#include "aiscutcontentmodel.h"
-#include "caiscuttargetnewmsg.h"
-#include "caiscutengine.h"
-#include <aiscutplugin.mbg>
-#include <e32property.h>
-#include <connect/sbdefs.h>
-#include <filemanagerbkupchecker.rsg>
-#include <aiscuttexts.rsg>
-
-#include "debug.h"
-
-using namespace conn;
-const TInt KMaxBufSize = 256;
-
-// Status keys adopted from FileManager to be used when checking file backup status
-const TUid KPSUidFileManagerStatus = { 0x101F84EB }; // File Manager SID
-const TUint32 KFileManagerBkupStatus = 0x00000001;
-
-enum TFileManagerBkupStatusType
- {
- EFileManagerBkupStatusUnset = 0x00000000,
- EFileManagerBkupStatusBackup = 0x00000001,
- EFileManagerBkupStatusRestore = 0x00000002
- };
-
-TBool PhoneIsInBackupOrRestoreMode()
- {
- TBool backupOrRestore = EFalse;
-
- TInt status( EFileManagerBkupStatusUnset );
- TInt err( RProperty::Get( KPSUidFileManagerStatus, KFileManagerBkupStatus, status ) );
- if ( status == EFileManagerBkupStatusBackup )
- {
- backupOrRestore = ETrue;
- return backupOrRestore;
- }
-
- // Get the back-up restore key, return EFalse if we can't get the key
- TInt keyVal = 0;
- const TInt error = RProperty::Get( KUidSystemCategory, conn::KUidBackupRestoreKey, keyVal );
- if( error )
- {
- return backupOrRestore;
- }
-
- const conn::TBURPartType partType = static_cast< conn::TBURPartType >( keyVal & conn::KBURPartTypeMask );
- if (keyVal != 0)
- {
- switch(partType)
- {
- case EBURUnset:
- case EBURNormal:
- break;
- case EBURBackupFull:
- case EBURBackupPartial:
- case EBURRestoreFull:
- case EBURRestorePartial:
- backupOrRestore = ETrue;
- break;
- }
- }
- //
-
- return backupOrRestore;
- }
-
-// ======== MEMBER FUNCTIONS ========
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-CAiScutTargetNewMsg::CAiScutTargetNewMsg(CAiScutEngine& aEngine, TShortcutType aType)
- : CAiScutTarget(aEngine, aType)
-{
-}
-
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-void CAiScutTargetNewMsg::ConstructL(const TAiScutParser& aParser)
-{
- iDefinition = aParser.Get(EScutDefComplete).AllocL();
-
- iAppUid = KNullUid;
- iViewUid.iUid = -1;
-
- switch (aParser.Type())
- {
- case EScutNewMessage:
- iMtm = KSenduiMtmUniMessageUid;
- iAppUid.iUid = KScutUnifiedEditorUidValue;
- break;
-
- case EScutNewEmail:
- iMtm = KSenduiMtmSmtpUid;
- iAppUid.iUid = KScutEmailEditorUidValue;
- break;
-
-#ifdef __SYNCML_DS_EMAIL
- case EScutNewSyncMLMail:
- iMtm = KSenduiMtmSyncMLEmailUid;
- iAppUid.iUid = KScutEmailEditorUidValue; // check that these uids are in sync with aiscuttexts.rss
- iViewUid.iUid = KScutSyncMlEmailUidValue;
- break;
-#endif
-
- case EScutNewPostcard:
- iMtm = KSenduiMtmPostcardUid;
- iAppUid.iUid = KScutPostcardEditorUidValue;
- break;
-
- case EScutNewAudioMsg:
- iMtm = KSenduiMtmAudioMessageUid;
- iAppUid.iUid = KScutAmsEditorUidValue;
- break;
-
- case EScutNewMsgType:
- iAppUid.iUid = KScutMessagingCenterUidValue; // check that these uids are in sync with aiscuttexts.rss
- iViewUid.iUid = KScutMessagingCenterUidValue;
- // fallthrough
- default:
- iMtm = KNullUid;
- break;
- }
-}
-
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-CAiScutTargetNewMsg* CAiScutTargetNewMsg::NewL(
- CAiScutEngine& aEngine, TShortcutType aType, const TAiScutParser& aParser)
-{
- CAiScutTargetNewMsg* self = new (ELeave) CAiScutTargetNewMsg(aEngine, aType);
-
- CleanupStack::PushL(self);
- self->ConstructL(aParser);
- CleanupStack::Pop(self);
-
- return self;
-}
-
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-CAiScutTargetNewMsg::~CAiScutTargetNewMsg()
-{
- delete iCaption;
- delete iShortCaption;
- delete iDefinition;
-
-}
-
-
-// ---------------------------------------------------------------------------
-// Returns the shortcut definition string.
-// ---------------------------------------------------------------------------
-//
-TPtrC CAiScutTargetNewMsg::Definition() const
-{
- return TPtrC(*iDefinition);
-}
-
-
-// ---------------------------------------------------------------------------
-// Returns the shortcut target caption.
-// ---------------------------------------------------------------------------
-//
-TInt CAiScutTargetNewMsg::GetCaption(TPtrC& aDes, TAiScutAppTitleType aTitleType) const
-{
- TRAP_IGNORE(GetCaptionL(aTitleType));
-
- if (aTitleType == EAiScutSkeyTitle)
- {
- aDes.Set(iShortCaption ? *iShortCaption : KNullDesC());
- }
- else
- {
- aDes.Set(iCaption ? *iCaption : KNullDesC());
- }
-
- return 0;
-}
-
-// ---------------------------------------------------------------------------
-// Returns the shortcut target caption.
-// ---------------------------------------------------------------------------
-//
-void CAiScutTargetNewMsg::GetCaptionL(TAiScutAppTitleType aTitleType) const
-{
- HBufC* titlePtr = HBufC::NewLC(KMaxBufSize);
- TPtr titlePtrP = titlePtr->Des();
-
-
- // Use lazy evaluation, create the caption only when it is first needed.
- if (aTitleType == EAiScutSkeyTitle)
- {
- if (!iShortCaption)
- {
- if (iEngine.GetAppTitle(iAppUid, iViewUid, titlePtrP, aTitleType))
- {
- iShortCaption = titlePtrP.AllocL();
- }
- }
- }
- else
- {
- if (!iCaption)
- {
- if (iEngine.GetAppTitle(iAppUid, iViewUid, titlePtrP, aTitleType))
- {
- iCaption = titlePtrP.AllocL();
- }
- }
- }
-
- CleanupStack::PopAndDestroy(titlePtr);
-}
-
-// ---------------------------------------------------------------------------
-// Returns the shortcut target icon.
-// ---------------------------------------------------------------------------
-//
-TInt CAiScutTargetNewMsg::GetIcon(CGulIcon*& aIcon) const
-{
- if ( CAiScutTarget::GetIcon(aIcon) != KErrNone )
- {
- TRAP_IGNORE(GetIconL(aIcon));
- }
-
-
- return 0;
-}
-
-// ---------------------------------------------------------------------------
-// Returns the shortcut target icon.
-// ---------------------------------------------------------------------------
-//
-void CAiScutTargetNewMsg::GetIconL(CGulIcon*& aIcon) const
-{
-
- CGulIcon* tempIcon = NULL;
- TBool useAppIcon = ETrue;
- TInt iconId = 0;
- TInt maskId = 0;
-
- if (iMtm == KNullUid)
- {
- useAppIcon = EFalse;
- iconId = EMbmAiscutpluginQgn_menu_mce_sel_mes;
- maskId = EMbmAiscutpluginQgn_menu_mce_sel_mes_mask;
- }
-#ifdef __SYNCML_DS_EMAIL
- else if (iMtm.iUid == KSenduiMtmSyncMLEmailUidValue)
- {
- useAppIcon = EFalse;
- iconId = EMbmAiscutpluginQgn_menu_mce_syncmail;
- maskId = EMbmAiscutpluginQgn_menu_mce_syncmail_mask;
- }
-#endif
-
- MAknsSkinInstance* skin = AknsUtils::SkinInstance();
-
- if (useAppIcon)
- {
- CFbsBitmap* bitmap = NULL;
- CFbsBitmap* mask = NULL;
-
- AknsUtils::CreateAppIconLC(skin, iAppUid, EAknsAppIconTypeList, bitmap, mask);
- tempIcon = CGulIcon::NewL(bitmap, mask);
- CleanupStack::Pop(2); // Bitmap and mask. They have to be popped out by number
- // because the order in which they are pushed in is undefined.
- }
- else
- {
- TFileName pluginIconFile(KDC_APP_BITMAP_DIR);
- pluginIconFile.Append(KBitmapFile);
-
- tempIcon = AknsUtils::CreateGulIconL(
- skin,
- KAknsIIDQgnPropAiShortcut,
- pluginIconFile,
- iconId,
- maskId
- );
- }
-
- //Do not need to sets the bitmap and mask to be owned externally
-
-
- aIcon = tempIcon;
-}
-
-
-// -----------------------------------------------------------------------------
-// Checks if the shortcut target is accessible.
-// -----------------------------------------------------------------------------
-//
-TBool CAiScutTargetNewMsg::IsAccessibleL(TInt /*aCheckType*/)
-{
- return ETrue;
-}
-
-
-// -----------------------------------------------------------------------------
-// Launches the message editor to send an Sms, Mms or Email message.
-// -----------------------------------------------------------------------------
-//
-void CAiScutTargetNewMsg::LaunchL()
- {
- if( PhoneIsInBackupOrRestoreMode() )
- {
- CAknGlobalNote* note = CAknGlobalNote::NewLC();
-
- HBufC* prompt = StringLoader::LoadLC( R_QTN_AI_SCUT_OPERATION_DISABLED );
-
- note->SetSoftkeys( R_AVKON_SOFTKEYS_OK_EMPTY );
- note->ShowNoteL( EAknGlobalInformationNote, *prompt );
-
- CleanupStack::PopAndDestroy( prompt );
- CleanupStack::PopAndDestroy( note );
- return;
- }
-
- CSendUi* sendUi = CSendUi::NewLC();
-
- if (iMtm == KNullUid)
- {
- TSendingCapabilities capabs(0, 0, TSendingCapabilities::ESupportsEditor);
-
- TUid uid = sendUi->ShowTypedQueryL(CSendUi::EWriteMenu, NULL, capabs, NULL, KNullDesC);
- if (uid != KNullUid)
- {
- sendUi->ServiceCapabilitiesL(uid, capabs);
- sendUi->CreateAndSendMessageL(uid, NULL, KNullUid, EFalse); // launch standalone
- }
- }
- else
- {
- if( iMtm == KSenduiMtmSmtpUid ) // pop, imap, smtp
- {
- RArray<TPopAccount> popAccounts;
- RArray<TImapAccount> imapAccounts;
- RArray<TSmtpAccount> smtpAccounts;
- CEmailAccounts* emailAccounts = CEmailAccounts::NewLC();
- // check that mailbox exists or else display error message
- emailAccounts->GetPopAccountsL(popAccounts);
- emailAccounts->GetImapAccountsL(imapAccounts);
- emailAccounts->GetSmtpAccountsL(smtpAccounts);
- CleanupStack::PopAndDestroy(emailAccounts);
-
- if( iMtm == KSenduiMtmSmtpUid &&
- (popAccounts.Count() + imapAccounts.Count() + smtpAccounts.Count() ) > 0 )
- {
- sendUi->CreateAndSendMessageL(iMtm, NULL, KNullUid, EFalse); // launch standalone
- }
- else
- {
- ShowErrorNote();
- }
- popAccounts.Reset();
- imapAccounts.Reset();
- smtpAccounts.Reset();
- }
- else if ( iMtm == KSenduiMtmSyncMLEmailUid ) // syncml
- {
- CMsvEntrySelection* sel =
- MsvUiServiceUtilities::GetListOfAccountsWithMTML( *(iEngine.MsvSession()), iMtm );
- TInt accounts = sel->Count();
- delete sel;
- if ( accounts > 0 )
- {
- sendUi->CreateAndSendMessageL(iMtm, NULL, KNullUid, EFalse); // launch standalone
- }
- else
- {
- ShowErrorNote();
- }
- }
- else
- {
- sendUi->CreateAndSendMessageL(iMtm, NULL, KNullUid, EFalse); // launch standalone
- }
-
- }
- CleanupStack::PopAndDestroy(sendUi);
-}
-
-void CAiScutTargetNewMsg::ShowErrorNote()
- {
- TRAP_IGNORE(
- // Display global error note.
- CAknGlobalNote* note = CAknGlobalNote::NewLC();
- HBufC* prompt = StringLoader::LoadLC( R_SENDUI_SETTINGS_NOT_OK );
- note->ShowNoteL( EAknGlobalErrorNote, *prompt );
- CleanupStack::PopAndDestroy( prompt );
- CleanupStack::PopAndDestroy( note );
- ); // end TRAP_IGNORE
- }
-
-// ---------------------------------------------------------------------------
-// Return application uid this target launches.
-// ---------------------------------------------------------------------------
-//
-TUid CAiScutTargetNewMsg::AppUid() const
-{
- return iAppUid;
-}
-
-// End of File.
--- a/idlefw/plugins/shortcutplugin/src/cpopupeventhandler.cpp Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,238 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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: Shortcut plug-in Popup event handler class
-*
-*/
-
-
-#include "cpopupeventhandler.h"
-#include "PopupFSM.h"
-#include "mpopupeventhandleractions.h"
-
-/**
- * Timeout timer values
- */
-const TInt KTimeoutShort = 900000; //900 ms
-const TInt KTimeoutLong = 6000000; //6 sec
-
-
-// ======== MEMBER FUNCTIONS ========
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-CPopupEventHandler* CPopupEventHandler::NewL(
- MPopupEventHandlerActions& aPopupEventHandlerActions )
- {
- CPopupEventHandler* self = CPopupEventHandler::NewLC( aPopupEventHandlerActions );
- CleanupStack::Pop( self );
- return self;
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-CPopupEventHandler* CPopupEventHandler::NewLC(
- MPopupEventHandlerActions& aPopupEventHandlerActions )
- {
- CPopupEventHandler* self = new( ELeave ) CPopupEventHandler(
- aPopupEventHandlerActions );
- CleanupStack::PushL( self );
- self->ConstructL();
- return self;
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-CPopupEventHandler::~CPopupEventHandler()
- {
- Cancel();
- iTimer.Close();
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-CPopupEventHandler::CPopupEventHandler(
- MPopupEventHandlerActions& aPopupEventHandlerActions )
- : CActive( EPriorityStandard ),
- iPopupEventHandlerActions( aPopupEventHandlerActions ),
- iPopupFSM( *this ),
- iPublishPopup( ETrue ),
- iPublishCaption( ETrue ),
- iCaptionVisible( ETrue )
- {
- }
-
-// ---------------------------------------------------------------------------
-// Constructor
-// ---------------------------------------------------------------------------
-//
-void CPopupEventHandler::ConstructL()
- {
- User::LeaveIfError( iTimer.CreateLocal() );
- CActiveScheduler::Add( this );
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-TPopupFSM& CPopupEventHandler::PopupFSM()
- {
- return iPopupFSM;
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-TBool CPopupEventHandler::PublishPopup() const
- {
- return iPublishPopup;
- }
-
-TBool CPopupEventHandler::PopupVisible() const
- {
- return iPopupVisible;
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-TBool CPopupEventHandler::PublishCaption() const
- {
- return iPublishCaption;
- }
-
-TBool CPopupEventHandler::CaptionVisible() const
- {
- return iCaptionVisible;
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-void CPopupEventHandler::DoCancel()
- {
- iTimer.Cancel();
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-void CPopupEventHandler::RunL()
- {
- iPopupFSM.HandleRequestCompleted();
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-void CPopupEventHandler::CompleteSelf()
- {
- TRequestStatus* status = &iStatus;
- User::RequestComplete( status, KErrNone );
- SetActive();
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-void CPopupEventHandler::CancelRequest()
- {
- Cancel();
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-void CPopupEventHandler::StartShortTimer()
- {
- Cancel(); // Cancel previous request by calling iTimer.Cancel()
- iTimer.After( iStatus, KTimeoutShort );
- SetActive();
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-void CPopupEventHandler::StartLongTimer()
- {
- Cancel(); // Cancel previous request by calling iTimer.Cancel()
- iTimer.After( iStatus, KTimeoutLong );
- SetActive();
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-void CPopupEventHandler::IssuePublishPopup()
- {
- iPublishPopup = ETrue;
- iPopupVisible = ETrue;
- iPopupEventHandlerActions.IssuePublishShortcut();
- iPublishPopup = EFalse;
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-void CPopupEventHandler::IssueCleanPopup()
- {
- iPublishPopup = ETrue;
- iPopupVisible = EFalse;
- iPopupEventHandlerActions.IssuePublishShortcut();
- iPublishPopup = EFalse;
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-void CPopupEventHandler::IssuePublishCaption()
- {
- iPublishCaption = ETrue;
- iCaptionVisible = ETrue;
- iPopupEventHandlerActions.IssuePublishShortcut();
- iPublishCaption = EFalse;
- }
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-void CPopupEventHandler::IssueCleanCaption()
- {
- iPublishCaption = ETrue;
- iCaptionVisible = EFalse;
- iPopupEventHandlerActions.IssuePublishShortcut();
- iPublishCaption = EFalse;
- }
-
-// End of File.
--- a/idlefw/plugins/shortcutplugin/src/taiscutparser.cpp Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,816 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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: Shortcut definition parser
-*
-*/
-
-
-#include "taiscutparser.h"
-#include "aiscutdefs.h"
-
-#include "debug.h"
-
-
-// ======== LOCAL FUNCTIONS ========
-/**
- * Extract a value with the given name from a URI query string.
- * For example a query string of ?view=1234&iconid=3;5&foo=bar
- * and we wanted iconid from that string. Function places the 3;5
- * into aValue and if needed deletes the "iconid=3;5&" string from the
- * query string.
- *
- * @param aQueryString The querystring
- * @param aParameterName The name of the parameter to find
- * @param aValue Where to place the value
- * @param aRemoveNameAndValue ETrue to remove the name=value from the querystring
- * @return KErrNone on succesful extraction. KErrNotFound if the parameter was not found
-*/
-TInt ExtractValueFromQueryString( TDes &aQueryString, const TDesC &aParameterName,
- TDes &aValue, TBool aRemoveNameAndValue )
- {
- TInt err = KErrNone;
- HBufC *tempBuffer = aQueryString.Alloc();
- if ( !tempBuffer )
- {
- return KErrNoMemory;
- }
-
- TPtr temp = tempBuffer->Des();
-
- TInt foundStartPos = 0;
- TInt foundStopPos = 0;
- foundStartPos = aQueryString.FindC(aParameterName);
- if ( foundStartPos != KErrNotFound )
- {
- // remove the beginning of the string from temp, so no additional &-marks are found
- // at the start of string
- temp.Delete(0,foundStartPos);
-
- foundStopPos = temp.Locate(KParamNextSeparator);
- // stop either at the eos or at the next & mark
- foundStopPos = (foundStopPos != KErrNotFound ) ? (foundStopPos): (temp.Length() );
- // start after the = separator and stop either on eos or at & mark
- TInt from = (aParameterName.Length() + 1);
- TInt length = foundStopPos - from;
-
- // Get just the value part
- if ( aValue.MaxLength() >= length )
- {
- aValue = temp.Mid( from, length );
- }
- else // Can't place the value to aValue string
- {
- err = KErrNoMemory;
- }
-
- if ( err == KErrNone && aRemoveNameAndValue )
- {
- // Delete the aParameterName=aValue string from the querystring
- // If eos reached then we need to delete the & before us also
- // Don't try to delete if this is an only parameter
- if ( foundStopPos == temp.Length() && foundStartPos > 0 )
- {
- aQueryString.Delete(foundStartPos - 1, (foundStopPos + 1));
- }
- else
- {
- aQueryString.Delete(foundStartPos, (foundStopPos + 1));
- }
- }
- }
- else
- {
- err = KErrNotFound;
- }
-
- delete tempBuffer;
- return err;
- }
-
-/**
- * Tests if string ends with given pattern
- *
- * @param aString input string
- * @param aPattern test pattern
- * @return ETrue if string ends with given pattern.
- */
-TBool EndsWith( const TDesC& aString, const TDesC& aPattern )
- {
- TBuf<10> temp(aString.Right(aPattern.Length()));
- return ( aString.Right( aPattern.Length() ) == aPattern );
- }
-
-/**
- * Resolves skin item id from pattern majorId;minorId;colourGroupId.
- * The colourGroupId in the syntax is optional, and if no value found then
- * aColourValue will be -1
- *
- * @param aPath skin item id string
- * @param aItemId skin item id to fill
- * @param aColourValue colour value to fill.
- *
- * @return ETrue if id was succesfully parsed.
- */
-TBool ResolveSkinItemId( const TDesC& aPath, TAknsItemID& aItemId, TInt& aColourValue )
- {
- // Syntax: major;minor;colourgroup
- aColourValue = -1;
-
- // Initialize lexer
- TLex lex( aPath );
- lex.SkipSpace();
-
- TInt majorId( 0 );
- TInt minorId( 0 );
-
- // Resolve major id
- TInt error = lex.Val( majorId );
-
- // Resolve minor id
- if ( lex.Eos())
- return KErrNotFound;
-
- lex.Inc();
- error |= lex.Val( minorId );
-
- // initilize skin item id object
- aItemId.Set( majorId, minorId );
-
- if ( lex.Eos())
- return KErrNotFound;
- lex.Inc();
-
- TInt colorError = lex.Val( aColourValue );
- if ( colorError != KErrNone || aColourValue < 0)
- {
- aColourValue = -1;
- }
-
- // Check error
- return ( error == KErrNone );
-
- }
-
-/**
-* Resolves filename and id from syntax
-* filename.ext;id. If the syntax is incorrect
-* aId is -1 and filename zeroed and EFalse is returned
-* MIF and MBM supported.
-*
-* @param aPath The path to extract the data from
-* @param aId Id to fill
-* @param aFilename Filename to fill
-* @return ETrue if id and path was succesfully parsed.
-*/
-TBool ResolveFileIdAndPath( const TDesC& aPath, TInt& aId, TDes& aFilename )
-{
- // Syntax: filename.ext;index
- // Supported: MIF, MBM
- TInt pos = aPath.FindF( KScutSkinItemSeparator );
- aFilename.Zero();
- if( pos != KErrNotFound )
- {
- aFilename = (aPath.Left(pos));
-
- if ( ( !EndsWith(aFilename, KScutMIFExtension ) ) &&
- ( !EndsWith(aFilename, KScutMBMExtension ) ) )
- {
- aFilename.Zero();
- return EFalse;
- }
-
- TLex lex(aPath.Mid(pos+1));
- TInt error = lex.Val(aId);
- if ( error != KErrNone )
- {
- aId = -1;
- return EFalse;
- }
- return ETrue;
- }
- return EFalse;
-}
-
-TInt CreateChecksumFromString( const TDesC& aString )
- {
- TInt checksum = 0;
-
- for ( TInt i = 0; i < aString.Length(); i++ )
- {
- checksum += aString[i] * ( i + 1);
- }
- return checksum;
- }
-
-// ======== MEMBER FUNCTIONS ========
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-TAiScutParser::TAiScutParser() : iType(EScutUnknown), iUid(KNullUid)
-{
-}
-
-
-// -----------------------------------------------------------------------------
-// Static utility function to parse an uid from the given descriptor.
-// -----------------------------------------------------------------------------
-//
-TUid TAiScutParser::ParseUid(const TDesC& aDesC)
-{
- TRadix radix(EDecimal);
-
- // Check if the number is in hexadecimal format.
- _LIT(KHexPrefix, "0x");
- const TInt prefixLen = 2;
- TPtrC ptr(aDesC);
-
- if (ptr.Left(prefixLen).CompareC(KHexPrefix) == 0)
- {
- // Strip the '0x' prefix.
- ptr.Set(ptr.Right(ptr.Length() - prefixLen));
-
- radix = EHex;
- }
-
- // Do the actual parsing.
- TUint uint;
- TUid uid(KNullUid);
- TLex lexer(ptr);
- TInt err = lexer.Val(uint, radix);
- if (err == KErrNone)
- {
- uid.iUid = uint;
- }
-
- return uid;
-}
-
-
-// ---------------------------------------------------------------------------
-// Parses a shortcut definition.
-// ---------------------------------------------------------------------------
-//
-TInt TAiScutParser::Parse(const TDesC& aDefinition)
-{
- iType = EScutUnknown;
- iDefinition.Set(aDefinition);
-
- // Default values for the icon
- iIcon.iIconId = KErrNotFound;
- iIcon.iPath.Zero();
- iIcon.iSkinId.iMajor = -1;
- iIcon.iSkinId.iMinor = -1;
- iIcon.iColourGroup = -1;
-
- iIcon.iType = EScutIconNone;
- iIcon.iDestination = EScutDestinationNormal;
- iIcon.iShortcutType = EScutUnknown;
- iIcon.iAppUid = TUid::Uid(0);
- iIcon.iViewId = TUid::Uid(0);
-
- TInt err = iUriParser.Parse(aDefinition);
- if (err != KErrNone)
- {
- return err;
- }
-
- TPtrC scheme(iUriParser.Extract(EUriScheme));
-
- if (scheme.Length() == 0 ||
- scheme.Compare(KScutURISchemeHttp) == 0 ||
- scheme.Compare(KScutURISchemeHttps) == 0)
- {
- ParseParams();
- iType = EScutWebAddress;
-
- if ( iIcon.iType != EScutIconNone )
- {
- // create a checksum for unique identifying
- TInt checksum = CreateChecksumFromString( aDefinition );
- iIcon.iViewId = TUid::Uid( checksum );
- iIcon.iShortcutType = iType;
- iIcon.iAppUid = KScutBrowserUid;
- }
- err = KErrNone;
- }
- else if (scheme.Compare(KScutURISchemeLocalApp) == 0)
- {
- iType = EScutApplication;
-
- if (!ParseAlias())
- {
- iUid = ParseUid(iUriParser.Extract(EUriPath));
- }
-
- if (iUid == KScutAppShellUid)
- {
- // appshell shortcut is always of type app view.
- iType = EScutApplicationView;
- }
-
- // ParseParams() parses params from an URL. If it encounters
- // iconid, iconmifpath or cba parameter from the URL, then it
- // places the values to iIcon and removes the parameters from
- // the URL. It also extract the additional viewid if needed.
- // For example bookmarks and apps with views use them.
-
- ParseParams();
- // Icon found so apply the appuid and type to icon.
- if ( iIcon.iType != EScutIconNone )
- {
- iIcon.iShortcutType = iType;
-
- // If we are dealing with messaging icons then the
- // appuid needs to be changed in order to match it against
- // the shortcuts appuid
- switch( iType )
- {
- case EScutNewMessage:
- iIcon.iAppUid.iUid = KScutUnifiedEditorUidValue;
- break;
-
- case EScutNewEmail:
- iIcon.iAppUid.iUid = KScutEmailEditorUidValue;
- break;
-
- #ifdef __SYNCML_DS_EMAIL
- case EScutNewSyncMLMail:
- iIcon.iAppUid.iUid = KScutEmailEditorUidValue;
- iIcon.iViewId.iUid = KScutSyncMlEmailUidValue;
- break;
- #endif
-
- case EScutNewPostcard:
- iIcon.iAppUid.iUid = KScutPostcardEditorUidValue;
- break;
-
- case EScutNewAudioMsg:
- iIcon.iAppUid.iUid = KScutAmsEditorUidValue;
- break;
-
- case EScutNewMsgType:
- iIcon.iAppUid.iUid = KScutMessagingCenterUidValue;
- iIcon.iViewId.iUid = KScutMessagingCenterUidValue;
- break;
-
- default:
- iIcon.iAppUid = iUid;
- break;
-
- }
-
- }
- err = KErrNone;
- }
- else
- {
- err = KErrCorrupt;
- }
-
- __PRINTS( "XAI: TAiScutParser::Parse");
- __PRINT( __DBG_FORMAT( "XAI: type = %d, definition = '%S', err = %d"), iType, &aDefinition, err);
- return err;
-}
-
-
-// ---------------------------------------------------------------------------
-// Checks if the shortcut definition was valid.
-// ---------------------------------------------------------------------------
-//
-TBool TAiScutParser::IsValid() const
-{
- return iType != EScutUnknown;
-}
-
-
-// -----------------------------------------------------------------------------
-// Returns the shortcut target type.
-// -----------------------------------------------------------------------------
-//
-TShortcutType TAiScutParser::Type() const
-{
- return iType;
-}
-
-
-// -----------------------------------------------------------------------------
-// Returns the shortcut target uid. Used for application shortcuts.
-// -----------------------------------------------------------------------------
-//
-TUid TAiScutParser::Uid() const
-{
- return iUid;
-}
-
-
-TAiScutIcon TAiScutParser::Icon() const
- {
- return iIcon;
- }
-// -----------------------------------------------------------------------------
-// Returns a shortcut definition component value.
-// -----------------------------------------------------------------------------
-//
-TPtrC TAiScutParser::Get(TScutDefComponent aComponent) const
-{
- TPtrC componentValue;
-
- switch (aComponent)
- {
- case EScutDefScheme:
- componentValue.Set(iUriParser.Extract(EUriScheme));
- break;
-
- case EScutDefTarget:
- componentValue.Set(iUriParser.Extract(EUriPath));
- break;
-
- case EScutDefParamName:
- componentValue.Set(iParamName);
- break;
-
- case EScutDefParamValue:
- componentValue.Set(iParamValue);
- break;
-
- case EScutDefParamNameAndValue:
- componentValue.Set(iUriParser.Extract(EUriQuery));
- break;
-
- case EScutDefComplete:
- componentValue.Set(iDefinition);
- break;
-
- default:
- break;
- }
-
- return componentValue;
-}
-
-
-// ---------------------------------------------------------------------------
-// Composes a shortcut definition string from given parameters.
-// ---------------------------------------------------------------------------
-//
-void TAiScutParser::ComposeL(HBufC*& aDes, const TUid aUid,
- const TDesC& aParamName, const TDesC& aParamValue)
-{
- HBufC* temp = HBufC::NewLC(KMaxDefinitionLength);
- TPtr ptr = temp->Des();
-
- if (aParamName.Length() && aParamValue.Length())
- {
- ptr.Format(KScutFormatApplicationWithParams, aUid.iUid, &aParamName, &aParamValue);
- }
- else
- {
- ptr.Format(KScutFormatApplication, aUid.iUid);
- }
-
- aDes = temp->AllocL();
- CleanupStack::PopAndDestroy(temp);
-}
-
-
-// ---------------------------------------------------------------------------
-// Composes a shortcut definition string from given parameters.
-// ---------------------------------------------------------------------------
-//
-void TAiScutParser::ComposeL(HBufC*& aDes, const TUid aUid,
- const TDesC& aParamString)
-{
- HBufC* temp = HBufC::NewLC(KMaxDefinitionLength);
- TPtr ptr = temp->Des();
-
- if (aParamString.Length())
- {
- ptr.Format(KScutFormatApplicationWithParamString, aUid.iUid, &aParamString);
- }
- else
- {
- ptr.Format(KScutFormatApplication, aUid.iUid);
- }
-
- aDes = temp->AllocL();
- CleanupStack::PopAndDestroy(temp);
-}
-
-
-// ---------------------------------------------------------------------------
-// Checks if an alias was used in shortcut definition and parses an uid from it.
-// ---------------------------------------------------------------------------
-//
-TBool TAiScutParser::ParseAlias()
-{
- TPtrC ptr(iUriParser.Extract(EUriPath));
-
- // "localapp:msg?..." is an alias for messaging application.
- if (ptr.CompareC(KScutTargetAliasMessaging) == 0)
- {
- iUid = KScutMessagingUid;
- return ETrue;
- }
- // "localapp:keylock?..." is an alias for keylock
- else if (ptr.CompareC(KScutTargetAliasKeylock) == 0)
- {
- iUid = KScutKeyLockUid;
- return ETrue;
- }
-
- // "localapp:voicedial..." is an alias for voicedial
- else if (ptr.CompareC(KScutTargetAliasVoiceDial) == 0)
- {
- iUid = KScutVoiceDialUid;
- return ETrue;
- }
-
- // "localapp:logs?..." is an alias for logs
- else if (ptr.CompareC(KScutTargetAliasLogs) == 0)
- {
- iUid = KScutLogsUid;
- return ETrue;
- }
- else
- {
- return EFalse;
- }
-}
-
-
-// ---------------------------------------------------------------------------
-// Parses the possible application shortcut parameters.
-// ---------------------------------------------------------------------------
-//
-void TAiScutParser::ParseParams()
-{
- TPtrC params(iUriParser.Extract(EUriQuery));
-
- if (params.Length() > 0)
- {
- HBufC *tempParams = params.Alloc();
- // value can't be longer than the params
- // but in some cases it can be equally long
- HBufC *value = HBufC::New(params.Length());
-
- // low memory or similar situation so cannot do anything
- if ( !value || !tempParams )
- {
- return;
- }
-
- TPtr valuePtr = value->Des();
- TPtr tempParamsPtr = tempParams->Des();
-
- TBool addonFound = EFalse;
- TInt err = KErrNone;
-
- // First extract the CBA
- err = ExtractValueFromQueryString(tempParamsPtr,KScutParamNameCBAIcon,valuePtr, ETrue);
- if ( err == KErrNone )
- {
- iIcon.iDestination = EScutDestinationSoftkey;
- }
- // Then the toolbar
-
- err = ExtractValueFromQueryString(tempParamsPtr,KScutParamNameToolbarIcon,valuePtr, ETrue);
-
- if ( err == KErrNone )
- {
- iIcon.iDestination = EScutDestinationToolbar;
- }
-
- // then extract the iconskinid
- err = ExtractValueFromQueryString(tempParamsPtr,
- KScutParamNameIconSkinId,valuePtr, ETrue);
- if ( err == KErrNone &&
- ResolveSkinItemId(valuePtr,iIcon.iSkinId,iIcon.iColourGroup))
- {
- iIcon.iType = EScutIconSkin;
- addonFound = ETrue;
- }
- // Then extract the iconmifpath
- // Iconmifpath extraction left here for backward compatibility
- valuePtr.Zero();
- err = ExtractValueFromQueryString(tempParamsPtr,
- KScutParamNameIconMifPath,valuePtr, ETrue);
- if ( err == KErrNone &&
- ResolveFileIdAndPath(valuePtr,iIcon.iIconId,iIcon.iPath) )
- {
- iIcon.iType = EScutIconMif;
- addonFound = ETrue;
- }
-
- // Then extract the iconpath.
- valuePtr.Zero();
- err = ExtractValueFromQueryString(tempParamsPtr,
- KScutParamNameIconPath,valuePtr, ETrue);
- if ( err == KErrNone &&
- ResolveFileIdAndPath(valuePtr,iIcon.iIconId,iIcon.iPath) )
- {
- if ( EndsWith(iIcon.iPath, KScutMIFExtension ))
- {
- iIcon.iType = EScutIconMif;
- }
- else if ( EndsWith(iIcon.iPath, KScutMBMExtension ))
- {
- iIcon.iType = EScutIconMbm;
- }
- addonFound = ETrue;
- }
-
- // Use the new params string where the addons
- // have been removed
- if( addonFound )
- {
- params.Set(tempParamsPtr);
- // no need to process anything because there are no
- // parameters left after our addons have been taken out
- if ( params.Length() <= 0)
- {
- delete value;
- delete tempParams;
- return;
- }
- }
-
- delete value;
-
- iType = EScutApplicationWithParams;
-
- const TInt valueSeparatorPos = params.Locate(KParamValueSeparator);
-
- if (valueSeparatorPos >= 0)
- {
- iParamName.Set(params.Left(valueSeparatorPos));
- }
- if (valueSeparatorPos >= 0)
- {
- iParamValue.Set(params.Mid(valueSeparatorPos + 1));
- }
- if (valueSeparatorPos == -1)
- {
- iParamName.Set(params);
- }
-
- if (iParamName.CompareC(KScutParamNameView) == 0)
- {
- iType = EScutApplicationView;
-
- if (iUid == KScutPersonalisationUid)
- {
- TUid uid = ParseUid(iParamValue);
- if (uid == KScutChangeThemeViewId)
- {
- iType = EScutChangeTheme;
- }
- iIcon.iViewId = uid;
- }
-
- if (iUid == KScutLogsUid)
- {
- if (iParamValue.CompareC(KScutParamValueMissedCalls) == 0)
- {
- iType = EScutLogsMissedCallsView;
- }
- else if (iParamValue.CompareC(KScutParamValueDialledCalls) == 0)
- {
- iType = EScutLogsDialledCallsView;
- }
- else if (iParamValue.CompareC(KScutParamValueReceivedCalls) == 0)
- {
- iType = EScutLogsReceivedCallsView;
- }
- else if (iParamValue.CompareC(KScutParamValueMainView) == 0)
- {
- iType = EScutLogsMainView;
- }
- }
-
- if (iUid == KScutGeneralSettingsUid)
- {
- if (ParseUid(iParamValue) == KScutParamValueConnectivityView)
- {
- iType = EScutConnectivityStatusView;
- }
- else if (ParseUid(iParamValue) == KScutInstallationViewId)
- {
- iType = EScutApplicationManagerView;
- }
- }
-
-
- }
- else if (iUid == KScutMessagingUid)
- {
- if (iParamName.CompareC(KScutParamNameNew) == 0)
- {
- if (iParamValue.CompareC(KScutParamValueMsg) == 0)
- {
- iType = EScutNewMessage;
- }
- else if (iParamValue.CompareC(KScutParamValueEmail) == 0)
- {
- iType = EScutNewEmail;
- }
-#ifdef __SYNCML_DS_EMAIL
- else if (iParamValue.CompareC(KScutParamValueSyncMLMail) == 0)
- {
- iType = EScutNewSyncMLMail;
- }
-#endif
- else if (iParamValue.CompareC(KScutParamValuePostcard) == 0)
- {
- iType = EScutNewPostcard;
- }
- else if (iParamValue.CompareC(KScutParamValueAudioMsg) == 0)
- {
- iType = EScutNewAudioMsg;
- }
- else
- {
- iType = EScutNewMsgType;
- }
- }
- else if (iParamName.CompareC(KScutParamNameMailbox) == 0)
- {
- iType = EScutMailbox;
- }
- }
- else if (iUid == KScutKeyLockUid)
- {
- iType = EScutKeylock;
- }
- else if (iUid == KScutSettingsDllUid || iUid == KScutBrowserUid)
- {
- if (iParamName.CompareC(KScutParamNameBookmark) == 0)
- {
- iType = EScutBookmark;
- iIcon.iViewId = ParseUid(iParamValue);
- }
- else if (iParamName.CompareC(KScutParamNoEffect) == 0)
- {
- iType = EScutNoEffect;
- }
- }
- delete tempParams;
- }
-}
-
-TInt TAiScutParser::ChecksumForString( const TDesC& aDefinition) const
- {
- return CreateChecksumFromString( aDefinition );
- }
-
-TInt TAiScutParser::CustomTitle( TDes& aTarget ) const
- {
- TPtrC params(iUriParser.Extract(EUriQuery));
- HBufC *tempParams = params.Alloc();
- if ( !tempParams )
- {
- return KErrNoMemory;
- }
-
- TPtr tempParamsPtr = tempParams->Des();
-
- TInt err = ExtractValueFromQueryString(tempParamsPtr,
- KScutParamNameCustomTitle, aTarget, EFalse);
-
- delete tempParams;
- return err;
- }
-
-void TAiScutParser::RemoveExtraDefinitionsL( TDes &aString ) const
- {
- HBufC *temp = HBufC::NewL( aString.Length( ));
- TPtr tempPtr = temp->Des();
- ExtractValueFromQueryString(aString,
- KScutParamNameCBAIcon, tempPtr, ETrue);
-
- ExtractValueFromQueryString(aString,
- KScutParamNameIconSkinId,tempPtr, ETrue);
-
- ExtractValueFromQueryString(aString,
- KScutParamNameIconMifPath,tempPtr, ETrue);
-
- ExtractValueFromQueryString(aString,
- KScutParamNameCustomTitle, tempPtr, ETrue);
- ExtractValueFromQueryString(aString,
- KScutParamNameIconPath, tempPtr, ETrue);
- delete temp;
- }
-
-// End of File.
--- a/idlefw/plugins/wrtdataplugin/data/wrtdataplugin.rss Wed Mar 03 15:38:34 2010 +0200
+++ b/idlefw/plugins/wrtdataplugin/data/wrtdataplugin.rss Wed May 12 13:36:47 2010 +0300
@@ -18,9 +18,9 @@
// INCLUDES
#include <ecom/registryinfov2.rh>
+#include <hscontentpublisheruid.hrh>
#include "wrtdatapluginuids.hrh"
-
// -----------------------------------------------------------------------------
//
@@ -42,7 +42,7 @@
INTERFACE_INFO
{
// UID of interface that is implemented
- interface_uid = AI_UID_ECOM_INTERFACE_CONTENTPUBLISHER;
+ interface_uid = HS_UID_ECOM_INTERFACE_CONTENTPUBLISHER;
implementations =
{
--- a/idlefw/plugins/wrtdataplugin/group/wrtdataplugin.mmp Wed Mar 03 15:38:34 2010 +0200
+++ b/idlefw/plugins/wrtdataplugin/group/wrtdataplugin.mmp Wed May 12 13:36:47 2010 +0300
@@ -53,9 +53,13 @@
LIBRARY estor.lib
LIBRARY apgrfx.lib
-// End of File
+// Debugging dependencies
+LIBRARY flogger.lib
+
SOURCEPATH ../src
-
SOURCE wrtdataplugin.cpp
SOURCE wrtdata.cpp
SOURCE wrtdataobserver.cpp
+
+// End of File
+
--- a/idlefw/plugins/wrtdataplugin/inc/wrtdata.h Wed Mar 03 15:38:34 2010 +0200
+++ b/idlefw/plugins/wrtdataplugin/inc/wrtdata.h Wed May 12 13:36:47 2010 +0300
@@ -19,294 +19,232 @@
#ifndef WRTDATA_H
#define WRTDATA_H
-// INCLUDE FILES
+// System includes
#include <liwcommon.h>
#include <AknsItemID.h>
+
+// User includes
+#include <hscontentpublisher.h>
#include "wrtdatapluginconst.h"
-#include "aicontentpublisher.h"
-// FORWARD DECLARATIONS
+// Forward declarations
class MLiwInterface;
class CLiwServiceHandler;
class CWrtDataObserver;
class CWrtDataPlugin;
+class MAiCpsCommandBuffer;
-// CLASS DECLARATION
/**
* @ingroup group_wrtdataplugin
*
* Wrt data
*
- * @since S60 v3.2
+ * @since S60 5.2
*/
-class CWrtData : public CBase
- {
+NONSHARABLE_CLASS( CWrtData ) : public CBase
+ {
+public:
+
+ /**
+ * Part of the two phased constuction
+ *
+ * @param none
+ * @return none
+ */
+ static CWrtData* NewL( CWrtDataPlugin* aPlugin );
+
+ /*
+ * Destructor
+ */
+ ~CWrtData();
- 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 );
+private :
- /**
- * 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);
+ /**
+ * Default Constructor
+ *
+ */
+ CWrtData();
+
+ /**
+ * Part of the two phased construction
+ *
+ * @param aPlugin reference of the plugin
+ * @return void
+ */
+ void ConstructL(CWrtDataPlugin* aPlugin);
+
+public :
+ // new functions
+
+ /**
+ * Configures the subscriber and data to subscribe.
+ *
+ * @param aConfigurations Information about the subscriber
+ * and the data to subscribe.
+ * @return void
+ */
+ void ConfigureL(RAiSettingsItemArray& aConfigurations);
- /**
- * Is the pugin is active to publish the data.
- *
- * @param None
- * @return boolean (ETrue/EFalse).
- */
- TBool IsPluginActive();
+ /**
+ * 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 initial data for all the items in the widget
+ *
+ * @param aObserver to publish data
+ * @return void
+ */
+ void PublishInitialDataL( MAiContentObserver* aObserver );
- /**
- * 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();
+ /**
+ * 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);
- private :
+ /**
+ * Is the pugin is active to publish the data.
+ *
+ * @param None
+ * @return boolean (ETrue/EFalse).
+ */
+ TBool IsPluginActive();
+
+ /**
+ * Notify the status to the publisher
+ *
+ * @param aStatus new status of the publisher
+ * @return void
+ */
+ void NotifyPublisherL(const TDesC8& aStatus);
+
+ /**
+ * Sets property value.
+ *
+ * @since S60 5.2
+ * @param aAny - contains pointer to command buffer.
+ * @param aNameSpace - plugin name space id
+ */
+ void SetCommandBuffer(TAny* aAny, const TDesC8& aNameSpace);
- /**
- * 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 );
-
+private:
+ // new functions
+
+ /**
+ * 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 );
+
+ /**
+ * 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 );
- /**
- * 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;
-
- // 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;
-
+ /**
+ * Resend the the current plugin status to publisher
+ *
+ * @param aActionsList new list of status for the publisher
+ * @return void
+ */
+ void ReSendNotificationL(CLiwDefaultList* aActionsList);
+
+private :
+ // data
+ TBuf<KHsPublisherNamespaceMaxLength> iPluginId;
+ /** CPS Command Buffer Interface, Not Owned */
+ MAiCpsCommandBuffer* iCpsExecute;
+ /** Subscriber interface, Not owned */
+ MLiwInterface* iInterface;
+ /** Service handler, Not owned */
+ CLiwServiceHandler* iServiceHandler;
+ /** Data Observer to CPS, owned */
+ CWrtDataObserver* iObserver;
+ /** Reference of the wrt data plugin, not owned */
+ CWrtDataPlugin* iPlugin;
+ /** Content id, owned */
+ HBufC* iContentId;
+ /** Widget's UID */
+ TUid iAppUid;
};
#endif /*WRTDATA_H*/
--- a/idlefw/plugins/wrtdataplugin/inc/wrtdataobserver.h Wed Mar 03 15:38:34 2010 +0200
+++ b/idlefw/plugins/wrtdataplugin/inc/wrtdataobserver.h Wed May 12 13:36:47 2010 +0300
@@ -19,108 +19,112 @@
#ifndef WRTDATAOBSERVER_H
#define WRTDATAOBSERVER_H
-// INCLUDE FILES
+// System includes
#include <liwcommon.h>
-// FORWARD DECLARATIONS
+// User includes
+
+// Forward declarations
class CWrtData;
-// CLASS DECLARATION
/**
- * @ingroup group_wrtdataplugin
+ * @ingroup group_wrtdataplugin
+ *
+ * Wrt data observer
*
- * Wrt data observer
- *
- * @since S60 v3.2
+ * @since S60 5.2
*/
-class CWrtDataObserver : public CBase, public MLiwNotifyCallback
+NONSHARABLE_CLASS( CWrtDataObserver ) : public CBase,
+ public MLiwNotifyCallback
{
- public:
+public:
+ // constructor and destructor
- /**
- * 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 :
+private:
+ // constructors
- /**
- * 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 );
+ /**
+ * 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
-
- /**
- * 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:
+ //from MLiwNotifyCallbackc
- /**
- * Registers to CPS for add, delete , update and execute notifications
- * @aFilter - filter for input parameter list
- * @return void.
- */
- void RegisterL( CLiwDefaultMap* aFilter );
+ /**
+ * 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:
+ // new functions
- /**
- * Cancel all the registered notifications.
- * @return void.
- */
- void ReleaseL();
-
- private:
-
- // Reference of
- // Not owned
- MLiwInterface* iInterface;
+ /**
+ * 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();
- // Reference of the wrt data
- // Not owned
- CWrtData* iData;
+private:
+ // data
- // Call back error code
- TInt iError;
-
+ /** Interface Reference, not owned */
+ MLiwInterface* iInterface;
+ // Reference of the wrt data, not owned */
+ CWrtData* iData;
+ /** Call back error code */
+ TInt iError;
};
-#endif /*WRTDATAOBSERVER_H*/
+#endif // WRTDATAOBSERVER_H
+
+// End of file
--- a/idlefw/plugins/wrtdataplugin/inc/wrtdataplugin.h Wed Mar 03 15:38:34 2010 +0200
+++ b/idlefw/plugins/wrtdataplugin/inc/wrtdataplugin.h Wed May 12 13:36:47 2010 +0300
@@ -19,22 +19,19 @@
#ifndef WRTDATAPLUGIN_H
#define WRTDATAPLUGIN_H
-#include <aicontentpublisher.h>
-#include <aipropertyextension.h>
+// System includes
+
+// User includes
+#include <hscontentpublisher.h>
#include <aicontentmodel.h>
-#include <aieventhandlerextension.h>
-// FORWARD DECLARATIONS
+// Forward declarations
class MAiContentObserver;
class MAiContentItemIterator;
-class MAiPSPropertyObserver;
class CWrtData;
-class CDesC16Array;
class CGulIcon;
class CLiwDefaultMap;
-
-// CLASS DECLARATION
/**
* @ingroup group_wrtdataplugin
*
@@ -42,400 +39,308 @@
*
* @since S60 v3.2
*/
-class CWrtDataPlugin : public CAiContentPublisher,
- public MAiPropertyExtension,
- public MAiEventHandlerExtension
-
- {
-
- 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
- };
-
- public:
+NONSHARABLE_CLASS( CWrtDataPlugin ) : public CHsContentPublisher
+ {
+public:
+ // type definitions
+
+ /**
+ * Plugin's network state.
+ */
+ enum TPluginNetworkStatus
+ {
+ EUnknown,
+ EOffline,
+ EOnline
+ };
+
+ /**
+ * Plugin's state.
+ */
+ enum TPluginStates
+ {
+ ENone,
+ EResume,
+ ESuspend
+ };
- /**
- * Part of the two phased constuction
- *
- * @param none
- * @return none
- */
- static CWrtDataPlugin* NewL();
-
- /**
- * Destructor
- *
- * @param none
- * @return none
- */
- ~CWrtDataPlugin();
-
- public: // from base class CAiContentPublisher
+ /**
+ * Content Items
+ */
+ enum TContentItem
+ {
+ EDefaultImage,
+ EDefaultText,
+ EImage1
+ };
- /**
- * 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 );
+public:
+ // constructor and destructor
+
+ static CWrtDataPlugin* NewL();
+
+ ~CWrtDataPlugin();
+
+private:
+ // constructors
- /**
- * 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 );
+ /**
+ * C++ constructor
+ */
+ CWrtDataPlugin();
+
+ /**
+ * 2nd phase constructor
+ */
+ void ConstructL();
+
+public:
+ // from CHsContentPublisher
- /**
- * 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 );
+ /**
+ * @see CHsContentPublisher
+ */
+ void Start( TStartReason aReason );
+
+ /**
+ * @see CHsContentPublisher
+ */
+ void Stop( TStopReason aReason );
+
+ /**
+ * @see CHsContentPublisher
+ */
+ void Resume( TResumeReason 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 );
+ /**
+ * @see CHsContentPublisher
+ */
+ void Suspend( TSuspendReason aReason );
+
+ /**
+ * @see CHsContentPublisher
+ */
+ void SetOnline();
+
+ /**
+ * @see CHsContentPublisher
+ */
+ void SetOffline();
- // from base class MAiPropertyExtension
+ /**
+ * @see CHsContentPublisher
+ */
+ void SubscribeL( MAiContentObserver& aObserver );
+
+ /**
+ * @see CHsContentPublisher
+ */
+ void ConfigureL( RAiSettingsItemArray& aSettings );
+
+ /**
+ * @see CHsContentPublisher
+ */
+ void SetProperty( TProperty aProperty, TAny* aAny );
+
+ /**
+ * @see CHsContentPublisher
+ */
+ TAny* GetProperty( TProperty aProperty );
- /**
- * From MAiPropertyExtension.
- * Read property of publisher plug-in.
- *
- * @param aProperty - identification of property.
- * @return pointer to property value.
- */
- TAny* GetPropertyL( TInt aProperty );
+ /**
+ * @see CHsContentPublisher
+ */
+ void HandleEvent( const TDesC& aEventName, const TDesC& aParam );
+
+public:
+
+ /**
+ * Gets the id of a content
+ *
+ * @param aObjectId image or text id
+ * @return id of the content
+ */
+ TInt GetIdL( TDesC16& aObjectId );
- /**
- * 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);
+ /**
+ * Gets the type of a specific content
+ *
+ * @param aObjectId image or text id
+ * @param aType type
+ * @return void
+ */
+ void GetTypeL( TDesC16& aObjectId, TDes16& aType );
- /**
- * 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
+ /**
+ * 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() const;
- /**
- * 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, const 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 );
- /**
- * 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);
+ /**
+ * 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 );
+
+ /**
+ * Hides the loading icon animation
+ *
+ * @param aObserver observer
+ * @return void
+ */
+ void HideLoadingIcon( MAiContentObserver* aObserver );
+
+ /**
+ * CWrtData getter
+ * @return Pointer to CWrtData
+ */
+ CWrtData* Data() const;
+
+ /*
+ * Plugin's network status getter
+ * @return Pointer to Harvester status observer
+ */
+ TPluginNetworkStatus NetworkStatus() const;
- /**
- * 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);
-
- /**
- * Hides the loading icon animation
- *
- * @param aObserver observer
- * @return void
- */
- void HideLoadingIcon(MAiContentObserver* aObserver);
+ /**
+ * Creates initial data republishing timer if needed and starts it
+ */
+ void StartTimer();
- /**
- * 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;
- }
+private:
+ // new functions
- 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();
-
- /**
- * Resume the plug-in.
- *
- * @param aReason reason for state change, see TAiTransitionChange.
- * @return void
- */
- void DoResumeL(TAiTransitionReason aReason);
+ /**
+ * Publishes widget's initial texts and images
+ *
+ * @param void
+ * @return void
+ */
+ void PublishInitialDataL();
- /**
- * 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;
-
- // 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;
-
- // Plugin state
- TPluginStates iPluginState;
+ /**
+ * 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 );
+
+ /**
+ * Cancels transaction in case of leave
+ *
+ * @param aObserver Transaction target
+ */
+ static void CancelTransaction( TAny* aObserver );
+
+ /**
+ * Cancels initial data republishing timer
+ */
+ void CancelTimer();
+
+ /**
+ * Stops and deletes initial data republishing timer.
+ */
+ void StopTimer();
+
+ /**
+ * Timeout callback from timer. Used if publishing of initial data has failed.
+ *
+ * @param aPtr Contains pointer to instance of this class
+ */
+ static TInt Timeout( TAny* aPtr );
+
+
+private:
+ // data
+
+ /** Iterator for plugin content, owned */
+ MAiContentItemIterator* iContent;
+ /** Array of content observers, owned */
+ RPointerArray< MAiContentObserver > iObservers;
+ /** Number of data in the content model */
+ TInt iDataCount;
+ /** Dynamic content model, owned */
+ TAiContentItem* iContentModel;
+ /** Reference array for Published text, owned */
+ RPointerArray< HBufC > iDataArray;
+ /** Service API Data Subscriber, owned */
+ CWrtData* iData;
+ /* References array for published images, owned */
+ RArray< CGulIcon* > iIconArray;
+ /** Plugin's network status */
+ TPluginNetworkStatus iNetworkStatus;
+ /** Plugin state */
+ TPluginStates iPluginState;
+ /** File server session handle, owned */
+ RFs iRfs;
+ /** Timer for initial data republishing, owned */
+ CPeriodic* iTimer;
};
#endif // WRTDATAPLUGIN_H
--- a/idlefw/plugins/wrtdataplugin/inc/wrtdatapluginconst.h Wed Mar 03 15:38:34 2010 +0200
+++ b/idlefw/plugins/wrtdataplugin/inc/wrtdatapluginconst.h Wed May 12 13:36:47 2010 +0300
@@ -61,8 +61,6 @@
_LIT8( KContentType, "content_type" );
_LIT8( KContentId, "content_id" );
_LIT8( KResults, "results");
-_LIT8( KMenuItems, "menuitems");
-_LIT( KMenuItem16, "menuitem");
_LIT( KAll, "all");
_LIT8( KOperation, "operation" );
_LIT8( KFLAG, "flag");
@@ -73,13 +71,12 @@
_LIT( KOperationExecute, "execute" );
_LIT( KAddUpdateDelete, "add:update:delete" );
-_LIT( KDeActive, "deactive");
-_LIT( KActive, "active");
-_LIT( KSuspend , "suspend");
-_LIT( KResume, "resume");
-_LIT( KOnLine, "online");
-_LIT( KOffLine, "offline");
-_LIT( KInActive, "inactive");
+_LIT8( KDeActive, "deactive");
+_LIT8( KActive, "active");
+_LIT8( KSuspend , "suspend");
+_LIT8( KResume, "resume");
+_LIT8( KOnLine, "online");
+_LIT8( KOffLine, "offline");
// reserved extension for retrieving mask handle
_LIT8( KImageMask, "image1_mask");
--- a/idlefw/plugins/wrtdataplugin/inc/wrtdatapluginuids.hrh Wed Mar 03 15:38:34 2010 +0200
+++ b/idlefw/plugins/wrtdataplugin/inc/wrtdatapluginuids.hrh Wed May 12 13:36:47 2010 +0300
@@ -20,8 +20,6 @@
#ifndef WRTDATAPLUGINUIDS_HRH
#define WRTDATAPLUGINUIDS_HRH
-#include <platform/mw/aicontentpublisheruid.hrh>
-
/**
* Ecom dll uid for AI Data plug-in.
*/
--- a/idlefw/plugins/wrtdataplugin/src/wrtdata.cpp Wed Mar 03 15:38:34 2010 +0200
+++ b/idlefw/plugins/wrtdataplugin/src/wrtdata.cpp Wed May 12 13:36:47 2010 +0300
@@ -23,7 +23,8 @@
#include <aipluginsettings.h>
#include <apgcli.h>
#include <apgicnfl.h>
-#include <bautils.H>
+#include <bautils.h>
+#include <aicpscommandbuffer.h>
#include "wrtdata.h"
#include "wrtdatapluginconst.h"
@@ -50,6 +51,7 @@
// ---------------------------------------------------------------------------
//
CWrtData::CWrtData()
+ : iAppUid( KNullUid )
{
}
@@ -60,7 +62,6 @@
void CWrtData::ConstructL(CWrtDataPlugin* aPlugin)
{
iPlugin = aPlugin;
- iCommandName = HBufC8::NewL( KWRTContentValueMaxLength );
}
// ---------------------------------------------------------------------------
@@ -70,36 +71,20 @@
//
CWrtData::~CWrtData()
{
- if( iCommandName )
- {
- delete iCommandName;
- iCommandName = NULL;
- }
if(iObserver)
- {
- TRAP_IGNORE(iObserver->ReleaseL() );
+ {
delete iObserver;
iObserver = NULL;
}
- if( iInterface )
- {
- iInterface->Close();
- iInterface = NULL;
- }
- if( iServiceHandler )
- {
- iServiceHandler->Reset();
- delete iServiceHandler;
- iServiceHandler = NULL;
- }
if ( iContentId )
{
delete iContentId;
iContentId = NULL;
}
- iMenuItems.ResetAndDestroy();
- iMenuTriggers.ResetAndDestroy();
// not owned
+ iInterface = NULL;
+ iServiceHandler = NULL;
+ iCpsExecute = NULL;
iPlugin = NULL;
}
@@ -109,111 +94,25 @@
//
void CWrtData::ConfigureL(RAiSettingsItemArray& aConfigurations )
{
- HBufC8* serviceName = HBufC8::NewLC( KWRTContentValueMaxLength );
- HBufC8* interfaceName = HBufC8::NewLC( KWRTContentValueMaxLength );
-
- // Interface name
- RCriteriaArray criteriaArray;
-
TInt count = aConfigurations.Count();
-
- for(TInt i = 0;i<count;i++)
+ for(TInt i = 0; i<count; i++ )
{
MAiPluginConfigurationItem& confItem = ( aConfigurations[i] )->AiPluginConfigurationItem();
// if owner is plugin then it (key,value) is for plugin configurations items
- if(confItem.Owner() == KPlugin())
+ if(confItem.Owner() == KPlugin() && confItem.Name() == KPubData())
{
- if(confItem.Name() == KService())
- {
- serviceName->Des().Copy(confItem.Value());
- }
- else if( confItem.Name() == KInterface() )
- {
- interfaceName->Des().Copy(confItem.Value());
- }
- else if( confItem.Name() == KCommand() )
- {
- iCommandName->Des().Copy(confItem.Value());
- }
- else if( confItem.Name() == KMenuItem16() )
- {
- iMenuItems.AppendL( confItem.Value().AllocL() );
- }
- else if( confItem.Name() == KPubData() )
- {
- iContentId = confItem.Value().AllocL();
- }
- }
+ iContentId = confItem.Value().AllocL();
+ }
}
-
- if( !( serviceName->Des().Length() >= 0 && interfaceName->Des().Length() >= 0
- && iCommandName->Des().Length() >= 0 ) )
+ if( iContentId->Des().Length() == 0 )
{
// No service to offer without plugin configurations
User::Leave( KErrNotSupported );
}
-
- iServiceHandler = CLiwServiceHandler::NewL();
-
- // for convenience keep pointers to Service Handler param lists
- CLiwGenericParamList* inParamList = &iServiceHandler->InParamListL();
- CLiwGenericParamList* outParamList = &iServiceHandler->OutParamListL();
-
- CLiwCriteriaItem* criteriaItem = CLiwCriteriaItem::NewLC( KLiwCmdAsStr, *interfaceName , *serviceName );
- criteriaItem->SetServiceClass( TUid::Uid( KLiwClassBase ) );
- criteriaArray.AppendL( criteriaItem );
-
-
- // attach Liw criteria
- iServiceHandler->AttachL( criteriaArray );
- iServiceHandler->ExecuteServiceCmdL( *criteriaItem, *inParamList, *outParamList );
-
- CleanupStack::PopAndDestroy(criteriaItem);
- criteriaArray.Reset();
-
- // extract CPS interface from output params
- TInt pos( 0 );
- outParamList->FindFirst( pos, *interfaceName );
- if( pos != KErrNotFound )
- {
- //iInterface is MLiwInterface*
- iInterface = (*outParamList)[pos].Value().AsInterface();
- User::LeaveIfNull( iInterface );
- }
- else
- {
- User::Leave( KErrNotFound );
- }
- inParamList->Reset();
- outParamList->Reset();
- CleanupStack::PopAndDestroy( interfaceName );
- CleanupStack::PopAndDestroy( serviceName );
-
- //Gets the menu items from the publisher registry
- GetMenuItemsL();
-
iObserver = CWrtDataObserver::NewL( iInterface, this );
}
// ---------------------------------------------------------------------------
-// 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
// ---------------------------------------------------------------------------
//
@@ -232,23 +131,58 @@
void CWrtData::UpdatePublisherStatusL()
{
// Resent the plugin status to publisher
- ActivateL();
+ CLiwDefaultList* actions= CLiwDefaultList::NewLC();
+ actions->AppendL( TLiwVariant( KActive ));
if ( iPlugin->IsActive() )
{
- ResumeL();
+ actions->AppendL( TLiwVariant( KResume ) );
}
else
{
- SuspendL();
+ actions->AppendL( TLiwVariant( KSuspend ));
}
// forward the network status if it uses.
if ( iPlugin->NetworkStatus() == CWrtDataPlugin::EOnline )
{
- OnLineL();
+ actions->AppendL( TLiwVariant( KOnLine ));
}
else if ( iPlugin->NetworkStatus() == CWrtDataPlugin::EOffline )
{
- OffLineL();
+ actions->AppendL( TLiwVariant( KOffLine));
+ }
+
+ ReSendNotificationL( actions );
+ CleanupStack::PopAndDestroy( actions );
+ }
+
+// ---------------------------------------------------------------------------
+// CWrtData::PublishInitialDataL
+// ---------------------------------------------------------------------------
+//
+void CWrtData::PublishInitialDataL( MAiContentObserver* aObserver )
+ {
+ // Show loading animation
+ iPlugin->ShowLoadingIcon( aObserver );
+
+ TBuf<KWRTContentValueMaxLength> appName;
+ TBuf<KWRTAppUidLenth> appUidStr;
+ GetWidgetNameAndUidL( appName, appUidStr );
+
+ // Publish widget's name
+ if ( appName.Length() > 0 )
+ {
+ iPlugin->PublishTextL( aObserver, CWrtDataPlugin::EDefaultText, appName );
+ }
+
+ // Publish widget's apparc image. This might fail if there is application
+ // list population ongoing in AppFW and then we have to try again later
+ if ( ResolveUid ( appUidStr, iAppUid ) )
+ {
+ TRAPD( err, PublishDefaultImageL( aObserver ) );
+ if ( KErrNone != err )
+ {
+ iPlugin->StartTimer();
+ }
}
}
@@ -258,64 +192,18 @@
//
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() );
+ // Publish widget's apparc image
+ TInt handle = KErrNotFound;
+ TInt mask = KErrNotFound;
+ // create icon from application UID
+ CreateIconFromUidL( handle, mask, iAppUid );
+ // Publish apparc image
+ iPlugin->PublishImageL( aObserver,
+ CWrtDataPlugin::EDefaultImage,
+ handle,
+ mask );
+ }
- 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
@@ -382,7 +270,9 @@
CLiwGenericParamList* inParamList = &iServiceHandler->InParamListL();
CLiwGenericParamList* outParamList = &iServiceHandler->OutParamListL();
- CLiwDefaultMap* filter = NULL;
+
+ // use the first item configuration to create the filter
+ CLiwDefaultMap* filter = CreateFilterLC();
triggerName->Des().Copy(aTrigger);
if ( aObjectId == KPubData )
@@ -393,37 +283,10 @@
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
+ //append type to inparam list
TLiwGenericParam cptype( KType, TLiwVariant( KCpData ) );
inParamList->AppendL( cptype );
cptype.Reset();
@@ -435,13 +298,11 @@
inParamList->AppendL( item );
iInterface->ExecuteCmdL( KExecuteAction, *inParamList, *outParamList );
+ item.Reset();
CleanupStack::PopAndDestroy( filter );
CleanupStack::PopAndDestroy( triggerName );
- item.Reset();
-
+ outParamList->Reset();
inParamList->Reset();
- outParamList->Reset();
-
}
// ---------------------------------------------------------------------------
@@ -454,69 +315,6 @@
}
// ---------------------------------------------------------------------------
-// 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
// ---------------------------------------------------------------------------
//
@@ -548,7 +346,7 @@
// execute service.It is assumed that iInterface is already initiatedd
if(iInterface)
{
- iInterface->ExecuteCmdL( *iCommandName, *inParamList, *outParamList);
+ iInterface->ExecuteCmdL( KGetList, *inParamList, *outParamList);
}
else
{
@@ -588,94 +386,21 @@
}
// ---------------------------------------------------------------------------
-// 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
+// NotifyPublisherL
// ---------------------------------------------------------------------------
//
-void CWrtData::GetMenuItemsL()
- {
- if(iInterface)
- {
- CLiwDefaultMap *outDataMap = CLiwDefaultMap::NewLC();
- CLiwDefaultMap* filter = CreateFilterLC( );
- //append filter to input param
- ExecuteCommandL( filter, outDataMap, KPubData );
- CleanupStack::PopAndDestroy( filter );
-
- TLiwVariant variant;
- TInt pos = outDataMap->FindL( KMenuItems, variant ) ;
-
- if ( pos )
- {
- CLiwDefaultMap *menuMap = CLiwDefaultMap::NewLC();
- variant.Get( *menuMap );
- for ( TInt i = 0; i < menuMap->Count(); i++)
- {
- menuMap->FindL(menuMap->AtL(i), variant );
- HBufC8* value = HBufC8::NewL( KWRTContentValueMaxLength );
- CleanupStack::PushL( value );
- TPtr8 valPtr = value->Des();
- variant.Get( valPtr);
- if ( valPtr.Length() > 0 )
- {
- iMenuTriggers.AppendL( value );
- CleanupStack::Pop( value );
- HBufC16* triggerName = HBufC16::NewLC( KWRTContentNameMaxLength );
- triggerName->Des().Copy( menuMap->AtL(i) );
- iMenuItems.AppendL( triggerName );
- CleanupStack::Pop( triggerName );
- }
- else
- {
- CleanupStack::PopAndDestroy( value );
- }
- variant.Reset();
- }
- CleanupStack::PopAndDestroy( menuMap );
- }
- variant.Reset();
- CleanupStack::PopAndDestroy( outDataMap );
- }
- }
+void CWrtData::NotifyPublisherL(const TDesC8& aStatus)
+ {
+ if( iCpsExecute == NULL )
+ {
+ User::Leave( KErrNotSupported );
+ }
+
+ CLiwDefaultMap* filter = CreateFilterLC();
+ // Add execute command triggers. Idle framework will execute
+ iCpsExecute->AddCommand( iPluginId, KPubData, filter, aStatus );
+ CleanupStack::PopAndDestroy( filter );
+ }
// ---------------------------------------------------------------------------
// CWrtData::GetWidgetNameAndUidL
@@ -750,14 +475,14 @@
}
}
}
- return (error == KErrNone );
+ return ( error == KErrNone );
}
// ---------------------------------------------------------------------------
// CWrtData::CreateIconFromUidL
// ---------------------------------------------------------------------------
//
-void CWrtData::CreateIconFromUidL(TInt& aHandle, TInt& aMaskHandle, const TUid& aAppUid )
+void CWrtData::CreateIconFromUidL( TInt& aHandle, TInt& aMaskHandle, const TUid& aAppUid )
{
RApaLsSession lsSession;
User::LeaveIfError( lsSession.Connect() );
@@ -765,33 +490,79 @@
CArrayFixFlat<TSize>* sizeArray = new(ELeave) CArrayFixFlat<TSize>( 5 );
CleanupStack::PushL( sizeArray );
- if ( KErrNone == lsSession.GetAppIconSizes(aAppUid, *sizeArray) )
+
+ User::LeaveIfError( lsSession.GetAppIconSizes( aAppUid, *sizeArray ) );
+
+ if ( sizeArray->Count() )
{
- 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++ )
{
- // 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 )
{
- if ( ( sizeArray->At(i).iWidth * sizeArray->At(i).iHeight ) > size )
- {
- idx = i;
- size = sizeArray->At(idx).iWidth * sizeArray->At(idx).iHeight;
- }
+ idx = i;
+ size = sizeArray->At(idx).iWidth * sizeArray->At(idx).iHeight;
}
+ }
- CApaMaskedBitmap* appBitMap = CApaMaskedBitmap::NewLC();
- if ( KErrNone == lsSession.GetAppIcon( aAppUid, sizeArray->At(idx),
- *appBitMap ) )
- {
- aHandle = appBitMap->Handle();
- aMaskHandle = appBitMap->Mask()->Handle();
- }
- CleanupStack::PopAndDestroy( appBitMap );
- }
+ CApaMaskedBitmap* appBitMap = CApaMaskedBitmap::NewLC();
+ User::LeaveIfError( lsSession.GetAppIcon( aAppUid, sizeArray->At(idx), *appBitMap ) );
+ aHandle = appBitMap->Handle();
+ aMaskHandle = appBitMap->Mask()->Handle();
+ CleanupStack::PopAndDestroy( appBitMap );
}
+
CleanupStack::PopAndDestroy( sizeArray );
CleanupStack::PopAndDestroy( &lsSession );
}
+
+// ---------------------------------------------------------------------------
+// ReSendNotificationL
+// ---------------------------------------------------------------------------
+//
+void CWrtData::ReSendNotificationL(CLiwDefaultList* aActionsList)
+ {
+ if( iInterface == NULL )
+ {
+ User::Leave( KErrNotSupported );
+ }
+
+ CLiwGenericParamList* inParamList = &iServiceHandler->InParamListL();
+ CLiwGenericParamList* outParamList = &iServiceHandler->OutParamListL();
+
+ TLiwGenericParam type( KType, TLiwVariant( KPubData ) );
+ inParamList->AppendL( type );
+
+ CLiwDefaultMap* filter = CreateFilterLC();
+ // add list of action triggers to execute
+ filter->InsertL(KActionTrigger, TLiwVariant(aActionsList) );
+
+ TLiwGenericParam item( KFilter, TLiwVariant( filter ));
+ inParamList->AppendL( item );
+ iInterface->ExecuteCmdL( KExecuteAction, *inParamList, *outParamList);
+ CleanupStack::PopAndDestroy( filter );
+ outParamList->Reset();
+ inParamList->Reset();
+
+ }
+
+// ---------------------------------------------------------------------------
+// SetCommandBuffer
+// ---------------------------------------------------------------------------
+//
+void CWrtData::SetCommandBuffer(TAny* aAny, const TDesC8& aNameSpace )
+ {
+ iPluginId.Copy(aNameSpace);
+ iCpsExecute = reinterpret_cast <MAiCpsCommandBuffer* > ( aAny );
+ if ( iCpsExecute )
+ {
+ iInterface = iCpsExecute->CpsInterface();
+ iServiceHandler = iCpsExecute->ServiceHandler();
+ }
+ }
+
+// End of file
+
--- a/idlefw/plugins/wrtdataplugin/src/wrtdataobserver.cpp Wed Mar 03 15:38:34 2010 +0200
+++ b/idlefw/plugins/wrtdataplugin/src/wrtdataobserver.cpp Wed May 12 13:36:47 2010 +0300
@@ -55,8 +55,7 @@
// ---------------------------------------------------------------------------
//
CWrtDataObserver::CWrtDataObserver ()
- {
-
+ {
}
// ---------------------------------------------------------------------------
@@ -65,7 +64,8 @@
//
CWrtDataObserver ::~CWrtDataObserver ()
{
- TRAP_IGNORE( ReleaseL());
+ TRAP_IGNORE( ReleaseL() );
+
iInterface = NULL;
iData = NULL;
}
@@ -191,7 +191,7 @@
// Sing off to notification
// ---------------------------------------------------------------------------
//
-void CWrtDataObserver ::ReleaseL()
+void CWrtDataObserver::ReleaseL()
{
if( iInterface )
{
@@ -212,3 +212,5 @@
CleanupStack::PopAndDestroy( inParamList );
}
}
+
+// End of file
--- a/idlefw/plugins/wrtdataplugin/src/wrtdataplugin.cpp Wed Mar 03 15:38:34 2010 +0200
+++ b/idlefw/plugins/wrtdataplugin/src/wrtdataplugin.cpp Wed May 12 13:36:47 2010 +0300
@@ -11,21 +11,14 @@
*
* Contributors:
*
-* Description:
-* Profile plug-in publisher
-*
+* Description: WRT data plug-in publisher
+*
*/
-
-
-// INCLUDE FILES
+// System includes
#include <ecom/ecom.h>
#include <ecom/implementationproxy.h>
-#include <aicontentobserver.h>
-#include <aiutility.h>
-#include <aipspropertyobserver.h>
#include <PUAcodes.hrh>
-#include <aipluginsettings.h>
#include <badesca.h>
#include <fbs.h>
#include <gulicon.h>
@@ -33,25 +26,37 @@
#include <AknsUtils.h>
#include <AknsConstants.h>
#include <e32property.h>
+
+// User includes
+#include <hspublisherinfo.h>
+#include <aicontentobserver.h>
+#include <aiutility.h>
+#include <aipspropertyobserver.h>
+#include <aipluginsettings.h>
#include <activeidle2domainpskeys.h>
+#include <debug.h>
#include "wrtdatapluginconst.h"
#include "wrtdatapluginuids.hrh"
#include "wrtdataplugin.h"
#include "wrtdata.h"
-// CONST CLASS VARIABLES
+// Constants
const TImplementationProxy KImplementationTable[] =
{
IMPLEMENTATION_PROXY_ENTRY( KImplUidDataPlugin, CWrtDataPlugin::NewL )
};
+const TInt KTryAgainDelay( 3000000 ); // 3 sec
+
// ======== MEMBER FUNCTIONS ========
// ---------------------------------------------------------------------------
-// Constructs and returns an application object.
+// ImplementationGroupProxy
+//
// ---------------------------------------------------------------------------
//
-EXPORT_C const TImplementationProxy* ImplementationGroupProxy(TInt& aTableCount )
+EXPORT_C const TImplementationProxy* ImplementationGroupProxy(
+ TInt& aTableCount )
{
aTableCount = sizeof( KImplementationTable ) /
sizeof( TImplementationProxy );
@@ -59,10 +64,10 @@
}
// ======== MEMBER FUNCTIONS ========
-
-// ---------------------------------------------------------------------------
-// Symbian 2nd phase constructor can leave
-// ---------------------------------------------------------------------------
+// ----------------------------------------------------------------------------
+// CWrtDataPlugin::NewL()
+//
+// ----------------------------------------------------------------------------
//
CWrtDataPlugin* CWrtDataPlugin::NewL()
{
@@ -73,27 +78,26 @@
return self;
}
-// ---------------------------------------------------------------------------
-// Default constructor
-// ---------------------------------------------------------------------------
+// ----------------------------------------------------------------------------
+// CWrtDataPlugin::CWrtDataPlugin()
+//
+// ----------------------------------------------------------------------------
//
CWrtDataPlugin::CWrtDataPlugin()
+ : iNetworkStatus( EUnknown ), iPluginState( ENone )
{
}
-// ---------------------------------------------------------------------------
-// Symbian 2nd phase constructor can leave
-// ---------------------------------------------------------------------------
+// ----------------------------------------------------------------------------
+// CWrtDataPlugin::ConstructL()
+//
+// ----------------------------------------------------------------------------
//
void CWrtDataPlugin::ConstructL()
- {
- iInfo.iUid.iUid = WRTDP_UID_ECOM_IMPLEMENTATION_CONTENTPUBLISHER_DATAPLUGIN;
- iPluginState = ENone;
- iHSForeGround = EFalse;
- iKeyLockOn = EFalse;
- iNetworkStatus = EUnknown;
- iData = CWrtData::NewL(this);
-
+ {
+ User::LeaveIfError( iRfs.Connect() );
+
+ iData = CWrtData::NewL( this );
}
// ---------------------------------------------------------------------------
@@ -103,15 +107,13 @@
//
CWrtDataPlugin::~CWrtDataPlugin()
{
- // deactivate the publishers
- if( iData )
+ if ( iTimer )
{
- if ( iPluginState != EInActive )
- {
- TRAP_IGNORE(iData->DeActivateL());
- }
- delete iData;
+ iTimer->Cancel();
+ delete iTimer;
}
+
+ delete iData;
iObservers.Close();
Release( iContent );
iDataArray.ResetAndDestroy();
@@ -125,71 +127,105 @@
delete []iContentModel;
}
iIconArray.Reset();
+
+ iRfs.Close();
}
-// ---------------------------------------------------------------------------
-// From class CAiContentPublisher
-// Plug-in is requested to unload its engines due backup operation
-// ---------------------------------------------------------------------------
+// ----------------------------------------------------------------------------
+// CWrtDataPlugin::Start
+//
+// ----------------------------------------------------------------------------
//
-void CWrtDataPlugin::Stop( TAiTransitionReason aReason )
+void CWrtDataPlugin::Start( TStartReason aReason )
{
- if( iPluginState == EResume )
+ if( aReason == ESystemStartup ||
+ aReason == EPluginStartup )
{
- Suspend( aReason );
+ // Publish the initial data
+ TRAP_IGNORE( PublishInitialDataL() );
+ }
+ }
+
+// ----------------------------------------------------------------------------
+// CWrtDataPlugin::Stop
+//
+// ----------------------------------------------------------------------------
+//
+void CWrtDataPlugin::Stop( TStopReason aReason )
+ {
+ if( aReason == EPluginShutdown ||
+ aReason == ESystemShutdown )
+ {
+ TRAP_IGNORE(iData->NotifyPublisherL( KDeActive ));
}
}
-// ---------------------------------------------------------------------------
-// From class CAiContentPublisher
-// Plug-in is instructed that it is allowed to consume CPU resources
-// ---------------------------------------------------------------------------
+// ----------------------------------------------------------------------------
+// CWrtDataPlugin::Resume
//
-void CWrtDataPlugin::Resume( TAiTransitionReason aReason )
- {
- TRAP_IGNORE( DoResumeL( aReason ) );
- }
-
-// ---------------------------------------------------------------------------
-// From class CAiContentPublisher
-// Plug-in is instructed that it is not allowed to consume CPU resources
-// ---------------------------------------------------------------------------
+// ----------------------------------------------------------------------------
//
-void CWrtDataPlugin::Suspend( TAiTransitionReason aReason )
+void CWrtDataPlugin::Resume( TResumeReason aReason )
{
- switch( aReason )
+ if ( aReason == EForeground )
{
- case EAiKeylockDisabled:
- case EAiKeylockEnabled:
- {
- // handled in resume
- break;
- }
- default :
- {
- iPluginState = ESuspend;
- TRAP_IGNORE ( iData->SuspendL() );
- }
- }
+ iPluginState = EResume;
+
+ TRAP_IGNORE( iData->NotifyPublisherL( KResume ));
+ }
+ }
+
+// ----------------------------------------------------------------------------
+// CWrtDataPlugin::Suspend
+//
+// ----------------------------------------------------------------------------
+//
+void CWrtDataPlugin::Suspend( TSuspendReason aReason )
+ {
+ if ( aReason == EBackground )
+ {
+ iPluginState = ESuspend;
+
+ TRAP_IGNORE ( iData->NotifyPublisherL( KSuspend ));
+ }
}
-// ---------------------------------------------------------------------------
-// From class CAiContentPublisher
-// The plug-in MUST maintain a registry of subscribers and send
-// notification to all of them whenever the state changes or new content
-// is available
-// ---------------------------------------------------------------------------
+// ----------------------------------------------------------------------------
+// CWrtDataPlugin::SetOnline
+//
+// ----------------------------------------------------------------------------
+//
+void CWrtDataPlugin::SetOnline()
+ {
+ iNetworkStatus = EOnline;
+ TRAP_IGNORE( iData->NotifyPublisherL( KOnLine ));
+ }
+
+// ----------------------------------------------------------------------------
+// CWrtDataPlugin::SetOffline
+//
+// ----------------------------------------------------------------------------
+//
+void CWrtDataPlugin::SetOffline()
+ {
+ iNetworkStatus = EOffline;
+ TRAP_IGNORE( iData->NotifyPublisherL( KOffLine ));
+ }
+
+// ----------------------------------------------------------------------------
+// CWrtDataPlugin::SubscribeL
+//
+// ----------------------------------------------------------------------------
//
void CWrtDataPlugin::SubscribeL( MAiContentObserver& aObserver )
- {
+ {
iObservers.AppendL( &aObserver );
}
-
-// ---------------------------------------------------------------------------
-// From class CAiContentPublisher
-// Plug-ins take ownership of the settings array, so it must either
-// store it in a member or free it.
-// ---------------------------------------------------------------------------
+
+// ----------------------------------------------------------------------------
+// CWrtDataPlugin::ConfigureL
+//
+// ----------------------------------------------------------------------------
//
void CWrtDataPlugin::ConfigureL( RAiSettingsItemArray& aSettings )
{
@@ -202,35 +238,37 @@
RAiSettingsItemArray contentItemsArr;
RAiSettingsItemArray configurationItemsArr;
- RAiSettingsItemArray settingItemsArr;
+ TInt count( aSettings.Count() );
- TInt count = aSettings.Count();
- for(TInt i = 0; i < count; i++ )
+ for ( TInt i = 0; i < count; i++ )
{
- MAiPluginSettings* pluginSetting = aSettings[i];
- if( pluginSetting->AiPluginItemType() == EAiPluginContentItem )
+ MAiPluginSettings* setting( aSettings[i] );
+
+ if( setting->AiPluginItemType() == EAiPluginContentItem )
{
- contentItemsArr.Append(pluginSetting);
+ contentItemsArr.Append( setting );
}
- else if( pluginSetting->AiPluginItemType() == EAiPluginConfigurationItem )
+ else if( setting->AiPluginItemType() == EAiPluginConfigurationItem )
{
- configurationItemsArr.Append(pluginSetting);
- }
- else
- {
- settingItemsArr.Append(pluginSetting);
+ configurationItemsArr.Append( setting );
}
}
iDataCount = contentItemsArr.Count();
- if(iDataCount > 0 )
+
+ if ( iDataCount > 0 )
{
// Create the content Model
- HBufC16* contentId = HBufC16::NewLC( KAiContentIdMaxLength + KAiPluginNameMaxLength );
+ HBufC16* contentId = HBufC16::NewLC(
+ KAiContentIdMaxLength + KAiPluginNameMaxLength );
+
iContentModel = new TAiContentItem[iDataCount];
- for(TInt i = 0; i < iDataCount; i++)
+
+ for( TInt i = 0; i < iDataCount; i++ )
{
- MAiPluginContentItem& contentItem = (contentItemsArr[i])->AiPluginContentItem();
+ MAiPluginContentItem& contentItem(
+ contentItemsArr[i]->AiPluginContentItem() );
+
iContentModel[i].id = i;
if( contentItem.Type() == KText() )
{
@@ -238,151 +276,120 @@
iContentModel[i].type = KAiContentTypeText;
}
if( contentItem.Type() == KImage() ||
- contentItem.Type() == KAnimation() )
+ contentItem.Type() == KAnimation() )
{
// image
iContentModel[i].type = KAiContentTypeBitmap;
}
- contentId->Des().Copy(contentItem.Name());
- contentId->Des().Delete(0, contentId->Des().LocateReverse(KPluginNameSeprator) +1);
+ contentId->Des().Copy( contentItem.Name() );
+ contentId->Des().Delete( 0,
+ contentId->Des().LocateReverse( KPluginNameSeprator ) + 1 );
- TInt sizeOfContentId = contentId->Des().Size()+sizeof(wchar_t);
- iContentModel[i].cid = static_cast<const wchar_t*>( User::Alloc( sizeOfContentId ) );
- Mem::Copy((TAny*)iContentModel[i].cid, contentId->Des().PtrZ(), sizeOfContentId);
+ TInt sizeOfContentId( contentId->Des().Size()+sizeof( wchar_t ) );
- contentId->Des().Delete( 0, contentId->Des().Length());
+ iContentModel[i].cid =
+ static_cast< const wchar_t* >( User::Alloc( sizeOfContentId ) );
+
+ Mem::Copy( ( TAny* )iContentModel[i].cid,
+ contentId->Des().PtrZ(), sizeOfContentId );
+
+ contentId->Des().Delete( 0, contentId->Des().Length() );
}
CleanupStack::PopAndDestroy( contentId );
- iContent = AiUtility::CreateContentItemArrayIteratorL( iContentModel, iDataCount );
+ iContent = AiUtility::CreateContentItemArrayIteratorL(
+ iContentModel, iDataCount );
+
// Configurations
- iData->ConfigureL(configurationItemsArr);
+ iData->ConfigureL( configurationItemsArr );
iPluginState = ESuspend;
+
// Register for notifications
iData->RegisterL();
// Activate the publisher
- iData->ActivateL();
+ iData->NotifyPublisherL( KActive );
}
- settingItemsArr.Reset();
contentItemsArr.Reset();
configurationItemsArr.Reset();
- // We own the array so destroy it
+ // We own the array so destroy it
aSettings.ResetAndDestroy();
- // publish the initial data
- PublishL();
+ }
+
+// ----------------------------------------------------------------------------
+// CWrtDataPlugin::SetProperty
+//
+// ----------------------------------------------------------------------------
+//
+void CWrtDataPlugin::SetProperty( TProperty aProperty, TAny* aAny )
+ {
+ if (aProperty == ECpsCmdBuffer )
+ {
+ iData->SetCommandBuffer( aAny, PublisherInfo().Namespace() );
+ }
+ }
+
+// ----------------------------------------------------------------------------
+// CWrtDataPlugin::GetProperty
+//
+// ----------------------------------------------------------------------------
+//
+TAny* CWrtDataPlugin::GetProperty( TProperty aProperty )
+ {
+ if ( aProperty == EPublisherContent )
+ {
+ return static_cast< MAiContentItemIterator* >( iContent );
+ }
+
+ return NULL;
}
-// ---------------------------------------------------------------------------
-// From class CAiContentPublisher
-// Returns the extension interface. Actual type depends on the passed
-// aUid argument.
-// ---------------------------------------------------------------------------
+// ----------------------------------------------------------------------------
+// CWrtDataPlugin::HandleEvent
+//
+// ----------------------------------------------------------------------------
+//
+void CWrtDataPlugin::HandleEvent( const TDesC& aEventName,
+ const TDesC& aParam )
+ {
+ TRAP_IGNORE( iData->ExecuteActionL( aEventName , aParam ) );
+ }
+
+// ----------------------------------------------------------------------------
+// CWrtDataPlugin::IsActive
+//
+// ----------------------------------------------------------------------------
//
-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;
- }
+TBool CWrtDataPlugin::IsActive() const
+ {
+ return iPluginState == EResume;
+ }
+
+// ----------------------------------------------------------------------------
+// CWrtDataPlugin::Data
+//
+// ----------------------------------------------------------------------------
+//
+CWrtData* CWrtDataPlugin::Data() const
+ {
+ return iData;
+ }
+
+// ----------------------------------------------------------------------------
+// CWrtDataPlugin::NetworkStatus
+//
+// ----------------------------------------------------------------------------
+//
+CWrtDataPlugin::TPluginNetworkStatus CWrtDataPlugin::NetworkStatus() const
+ {
+ return iNetworkStatus;
}
// ---------------------------------------------------------------------------
-// From class MAiPropertyExtension
-// Read property of publisher plug-in.
-// ---------------------------------------------------------------------------
-//
-TAny* CWrtDataPlugin::GetPropertyL( TInt aProperty )
- {
- TAny* property = NULL;
-
- switch ( aProperty )
- {
- case EAiPublisherInfo:
- {
- property = static_cast<TAiPublisherInfo*>( &iInfo );
- break;
- }
-
- case EAiPublisherContent:
- {
- property = static_cast<MAiContentItemIterator*>( iContent );
- break;
- }
- default:
- break;
- }
-
- return property;
- }
-
-// ---------------------------------------------------------------------------
-// From class MAiPropertyExtension
-// Write property value to optimize the content model.
-// ---------------------------------------------------------------------------
-//
-void CWrtDataPlugin::SetPropertyL( TInt aProperty, TAny* aValue )
- {
- 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;
- }
- }
-
-// ---------------------------------------------------------------------------
-// From class MAiEventHandlerExtension.
-// Handles an event sent by the AI framework.
-// ---------------------------------------------------------------------------
-//
-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.
-// Handles an event sent by the AI framework.
-// ---------------------------------------------------------------------------
-//
-void CWrtDataPlugin::HandleEvent( const TDesC& aEventName, const TDesC& aParam )
- {
- // We have no way of reporting errors to framework so just ignore them.
- TRAP_IGNORE(iData->ExecuteActionL( aEventName , aParam ) );
- }
-
-// ---------------------------------------------------------------------------
-// From class MAiEventHandlerExtension.
-// Invoked by the framework for querying if plugin has menu item
-// ---------------------------------------------------------------------------
-//
-TBool CWrtDataPlugin::HasMenuItem( const TDesC16& aMenuItem )
- {
- return iData->HasMenuItem ( aMenuItem );
- }
-
-// ---------------------------------------------------------------------------
+// CWrtDataPlugin::GetIdL
// Gets the id of a content
// ---------------------------------------------------------------------------
//
@@ -405,6 +412,7 @@
// ---------------------------------------------------------------------------
+// CWrtDataPlugin::GetTypeL
// Gets type of a content
// ---------------------------------------------------------------------------
//
@@ -431,11 +439,16 @@
}
// ---------------------------------------------------------------------------
-//Refresh a specific image of text in the widget
+//Refresh a specific image or text in the widget
// ---------------------------------------------------------------------------
//
void CWrtDataPlugin::RefreshL( TDesC16& aOperation, CLiwDefaultMap* aDataMap )
{
+ __PRINTS("*** CWrtDataPlugin::RefreshL ***");
+
+ __PRINT( __DBG_FORMAT( "* Publisher name: %S, uid: 0x%x, operation: %S" ),
+ &PublisherInfo().Name(), PublisherInfo().Uid().iUid, &aOperation );
+
TInt observers( iObservers.Count() );
TInt transactionId = reinterpret_cast<TInt>( this );
@@ -464,15 +477,8 @@
// Release memory of the published icons
iIconArray.Reset();
}
- }
-
-// ---------------------------------------------------------------------------
-// Is plugin active to publish the data
-// ---------------------------------------------------------------------------
-//
-TBool CWrtDataPlugin::IsActive()
- {
- return (iPluginState == EResume );
+
+ __PRINTS("*** CWrtDataPlugin::RefreshL - done ***");
}
// ---------------------------------------------------------------------------
@@ -577,23 +583,21 @@
}
}
else // Interpret as File path
- {
- RFs rfs;
- User::LeaveIfError( rfs.Connect() );
- RFile* iconFile = new (ELeave) RFile();
- err = iconFile->Open( rfs, aPath, EFileShareReadersOnly | EFileRead );
+ {
+ RFile iconFile;
+
+ err = iconFile.Open( iRfs, aPath, EFileShareReadersOnly | EFileRead );
+
if( err == KErrNone )
{
- aObserver->Publish( *this, aContentId, *iconFile, aContentId );
+ aObserver->Publish( *this, aContentId, iconFile, aContentId );
}
else
{
aObserver->Clean( *this, aContentId, aContentId );
}
- iconFile->Close();
- delete iconFile;
- iconFile = NULL;
- rfs.Close();
+
+ iconFile.Close();
}
}
}
@@ -665,13 +669,16 @@
void CWrtDataPlugin::HideLoadingIcon(MAiContentObserver* aObserver)
{
aObserver->SetProperty( *this, KElement , KDisplay , KHide );
+
+ // Do not try to publish initial data anymore
+ StopTimer();
}
// ---------------------------------------------------------------------------
// Publishes widget's texts and images
// ---------------------------------------------------------------------------
//
-void CWrtDataPlugin::PublishL()
+void CWrtDataPlugin::PublishInitialDataL()
{
TInt observers( iObservers.Count() );
TInt transactionId = reinterpret_cast<TInt>( this );
@@ -679,13 +686,17 @@
for ( int i = 0; i < observers; i++ )
{
MAiContentObserver* observer = iObservers[i];
-
+
+ CleanupStack::PushL( TCleanupItem( CancelTransaction, observer ) );
+
if ( observer->StartTransaction( transactionId ) == KErrNone )
{// Publish default data
- iData->PublishDefaultImageL(observer);
+ iData->PublishInitialDataL(observer);
observer->Commit( transactionId );
}
+ CleanupStack::Pop( observer );
+
// Release memory of the published text
iDataArray.ResetAndDestroy();
// Release memory of the published icons
@@ -695,100 +706,6 @@
}
// ---------------------------------------------------------------------------
-// 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
// ---------------------------------------------------------------------------
//
@@ -866,3 +783,120 @@
}
return (error == KErrNone );
}
+
+// ---------------------------------------------------------------------------
+// Cleanup callback for cancelling a transactions in case of leave
+// ---------------------------------------------------------------------------
+//
+void CWrtDataPlugin::CancelTransaction( TAny* aObserver )
+ {
+ if ( aObserver )
+ {
+ MAiContentObserver* obs = reinterpret_cast< MAiContentObserver*>( aObserver );
+ TInt transactionId = reinterpret_cast<TInt>( aObserver );
+ obs->CancelTransaction( transactionId );
+ }
+ }
+
+// ---------------------------------------------------------------------------
+// Create and start republish timer
+// ---------------------------------------------------------------------------
+//
+void CWrtDataPlugin::StartTimer()
+ {
+ TRAP_IGNORE(
+ if ( !iTimer )
+ {
+ iTimer = CPeriodic::NewL( CActive::EPriorityStandard );
+ }
+
+ if ( !iTimer->IsActive() )
+ {
+ TTimeIntervalMicroSeconds32 delay( KTryAgainDelay );
+ iTimer->Start( delay, delay, TCallBack( Timeout, this ) );
+ }
+ );
+ }
+
+// ---------------------------------------------------------------------------
+// Cancel republish timer
+// ---------------------------------------------------------------------------
+//
+void CWrtDataPlugin::CancelTimer()
+ {
+ if ( iTimer )
+ {
+ iTimer->Cancel();
+ }
+ }
+
+// ---------------------------------------------------------------------------
+// Stop and delete republish timer
+// ---------------------------------------------------------------------------
+//
+void CWrtDataPlugin::StopTimer()
+ {
+ if ( iTimer )
+ {
+ iTimer->Cancel();
+ delete iTimer;
+ iTimer = NULL;
+ }
+ }
+
+// ---------------------------------------------------------------------------
+// Initial data republish callback
+// ---------------------------------------------------------------------------
+//
+TInt CWrtDataPlugin::Timeout( TAny* aPtr )
+ {
+ CWrtDataPlugin* self = static_cast<CWrtDataPlugin*>( aPtr );
+
+ // Cancel timer before publishing
+ self->CancelTimer();
+
+ TInt observers( self->iObservers.Count() );
+ TInt transactionId = reinterpret_cast<TInt>( self );
+ TBool success( ETrue );
+
+ // Publish for each observer
+ for ( int i = 0; i < observers; i++ )
+ {
+ MAiContentObserver* observer = self->iObservers[i];
+
+ if ( observer->StartTransaction( transactionId ) == KErrNone )
+ {
+ // Publish default image
+ TRAPD( err, self->iData->PublishDefaultImageL( observer ) );
+ if ( KErrNone != err )
+ {
+ observer->CancelTransaction( transactionId );
+ success = EFalse;
+ }
+ else
+ {
+ //
+ observer->Commit( transactionId );
+ }
+ }
+ }
+
+ // Start timer again if there is error in publishing
+ if ( !success )
+ {
+ self->StartTimer();
+ }
+ else
+ {
+ self->StopTimer();
+ }
+
+ // Release memory of the published icons
+ self->iIconArray.Reset();
+
+ return KErrNone;
+ }
+
+
+
+// End of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/idlefw/plugins/wsplugin/group/aiwsplugin.mmp Wed May 12 13:36:47 2010 +0300
@@ -0,0 +1,62 @@
+/*
+* Copyright (c) 2005-2006 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: This is project specification for idle window server plug-
+* in. The plug-in provides service for routing of numeric key
+* events to Phone application and activation of key lock.
+*
+*/
+
+#include <platform_paths.hrh>
+
+TARGET aiwsplugin.dll
+TARGETTYPE ANI
+UID 0x10003B22 0x10207206
+CAPABILITY CAP_GENERAL_DLL
+VENDORID VID_DEFAULT
+
+USERINCLUDE ../inc
+USERINCLUDE ../../../inc/common
+APP_LAYER_SYSTEMINCLUDE
+
+SOURCEPATH ../src
+SOURCE aiwspluginanimdll.cpp
+SOURCE aiwspluginanim.cpp
+SOURCE modifierkeytracker.cpp
+// SOURCE keylockhandler.cpp
+// SOURCE keylockstates.cpp
+// SOURCE keypadsettings.cpp
+SOURCE numerickeyhandler.cpp
+// SOURCE logslaunchhandler.cpp
+// SOURCE sindlaunchhandler.cpp
+// SOURCE keyhandlertimer.cpp
+SOURCE panic.cpp
+
+
+LIBRARY euser.lib
+LIBRARY cone.lib
+LIBRARY ws32.lib
+LIBRARY apgrfx.lib
+LIBRARY centralrepository.lib
+LIBRARY flogger.lib
+
+LIBRARY featmgr.lib
+LIBRARY cenrepnotifhandler.lib
+LIBRARY ptiengine.lib
+LIBRARY keylockpolicyapi.lib
+
+LIBRARY aiutils.lib
+
+LIBRARY serviceprovidersettings.lib
+
+// End of File
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/idlefw/plugins/wsplugin/group/bld.inf Wed May 12 13:36:47 2010 +0300
@@ -0,0 +1,32 @@
+/*
+* Copyright (c) 2006 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: The build information file of WS Plugin
+*
+*/
+
+
+#ifdef RD_CUSTOMIZABLE_AI
+
+PRJ_PLATFORMS
+DEFAULT
+
+PRJ_EXPORTS
+../rom/aiwsplugin.iby CORE_MW_LAYER_IBY_EXPORT_PATH(aiwsplugin.iby)
+
+PRJ_MMPFILES
+aiwsplugin.mmp
+
+#endif // RD_CUSTOMIZABLE_AI
+
+// End of File.
--- a/idlefw/plugins/wsplugin/inc/keyhandlertimer.h Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,81 +0,0 @@
-/*
-* Copyright (c) 2005-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: Key handler timer for Active Idle WS Plug-in.
-*
-*/
-
-#ifndef C_AIWSPLUGIN_KEYHANDLERTIMER_H
-#define C_AIWSPLUGIN_KEYHANDLERTIMER_H
-
-#include <e32base.h>
-
-namespace AiWsPlugin {
-
-/**
- * Handler timer interface.
- */
-class MHandlerTimer
- {
-public:
- virtual void TimerDone() = 0;
- };
-
-/**
- * @ingroup group_wsplugin
- *
- * Logs app launch handler for Active Idle WS Plug-in.
- */
-class CKeyHandlerTimer :
- public CTimer
- {
-public:
-
-// Construction
-
- static CKeyHandlerTimer* NewL( MHandlerTimer* aHandler );
-
- static CKeyHandlerTimer* NewLC( MHandlerTimer* aHandler );
-
- ~CKeyHandlerTimer();
-
-// new methods
-
- void StopTimer();
-
- TBool IsActive();
-
-protected: // From CActive
-
- void RunL();
-
- TInt RunError( TInt aError );
-
-private:
-
-// Construction
-
- CKeyHandlerTimer( MHandlerTimer* aHandler );
-
- void ConstructL();
-
-private: // data
-
- /// Pointer to handler timer. Not owned.
- MHandlerTimer* iHandler;
- };
-
-} // namespace AiWsPlugin
-
-
-#endif // C_AIWSPLUGIN_KEYHANDLERTIMER_H
\ No newline at end of file
--- a/idlefw/plugins/wsplugin/inc/keylockcontrol.h Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,78 +0,0 @@
-/*
-* Copyright (c) 2005-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: Keylock handler settings class and control interface for
-* Active Idle WS Plug-in.
-*
-*/
-
-
-#ifndef M_AIWSPLUGIN_KEYLOCKCONTROL_H
-#define M_AIWSPLUGIN_KEYLOCKCONTROL_H
-
-#include <e32def.h>
-class TRawEvent;
-
-namespace AiWsPlugin {
-
-class TKeypadSettings;
-class TKeylockState;
-
-/**
- * @ingroup group_wsplugin
- *
- * Callback interface for CKeyLockHandler internal states.
- */
-class MKeyLockHandlerControl
- {
-public:
-
- virtual const TKeypadSettings& Settings() const = 0;
-
- virtual void StartTimeoutTimer( TInt aTimeout = -1 ) = 0;
-
- virtual void StopTimeoutTimer() = 0;
-
- virtual void ActivateKeypadLock() = 0;
-
- virtual void CancelKeypadLock() = 0;
-
- virtual void KeypadLockTimeout() = 0;
-
- virtual void SetNextState( const TKeylockState& aState ) = 0;
-
- virtual void ActivateNextState() = 0;
-
- virtual void SetLastLockKeyScanCode( TInt aScanCode ) = 0;
-
- virtual TInt LastLockKeyScanCode() const = 0;
-
- virtual TBool HasFocus() = 0;
-
- virtual TBool TimeoutTimerActive() = 0;
-
- virtual TBool IsFirstLockKey( TInt aScanCode ) = 0;
-
- virtual TBool IsSecondLockKey( TInt aScanCode ) = 0;
-
-
-protected:
- /**
- * Protected dtor prevents deletion through this interface.
- */
- ~MKeyLockHandlerControl() { }
- };
-
-} // namespace AiWsPlugin
-
-#endif // M_AIWSPLUGIN_KEYLOCKCONTROL_H
--- a/idlefw/plugins/wsplugin/inc/keylockhandler.h Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,149 +0,0 @@
-/*
-* Copyright (c) 2005-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: Keylock handler for Active Idle WS Plug-in.
-*
-*/
-
-
-#ifndef C_AIWSPLUGIN_KEYLOCKHANDLER_H
-#define C_AIWSPLUGIN_KEYLOCKHANDLER_H
-
-#include "eventhandler.h"
-#include "keylockcontrol.h"
-#include "keypadsettings.h"
-#include "keyhandlertimer.h"
-
-class CKeyLockPolicyApi;
-namespace AiWsPlugin {
-
-class TKeylockState;
-
-/**
- * @ingroup group_wsplugin
- *
- * Keylock handler for Active Idle WS Plug-in.
- *
- * Monitors key presses that activate keyboard lock on the device.
- *
- * @since S60 3.2
- */
-class CKeyLockHandler :
- public CEventHandler,
- public MKeyLockHandlerControl,
- public MHandlerTimer
- {
-public:
-
- static CKeyLockHandler* NewLC();
-
- ~CKeyLockHandler();
-
-// from MHandlerTimer
-
- void TimerDone();
-
-private:
-
-// from base class CEventHandler
-
- void SetUiStateQuery( MUiState& aUiState );
-
- void FocusChanged( TBool aState );
-
- TBool OfferRawEvent(const TRawEvent& aRawEvent);
-
-// from base class MKeyLockHandlerControl
-
- const TKeypadSettings& Settings() const;
-
- void StartTimeoutTimer( TInt aTimeout );
-
- void StopTimeoutTimer();
-
- void ActivateKeypadLock();
-
- void CancelKeypadLock();
-
- void KeypadLockTimeout();
-
- void SetNextState( const TKeylockState& aState );
-
- void ActivateNextState();
-
- void SetLastLockKeyScanCode( TInt aScanCode );
-
- TInt LastLockKeyScanCode() const;
-
- TBool HasFocus();
-
- TBool TimeoutTimerActive();
-
-// construction
-
- CKeyLockHandler();
-
- void ConstructL();
-
- static TInt TimerElapsed( TAny* aSelf );
-
- TBool IsFirstLockKey( TInt aScanCode );
-
- TBool IsSecondLockKey( TInt aScanCode );
-
-private: // data
- /**
- * Current state of this object.
- * Not owned.
- */
- const TKeylockState* iCurrentState;
-
- /**
- * Next state of this object.
- * Not owned.
- */
- const TKeylockState* iNextState;
-
- /**
- * Timeout timer for keypad lock.
- * Own.
- */
- CPeriodic* iKeypadLockTimer;
-
- /**
- * Key lock settings.
- */
- TKeypadSettings iSettings;
-
- /**
- * Last value of SetLastLockKeyScanCode( TInt aScanCode).
- */
- TInt iLastLockKeyScanCode;
-
- /**
- * Pointer to ui state.
- * Not owned.
- */
- MUiState* iUiState;
-
- /**
- * For checking keylock buttons
- * Own
- */
- CKeyLockPolicyApi *iKeylockApi;
- };
-
-} // namespace AiWsPlugin
-
-
-#endif // C_AIWSPLUGIN_KEYLOCKHANDLER_H
--- a/idlefw/plugins/wsplugin/inc/keylockstates.h Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,113 +0,0 @@
-/*
-* Copyright (c) 2005-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: Keylock handler states for Active Idle WS Plug-in.
-*
-*/
-
-
-#ifndef T_AIWSPLUGIN_KEYLOCKSTATES_H
-#define T_AIWSPLUGIN_KEYLOCKSTATES_H
-
-#include <e32def.h>
-class TRawEvent;
-
-namespace AiWsPlugin {
-
-class MKeyLockHandlerControl;
-
-/**
- * @ingroup group_wsplugin
- *
- * Internal state structure for class CKeyLockHandler.
- * The states are behaviour-only and thus consist of just function pointers.
- */
-class TKeylockState
- {
-public:
- /**
- * Returns the state machine's initial startup state.
- */
- static const TKeylockState& StartupState();
-
- /**
- * Returns this state's default succeeding state.
- */
- inline const TKeylockState& DefaultNextState() const
- { return (*iDefaultNextState)(); }
-
- /**
- * Handles Active Idle focus changes.
- *
- * @param aControl Key lock control interface.
- * @param aState current focus state. See CWindowAnim::FocusChaned.
- */
- inline void FocusChanged( MKeyLockHandlerControl& aControl, TBool aState ) const
- { (*iFocusChanged)( aControl, aState ); }
-
- /**
- * Handles raw Window Server events.
- *
- * @param aControl Key lock control interface.
- * @param aRawEvent The event to handle. See MEventHandler::OfferRawEvent.
- * @return true if the event was consumed by the state, false otherwise.
- */
- inline TBool OfferRawEvent
- ( MKeyLockHandlerControl& aControl, const TRawEvent& aRawEvent ) const
- { return (*iOfferRawEvent)( aControl, aRawEvent ); }
-
- /**
- * Handles key lock timeout timer elapsed event.
- *
- * @param aControl Key lock control interface.
- */
- inline void TimerElapsed( MKeyLockHandlerControl& aControl ) const
- { (*iTimerElapsed)( aControl ); }
-
-// Public function pointers
-
- /**
- * Pointer to state function that returns this state's default succeeding state.
- */
- const TKeylockState& (*iDefaultNextState)();
-
- /**
- * Pointer to state function which handles Active Idle focus changes.
- *
- * @param aControl Key lock control interface.
- * @param aState current focus state. See CWindowAnim::FocusChaned.
- */
- void (*iFocusChanged)( MKeyLockHandlerControl& aControl, TBool aState );
-
- /**
- * Pointer to state function which handles raw Window Server events.
- *
- * @param aControl Key lock control interface.
- * @param aRawEvent The event to handle. See MEventHandler::OfferRawEvent.
- * @return true if the event was consumed by the state, false otherwise.
- */
- TBool (*iOfferRawEvent)( MKeyLockHandlerControl& aControl, const TRawEvent& aRawEvent );
-
- /**
- * Pointer to state function which handles key lock timeout timer elapsed
- * event.
- *
- * @param aControl Key lock control interface.
- */
- void (*iTimerElapsed)( MKeyLockHandlerControl& aControl );
- };
-
-} // namespace AiWsPlugin
-
-#endif // T_AIWSPLUGIN_KEYLOCKSTATES_H
-
--- a/idlefw/plugins/wsplugin/inc/keypadsettings.h Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,122 +0,0 @@
-/*
-* Copyright (c) 2005-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: Keypad settings class for Active Idle WS Plug-in.
-*
-*/
-
-
-#ifndef T_AIWSPLUGIN_KEYPADSETTINGS_H
-#define T_AIWSPLUGIN_KEYPADSETTINGS_H
-
-#include <e32std.h>
-class TRawEvent;
-
-namespace AiWsPlugin {
-
-/**
- * @ingroup group_wsplugin
- *
- * Internal class for keypad settings.
- */
-class TKeypadSettings
- {
-public:
- /**
- * Initializes this object from settings repository.
- */
- void ReadFromRepositoryL();
-
- /**
- * Returns true if aScanCode matches the first lock key.
- */
- TBool IsFirstLockKey( TInt aScanCode ) const;
-
- /**
- * Returns true if aScanCode matches the second lock key.
- */
- TBool IsSecondLockKey( TInt aScanCode ) const;
-
- /**
- * Returns the key lock timeout in microseconds.
- */
- TTimeIntervalMicroSeconds32 KeylockTimeout() const;
-
- /**
- * Returns true if aScanCode matches the SIND key.
- */
- TBool IsSINDKey( TInt aScanCode ) const;
-
- /**
- * Returns the key lock timeout in microseconds.
- */
- TTimeIntervalMicroSeconds32 KeySINDTimeout() const;
-
- TInt16 MapNkpScanCodeToChar( TInt aScanCode );
-
-private: // data
- /**
- * Scan code of first keypad lock key.
- */
- TInt16 iFirstLockKeyScanCode;
-
- /**
- * Character code (if any) that matches iFirstLockKeyScanCode.
- */
- TInt16 iFirstLockKeyChar;
-
- /**
- * Scan code of second keypad lock key.
- */
- TInt16 iSecondLockKeyScanCode;
-
- /**
- * Character code (if any) that matches iSecondLockKeyChar.
- */
- TInt16 iSecondLockKeyChar;
-
- /**
- * Scan code of optional second keypad lock key.
- */
- TInt16 iSecondLockKeyScanCode2;
-
- /**
- * Character code (if any) that matches iSecondLockKeyChar2.
- */
- TInt16 iSecondLockKeyChar2;
-
- /**
- * Keypad lock timeout in microseconds.
- */
- TTimeIntervalMicroSeconds32 iKeylockTimeout;
-
- /**
- * Scan code of SIND keypad key.
- */
- TInt16 iSINDKeyScanCode;
-
- /**
- * Character code (if any) that matches iSINDKeyScanCode.
- */
- TInt16 iSINDKeyScanChar;
-
- /**
- * Keypad SIND timeout in microseconds.
- */
- TTimeIntervalMicroSeconds32 iKeySINDTimeout;
-
- };
-
-} // namespace AiWsPlugin
-
-#endif // T_AIWSPLUGIN_KEYPADETTINGS_H
--- a/idlefw/plugins/wsplugin/inc/logslaunchhandler.h Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,74 +0,0 @@
-/*
-* Copyright (c) 2005-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: Logs app launch handler for Active Idle WS Plug-in.
-*
-*/
-
-
-#ifndef C_AIWSPLUGIN_LOGSLAUNCHANDLER_H
-#define C_AIWSPLUGIN_LOGSLAUNCHANDLER_H
-
-#include "eventhandler.h"
-#include "keyhandlertimer.h"
-
-namespace AiWsPlugin {
-
-/**
- * @ingroup group_wsplugin
- *
- * Logs app launch handler for Active Idle WS Plug-in.
- */
-class CLogsLaunchHandler :
- public CEventHandler,
- public MHandlerTimer
- {
-public:
-
- static CLogsLaunchHandler* NewLC();
-
- ~CLogsLaunchHandler();
-
-private:
-
-// from base class CEventHandler
-
- void SetUiStateQuery( MUiState& aUiState );
-
- void FocusChanged( TBool aState );
-
- TBool OfferRawEvent(const TRawEvent& aRawEvent);
-
-// from MHandlerTimer
-
- void TimerDone();
-
-// Construction
-
- CLogsLaunchHandler();
-
- void ConstructL();
-
-private: // data
-
- /// Pointer to state. Not owned.
- MUiState* iUiState;
-
- /// Timer for long key down event. Owned.
- CKeyHandlerTimer* iTimer;
- };
-
-} // namespace AiWsPlugin
-
-
-#endif // C_AIWSPLUGIN_KEYLOCKHANDLER_H
--- a/idlefw/plugins/wsplugin/inc/numerickeyhandler.h Wed Mar 03 15:38:34 2010 +0200
+++ b/idlefw/plugins/wsplugin/inc/numerickeyhandler.h Wed May 12 13:36:47 2010 +0300
@@ -44,7 +44,8 @@
public CEventHandler,
private MCenRepNotifyHandlerCallback
{
-public:
+public:
+
/**
* Creates a new instance of this class.
*
@@ -83,6 +84,12 @@
void SetQwertyMode( TInt aValue );
void SetInputLanguage( TInt aValue );
+
+ TBool AllowAlphaNumericMode() const;
+
+ TBool VoIPSupported() const;
+
+ TBool EasyDialingEnabled() const;
// from base class MCenRepNotifyHandlerCallback
@@ -118,6 +125,13 @@
/// Input language indicator.
TInt iInputLanguage;
+
+private:
+ // friend classes
+
+#ifdef _AIWSPLUGIN_UNIT_TEST
+ friend class UT_NumericKeyHandler;
+#endif
};
} // namespace AiWsPlugin
--- a/idlefw/plugins/wsplugin/inc/sindlaunchhandler.h Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,88 +0,0 @@
-/*
-* Copyright (c) 2005-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: SIND launch handler for Active Idle WS Plug-in.
-*
-*/
-
-
-#ifndef C_AIWSPLUGIN_SINDLAUNCHANDLER_H
-#define C_AIWSPLUGIN_SINDLAUNCHANDLER_H
-
-#include "eventhandler.h"
-#include "keyhandlertimer.h"
-
-#include <e32base.h>
-
-namespace AiWsPlugin {
-
-/**
- * @ingroup group_wsplugin
- *
- * Logs app launch handler for Active Idle WS Plug-in.
- */
-class CSINDLaunchHandler :
- public CEventHandler,
- public MHandlerTimer
- {
-public:
-
-// Construction
-
- static CSINDLaunchHandler* NewLC();
-
- ~CSINDLaunchHandler();
-
-// from base class CEventHandler
-
- void SetUiStateQuery( MUiState& aUiState );
-
- void FocusChanged( TBool aState );
-
- TBool OfferRawEvent(const TRawEvent& aRawEvent);
-
-// from MHandlerTimer
-
- void TimerDone();
-
-private:
-
-// Construction
-
- CSINDLaunchHandler();
-
- void ConstructL();
-
-// New methods
-
- void SkipVoiceDial();
-
-private: // data
-
- /// Pointer to state. Not owned.
- MUiState* iUiState;
-
- /// Timer for long key down event. Owned.
- CKeyHandlerTimer* iTimer;
-
- /// Flag for SIND key down
- TBool iSINDKeyDown;
-
- /// Flag for SIND launched
- TBool iSINDLaunched;
- };
-
-} // namespace AiWsPlugin
-
-
-#endif // C_AIWSPLUGIN_SINDLAUNCHANDLER_H
\ No newline at end of file
--- a/idlefw/plugins/wsplugin/src/aiwspluginanim.cpp Wed Mar 03 15:38:34 2010 +0200
+++ b/idlefw/plugins/wsplugin/src/aiwspluginanim.cpp Wed May 12 13:36:47 2010 +0300
@@ -16,47 +16,81 @@
*/
+// System includes
+#include <featmgr.h>
+
+// User includes
#include "aiwspluginanim.h"
#include "aiwspluginanimdef.h"
-#include "keylockhandler.h"
#include "numerickeyhandler.h"
-#include "logslaunchhandler.h"
-#include "sindlaunchhandler.h"
-#include <featmgr.h>
using namespace AiWsPlugin;
+// ======== MEMBER FUNCTIONS ========
+
+// ---------------------------------------------------------------------------
+// CAiWsPluginAnim::CAiWsPluginAnim
+//
+// ---------------------------------------------------------------------------
+//
CAiWsPluginAnim::CAiWsPluginAnim()
{
}
+// ---------------------------------------------------------------------------
+// CAiWsPluginAnim::~CAiWsPluginAnim
+//
+// ---------------------------------------------------------------------------
+//
CAiWsPluginAnim::~CAiWsPluginAnim()
{
iEventHandlers.ResetAndDestroy();
+
if ( iFunctions )
{
iFunctions->GetRawEvents( EFalse );
}
+
FeatureManager::UnInitializeLib();
}
+// ---------------------------------------------------------------------------
+// CAiWsPluginAnim::CommandReplyL
+//
+// ---------------------------------------------------------------------------
+//
TInt CAiWsPluginAnim::CommandReplyL( TInt /*aOpcode*/, TAny* /*aArgs*/ )
{
return KErrNone;
}
+// ---------------------------------------------------------------------------
+// CAiWsPluginAnim::Command
+//
+// ---------------------------------------------------------------------------
+//
void CAiWsPluginAnim::Command( TInt /*aOpcode*/, TAny* /*aArgs*/ )
{
}
+// ---------------------------------------------------------------------------
+// CAiWsPluginAnim::Animate
+//
+// ---------------------------------------------------------------------------
+//
void CAiWsPluginAnim::Animate( TDateTime* /*aDateTime*/ )
{
}
+// ---------------------------------------------------------------------------
+// CAiWsPluginAnim::AddEventHandlerAndPopL
+//
+// ---------------------------------------------------------------------------
+//
void CAiWsPluginAnim::AddEventHandlerAndPopL( CEventHandler* aEventHandler )
{
- if( aEventHandler )
+ if ( aEventHandler )
{
aEventHandler->SetUiStateQuery( *this );
iEventHandlers.AppendL( aEventHandler );
@@ -64,55 +98,75 @@
}
}
+// ---------------------------------------------------------------------------
+// CAiWsPluginAnim::ConstructL
+//
+// ---------------------------------------------------------------------------
+//
void CAiWsPluginAnim::ConstructL( TAny* aArgs, TBool aHasFocus )
{
- FeatureManager::InitializeLibL();
-
- iFunctions->GetRawEvents( ETrue );
- if( !aArgs )
+ if ( !aArgs )
{
User::Leave( KErrArgument );
}
- iWgInfo = *( static_cast<TAiWsPluginAnimInitData*>(aArgs) );
+
+ FeatureManager::InitializeLibL();
- AddEventHandlerAndPopL( CKeyLockHandler::NewLC() );
-
- MAnimGeneralFunctionsWindowExtension* ext = reinterpret_cast<MAnimGeneralFunctionsWindowExtension*>
- ( iFunctions->ExtendedInterface(
- MAnimGeneralFunctions::EWindowExtensionInterface ) );
- AddEventHandlerAndPopL( CNumericKeyHandler::NewLC( iWgInfo.iTargetWgId, ext ) );
+ iFunctions->GetRawEvents( ETrue );
+
+ iWgInfo = *( static_cast< TAiWsPluginAnimInitData* >( aArgs ) );
+
+ // AddEventHandlerAndPopL( CKeyLockHandler::NewLC() );
+
+ MAnimGeneralFunctionsWindowExtension* ext =
+ reinterpret_cast<MAnimGeneralFunctionsWindowExtension*>
+ ( iFunctions->ExtendedInterface(
+ MAnimGeneralFunctions::EWindowExtensionInterface ) );
+
+ AddEventHandlerAndPopL(
+ CNumericKeyHandler::NewLC( iWgInfo.iTargetWgId, ext ) );
- AddEventHandlerAndPopL( CLogsLaunchHandler::NewLC() );
-
-/* Leave this commented code here for now.. 2.5.2007, unclear if needed still in some config.
- if ( FeatureManager::FeatureSupported( KFeatureIdKeypadNoVoiceKey ) )
- {
- AddEventHandlerAndPopL( CSINDLaunchHandler::NewLC() );
- }
-*/
// Update initial focus status
FocusChanged( aHasFocus );
}
+// ---------------------------------------------------------------------------
+// CAiWsPluginAnim::Redraw
+//
+// ---------------------------------------------------------------------------
+//
void CAiWsPluginAnim::Redraw()
{
}
+// ---------------------------------------------------------------------------
+// CAiWsPluginAnim::FocusChanged
+//
+// ---------------------------------------------------------------------------
+//
void CAiWsPluginAnim::FocusChanged( TBool aState )
{
iAiFocused = aState;
- const TInt handlerCount = iEventHandlers.Count();
- for( TInt i = 0; i < handlerCount; ++i )
+
+ const TInt count( iEventHandlers.Count() );
+
+ for ( TInt i = 0; i < count; ++i )
{
iEventHandlers[i]->FocusChanged( aState );
}
}
+// ---------------------------------------------------------------------------
+// CAiWsPluginAnim::OfferRawEvent
+//
+// ---------------------------------------------------------------------------
+//
TBool CAiWsPluginAnim::OfferRawEvent( const TRawEvent& aRawEvent )
{
// Forward event to all event handlers
- const TInt handlerCount = iEventHandlers.Count();
- for( TInt i = 0; i < handlerCount; ++i )
+ const TInt count( iEventHandlers.Count() );
+
+ for ( TInt i = 0; i < count; ++i )
{
// All other are made to return EFalse
// Except wait for 2ndkeyup and 2ndkeydown of keylock states.
@@ -127,14 +181,25 @@
return EFalse;
}
-
+
+// ---------------------------------------------------------------------------
+// CAiWsPluginAnim::Modifiers
+//
+// ---------------------------------------------------------------------------
+//
TUint CAiWsPluginAnim::Modifiers() const
{
return iModifierTracker.Status();
}
+// ---------------------------------------------------------------------------
+// CAiWsPluginAnim::HasFocus
+//
+// ---------------------------------------------------------------------------
+//
TBool CAiWsPluginAnim::HasFocus() const
{
return iAiFocused;
}
+// End of file
--- a/idlefw/plugins/wsplugin/src/keyhandlertimer.cpp Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,77 +0,0 @@
-/*
-* Copyright (c) 2005-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: Key handler timer for Active Idle WS Plug-in.
-*
-*/
-
-
-#include <e32base.h>
-
-#include "keyhandlertimer.h"
-#include "sindlaunchhandler.h"
-
-namespace AiWsPlugin {
-
-CKeyHandlerTimer::CKeyHandlerTimer( MHandlerTimer* aHandler )
- : CTimer( CTimer::EPriorityStandard )
- {
- iHandler = aHandler;
- }
-
-void CKeyHandlerTimer::ConstructL()
- {
- CTimer::ConstructL();
- CActiveScheduler::Add( this );
- }
-
-CKeyHandlerTimer* CKeyHandlerTimer::NewL( MHandlerTimer* aHandler )
- {
- CKeyHandlerTimer* self = CKeyHandlerTimer::NewLC( aHandler );
- CleanupStack::Pop( self );
- return self;
- }
-
-
-CKeyHandlerTimer* CKeyHandlerTimer::NewLC( MHandlerTimer* aHandler )
- {
- CKeyHandlerTimer* self = new(ELeave) CKeyHandlerTimer( aHandler );
- CleanupStack::PushL( self );
- self->ConstructL();
- return self;
- }
-
-CKeyHandlerTimer::~CKeyHandlerTimer()
- {
- Cancel();
- }
-
-void CKeyHandlerTimer::RunL()
- {
- if( iHandler )
- {
- iHandler->TimerDone();
- }
- }
-
-TInt CKeyHandlerTimer::RunError( TInt /*aError*/ )
- {
- return 0;
- }
-
-TBool CKeyHandlerTimer::IsActive()
- {
- return CActive::IsActive();
- }
-
-} // namespace AiWsPlugin
--- a/idlefw/plugins/wsplugin/src/keylockhandler.cpp Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,241 +0,0 @@
-/*
-* Copyright (c) 2005-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: Keylock handler implementation for Active Idle WS Plug-in
-*
-*/
-
-
-#include "keylockhandler.h"
-#include "keyhandlertimer.h"
-#include "keylockstates.h"
-#include "aiwspluginanimdef.h"
-#include "uistate.h"
-
-#include <e32property.h>
-#include <activeidle2internalpskeys.h>
-#include <keylockpolicyapi.h>
-
-#include "debug.h"
-
-namespace AiWsPlugin {
-
-CKeyLockHandler::CKeyLockHandler() :
- // Initialize to start-up state
- iCurrentState( &TKeylockState::StartupState() ),
- iNextState( &iCurrentState->iDefaultNextState() )
- {
- }
-
-void CKeyLockHandler::ConstructL()
- {
- // Read capability: ReadDeviceData.
- _LIT_SECURITY_POLICY_C1( KReadDevicePolicy, ECapabilityReadDeviceData );
- // Write capability: WriteDeviceData.
- _LIT_SECURITY_POLICY_C1( KWriteDevicePolicy, ECapabilityWriteDeviceData );
-
- // Initialize Shortcut Plug-in command API
- RProperty::Define(
- KUidSystemCategory,
- KPSUidShortcutCmd,
- RProperty::EText,
- KReadDevicePolicy,
- KWriteDevicePolicy
- );
-
- iSettings.ReadFromRepositoryL();
- iKeypadLockTimer = CPeriodic::NewL( CActive::EPriorityUserInput );
- iKeylockApi = CKeyLockPolicyApi::NewL( EPolicyActivateKeyguard );
- if ( !iKeylockApi->HasConfiguration() )
- {
- delete iKeylockApi;
- iKeylockApi = NULL;
- }
- }
-
-CKeyLockHandler* CKeyLockHandler::NewLC()
- {
- CKeyLockHandler* self = new( ELeave ) CKeyLockHandler;
- CleanupStack::PushL( self );
- self->ConstructL();
- return self;
- }
-
-CKeyLockHandler::~CKeyLockHandler()
- {
- delete iKeypadLockTimer;
- delete iKeylockApi;
- }
-
-void CKeyLockHandler::SetUiStateQuery( MUiState& aUiState )
- {
- iUiState = &aUiState;
- }
-
-TBool CKeyLockHandler::HasFocus()
- {
- return iUiState->HasFocus();
- }
-
-TBool CKeyLockHandler::TimeoutTimerActive()
- {
- return iKeypadLockTimer->IsActive();
- }
-
-void CKeyLockHandler::FocusChanged( TBool aState )
- {
- iCurrentState->FocusChanged( *this, aState );
- }
-
-TBool CKeyLockHandler::OfferRawEvent(const TRawEvent& aRawEvent)
- {
- return iCurrentState->OfferRawEvent( *this, aRawEvent );
- }
-
-TBool CKeyLockHandler::IsFirstLockKey( TInt aScanCode )
- {
- if ( iKeylockApi )
- {
- TKeyEvent event;
- event.iModifiers = 0;
- event.iCode = 0;
- event.iRepeats = 0;
- event.iScanCode = aScanCode;
- // Keylock API return ETrue on handlekeyeventL only if the whole key
- // sequence has been inputted (1st + 2nd key pressed)
- TRAP_IGNORE(iKeylockApi->HandleKeyEventL( event,EEventKeyDown ));
- return iKeylockApi->PrimaryKeyPressed();
- }
- else
- {
- return Settings().IsFirstLockKey( aScanCode );
- }
- }
-
-TBool CKeyLockHandler::IsSecondLockKey( TInt aScanCode )
- {
- TBool returnValue = EFalse;
- if ( iKeylockApi )
- {
- TKeyEvent event;
- event.iModifiers = 0;
- event.iCode = 0;
- event.iRepeats = 0;
- event.iScanCode = aScanCode;
- TRAP_IGNORE(returnValue = iKeylockApi->HandleKeyEventL( event,EEventKeyDown ));
- return returnValue;
- }
- else
- {
- return Settings().IsSecondLockKey( aScanCode );
- }
- }
-
-const TKeypadSettings& CKeyLockHandler::Settings() const
- {
- return iSettings;
- }
-
-void CKeyLockHandler::StartTimeoutTimer( TInt aTimeout )
- {
- __PRINTS( "AiWsPlugin: CKeyLockHandler::StartTimeoutTimer()" );
-
- iKeypadLockTimer->Cancel();
- if( aTimeout < 0 )
- {
- iKeypadLockTimer->Start(
- iSettings.KeylockTimeout(), iSettings.KeylockTimeout(),
- TCallBack( &CKeyLockHandler::TimerElapsed, this ) );
- }
- else
- {
- iKeypadLockTimer->Start(
- aTimeout, aTimeout,
- TCallBack( &CKeyLockHandler::TimerElapsed, this ) );
- }
- }
-
-void CKeyLockHandler::StopTimeoutTimer()
- {
- __PRINTS( "AiWsPlugin: CKeyLockHandler::StopTimeoutTimer()" );
- iKeypadLockTimer->Cancel();
- }
-
-void CKeyLockHandler::ActivateKeypadLock()
- {
- __PRINTS( "AiWsPlugin: CKeyLockHandler::ActivateKeypadLock()" );
- StopTimeoutTimer();
- // Use Shortcut Plug-in API to set the keylock
- RProperty::Set(
- KUidSystemCategory,
- KPSUidShortcutCmd,
- KAiPSEnableKeyLock );
- }
-
-void CKeyLockHandler::CancelKeypadLock()
- {
- __PRINTS( "AiWsPlugin: CKeyLockHandler::CancelKeypadLock()" );
- StopTimeoutTimer();
- RProperty::Set(
- KUidSystemCategory,
- KPSUidShortcutCmd,
- KAiPSSkipKeyLock );
- }
-
-void CKeyLockHandler::KeypadLockTimeout()
- {
- __PRINTS( "AiWsPlugin: CKeyLockHandler::CancelKeypadLock()" );
- StopTimeoutTimer();
- RProperty::Set(
- KUidSystemCategory,
- KPSUidShortcutCmd,
- KAiPSKeyLockTimeout );
- }
-
-void CKeyLockHandler::SetNextState( const TKeylockState& aState )
- {
- iNextState = &aState;
- }
-
-void CKeyLockHandler::ActivateNextState()
- {
- iCurrentState = iNextState;
- iNextState = &(*iCurrentState->iDefaultNextState)();
- }
-
-void CKeyLockHandler::SetLastLockKeyScanCode( TInt aScanCode )
- {
- iLastLockKeyScanCode = aScanCode;
- }
-
-TInt CKeyLockHandler::LastLockKeyScanCode() const
- {
- return iLastLockKeyScanCode;
- }
-
-TInt CKeyLockHandler::TimerElapsed(TAny* aSelf)
- {
- CKeyLockHandler* self = static_cast<CKeyLockHandler*>(aSelf);
- if( self )
- {
- self->iCurrentState->TimerElapsed( *self );
- }
- return KErrNone;
- }
-
-void CKeyLockHandler::TimerDone()
- {
-
- }
-
-} // namespace AiWsPlugin
--- a/idlefw/plugins/wsplugin/src/keylockstates.cpp Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,346 +0,0 @@
-/*
-* Copyright (c) 2005-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: Keylock states implementation for Active Idle WS Plug-in
-*
-*/
-
-
-#include "keylockstates.h"
-#include "keylockcontrol.h"
-#include "keypadsettings.h"
-#include "panic.h"
-#include "activeidle2domainpskeys.h"
-
-#include <e32event.h>
-#include <e32property.h>
-
-#include "debug.h"
-
-
-namespace AiWsPlugin {
-
-const TInt KTenMilliSecondsInu = 10 * 1000;
-
-/**
- * Helper macro for declaring internal state classes for CKeyLockHandler.
- */
-#define AI_DECLARE_KEYLOCK_STATE(StateCls) \
- class StateCls { \
- public: \
- static const TKeylockState KState; \
- static const TKeylockState& DefaultNextState(); \
- static void FocusChanged( MKeyLockHandlerControl& aControl, TBool aState ); \
- static TBool OfferRawEvent( MKeyLockHandlerControl& aControl, const TRawEvent& aRawEvent ); \
- static void TimerElapsed( MKeyLockHandlerControl& aControl ); \
- }
-
-/**
- * Inactive state class for CKeyLockHandler.
- */
-AI_DECLARE_KEYLOCK_STATE(TKeylockStateInactive);
-
-/**
- * Active state class for CKeyLockHandler.
- */
-AI_DECLARE_KEYLOCK_STATE(TKeylockStateWaitForFirstKeyDown);
-
-/**
- * Keylock sequence in progress state class for CKeyLockHandler.
- */
-AI_DECLARE_KEYLOCK_STATE(TKeylockStateWaitForSecondKeyDown);
-
-/**
- * Keylock sequence finalizer state class for CKeyLockHandler.
- */
-AI_DECLARE_KEYLOCK_STATE(TKeylockStateWaitForSecondKeyUp);
-
-/**
- * Helper macro for defining key lock state function tables.
- */
-#define AI_DEFINE_KEYLOCK_STATE_FT(StateCls) \
- const TKeylockState StateCls::KState = { \
- &StateCls::DefaultNextState, \
- &StateCls::FocusChanged, \
- &StateCls::OfferRawEvent, \
- &StateCls::TimerElapsed }
-
-/// Defines function table for key lock inactive state
-AI_DEFINE_KEYLOCK_STATE_FT(TKeylockStateInactive);
-
-/// Defines function table for key lock active state
-AI_DEFINE_KEYLOCK_STATE_FT(TKeylockStateWaitForFirstKeyDown);
-
-/// Defines function table for key lock in progress state
-AI_DEFINE_KEYLOCK_STATE_FT(TKeylockStateWaitForSecondKeyDown);
-
-/// Defines function table for key lock finalizing state
-AI_DEFINE_KEYLOCK_STATE_FT(TKeylockStateWaitForSecondKeyUp);
-
-// TKeyLockState
-const TKeylockState& TKeylockState::StartupState()
- {
- return TKeylockStateInactive::KState;
- }
-
-// TKeylockStateInactive
-const TKeylockState& TKeylockStateInactive::DefaultNextState()
- {
- return TKeylockStateWaitForFirstKeyDown::KState;
- }
-
-void TKeylockStateInactive::FocusChanged
- ( MKeyLockHandlerControl& aControl, TBool aState )
- {
- __PRINT( __DBG_FORMAT("AiWsPlugin: TKeylockStateInactive::FocusChanged(%d)"), aState );
- if ( aState )
- {
- // Gained focus, switch to active state
- aControl.ActivateNextState();
- }
- }
-
-TBool TKeylockStateInactive::OfferRawEvent
- ( MKeyLockHandlerControl& /*aControl*/, const TRawEvent& /*aRawEvent*/ )
- {
- return EFalse;
- }
-
-void TKeylockStateInactive::TimerElapsed
- ( MKeyLockHandlerControl& aControl )
- {
- // Illegal event in this state
- aControl.KeypadLockTimeout();
-#ifndef NDEBUG
- //Panic( EPanicInvalidKeylockEvent );
-#endif
- }
-
-// TKeylockStateWaitForFirstLockKeyDown
-const TKeylockState& TKeylockStateWaitForFirstKeyDown::DefaultNextState()
- {
- return TKeylockStateWaitForSecondKeyDown::KState;
- }
-
-void TKeylockStateWaitForFirstKeyDown::FocusChanged
- ( MKeyLockHandlerControl& aControl, TBool aState )
- {
- __PRINT( __DBG_FORMAT("AiWsPlugin: TKeylockStateWaitForFirstKeyDown::FocusChanged(%d)"), aState );
- if ( !aState )
- {
- if( !aControl.TimeoutTimerActive() )
- {
- // Lost focus, switch to inactive state
- aControl.SetNextState( TKeylockStateInactive::KState );
- aControl.ActivateNextState();
- }
- }
- }
-
-TBool TKeylockStateWaitForFirstKeyDown::OfferRawEvent
- ( MKeyLockHandlerControl& aControl, const TRawEvent& aRawEvent )
- {
- switch ( aRawEvent.Type() )
- {
- case TRawEvent::EKeyDown:
- {
- const TInt scanCode = aRawEvent.ScanCode();
- __PRINT( __DBG_FORMAT("AiWsPlugin: TKeylockStateWaitForFirstKeyDown::OfferRawEvent(EKeyDown,ScanCode=%d)" ), scanCode );
- if ( aControl.IsFirstLockKey( scanCode ) && aControl.HasFocus() )
- {
- // First lock key was pressed down
- aControl.SetLastLockKeyScanCode( scanCode );
- // (Re)activate the keylock timeout timer
- aControl.StartTimeoutTimer(KTenMilliSecondsInu);
- }
- }
- }
-
- // Never consume the event to enable its processing if keylock
- // is not activated within the timeout
- return EFalse;
- }
-
-void TKeylockStateWaitForFirstKeyDown::TimerElapsed
- ( MKeyLockHandlerControl& aControl )
- {
- TInt value = EPSAiNotDisplayingMenuOrDialog;
- TInt err = RProperty::Get(
- KPSUidAiInformation,
- KActiveIdlePopupState,
- value );
-
- if( value == EPSAiNotDisplayingMenuOrDialog && err == KErrNone )
- {
- // (Re)activate the keylock timeout timer
- aControl.StartTimeoutTimer();
- // Switch to wait for second lock key down (see constructor of this state)
- aControl.ActivateNextState();
- }
- else
- {
- if( aControl.HasFocus() )
- {
- aControl.StopTimeoutTimer();
- }
- else
- {
- // Lost focus, switch to inactive state
- aControl.SetNextState( TKeylockStateInactive::KState );
- aControl.ActivateNextState();
- }
- }
- // Illegal event in this state
-#ifndef NDEBUG
- //Panic( EPanicInvalidKeylockEvent );
-#endif
- }
-
-// TKeylockStateWaitForSecondKeyDown
-const TKeylockState& TKeylockStateWaitForSecondKeyDown::DefaultNextState()
- {
- // Assume the keylock sequence is cancelled
- return TKeylockStateWaitForFirstKeyDown::KState;
- }
-
-void TKeylockStateWaitForSecondKeyDown::FocusChanged
- ( MKeyLockHandlerControl& aControl, TBool aState )
- {
- __PRINT( __DBG_FORMAT("AiWsPlugin: TKeylockStateWaitForSecondKeyDown::FocusChanged(%d)"), aState );
- if ( aState )
- {
- // Gained focus: return to active state if keylock sequence is cancelled
- aControl.SetNextState( TKeylockStateWaitForFirstKeyDown::KState );
- }
- else
- {
- // Lost focus: return to inactive state if keylock sequence is cancelled
- aControl.SetNextState( TKeylockStateInactive::KState );
- }
- }
-
-TBool TKeylockStateWaitForSecondKeyDown::OfferRawEvent
- ( MKeyLockHandlerControl& aControl, const TRawEvent& aRawEvent )
- {
- TBool consumedEvent = EFalse;
-
- switch ( aRawEvent.Type() )
- {
- case TRawEvent::EKeyDown:
- {
- const TInt scanCode = aRawEvent.ScanCode();
- __PRINT( __DBG_FORMAT("AiWsPlugin: TKeylockStateWaitForSecondKeyDown::OfferRawEvent(EKeyDown,ScanCode=%d)" ), scanCode );
- if ( aControl.IsSecondLockKey( scanCode ) )
- {
- // Second lock key was pressed down. Cancel keylock timer
- // and switch to wait for key up event.
- aControl.StopTimeoutTimer();
- aControl.SetLastLockKeyScanCode( scanCode );
- aControl.SetNextState( TKeylockStateWaitForSecondKeyUp::KState );
- aControl.ActivateNextState();
- consumedEvent = ETrue;
- }
- else
- {
- // Some other key than second lock key was pressed while
- // keylock timer was running. Cancel the keylock sequence and
- // switch to previous state. (Depending on focus status,
- // see TKeylockStateWaitForFirstKeyDown::FocusChanged.)
- aControl.CancelKeypadLock();
- aControl.ActivateNextState();
- consumedEvent = EFalse;
- }
- break;
- }
- }
-
- return consumedEvent;
- }
-
-void TKeylockStateWaitForSecondKeyDown::TimerElapsed
- ( MKeyLockHandlerControl& aControl )
- {
- __PRINTS( "AiWsPlugin: TKeylockStateWaitForSecondKeyDown::TimerElapsed()" );
- aControl.KeypadLockTimeout();
- aControl.ActivateNextState();
- }
-
-// TKeylockStateWaitForSecondKeyUp
-const TKeylockState& TKeylockStateWaitForSecondKeyUp::DefaultNextState()
- {
- // Idle must currently have focus so return to active state from this state
- return TKeylockStateWaitForFirstKeyDown::KState;
- }
-
-void TKeylockStateWaitForSecondKeyUp::FocusChanged
- ( MKeyLockHandlerControl& aControl, TBool aState )
- {
- __PRINT( __DBG_FORMAT("AiWsPlugin: TKeylockStateWaitForSecondKeyUp::FocusChanged(%d)"), aState );
- if ( aState )
- {
- // Gained focus: return to active state if keylock sequence is cancelled
- aControl.SetNextState(
- TKeylockStateWaitForFirstKeyDown::KState );
- }
- else
- {
- // Lost focus: return to inactive state if keylock sequence is cancelled
- aControl.SetNextState( TKeylockStateInactive::KState );
- }
- }
-
-TBool TKeylockStateWaitForSecondKeyUp::OfferRawEvent
- ( MKeyLockHandlerControl& aControl, const TRawEvent& aRawEvent )
- {
- TBool consumedEvent = EFalse;
-
- switch ( aRawEvent.Type() )
- {
- case TRawEvent::EKeyUp:
- {
- const TInt scanCode = aRawEvent.ScanCode();
- __PRINT( __DBG_FORMAT("AiWsPlugin: TKeylockStateWaitForSecondKeyUp::OfferRawEvent(EKeyUp,ScanCode=%d)" ), scanCode );
- if ( scanCode == aControl.LastLockKeyScanCode() )
- {
- // Second lock key was released. Activate the keypad lock and
- // switch back to initial state. (Depending on focus status,
- // see TKeylockStateWaitForSecondKeyUp::FocusChanged.)
- aControl.ActivateKeypadLock();
- aControl.ActivateNextState();
- }
- // Consume all key events until the keylock sequence is finalized
- consumedEvent = ETrue;
- break;
- }
-
- case TRawEvent::EKeyDown:
- {
- // Consume all key events until the keylock sequence is finalized
- consumedEvent = ETrue;
- break;
- }
- }
-
- return consumedEvent;
- }
-
-void TKeylockStateWaitForSecondKeyUp::TimerElapsed
- ( MKeyLockHandlerControl& /*aControl*/ )
- {
- // Illegal event in this state
-#ifndef NDEBUG
- //Panic( EPanicInvalidKeylockEvent );
-#endif
- }
-
-} // namespace AiWsPlugin
--- a/idlefw/plugins/wsplugin/src/keypadsettings.cpp Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,133 +0,0 @@
-/*
-* Copyright (c) 2005-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: Keypad settings implmentation for Active Idle WS Plug-in.
-*
-*/
-
-
-#include "keypadsettings.h"
-
-#include <e32keys.h>
-#include <e32event.h>
-#include <centralrepository.h>
-
-#include <activeidle2domaincrkeys.h>
-
-#include "debug.h"
-
-namespace AiWsPlugin {
-
-
-/**
- * Maps selected numeric keypad scan codes to character.
- *
- * @param aScanCode scan code for which to find a character mapping.
- * @return character mapping for aScanCode or -1 if no mapping is found.
- */
-TInt16 TKeypadSettings::MapNkpScanCodeToChar( TInt aScanCode )
- {
- TInt16 result;
- switch( aScanCode )
- {
- case EStdKeyHash: result = '#'; break;
- case EStdKeyMinus: result = '-'; break;
- case EStdKeyNkpAsterisk: result = '*'; break;
- case EStdKeyNkpMinus: result = '-'; break;
- case EStdKeyNkpPlus: result = '+'; break;
- case EStdKeyNkp1: result = '1'; break;
- case EStdKeyNkp2: result = '2'; break;
- case EStdKeyNkp3: result = '3'; break;
- case EStdKeyNkp4: result = '4'; break;
- case EStdKeyNkp5: result = '5'; break;
- case EStdKeyNkp6: result = '6'; break;
- case EStdKeyNkp7: result = '7'; break;
- case EStdKeyNkp8: result = '8'; break;
- case EStdKeyNkp9: result = '9'; break;
- case EStdKeyNkp0: result = '0'; break;
- default: result = -1; break;
- }
- return result;
- }
-
-void TKeypadSettings::ReadFromRepositoryL()
- {
- CRepository* repository = CRepository::NewLC( TUid::Uid( KCRUidActiveIdleLV ) );
- TInt value;
-
- // KAIFirstKeyLockKey
- User::LeaveIfError( repository->Get( KAIFirstKeyLockKey, value ) );
- iFirstLockKeyScanCode = TInt16( value );
- iFirstLockKeyChar = MapNkpScanCodeToChar( value );
- __PRINT(
- __DBG_FORMAT("AiWsPlugin: KAIFirstKeyLockKey = %d, ch=%d"),
- TInt(iFirstLockKeyScanCode), TInt(iFirstLockKeyChar) );
-
- // KAISecondKeyLockKey
- User::LeaveIfError( repository->Get( KAISecondKeyLockKey, value ) );
- iSecondLockKeyScanCode = TInt16( value );
- iSecondLockKeyChar = MapNkpScanCodeToChar( value );
- __PRINT(
- __DBG_FORMAT("AiWsPlugin: KAISecondKeyLockKey = %d, ch=%d"),
- TInt(iSecondLockKeyScanCode), TInt(iSecondLockKeyChar) );
-
- // KAISecondKeyLockKey2
- User::LeaveIfError( repository->Get( KAISecondKeyLockKey2, value ) );
- iSecondLockKeyScanCode2 = TInt16( value );
- iSecondLockKeyChar2 = MapNkpScanCodeToChar( value );
- __PRINT(
- __DBG_FORMAT("AiWsPlugin: KAISecondKeyLockKey2 = %d, ch=%d"),
- TInt(iSecondLockKeyScanCode2), TInt(iSecondLockKeyChar2) );
-
- // KAIKeyLockTimeout
- User::LeaveIfError( repository->Get( KAIKeyLockTimeout, value ) );
- __PRINT( __DBG_FORMAT("AiWsPlugin: KAIKeyLockTimeout=%d ms"), value );
- // Convert timeout from milliseconds to microseconds
- const TInt KUsInMs = 1000;
- iKeylockTimeout = KUsInMs * value;
-
- // KAISINDKey
- User::LeaveIfError( repository->Get( KAIVoiceDialLaunchKey, value ) );
- iSINDKeyScanCode = TInt16( value );
- iSINDKeyScanChar = MapNkpScanCodeToChar( value );
- __PRINT(
- __DBG_FORMAT("AiWsPlugin: iSINDKey = %d, ch=%d"),
- TInt(iSINDKeyScanCode), TInt(iSINDKeyScanChar) );
-
- // KAISINDKeyTimeout
- User::LeaveIfError( repository->Get( KAIVoiceDialKeyTimeout, value ) );
- __PRINT( __DBG_FORMAT("AiWsPlugin: KAISINDKeyTimeout=%d ms"), value );
- // Convert timeout from milliseconds to microseconds
- iKeySINDTimeout = KUsInMs * value;
-
- CleanupStack::PopAndDestroy( repository );
- }
-
-TBool TKeypadSettings::IsFirstLockKey( TInt aScanCode ) const
- {
- return ( aScanCode == iFirstLockKeyScanCode || aScanCode == iFirstLockKeyChar );
- }
-
-TBool TKeypadSettings::IsSecondLockKey( TInt aScanCode ) const
- {
- return (
- ( aScanCode == iSecondLockKeyScanCode || aScanCode == iSecondLockKeyChar ) ||
- ( aScanCode == iSecondLockKeyScanCode2 || aScanCode == iSecondLockKeyChar2 ) );
- }
-
-TTimeIntervalMicroSeconds32 TKeypadSettings::KeylockTimeout() const
- {
- return iKeylockTimeout;
- }
-
-} // namespace AiWsPlugin
--- a/idlefw/plugins/wsplugin/src/logslaunchhandler.cpp Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,133 +0,0 @@
-/*
-* Copyright (c) 2005-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: Logs app launch handler for Active Idle WS Plug-in.
-*
-*/
-
-
-#include "logslaunchhandler.h"
-#include "uistate.h"
-#include <e32property.h>
-#include <e32event.h>
-#include <e32keys.h>
-#include <activeidle2internalpskeys.h>
-#include <activeidle2domainpskeys.h>
-
-namespace AiWsPlugin {
-
-
-CLogsLaunchHandler::CLogsLaunchHandler()
- {
- }
-
-void CLogsLaunchHandler::ConstructL()
- {
- // Read capability: ReadDeviceData.
- _LIT_SECURITY_POLICY_C1( KReadDevicePolicy, ECapabilityReadDeviceData );
- // Write capability: WriteDeviceData.
- _LIT_SECURITY_POLICY_C1( KWriteDevicePolicy, ECapabilityWriteDeviceData );
-
- // Initialize Shortcut Plug-in command API
- RProperty::Define(
- KUidSystemCategory,
- KPSUidShortcutCmd,
- RProperty::EText,
- KReadDevicePolicy,
- KWriteDevicePolicy
- );
-
- iTimer = CKeyHandlerTimer::NewL( this );
- }
-
-CLogsLaunchHandler* CLogsLaunchHandler::NewLC()
- {
- CLogsLaunchHandler* self = new(ELeave) CLogsLaunchHandler;
- CleanupStack::PushL( self );
- self->ConstructL();
- return self;
- }
-
-CLogsLaunchHandler::~CLogsLaunchHandler()
- {
- if ( iTimer)
- {
- iTimer->Cancel();
- delete iTimer;
- }
- }
-
-void CLogsLaunchHandler::SetUiStateQuery( MUiState& aUiState )
- {
- iUiState = &aUiState;
- }
-
-void CLogsLaunchHandler::FocusChanged( TBool /*aState*/ )
- {
- // Focus status is queried from iUiState
- }
-
-TBool CLogsLaunchHandler::OfferRawEvent(const TRawEvent& aRawEvent)
- {
- TInt reactOnSendKey = 1;
- TInt err = RProperty::Get( KPSUidAiInformation, KActiveIdleActOnSendKey, reactOnSendKey );
- if ( err != KErrNone )
- {
- reactOnSendKey = 1;
- }
-
- TBool consumed = EFalse;
-
- if ( reactOnSendKey )
- {
- switch( aRawEvent.Type() )
- {
- case TRawEvent::EKeyDown:
- {
- if ( iUiState->HasFocus() && aRawEvent.ScanCode() == EStdKeyYes )
- {
- const TTimeIntervalMicroSeconds32 KLongKeyPress(600000);
- iTimer->Cancel();
- iTimer->After(KLongKeyPress);
- consumed = ETrue;
- }
- break;
- }
- case TRawEvent::EKeyUp:
- {
- if ( iUiState->HasFocus() && aRawEvent.ScanCode() == EStdKeyYes && iTimer->IsActive() )
- {
- iTimer->Cancel();
- RProperty::Set(
- KUidSystemCategory,
- KPSUidShortcutCmd,
- KAiPSLaunchLogs );
- consumed = ETrue;
- }
- break;
- }
- }
- }
-
- return consumed;
- }
-
-void CLogsLaunchHandler::TimerDone()
- {
- RProperty::Set(
- KUidSystemCategory,
- KPSUidShortcutCmd,
- KAiPSLaunchNameDialer );
- }
-
-} // namespace AiWsPlugin
--- a/idlefw/plugins/wsplugin/src/numerickeyhandler.cpp Wed Mar 03 15:38:34 2010 +0200
+++ b/idlefw/plugins/wsplugin/src/numerickeyhandler.cpp Wed May 12 13:36:47 2010 +0300
@@ -24,6 +24,10 @@
#include <centralrepository.h>
#include <w32adll.h>
+#include <easydialingcrkeys.h>
+#include <spsettings.h>
+#include <featmgr.h>
+
#include <PtiEngine.h>
#include <activeidle2domainpskeys.h>
#include <AvkonInternalCRKeys.h>
@@ -153,11 +157,11 @@
TBool CNumericKeyHandler::CheckPostToTarget(const TRawEvent& aRawEvent ) const
{
const TInt scanCode = aRawEvent.ScanCode();
+ const TUint modifiers = iUiState->Modifiers();
if ( iQwertyMode )
{
- // Don't pass the check if shift is pressed.
- const TUint modifiers = iUiState->Modifiers();
+ // Don't pass the check if shift is pressed.
if(( modifiers & EModifierShift ) == 0 )
{
TInt numericKeysCount = iNumericKeys.Count();
@@ -190,7 +194,15 @@
}
}
}
- return EFalse;
+
+ // Homescreen should open dialer also with alpha characters, if dialer is in
+ // mode that accepts alpha characters into number entry (ou1cimx1#299396)
+
+ const TInt KPhoneKeyStart = 33;
+ const TInt KPhoneKeyEnd = 127;
+
+ return ( ( AllowAlphaNumericMode() ) && ( ( scanCode >= KPhoneKeyStart &&
+ scanCode <= KPhoneKeyEnd ) || modifiers & EModifierSpecial ) );
}
@@ -296,15 +308,73 @@
iInputLanguage = aValue;
}
+/**
+ * Check alpha numeric mode.
+ */
+TBool CNumericKeyHandler::AllowAlphaNumericMode() const
+ {
+ return ( EasyDialingEnabled() || VoIPSupported() );
+ }
+
+/**
+ * Check if voip supported.
+ */
+TBool CNumericKeyHandler::VoIPSupported() const
+ {
+ TBool voipSupported( EFalse );
+ CSPSettings* serviceProviderSettings( NULL );
+
+ TRAP_IGNORE( serviceProviderSettings = CSPSettings::NewL() );
+
+ if ( serviceProviderSettings )
+ {
+ voipSupported = serviceProviderSettings->IsFeatureSupported(
+ ESupportInternetCallFeature );
+
+ delete serviceProviderSettings;
+ }
+
+ return voipSupported;
+ }
+
+/**
+ * Check if easy dialing enabled.
+ */
+TBool CNumericKeyHandler::EasyDialingEnabled() const
+ {
+ TBool easyDialingEnabled( EFalse );
+ if ( FeatureManager::FeatureSupported(
+ KFeatureIdProductIncludesHomeScreenEasyDialing ) )
+ {
+ CRepository* cenrep( NULL );
+ TInt easyDialingSetting;
+
+ TRAP_IGNORE( cenrep = CRepository::NewL( KCRUidEasyDialSettings ) );
+
+ if ( cenrep )
+ {
+ TInt err = cenrep->Get( KEasyDialing, easyDialingSetting );
+ if ( !err && easyDialingSetting )
+ {
+ easyDialingEnabled = ETrue;
+ }
+
+ delete cenrep;
+ }
+ }
+
+ return easyDialingEnabled;
+ }
+
void CNumericKeyHandler::HandleNotifyGeneric(TUint32 aKey)
- {
- if( aKey == KAknFepInputTxtLang )
- {
- TInt newValue = iInputLanguage;
- iInputLanguageRepository->Get( KAknFepInputTxtLang, newValue );
- HandleInputLanguageChanged( newValue );
- }
- }
+ {
+ if( aKey == KAknFepInputTxtLang )
+ {
+ TInt newValue = iInputLanguage;
+ iInputLanguageRepository->Get( KAknFepInputTxtLang, newValue );
+ HandleInputLanguageChanged( newValue );
+ }
+ }
void CNumericKeyHandler::HandleNotifyError
(TUint32 /*aKey*/, TInt /*aError*/, CCenRepNotifyHandler* /*aHandler*/)
--- a/idlefw/plugins/wsplugin/src/sindlaunchhandler.cpp Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,146 +0,0 @@
-/*
-* Copyright (c) 2005-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: SIND app launch handler for Active Idle WS Plug-in.
-*
-*/
-
-
-#include "sindlaunchhandler.h"
-#include "keyhandlertimer.h"
-#include "uistate.h"
-#include <e32property.h>
-#include <e32event.h>
-#include <e32keys.h>
-#include <activeidle2internalpskeys.h>
-
-//#define AI_ENABLE_RD_LOGGING
-#define AI_RD_LOG_TO_DEBUG_OUTPUT
-
-#include "debug.h"
-
-namespace AiWsPlugin {
-
-
-CSINDLaunchHandler::CSINDLaunchHandler()
- {
- }
-
-void CSINDLaunchHandler::ConstructL()
- {
- // Read capability: ReadDeviceData.
- _LIT_SECURITY_POLICY_C1( KReadDevicePolicy, ECapabilityReadDeviceData );
- // Write capability: WriteDeviceData.
- _LIT_SECURITY_POLICY_C1( KWriteDevicePolicy, ECapabilityWriteDeviceData );
-
- // Initialize Shortcut Plug-in command API
- RProperty::Define(
- KUidSystemCategory,
- KPSUidShortcutCmd,
- RProperty::EText,
- KReadDevicePolicy,
- KWriteDevicePolicy
- );
-
- iTimer = CKeyHandlerTimer::NewL( this );
-
- iSINDKeyDown = EFalse;
- }
-
-CSINDLaunchHandler* CSINDLaunchHandler::NewLC()
- {
- CSINDLaunchHandler* self = new(ELeave) CSINDLaunchHandler;
- CleanupStack::PushL( self );
- self->ConstructL();
- return self;
- }
-
-CSINDLaunchHandler::~CSINDLaunchHandler()
- {
- delete iTimer;
- }
-
-void CSINDLaunchHandler::SetUiStateQuery( MUiState& aUiState )
- {
- iUiState = &aUiState;
- }
-
-void CSINDLaunchHandler::FocusChanged( TBool /*aState*/ )
- {
- // Focus status is queried from iUiState
- }
-
-TBool CSINDLaunchHandler::OfferRawEvent(const TRawEvent& aRawEvent)
- {
- switch( aRawEvent.Type() )
- {
- case TRawEvent::EKeyDown:
- {
- if ( iUiState->HasFocus() && aRawEvent.ScanCode() == EStdKeyDevice1 )
- {
- __PRINTS( "XAI: CSINDLaunchHandler: SIND key down, start timer");
- const TTimeIntervalMicroSeconds32 KLongKeyPress(600000);
- iTimer->Cancel();
- iTimer->After(KLongKeyPress);
- iSINDLaunched = EFalse;
- iSINDKeyDown = ETrue;
- }
- else if( iUiState->HasFocus() && iSINDKeyDown )
- {
- __PRINTS( "XAI: CSINDLaunchHandler: SIND key down, other key pressed, cancel timer");
- iTimer->Cancel();
- SkipVoiceDial();
- }
- break;
- }
- case TRawEvent::EKeyUp:
- {
- if ( iUiState->HasFocus() && aRawEvent.ScanCode() == EStdKeyDevice1 && !iSINDLaunched && iTimer->IsActive() )
- {
- __PRINTS( "XAI: SIND key up, cancel timer");
- iTimer->Cancel();
- SkipVoiceDial();
- }
- break;
- }
- }
- return EFalse;
- }
-
-void CSINDLaunchHandler::SkipVoiceDial()
- {
- __PRINTS( "XAI: CSINDLaunchHandler::SkipVoiceDial()");
- // Handle skip scenario only if voice dial ui hasn't been launched
- if( !iSINDLaunched )
- {
- RProperty::Set(
- KUidSystemCategory,
- KPSUidShortcutCmd,
- KAiPSSkipNameDialer );
- }
- iSINDKeyDown = EFalse;
- }
-
-void CSINDLaunchHandler::TimerDone()
- {
- __PRINTS( "XAI: CSINDLaunchHandler::TimerDone()");
- __PRINTS( "XAI: Start Voice Dial UI");
- RProperty::Set(
- KUidSystemCategory,
- KPSUidShortcutCmd,
- KAiPSLaunchNameDialer );
- iSINDLaunched = ETrue;
- iSINDKeyDown = EFalse;
- }
-
-} // namespace AiWsPlugin
--- a/idlefw/rom/idlefw.iby Wed Mar 03 15:38:34 2010 +0200
+++ b/idlefw/rom/idlefw.iby Wed May 12 13:36:47 2010 +0300
@@ -29,7 +29,4 @@
file=ABI_DIR\BUILD_DIR\aiidleint.dll SHARED_LIB_DIR\aiidleint.dll
file=ABI_DIR\BUILD_DIR\aifw.dll SHARED_LIB_DIR\aifw.dll
-// Content publishing plug-ins
-ECOM_PLUGIN( aidevstaplg.dll, aidevstaplg.rsc )
-
#endif // ACTIVEIDLE3_IBY
--- a/idlefw/rom/idlefw_resources.iby Wed Mar 03 15:38:34 2010 +0200
+++ b/idlefw/rom/idlefw_resources.iby Wed May 12 13:36:47 2010 +0300
@@ -25,9 +25,6 @@
data=DATAZ_\APP_RESOURCE_DIR\homescreen.rsc APP_RESOURCE_DIR\homescreen.rsc
-// Content publishing plug-in resources
-data=DATAZ_\APP_RESOURCE_DIR\aidevstaplgres.rsc APP_RESOURCE_DIR\aidevstaplgres.rsc
-
#endif // RD_CUSTOMIZABLE_AI
#endif // ACTIVEIDLE3_RESOURCES_IBY
--- a/idlefw/src/framework/aibackuprestorestatusobserver.cpp Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,95 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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: Backup/restore status observer for AI2
-*
-*/
-
-
-#include <connect/sbdefs.h>
-#include <aipspropertyobserver.h>
-#include "aistatemanager.h"
-#include "aibackuprestorestatusobserver.h"
-#include "aifwpanic.h"
-#include "debug.h"
-
-const TUint KAI2BackupMask( conn::KBURPartTypeMask ^ conn::EBURNormal );
-
-CAiBackupRestoreStatusObserver::CAiBackupRestoreStatusObserver()
- {
- }
-
-CAiBackupRestoreStatusObserver::~CAiBackupRestoreStatusObserver()
- {
- }
-
-CAiBackupRestoreStatusObserver* CAiBackupRestoreStatusObserver::NewL(
- MAiStateManager* aStateManager )
- {
- CAiBackupRestoreStatusObserver* self = new (ELeave) CAiBackupRestoreStatusObserver();
- CleanupStack::PushL(self);
- self->ConstructL( aStateManager );
- CleanupStack::Pop(self);
- return self;
- }
-
-void CAiBackupRestoreStatusObserver::ConstructL( MAiStateManager* aStateManager )
- {
- BaseConstructL( TCallBack( HandleBackupOperationEvent, this ),
- KUidSystemCategory,
- conn::KUidBackupRestoreKey,
- aStateManager );
- }
-
-TAiStateChanges CAiBackupRestoreStatusObserver::Status()
- {
- TInt value = 0;
- TInt err = iObserver->Get( value );
- if( ( value & KAI2BackupMask ) &&
- ( err == KErrNone ) ) // any type of backup or restore operation
- {
- return ESMAIBackupOn;
- }
- else
- {
- return ESMAIBackupOff;
- }
- }
-
-TInt CAiBackupRestoreStatusObserver::HandleBackupOperationEvent( TAny* aPtr )
- {
- // see \epoc32\include\connect\sbdefs.h for enum descriptions
- CAiBackupRestoreStatusObserver* self =
- static_cast<CAiBackupRestoreStatusObserver*>( aPtr );
-
- __ASSERT_DEBUG( self,
- AiFwPanic::Panic( AiFwPanic::EAiFwPanic_NullPointerReference ) );
-
- TInt value = 0;
- TInt err = self->iObserver->Get( value );
-
- if( ( value & KAI2BackupMask ) &&
- ( err == KErrNone ) ) // any type of backup or restore operation
- {
- __PRINTS("XAI: Backup = ON");
- self->iStateManager->ReportStateChange( ESMAIBackupOn );
- }
- else // aValue == conn::EBURUnset || aValue & conn::EBURNormal
- {
- // back operation finished -> return to previous state
- __PRINTS("XAI: Backup = OFF");
- self->iStateManager->ReportStateChange( ESMAIBackupOff );
- }
- return KErrNone;
- }
-
--- a/idlefw/src/framework/aicallstatusobserver.cpp Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,89 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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: Call status observer for AI2
-*
-*/
-
-
-#include <aipspropertyobserver.h>
-#include <ctsydomainpskeys.h>
-#include "aicallstatusobserver.h"
-#include "aistatemanager.h"
-#include "aifwpanic.h"
-#include "debug.h"
-
-CAiCallStatusObserver::CAiCallStatusObserver()
- {
- }
-
-CAiCallStatusObserver::~CAiCallStatusObserver()
- {
- }
-
-CAiCallStatusObserver* CAiCallStatusObserver::NewL( MAiStateManager* aStateManager )
- {
- CAiCallStatusObserver* self = new (ELeave) CAiCallStatusObserver();
- CleanupStack::PushL(self);
- self->ConstructL( aStateManager );
- CleanupStack::Pop(self);
- return self;
- }
-
-void CAiCallStatusObserver::ConstructL( MAiStateManager* aStateManager )
- {
- BaseConstructL( TCallBack( HandleCallStateChange, this ),
- KPSUidCtsyCallInformation,
- KCTsyCallState,
- aStateManager );
- }
-
-TAiStateChanges CAiCallStatusObserver::Status()
- {
- TInt value = 0;
- TInt err = iObserver->Get( value );
- if( ( value > EPSCTsyCallStateNone ) &&
- ( err == KErrNone ) )
- {
- return ESMAIInCall;
- }
- else
- {
- return ESMAINoCall;
- }
- }
-
-TInt CAiCallStatusObserver::HandleCallStateChange( TAny* aPtr )
- {
- CAiCallStatusObserver* self = reinterpret_cast< CAiCallStatusObserver* >( aPtr );
-
- __ASSERT_DEBUG( self,
- AiFwPanic::Panic( AiFwPanic::EAiFwPanic_NullPointerReference ) );
-
- TInt value = 0;
- TInt err = self->iObserver->Get( value );
-
- if( ( value > EPSCTsyCallStateNone ) &&
- ( err == KErrNone ) )
- {
- __PRINTS("XAI: Call = ON");
- self->iStateManager->ReportStateChange( ESMAIInCall );
- }
- else
- {
- __PRINTS("XAI: Call = OFF");
- self->iStateManager->ReportStateChange( ESMAINoCall );
- }
- return KErrNone;
- }
-
--- a/idlefw/src/framework/aicontentpluginmanager.cpp Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,391 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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: Content plugin error manager class
-*
-*/
-
-
-#include <ecom/ecom.h>
-#include <ecom/implementationinformation.h>
-#include <aiutility.h>
-#include <aiplugintool.h>
-
-#include <centralrepository.h>
-#include <activeidle2domaincrkeys.h>
-
-#include "aicontentpluginmanager.h"
-#include "aipluginstatemanager.h"
-#include "aifweventhandler.h"
-#include "aicontentpublisher.h"
-#include "aipropertyextension.h"
-#include <aicontentrequest.h>
-#include "aieventhandlerextension.h"
-#include "aiuicontroller.h"
-#include "aiconsts.h"
-#include "debug.h"
-
-// CONSTANTS
-const TInt KAILenOfParenthesis( 2 );
-
-// ======== MEMBER FUNCTIONS ========
-
-// ----------------------------------------------------------------------------
-// CAiContentPluginManager::NewL()
-// ----------------------------------------------------------------------------
-//
-CAiContentPluginManager* CAiContentPluginManager::NewL()
- {
- CAiContentPluginManager* self = new ( ELeave ) CAiContentPluginManager();
- CleanupStack::PushL( self );
- self->ConstructL();
- CleanupStack::Pop( self );
- return self;
- }
-
-// ----------------------------------------------------------------------------
-// CAiContentPluginManager::ConstructL()
-// ----------------------------------------------------------------------------
-//
-void CAiContentPluginManager::ConstructL()
- {
- iPluginFactory = CAiPluginFactory::NewL( iPlugins, *this );
-
- iStateManager = CAiPluginStateManager::NewL();
-
- iPluginFactory->AddLifecycleObserverL( *iStateManager );
-
- iPluginTool = AiUtility::CreatePluginToolL();
- }
-
-// ----------------------------------------------------------------------------
-// CAiContentPluginManager::~CAiContentPluginManager()
-// ----------------------------------------------------------------------------
-//
-CAiContentPluginManager::~CAiContentPluginManager()
- {
- iPlugins.ResetAndDestroy();
-
- delete iPluginFactory;
- delete iStateManager;
-
- Release( iPluginTool );
- }
-
-// ----------------------------------------------------------------------------
-// CAiContentPluginManager::CAiContentPluginManager()
-// ----------------------------------------------------------------------------
-//
-CAiContentPluginManager::CAiContentPluginManager()
- {
- }
-
-// ----------------------------------------------------------------------------
-// CAiContentPluginManager::HandlePluginEvent()
-// ----------------------------------------------------------------------------
-//
-void CAiContentPluginManager::HandlePluginEvent( const TDesC& aParam )
- {
- const TInt separatorPos( aParam.Locate( KPluginEventSeparator ) );
-
- if( separatorPos == KErrNotFound )
- {
- return;
- }
-
- // Extract plugin name
- TPtrC pluginName( aParam.Left( separatorPos ) );
-
- // Extract event and parameter string
- TPtrC eventNameAndParams( aParam.Mid( separatorPos + 1 ) );
-
- // Find parameter string position
- const TInt paramsPos(
- eventNameAndParams.Locate( KEventParameterSeparator ) );
-
- // Extract event name
- TPtrC eventName( paramsPos < 0 ? eventNameAndParams :
- eventNameAndParams.Left( paramsPos ) );
-
- // Calculate actual parameter string length by ignoring parenthesis
- TInt paramsLength(
- eventNameAndParams.Length() - paramsPos - KAILenOfParenthesis );
-
- // Extract paramenters
- TPtrC param( paramsPos < 0 ? KNullDesC() :
- eventNameAndParams.Mid( paramsPos + 1, Max( 0, paramsLength ) ) );
-
- // Resolve plugin
- CAiContentPublisher* target = NULL;
-
- __TIME( "FW: Lookup plug-in by name",
-
- TRAP_IGNORE( target = iPluginFactory->PluginByNameL( pluginName ) );
-
- );
-
- __PRINT( __DBG_FORMAT(
- "\t[I]\t Event: %S to plug-in by addr 0x%x" ), &aParam, target );
-
- if( target )
- {
- // Resolve plugin specific event id
- TInt eventId( KErrNotFound );
-
- TRAP_IGNORE( GetIdL( *target, EAiPublisherEvents, eventName, eventId ) );
-
- // Forward event to plugin
- MAiEventHandlerExtension* ext(
- iPluginTool->EventHandlerExt( *target ) );
-
- if( ext )
- {
- if( eventId != KErrNotFound )
- {
- ext->HandleEvent( eventId, param );
- }
- else
- {
- ext->HandleEvent( eventName, param );
- }
- }
- }
- }
-
-// ----------------------------------------------------------------------------
-// CAiContentPluginManager::HandlePluginEventL()
-// ----------------------------------------------------------------------------
-//
-void CAiContentPluginManager::HandlePluginEventL(
- const TAiPublisherInfo& aPublisherInfo, const TDesC& aParam )
- {
- // Resolve plugin
- CAiContentPublisher* target(
- iPluginFactory->PluginByInfoL( aPublisherInfo ) );
-
- if( target )
- {
- const TInt separatorPos( aParam.Locate( KPluginEventSeparator ) );
-
- // Extract event and parameter string
- TPtrC eventNameAndParams( aParam.Mid( separatorPos + 1 ) );
-
- // Find parameter string position
- const TInt paramsPos(
- eventNameAndParams.Locate( KEventParameterSeparator ) );
-
- // Extract event name
- TPtrC eventName( paramsPos < 0 ?
- eventNameAndParams : eventNameAndParams.Left( paramsPos ) );
-
- // Calculate actual parameter string length by ignoring parenthesis
- TInt paramsLength(
- eventNameAndParams.Length() - paramsPos - KAILenOfParenthesis );
-
- // Extract paramenters
- TPtrC param( paramsPos < 0 ? KNullDesC() :
- eventNameAndParams.Mid( paramsPos + 1, Max( 0, paramsLength ) ) );
-
- // Resolve plugin specific event id
- TInt eventId( KErrNotFound );
-
- GetIdL( *target, EAiPublisherEvents, eventName, eventId );
-
- // Forward event to plugin
- MAiEventHandlerExtension* ext(
- iPluginTool->EventHandlerExt( *target ) );
-
- if( ext )
- {
- if( eventId != KErrNotFound )
- {
- ext->HandleEvent( eventId, param );
- }
- else
- {
- ext->HandleEvent( eventName, param );
- }
- }
- }
- }
-
-// ----------------------------------------------------------------------------
-// CAiContentPluginManager::HasMenuItemL()
-// ----------------------------------------------------------------------------
-//
-TBool CAiContentPluginManager::HasMenuItemL(
- const TAiPublisherInfo& aPublisherInfo, const TDesC& aMenuItem )
- {
- // Resolve plugin
- CAiContentPublisher* target(
- iPluginFactory->PluginByInfoL( aPublisherInfo ) );
-
- if( target )
- {
- // Forward query to plugin
- MAiEventHandlerExtension* ext(
- iPluginTool->EventHandlerExt( *target ) );
-
- if ( ext )
- {
- return ext->HasMenuItem( aMenuItem );
- }
- }
-
- return EFalse;
- }
-
-// ----------------------------------------------------------------------------
-// CAiContentPluginManager::RefreshContentL()
-// ----------------------------------------------------------------------------
-//
-TBool CAiContentPluginManager::RefreshContent( const TDesC& aContentCid )
- {
- TRAPD( error, RefreshContentL( aContentCid ) );
-
- return ( error == KErrNone );
- }
-
-// ----------------------------------------------------------------------------
-// CAiFw::ProcessOnlineState()
-// ----------------------------------------------------------------------------
-//
-void CAiContentPluginManager::ProcessOnlineState( TBool aOnline )
- {
- _LIT( KOnlineOffline, "online_offline" );
-
- for( TInt i = 0; i < iPlugins.Count(); i++ )
- {
- MAiEventHandlerExtension* ext(
- iPluginTool->EventHandlerExt( *iPlugins[i] ) );
-
- // If plugin understands online/offline run state change
- if( ext && ext->HasMenuItem( KOnlineOffline ) )
- {
- if( aOnline )
- {
- iStateManager->ProcessOnlineState( *iPlugins[i] );
- }
- else
- {
- iStateManager->ProcessOfflineState( *iPlugins[i] );
- }
- }
- }
- }
-
-// ----------------------------------------------------------------------------
-// CAiContentPluginManager::StateManager()
-// ----------------------------------------------------------------------------
-//
-CAiPluginStateManager& CAiContentPluginManager::StateManager() const
- {
- return *iStateManager;
- }
-
-// ----------------------------------------------------------------------------
-// CAiContentPluginManager::PluginFactory()
-// ----------------------------------------------------------------------------
-//
-CAiPluginFactory& CAiContentPluginManager::PluginFactory() const
- {
- return *iPluginFactory;
- }
-
-// ----------------------------------------------------------------------------
-// CAiContentPluginManager::GetIdL()
-// ----------------------------------------------------------------------------
-//
-void CAiContentPluginManager::GetIdL( CAiContentPublisher& aContentPublisher,
- TAiPublisherProperty aProperty, const TDesC& aName, TInt& aId )
- {
- MAiContentItemIterator* iterator =
- iPluginTool->ContentItemIteratorL( aContentPublisher, aProperty );
-
- if( iterator )
- {
- const TAiContentItem& ci( iterator->ItemL( aName ) );
- aId = ci.id;
- }
- else
- {
- aId = KErrNotFound;
- }
- }
-
-// ----------------------------------------------------------------------------
-// CAiContentPluginManager::RefreshContentL()
-// ----------------------------------------------------------------------------
-//
-TInt CAiContentPluginManager::RefreshContentL( const TDesC& aContentCid )
- {
- TInt retval( KErrNotFound );
-
- // Look up plug-in and content item and delegate to plug-in's
- // MAiContentRequest implementation.
-
- // Find plugin name
- TInt pos( aContentCid.Locate( KPluginEventSeparator ) );
-
- if( pos == KErrNotFound )
- {
- return retval;
- }
-
- TPtrC pluginName( aContentCid.Left( pos ) );
-
- CAiContentPublisher* plugin( iPluginFactory->PluginByNameL( pluginName ) );
-
- if( !plugin )
- {
- return retval;
- }
-
- MAiPropertyExtension* ext( iPluginTool->PropertyExt( *plugin ) );
-
- if( !ext )
- {
- return retval;
- }
-
- // Extract content id
- TPtrC cid( aContentCid.Mid( ++pos ) );
- TInt id( 0 );
-
- MAiContentRequest* handler( NULL );
-
- TRAPD( error, GetIdL( *plugin, EAiPublisherContent, cid, id ) );
-
- if ( !error )
- {
- handler = static_cast< MAiContentRequest* >(
- ext->GetPropertyL( EAiContentRequest ) );
- }
- else
- {
- GetIdL( *plugin, EAiPublisherResources, cid, id );
-
- handler = static_cast< MAiContentRequest* >(
- ext->GetPropertyL( EAiResourceRequest ) );
- }
-
- // Forward event to plugin
- if( handler && handler->RefreshContent( id ) )
- {
- retval = KErrNone;
- }
-
- return retval;
- }
-
-// End of File.
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/idlefw/src/framework/aicpscommandbuffer.cpp Wed May 12 13:36:47 2010 +0300
@@ -0,0 +1,316 @@
+/*
+* 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: Cps command buffer
+*
+*/
+
+
+// System includes
+#include <liwservicehandler.h>
+#include <liwvariant.h>
+#include <liwgenericparam.h>
+
+// User includes
+#include "caicpscommandbuffer.h"
+#include "aicpsexecuteparam.h"
+#include <debug.h>
+
+// Constants
+_LIT8( KCPSConfigurationIf, "IContentPublishing" );
+_LIT8( KCPS, "Service.ContentPublishing" );
+_LIT8( KExecuteAction, "ExecuteAction" );
+_LIT8( KExecuteMultipleActions, "ExecuteMultipleActions" );
+_LIT8( KFilters, "filters" );
+
+// ======== LOCAL FUNCTIONS ========
+
+// ======== MEMBER FUNCTIONS ========
+// ---------------------------------------------------------------------------
+// CAiCpsCommandBuffer::CAiCpsCommandBuffer
+//
+// ---------------------------------------------------------------------------
+//
+CAiCpsCommandBuffer::CAiCpsCommandBuffer()
+ {
+ }
+
+// ---------------------------------------------------------------------------
+// CAiCpsCommandBuffer::ConstructL
+//
+// ---------------------------------------------------------------------------
+//
+void CAiCpsCommandBuffer::ConstructL()
+ {
+ }
+
+// ---------------------------------------------------------------------------
+// CAiCpsCommandBuffer::NewL
+//
+// ---------------------------------------------------------------------------
+//
+CAiCpsCommandBuffer* CAiCpsCommandBuffer::NewL()
+ {
+ CAiCpsCommandBuffer* self = CAiCpsCommandBuffer::NewLC();
+ CleanupStack::Pop( self );
+ return self;
+ }
+
+// ---------------------------------------------------------------------------
+// CAiCpsCommandBuffer::NewLC
+//
+// ---------------------------------------------------------------------------
+//
+CAiCpsCommandBuffer* CAiCpsCommandBuffer::NewLC()
+ {
+ CAiCpsCommandBuffer* self = new ( ELeave ) CAiCpsCommandBuffer;
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ return self;
+ }
+
+// ---------------------------------------------------------------------------
+// CAiCpsCommandBuffer::~CAiCpsCommandBuffer
+//
+// ---------------------------------------------------------------------------
+//
+CAiCpsCommandBuffer::~CAiCpsCommandBuffer()
+ {
+ // Flush any pending commands
+ Flush();
+
+ if ( iCpsInterface )
+ {
+ // Close interface
+ iCpsInterface->Close();
+ }
+
+ TRAP_IGNORE( DetachL() );
+
+ delete iCpsService;
+ delete iServiceHandler;
+ }
+
+// ---------------------------------------------------------------------------
+// CAiCpsCommandBuffer::DetachL
+//
+// ---------------------------------------------------------------------------
+//
+void CAiCpsCommandBuffer::DetachL()
+ {
+ if ( iServiceHandler && iCpsService )
+ {
+ // Detach services from the handler
+ RCriteriaArray list;
+ CleanupClosePushL( list );
+
+ list.AppendL( iCpsService );
+
+ iServiceHandler->DetachL( list );
+
+ CleanupStack::PopAndDestroy( &list );
+ }
+ }
+
+// ---------------------------------------------------------------------------
+// CAiCpsCommandBuffer::GetCPSInterfaceL
+//
+// ---------------------------------------------------------------------------
+//
+void CAiCpsCommandBuffer::GetCPSInterfaceL()
+ {
+ if ( iCpsInterface )
+ {
+ return;
+ }
+
+ RCriteriaArray interestList;
+ CleanupClosePushL( interestList );
+
+ CLiwServiceHandler* serviceHandler = CLiwServiceHandler::NewL();
+ CleanupStack::PushL( serviceHandler );
+
+ // Attach to CPS:
+ CLiwCriteriaItem* cpsService = CLiwCriteriaItem::NewL( 1, KCPSConfigurationIf, KCPS );
+ CleanupStack::PushL( cpsService );
+
+ cpsService->SetServiceClass( TUid::Uid( KLiwClassBase ) );
+
+ interestList.AppendL( cpsService );
+ serviceHandler->AttachL( interestList );
+
+ CLiwGenericParamList& inParamList( serviceHandler->InParamListL() );
+ CLiwGenericParamList& outParamList( serviceHandler->OutParamListL() );
+
+ serviceHandler->ExecuteServiceCmdL(
+ *cpsService,
+ inParamList,
+ outParamList );
+
+ TInt pos( 0 );
+
+ outParamList.FindFirst( pos, KCPSConfigurationIf );
+
+ if ( pos != KErrNotFound )
+ {
+ iCpsInterface = (outParamList)[pos].Value().AsInterface();
+ inParamList.Reset();
+ outParamList.Reset();
+ }
+ else
+ {
+ inParamList.Reset();
+ outParamList.Reset();
+ User::Leave( KErrNotFound );
+ }
+
+ CleanupStack::Pop( cpsService );
+ iCpsService = cpsService;
+
+ CleanupStack::Pop( serviceHandler );
+ iServiceHandler = serviceHandler;
+
+ CleanupStack::PopAndDestroy( &interestList );
+ }
+
+// ---------------------------------------------------------------------------
+// CAiCpsCommandBuffer::AddCommand
+//
+// ---------------------------------------------------------------------------
+//
+void CAiCpsCommandBuffer::AddCommand( const TDesC& aPluginId,
+ const TDesC& aType, CLiwDefaultMap* aFilter,
+ const TDesC8& aAction )
+ {
+ __PRINTS( "CAiCpsCommandBuffer::AddCommand, start" );
+
+ TRAP_IGNORE( DoAddCommandL( aPluginId, aType, aFilter, aAction ) );
+
+ __PRINTS( "CAiCpsCommandBuffer::AddCommand - done" );
+ }
+
+// ---------------------------------------------------------------------------
+// CAiCpsCommandBuffer::ServiceHandler
+//
+// ---------------------------------------------------------------------------
+//
+CLiwServiceHandler* CAiCpsCommandBuffer::ServiceHandler() const
+ {
+ return iServiceHandler;
+ }
+
+// ---------------------------------------------------------------------------
+// CAiCpsCommandBuffer::CpsInterface
+//
+// ---------------------------------------------------------------------------
+//
+MLiwInterface* CAiCpsCommandBuffer::CpsInterface() const
+ {
+ return iCpsInterface;
+ }
+
+// ---------------------------------------------------------------------------
+// CAiCpsCommandBuffer::DoAddCommandL
+//
+// ---------------------------------------------------------------------------
+//
+void CAiCpsCommandBuffer::DoAddCommandL( const TDesC& aPluginId,
+ const TDesC& aType, CLiwDefaultMap* aFilter,
+ const TDesC8& aAction )
+ {
+ TInt found( KErrNotFound );
+
+ for ( TInt i = 0; i < iPlugins.Count(); i++ )
+ {
+ if ( aPluginId == iPlugins[i]->PluginId() )
+ {
+ found = i;
+ break;
+ }
+ }
+
+ if ( found != KErrNotFound )
+ {
+ iPlugins[found]->AddActionL( aAction );
+ }
+ else
+ {
+ CAiCpsExecuteParam* param = CAiCpsExecuteParam::NewLC();
+ param->SetPluginIdL( aPluginId );
+ param->SetRegistryTypeL( aType );
+ param->SetFilterL( aFilter );
+ param->AddActionL( aAction );
+ iPlugins.AppendL( param );
+ CleanupStack::Pop( param );
+ }
+ }
+
+// ---------------------------------------------------------------------------
+// CAiCpsCommandBuffer::Flush
+//
+// ---------------------------------------------------------------------------
+//
+void CAiCpsCommandBuffer::Flush()
+ {
+ __PRINTS( "CAiCpsCommandBuffer::Flush, start" );
+
+ if ( iPlugins.Count() > 0 )
+ {
+ TRAP_IGNORE( DoFlushL() );
+ }
+
+ __PRINTS( "CAiCpsCommandBuffer::Flush - done" );
+ }
+
+// ---------------------------------------------------------------------------
+// CAiCpsCommandBuffer::DoFlushL
+//
+// ---------------------------------------------------------------------------
+//
+void CAiCpsCommandBuffer::DoFlushL()
+ {
+ if ( !iCpsInterface )
+ {
+ GetCPSInterfaceL();
+ }
+
+ if ( iCpsInterface )
+ {
+ __PRINTS( "CAiCpsCommandBuffer::DoFlush : Execute" );
+
+ TInt pluginCount( iPlugins.Count() );
+
+ CLiwDefaultList* pluginCmdList = CLiwDefaultList::NewLC();
+
+ for ( TInt i = 0; i < pluginCount; i++ )
+ {
+ CLiwDefaultMap* inParamMap = iPlugins[i]->InParamMapLC();
+ pluginCmdList->AppendL( inParamMap );
+ CleanupStack::PopAndDestroy( inParamMap );
+ }
+
+ CLiwGenericParamList* inParamList = CLiwGenericParamList::NewLC();
+ CLiwGenericParamList* outParamList = CLiwGenericParamList::NewLC();
+
+ TLiwGenericParam item( KFilters, TLiwVariant ( pluginCmdList ) );
+ inParamList->AppendL( item );
+
+ iCpsInterface->ExecuteCmdL( KExecuteMultipleActions, *inParamList, *outParamList);
+
+ CleanupStack::PopAndDestroy( 3, pluginCmdList ); // outparamList, inParamList
+
+ iPlugins.ResetAndDestroy();
+ }
+ }
+
+// End of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/idlefw/src/framework/aicpsexecuteparam.cpp Wed May 12 13:36:47 2010 +0300
@@ -0,0 +1,207 @@
+/*
+* 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: CPS Execute parameter object
+*
+*/
+
+
+// System includes
+
+// User includes
+#include <debug.h>
+#include <liwvariant.h>
+#include <liwgenericparam.h>
+#include "aicpsexecuteparam.h"
+
+// Constants
+_LIT8( KPublisherId, "publisher" );
+_LIT8( KContentType, "content_type" );
+_LIT8( KContentId, "content_id" );
+_LIT8( KPluginId, "plugin_id");
+_LIT8( KType, "type");
+_LIT8( KFilter, "filter" );
+_LIT8( KActionTrigger, "action_trigger" );
+
+// ======== LOCAL FUNCTIONS ========
+
+// ======== MEMBER FUNCTIONS ========
+// ---------------------------------------------------------------------------
+// CAiCpsExecuteParam::CAiCpsExecuteParam
+//
+// ---------------------------------------------------------------------------
+//
+CAiCpsExecuteParam::CAiCpsExecuteParam()
+ {
+
+ }
+
+// ---------------------------------------------------------------------------
+// CAiCpsExecuteParam::ConstructL
+//
+// ---------------------------------------------------------------------------
+//
+void CAiCpsExecuteParam::ConstructL( )
+ {
+ }
+
+// ---------------------------------------------------------------------------
+// CAiCpsExecuteParam::NewL
+//
+// ---------------------------------------------------------------------------
+//
+CAiCpsExecuteParam* CAiCpsExecuteParam::NewL()
+ {
+ CAiCpsExecuteParam* self = CAiCpsExecuteParam::NewLC();
+ CleanupStack::Pop( self );
+ return self;
+ }
+
+// ---------------------------------------------------------------------------
+// CAiCpsExecuteParam::NewLC
+//
+// ---------------------------------------------------------------------------
+//
+CAiCpsExecuteParam* CAiCpsExecuteParam::NewLC()
+ {
+ CAiCpsExecuteParam* self = new ( ELeave ) CAiCpsExecuteParam;
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ return self;
+ }
+// ---------------------------------------------------------------------------
+// CAiCpsExecuteParam::~CAiCpsExecuteParam
+//
+// ---------------------------------------------------------------------------
+//
+CAiCpsExecuteParam::~CAiCpsExecuteParam()
+ {
+ delete iPluginId;
+ delete iRegistryType;
+ delete iPublisher;
+ delete iContentType;
+ delete iContentId;
+ iActions.ResetAndDestroy();
+ }
+
+// ---------------------------------------------------------------------------
+// CAiCpsExecuteParam::PluginId
+//
+// ---------------------------------------------------------------------------
+//
+const TDesC& CAiCpsExecuteParam::PluginId() const
+ {
+ return *iPluginId;
+ }
+
+// ---------------------------------------------------------------------------
+// CAiCpsExecuteParam::InParamMapLC
+//
+// ---------------------------------------------------------------------------
+//
+CLiwDefaultMap* CAiCpsExecuteParam::InParamMapLC()
+ {
+ CLiwDefaultMap* inParamMap = CLiwDefaultMap::NewLC();
+ inParamMap->InsertL( KType, TLiwVariant( *iRegistryType ));
+
+ CLiwDefaultMap* filter = CLiwDefaultMap::NewLC();
+ filter->InsertL( KPublisherId, TLiwVariant(iPublisher ));
+ filter->InsertL( KContentId, TLiwVariant(iContentId ));
+ filter->InsertL( KContentType, TLiwVariant(iContentType ));
+
+ CLiwDefaultList* actionsToLaunch = CLiwDefaultList::NewLC();
+ for ( TInt i=0; i< iActions.Count(); i++)
+ {
+ actionsToLaunch->AppendL( TLiwVariant( *iActions[i]));
+ }
+ filter->InsertL(KActionTrigger, TLiwVariant(actionsToLaunch) );
+ inParamMap->InsertL( KFilter, TLiwVariant( filter ));
+
+ CleanupStack::PopAndDestroy( actionsToLaunch );
+ CleanupStack::PopAndDestroy( filter );
+ return inParamMap;
+ }
+
+// ---------------------------------------------------------------------------
+// CAiCpsExecuteParam::SetFilterL
+//
+// ---------------------------------------------------------------------------
+//
+void CAiCpsExecuteParam::SetFilterL(CLiwDefaultMap* aMap)
+ {
+ delete iPublisher;
+ delete iContentType;
+ delete iContentId;
+ iPublisher = NULL;
+ iContentType = NULL;
+ iContentId = NULL;
+
+ TLiwVariant variant;
+ variant.PushL();
+
+ if ( aMap->FindL(KPublisherId, variant ))
+ {
+ iPublisher = variant.AsDes().AllocL();
+ }
+
+ variant.Reset();
+ if ( aMap->FindL(KContentType, variant ))
+ {
+ iContentType= variant.AsDes().AllocL();
+ }
+
+ variant.Reset();
+ if ( aMap->FindL(KContentId, variant ))
+ {
+ iContentId= variant.AsDes().AllocL();
+ }
+
+ variant.Reset();
+ CleanupStack::PopAndDestroy( &variant );
+ }
+
+// ---------------------------------------------------------------------------
+// CAiCpsExecuteParam::SetRegistryTypeL
+//
+// ---------------------------------------------------------------------------
+//
+void CAiCpsExecuteParam::SetRegistryTypeL(const TDesC& aRegistryType)
+ {
+ delete iRegistryType;
+ iRegistryType = NULL;
+ iRegistryType = aRegistryType.AllocL();
+ }
+
+// ---------------------------------------------------------------------------
+// CAiCpsExecuteParam::SetPluginIdL
+//
+// ---------------------------------------------------------------------------
+//
+void CAiCpsExecuteParam::SetPluginIdL(const TDesC& aPluginId)
+ {
+ delete iPluginId;
+ iPluginId = NULL;
+ iPluginId = aPluginId.AllocL();
+ }
+
+// ---------------------------------------------------------------------------
+// CAiCpsExecuteParam::AddActionL
+//
+// ---------------------------------------------------------------------------
+//
+void CAiCpsExecuteParam::AddActionL(const TDesC8& aAction)
+ {
+ iActions.Append(aAction.AllocL());
+ }
+
+// End of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/idlefw/src/framework/aiecomobserver.cpp Wed May 12 13:36:47 2010 +0300
@@ -0,0 +1,161 @@
+/*
+* 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: CAiEcomObserver class implementation.
+*
+*/
+
+// System includes
+
+// User incldues
+#include "aiecomobserver.h"
+
+
+// Constants
+
+// ======== LOCAL FUNCTIONS ========
+
+// ======== MEMBER FUNCTIONS ========
+//-----------------------------------------------------------------------------
+// CAiEcomObserver::CAiEcomObserver
+//
+//-----------------------------------------------------------------------------
+//
+CAiEcomObserver::CAiEcomObserver()
+ : CActive( EPriorityStandard )
+ {
+ CActiveScheduler::Add( this );
+ }
+
+//-----------------------------------------------------------------------------
+// CAiEcomObserver::NewLC
+//
+//-----------------------------------------------------------------------------
+//
+CAiEcomObserver* CAiEcomObserver::NewLC()
+ {
+ CAiEcomObserver* self = new ( ELeave ) CAiEcomObserver();
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ return self;
+ }
+
+//-----------------------------------------------------------------------------
+// CAiEcomObserver::NewL
+//
+//-----------------------------------------------------------------------------
+//
+CAiEcomObserver* CAiEcomObserver::NewL()
+ {
+ CAiEcomObserver* self = CAiEcomObserver::NewLC();
+ CleanupStack::Pop( self );
+ return self;
+ }
+
+//-----------------------------------------------------------------------------
+// CAiEcomObserver::ConstructL
+//
+//-----------------------------------------------------------------------------
+//
+void CAiEcomObserver::ConstructL()
+ {
+ iEComSession = REComSession::OpenL();
+ StartObserving();
+ }
+
+//-----------------------------------------------------------------------------
+// CAiEcomObserver::~CAiEcomObserver
+//
+//-----------------------------------------------------------------------------
+//
+CAiEcomObserver::~CAiEcomObserver()
+ {
+ // Cancel any request, if outstanding
+ Cancel();
+
+ // Clean up memebers
+ iObservers.Close();
+
+ iEComSession.Close();
+ }
+
+//-----------------------------------------------------------------------------
+// CAiEcomObserver::DoCancel
+//
+//-----------------------------------------------------------------------------
+//
+void CAiEcomObserver::DoCancel()
+ {
+ iEComSession.CancelNotifyOnChange( iStatus );
+ }
+
+//-----------------------------------------------------------------------------
+// CAiEcomObserver::StartObserving
+//
+//-----------------------------------------------------------------------------
+//
+void CAiEcomObserver::StartObserving()
+ {
+ iEComSession.NotifyOnChange( iStatus );
+ SetActive();
+ }
+
+//-----------------------------------------------------------------------------
+// CAiEcomObserver::AddObserverL
+//
+//-----------------------------------------------------------------------------
+//
+void CAiEcomObserver::AddObserverL( MAiEcomObserver* aObserver )
+ {
+ if ( aObserver )
+ {
+ iObservers.AppendL( aObserver );
+ }
+ }
+
+//-----------------------------------------------------------------------------
+// CAiEcomObserver::RunL
+//
+//-----------------------------------------------------------------------------
+//
+void CAiEcomObserver::RunL()
+ {
+ // Store completion status
+ TInt status( iStatus.Int() );
+
+ // Continue request
+ StartObserving();
+
+ // Notify observers
+ if ( status == KErrNone )
+ {
+ NotifyObservers();
+ }
+ }
+
+//------------------------------------------------------------------------------
+// CAiEcomObserver::NotifyObservers
+//
+//------------------------------------------------------------------------------
+//
+void CAiEcomObserver::NotifyObservers()
+ {
+ TInt count( iObservers.Count() );
+
+ for ( TInt i = 0; i < count; i++ )
+ {
+ iObservers[i]->NotifyEcomRegistryChanged();
+ }
+ }
+
+// End of file
--- a/idlefw/src/framework/aienvironmentchangeobserver.cpp Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,93 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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: Environment change observer for AI2
-*
-*/
-
-
-#include <bacntf.h> // for CEnvironmentChangeNotifier
-#include <coemain.h>
-#include <AknDef.h> // for KEikDynamicLayoutVariantSwitch
-#include "aienvironmentchangeobserver.h"
-#include "aistatemanager.h"
-#include "aifwpanic.h"
-#include "debug.h"
-
-CAiEnvironmentChangeObserver::CAiEnvironmentChangeObserver()
- {
- }
-
-CAiEnvironmentChangeObserver::~CAiEnvironmentChangeObserver()
- {
- if( iEnvironmentChangeNotifier )
- {
- iEnvironmentChangeNotifier->Cancel();
- delete iEnvironmentChangeNotifier;
- }
- }
-
-CAiEnvironmentChangeObserver* CAiEnvironmentChangeObserver::NewL( MAiStateManager* aStateManager )
- {
- CAiEnvironmentChangeObserver* self = new (ELeave) CAiEnvironmentChangeObserver();
- CleanupStack::PushL(self);
- self->ConstructL( aStateManager );
- CleanupStack::Pop(self);
- return self;
- }
-
-void CAiEnvironmentChangeObserver::ConstructL( MAiStateManager* aStateManager )
- {
- iStateManager = aStateManager;
- iEnvironmentChangeNotifier = CEnvironmentChangeNotifier::NewL(
- EActivePriorityLogonA,
- TCallBack( EnvironmentChangeCallBack, this ) );
- iEnvironmentChangeNotifier->Start();
- }
-
-TAiStateChanges CAiEnvironmentChangeObserver::Status()
- {
- // No statuses to report
- return ESMAIUnknownState;
- }
-
-TInt CAiEnvironmentChangeObserver::EnvironmentChangeCallBack(TAny* aPtr)
- {
- CAiEnvironmentChangeObserver* self =
- static_cast<CAiEnvironmentChangeObserver*>( aPtr );
-
- __ASSERT_DEBUG( self,
- AiFwPanic::Panic( AiFwPanic::EAiFwPanic_NullPointerReference ) );
-
- const TInt changes( self->iEnvironmentChangeNotifier->Change() );
-
- // report environment changes
- if( changes & EChangesMidnightCrossover )
- {
- __PRINTS("XAI: Event: Midnight crossover");
- self->iStateManager->ReportStateChange( ESMAIMidnightCrossover );
- }
- if( changes & EChangesSystemTime )
- {
- __PRINTS("XAI: Event: Time changed");
- self->iStateManager->ReportStateChange( ESMAITimeChanged );
- }
- if( changes & EChangesLocale )
- {
- __PRINTS("XAI: Event: Locale setting changed");
- self->iStateManager->ReportStateChange( ESMAILocaleChanged );
- }
-
- return EFalse;
- }
-
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/idlefw/src/framework/aieventhandler.cpp Wed May 12 13:36:47 2010 +0300
@@ -0,0 +1,383 @@
+/*
+* Copyright (c) 2005-2006 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: Content plugin event handler
+*
+*/
+
+// System includes
+
+// User includes
+#include <aiutility.h>
+#include <aiplugintool.h>
+#include <aicontentrequest.h>
+
+#include "aipluginfactory.h"
+#include "aiconsts.h"
+#include "debug.h"
+
+#include "aieventhandler.h"
+
+// Constants
+const TInt KAILenOfParenthesis( 2 );
+
+// ======== MEMBER FUNCTIONS ========
+
+// ----------------------------------------------------------------------------
+// CAiEventHandler::NewL()
+//
+// ----------------------------------------------------------------------------
+//
+CAiEventHandler* CAiEventHandler::NewL(
+ CAiPluginFactory& aFactory )
+ {
+ CAiEventHandler* self =
+ new ( ELeave ) CAiEventHandler( aFactory );
+
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ CleanupStack::Pop( self );
+ return self;
+ }
+
+// ----------------------------------------------------------------------------
+// CAiEventHandler::ConstructL()
+//
+// ----------------------------------------------------------------------------
+//
+void CAiEventHandler::ConstructL()
+ {
+ iPluginTool = AiUtility::CreatePluginToolL();
+ }
+
+// ----------------------------------------------------------------------------
+// CAiEventHandler::~CAiEventHandler()
+//
+// ----------------------------------------------------------------------------
+//
+CAiEventHandler::~CAiEventHandler()
+ {
+ Release( iPluginTool );
+ }
+
+// ----------------------------------------------------------------------------
+// CAiEventHandler::CAiEventHandler()
+//
+// ----------------------------------------------------------------------------
+//
+CAiEventHandler::CAiEventHandler( CAiPluginFactory& aFactory )
+ : iFactory( aFactory )
+ {
+ }
+
+// ----------------------------------------------------------------------------
+// CAiEventHandler::HandlePluginEvent()
+//
+// ----------------------------------------------------------------------------
+//
+void CAiEventHandler::HandlePluginEvent( const TDesC& aParam )
+ {
+ const TInt separatorPos( aParam.Locate( KPluginEventSeparator ) );
+
+ if( separatorPos == KErrNotFound )
+ {
+ return;
+ }
+
+ // Extract plugin name
+ TPtrC pluginName( aParam.Left( separatorPos ) );
+
+ // Extract event and parameter string
+ TPtrC eventNameAndParams( aParam.Mid( separatorPos + 1 ) );
+
+ // Find parameter string position
+ const TInt paramsPos(
+ eventNameAndParams.Locate( KEventParameterSeparator ) );
+
+ // Extract event name
+ TPtrC eventName( paramsPos < 0 ? eventNameAndParams :
+ eventNameAndParams.Left( paramsPos ) );
+
+ // Calculate actual parameter string length by ignoring parenthesis
+ TInt paramsLength(
+ eventNameAndParams.Length() - paramsPos - KAILenOfParenthesis );
+
+ // Extract paramenters
+ TPtrC param( paramsPos < 0 ? KNullDesC() :
+ eventNameAndParams.Mid( paramsPos + 1, Max( 0, paramsLength ) ) );
+
+ // Resolve plugin
+ CHsContentPublisher* publisher( NULL );
+
+ __TIME( "FW: Lookup plug-in by name",
+ publisher = iFactory.PluginByName( pluginName );
+ );
+
+ __PRINT( __DBG_FORMAT(
+ "\t[I]\t Event: %S to plug-in by addr 0x%x" ), &aParam, publisher );
+
+ if( publisher )
+ {
+ // Resolve plugin specific event id
+ TInt eventId( KErrNotFound );
+
+ TRAP_IGNORE( GetIdL( *publisher,
+ CHsContentPublisher::EPublisherEvents, eventName, eventId ) );
+
+ if( eventId != KErrNotFound )
+ {
+ publisher->HandleEvent( eventId, param );
+ }
+ else
+ {
+ publisher->HandleEvent( eventName, param );
+ }
+ }
+ }
+
+// ----------------------------------------------------------------------------
+// CAiEventHandler::HandlePluginEventL()
+//
+// ----------------------------------------------------------------------------
+//
+void CAiEventHandler::HandlePluginEventL(
+ const THsPublisherInfo& aPublisherInfo, const TDesC& aParam )
+ {
+ // Resolve plugin
+ CHsContentPublisher* publisher(
+ iFactory.PluginByInfo( aPublisherInfo ) );
+
+ if( publisher )
+ {
+ const TInt separatorPos( aParam.Locate( KPluginEventSeparator ) );
+
+ // Extract event and parameter string
+ TPtrC eventNameAndParams( aParam.Mid( separatorPos + 1 ) );
+
+ // Find parameter string position
+ const TInt paramsPos(
+ eventNameAndParams.Locate( KEventParameterSeparator ) );
+
+ // Extract event name
+ TPtrC eventName( paramsPos < 0 ?
+ eventNameAndParams : eventNameAndParams.Left( paramsPos ) );
+
+ // Calculate actual parameter string length by ignoring parenthesis
+ TInt paramsLength(
+ eventNameAndParams.Length() - paramsPos - KAILenOfParenthesis );
+
+ // Extract paramenters
+ TPtrC param( paramsPos < 0 ? KNullDesC() :
+ eventNameAndParams.Mid( paramsPos + 1, Max( 0, paramsLength ) ) );
+
+ // Resolve plugin specific event id
+ TInt eventId( KErrNotFound );
+
+ GetIdL( *publisher,
+ CHsContentPublisher::EPublisherEvents, eventName, eventId );
+
+ if( eventId != KErrNotFound )
+ {
+ publisher->HandleEvent( eventId, param );
+ }
+ else
+ {
+ publisher->HandleEvent( eventName, param );
+ }
+ }
+ }
+
+// ----------------------------------------------------------------------------
+// CAiEventHandler::HasMenuItemL()
+//
+// ----------------------------------------------------------------------------
+//
+TBool CAiEventHandler::HasMenuItemL( const THsPublisherInfo& aPublisherInfo,
+ const TDesC& aMenuItem )
+ {
+ // Resolve plugin
+ CHsContentPublisher* publisher(
+ iFactory.PluginByInfo( aPublisherInfo ) );
+
+ if( publisher )
+ {
+ return publisher->HasMenuItem( aMenuItem );
+ }
+
+ return EFalse;
+ }
+
+// ----------------------------------------------------------------------------
+// CAiEventHandler::RefreshContent()
+//
+// ----------------------------------------------------------------------------
+//
+TBool CAiEventHandler::RefreshContent( const TDesC& aContentCid )
+ {
+ TRAPD( error, RefreshContentL( aContentCid ) );
+
+ return ( error == KErrNone );
+ }
+
+// ----------------------------------------------------------------------------
+// CAiEventHandler::RefreshContent()
+//
+// ----------------------------------------------------------------------------
+//
+TBool CAiEventHandler::RefreshContent( const THsPublisherInfo& aPublisherInfo,
+ const TDesC& aContentCid )
+ {
+ // Resolve plugin
+ CHsContentPublisher* publisher(
+ iFactory.PluginByInfo( aPublisherInfo ) );
+
+ if( publisher )
+ {
+ TInt id( KErrNotFound );
+
+ TRAP_IGNORE( GetIdL( *publisher,
+ CHsContentPublisher::EPublisherContent, aContentCid, id ) );
+
+ if ( id != KErrNotFound )
+ {
+ MAiContentRequest* handler = static_cast< MAiContentRequest* >(
+ publisher->GetProperty( CHsContentPublisher::EContentRequest ) );
+
+ if ( handler )
+ {
+ return handler->RefreshContent( id );
+ }
+ }
+ }
+
+ return EFalse;
+ }
+
+// ----------------------------------------------------------------------------
+// CAiEventHandler::SuspendContent()
+//
+// ----------------------------------------------------------------------------
+//
+TBool CAiEventHandler::SuspendContent( const THsPublisherInfo& aPublisherInfo,
+ const TDesC& aContentCid )
+ {
+ // Resolve plugin
+ CHsContentPublisher* publisher(
+ iFactory.PluginByInfo( aPublisherInfo ) );
+
+ if( publisher )
+ {
+ TInt id( KErrNotFound );
+
+ TRAP_IGNORE( GetIdL( *publisher,
+ CHsContentPublisher::EPublisherContent, aContentCid, id ) );
+
+ if ( id != KErrNotFound )
+ {
+ MAiContentRequest* handler = static_cast< MAiContentRequest* >(
+ publisher->GetProperty( CHsContentPublisher::EContentRequest ) );
+
+ if ( handler )
+ {
+ return handler->SuspendContent( id );
+ }
+ }
+ }
+
+ return EFalse;
+ }
+
+// ----------------------------------------------------------------------------
+// CAiEventHandler::GetIdL()
+//
+// ----------------------------------------------------------------------------
+//
+void CAiEventHandler::GetIdL( CHsContentPublisher& aContentPublisher,
+ CHsContentPublisher::TProperty aProperty, const TDesC& aName, TInt& aId )
+ {
+ MAiContentItemIterator* iterator =
+ iPluginTool->ContentItemIterator( aContentPublisher, aProperty );
+
+ if( iterator )
+ {
+ const TAiContentItem& ci( iterator->ItemL( aName ) );
+ aId = ci.id;
+ }
+ else
+ {
+ aId = KErrNotFound;
+ }
+ }
+
+// ----------------------------------------------------------------------------
+// CAiEventHandler::RefreshContentL()
+//
+// ----------------------------------------------------------------------------
+//
+TInt CAiEventHandler::RefreshContentL( const TDesC& aContentCid )
+ {
+ TInt retval( KErrNotFound );
+
+ // Look up plug-in and content item and delegate to plug-in's
+ // MAiContentRequest implementation.
+
+ // Find plugin name
+ TInt pos( aContentCid.Locate( KPluginEventSeparator ) );
+
+ if( pos == KErrNotFound )
+ {
+ return retval;
+ }
+
+ TPtrC pluginName( aContentCid.Left( pos ) );
+
+ CHsContentPublisher* publisher( iFactory.PluginByName( pluginName ) );
+
+ if( !publisher )
+ {
+ return retval;
+ }
+
+ // Extract content id
+ TPtrC cid( aContentCid.Mid( ++pos ) );
+ TInt id( 0 );
+
+ MAiContentRequest* handler( NULL );
+
+ TRAPD( error, GetIdL( *publisher,
+ CHsContentPublisher::EPublisherContent, cid, id ) );
+
+ if ( !error )
+ {
+ handler = static_cast< MAiContentRequest* >(
+ publisher->GetProperty( CHsContentPublisher::EContentRequest ) );
+ }
+ else
+ {
+ GetIdL( *publisher,
+ CHsContentPublisher::EPublisherResources, cid, id );
+
+ handler = static_cast< MAiContentRequest* >(
+ publisher->GetProperty( CHsContentPublisher::EResourceRequest ) );
+ }
+
+ // Forward event to plugin
+ if( handler && handler->RefreshContent( id ) )
+ {
+ retval = KErrNone;
+ }
+
+ return retval;
+ }
+
+// End of File.
--- a/idlefw/src/framework/aifocusobserver.cpp Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,157 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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: Focus observer for Active idle 2
-*
-*/
-
-
-#include <aipspropertyobserver.h>
-#include <activeidle2domainpskeys.h>
-#include "aistatemanager.h"
-#include "aifocusobserver.h"
-#include "aifwpanic.h"
-#include "debug.h"
-
-CAiFocusObserver::CAiFocusObserver()
- {
- }
-
-CAiFocusObserver::~CAiFocusObserver()
- {
- }
-
-CAiFocusObserver* CAiFocusObserver::NewL(
- MAiStateManager* aStateManager )
- {
- CAiFocusObserver* self = new (ELeave) CAiFocusObserver();
- CleanupStack::PushL(self);
- self->ConstructL( aStateManager );
- CleanupStack::Pop(self);
- return self;
- }
-
-void CAiFocusObserver::ConstructL( MAiStateManager* aStateManager )
- {
- //++HV
- BaseConstructL( TCallBack( StaticHandleFocusChangeEvent, this ),
- KPSUidAiInformation,
- KActiveIdleState,
- aStateManager );
-//--HV
- }
-
-TAiStateChanges CAiFocusObserver::Status()
- {
- TInt value = 0;
- TInt err = iObserver->Get( value );
- if( ( value == EPSAiForeground ) &&
- ( err == KErrNone ) )
- {
- return ESMAIIdleForeground;
- }
- else
- {
- return ESMAIIdleBackground;
- }
- }
-
- //++HV
-
- TInt CAiFocusObserver::StaticHandleFocusChangeEvent( TAny* aPtr )
- {
- CAiFocusObserver* self =
- static_cast<CAiFocusObserver*>( aPtr );
-
- __ASSERT_DEBUG( self,
- AiFwPanic::Panic( AiFwPanic::EAiFwPanic_NullPointerReference ) );
-
- return( self->HandleFocusChangeEvent() );
- }
-
-
-TInt CAiFocusObserver::HandleFocusChangeEvent()
- {
- if( iTfxEffectActive )
- {
- return KErrNone;
- }
-
- TInt value = 0;
- TInt err = iObserver->Get( value );
-
- // Check the PS keys value and call manager with approriate parameter.
- // Repowrt either "idle foreground" or "idle background"
- if( ( value == EPSAiForeground ) &&
- ( err == KErrNone ) )
- {
- // Check if the transition effect is active
-
- // This has to be called first, otherwise the state might not be valid.
- CAknTransitionUtils::AddObserver( this, CAknTransitionUtils::EEventWsBufferRedirection );
-
- TInt redirState = 0;
- CAknTransitionUtils::GetState( CAknTransitionUtils::EEventWsBufferRedirection, &redirState );
- if ( (TBool)redirState )
- {
- // The effect is on-going. Prevent view refresh until the effect is finished.
- iTfxEffectActive = ETrue;
- }
- else
- {
- // No effect on-going. Observer is not needed.
- CAknTransitionUtils::RemoveObserver( this, CAknTransitionUtils::EEventWsBufferRedirection );
- iStateManager->ReportStateChange( ESMAIIdleForeground );
- }
- }
- else if( value == EPSAiBackground )
- {
- // Do not receive callbacks in background. Remove observer if it still exists.
- CAknTransitionUtils::RemoveObserver( this, CAknTransitionUtils::EEventWsBufferRedirection );
- iTfxEffectActive = EFalse;
-
- iStateManager->ReportStateChange( ESMAIIdleBackground );
- }
-
- return KErrNone;
- }
-
-
-TInt CAiFocusObserver::AknTransitionCallback( TInt aEvent, TInt aState, const TDesC8* /*aParams*/ )
- {
- if ( ( aEvent & CAknTransitionUtils::EEventWsBufferRedirection ) && ( !(TBool)aState ) )
- {
- // The effect has been finished
- iTfxEffectActive = EFalse;
- // Observer is not needed any more.
- CAknTransitionUtils::RemoveObserver( this, CAknTransitionUtils::EEventWsBufferRedirection );
-
- // Issue one focus change event
- TInt value = 0;
- TInt err = iObserver->Get( value );
- if( ( value == EPSAiForeground ) &&
- ( err == KErrNone ) )
- {
- iStateManager->ReportStateChange( ESMAIIdleForeground );
- }
- else if( value == EPSAiBackground )
- {
- iStateManager->ReportStateChange( ESMAIIdleBackground );
- }
- }
-
- return 0;
- }
-
-
-//--HV
--- a/idlefw/src/framework/aifw.cpp Wed Mar 03 15:38:34 2010 +0200
+++ b/idlefw/src/framework/aifw.cpp Wed May 12 13:36:47 2010 +0300
@@ -15,49 +15,41 @@
*
*/
+// System includes
+#include <startupdomainpskeys.h>
+#include <centralrepository.h>
+#include <cenrepnotifyhandler.h>
-#include <bautils.h>
-#include <coemain.h>
-#include <ConeResLoader.h>
-#include <e32property.h>
-#include <startupdomainpskeys.h>
+// User includes
+#include "aiuicontrollermanager.h"
+#include "aiuicontroller.h"
+#include "aieventhandler.h"
+#include "aistatemanager.h"
+#include "aistateprovider.h"
+#include "aipluginfactory.h"
+#include "aiwspluginmanager.h"
+#include "aiidleappregister.h"
+
+#include <activeidle2domaincrkeys.h>
#include <activeidle2domainpskeys.h>
-#include <activeidle2internalpskeys.h>
-#include <cenrepnotifyhandler.h>
#include <aipspropertyobserver.h>
#include <aisystemuids.hrh>
-#include <AknWaitDialog.h>
-#include <AknGlobalNote.h>
-#include <StringLoader.h>
-
-
-#include <e32cmn.h>
-#include <e32def.h>
+#include "aiutility.h"
+#include "aifwpanic.h"
#include "aifw.h"
-#include "aifwpanic.h"
-#include "aiutility.h"
-#include "aiuicontrollermanager.h"
-#include "aiuicontroller.h"
-#include "aicontentmodel.h"
-#include "aicontentpluginmanager.h"
-#include "aiwspluginmanager.h"
-#include "aipluginstatemanager.h"
-#include "aiidleappregister.h"
+
#include "debug.h"
-#include <centralrepository.h>
-#include <activeidle2domaincrkeys.h>
-#include "ainetworklistener.h"
+// Constants
-#include <data_caging_path_literals.hrh>
-
// ======== MEMBER FUNCTIONS ========
// ----------------------------------------------------------------------------
-// CAiFw::NewL()
+// CAiFw::CAiFw()
+//
// ----------------------------------------------------------------------------
//
CAiFw::CAiFw()
@@ -66,10 +58,13 @@
// ----------------------------------------------------------------------------
// CAiFw::ConstructL()
+//
// ----------------------------------------------------------------------------
//
void CAiFw::ConstructL()
{
+ __PRINTS( "*** CAiFw::ConstructL" );
+ __TIME_MARK( time );
#if 0
// For AI3_test
RProcess proc;
@@ -78,105 +73,109 @@
if( secId == 0x2001CB4F )
{
- iAIRepository = CRepository::NewL( TUid::Uid( 0x2001952B ) );
+ iRepository = CRepository::NewL( TUid::Uid( 0x2001952B ) );
}
else
{
- iAIRepository = CRepository::NewL( TUid::Uid( KCRUidActiveIdleLV ) );
+ iRepository = CRepository::NewL( TUid::Uid( KCRUidActiveIdleLV ) );
}
#else
- iAIRepository = CRepository::NewL( TUid::Uid( KCRUidActiveIdleLV ) );
+ iRepository = CRepository::NewL( TUid::Uid( KCRUidActiveIdleLV ) );
#endif
TInt value( 0 );
- iAIRepository->Get( KAiMainUIController, value );
+ iRepository->Get( KAiMainUIController, value );
- if( !( value == AI_UID_ECOM_IMPLEMENTATION_UICONTROLLER_XML ||
+ if ( !( value == AI_UID_ECOM_IMPLEMENTATION_UICONTROLLER_XML ||
value == AI_UID_ECOM_IMPLEMENTATION_UICONTROLLER_NATIVE ||
value == AI3_UID_ECOM_IMPLEMENTATION_UICONTROLLER_XML ||
value == AI3_UID_ECOM_IMPLEMENTATION_UICONTROLLER_NATIVE ) )
{
// Someone wrote an invalid configuration! Reset repository.
- iAIRepository->Reset( KAiMainUIController );
- iAIRepository->Reset( KAiFirstUIController );
- iAIRepository->Delete( KAiFirstUIController + 1 );
+ iRepository->Reset( KAiMainUIController );
+ iRepository->Reset( KAiFirstUIController );
+ iRepository->Delete( KAiFirstUIController + 1 );
}
- iUiControllerManager = CAiUiControllerManager::NewL();
-
- iPluginManager = CAiContentPluginManager::NewL();
-
- // Hook framework as UI event observer
- iUiControllerManager->SetEventHandler( *this );
+ iUiControllerManager = CAiUiControllerManager::NewL( this );
+
+ iFactory = CAiPluginFactory::NewL( *iUiControllerManager );
+
+ iStateManager = CAiStateManager::NewL( *iFactory );
+
+ iStateProvider = CAiStateProvider::NewL( *iStateManager );
+
+ iEventHandler = CAiEventHandler::NewL( *iFactory );
+
+ iUiControllerManager->SetStateHandler( *iStateProvider );
+
+ __TIME_ENDMARK( "CAiFw::ConstructL, done", time );
}
// ----------------------------------------------------------------------------
// CAiFw::NewLC()
+//
// ----------------------------------------------------------------------------
//
EXPORT_C CAiFw* CAiFw::NewLC()
{
+ __TICK( "CAiFw::NewLC" );
+
CAiFw* self = new ( ELeave ) CAiFw;
CleanupStack::PushL( self );
+
self->ConstructL();
- __TICK( "FW: Core FW constructed" );
- __HEAP( "FW: Core FW constructed" );
+ __PRINTS( "*** CAiFw::NewLC - done" );
return self;
}
// ----------------------------------------------------------------------------
// CAiFw::~CAiFw()
+//
// ----------------------------------------------------------------------------
//
CAiFw::~CAiFw()
- {
- if( iPluginManager )
- {
- delete iPluginManager;
- iPluginManager = NULL;
- }
-
- if( iIdleRestartObserver )
- {
- Release( iIdleRestartObserver );
- iIdleRestartObserver = NULL;
- }
-
- if( iWsPluginManager )
- {
- delete iWsPluginManager;
- iWsPluginManager = NULL;
- }
-
- if( iUiControllerManager )
- {
- delete iUiControllerManager;
- iUiControllerManager = NULL;
- }
-
- if( iNotifyHandler )
+ {
+ if ( iNotifyHandler )
{
iNotifyHandler->StopListening();
- delete iNotifyHandler;
- iNotifyHandler = NULL;
}
+
+ delete iNotifyHandler;
+ iNotifyHandler = NULL;
- if( iNotifyHandlerESS )
+ if ( iNotifyHandlerESS )
{
iNotifyHandlerESS->StopListening();
- delete iNotifyHandlerESS;
- iNotifyHandlerESS = NULL;
}
+
+ delete iNotifyHandlerESS;
+ iNotifyHandlerESS = NULL;
+
+ delete iWsPluginManager;
+ iWsPluginManager = NULL;
+
+ delete iEventHandler;
+ iEventHandler = NULL;
- if( iAIRepository )
- {
- delete iAIRepository;
- iAIRepository = NULL;
- }
+ delete iStateProvider;
+ iStateProvider = NULL;
+
+ delete iStateManager;
+ iStateManager = NULL;
+ delete iFactory;
+ iFactory = NULL;
+
+ delete iUiControllerManager;
+ iUiControllerManager = NULL;
+
+ delete iRepository;
+ iRepository = NULL;
+
iLibrary1.Close();
iLibrary2.Close();
iLibrary3.Close();
@@ -184,95 +183,93 @@
// ----------------------------------------------------------------------------
// CAiFw::RunL()
+//
// ----------------------------------------------------------------------------
//
EXPORT_C void CAiFw::RunL()
{
- CAiIdleAppRegister* idleReg = CAiIdleAppRegister::NewLC();
- idleReg->RegisterL();
- CleanupStack::PopAndDestroy( idleReg );
+ __TICK( "CAiFw::RunL" );
+
+ __PRINTS( "*** CAiFw::RunL - CAiIdleAppRegister::NewLC" );
+ __TIME_MARK( time );
+
+ CAiIdleAppRegister* registry = CAiIdleAppRegister::NewLC();
+ registry->RegisterL();
+ CleanupStack::PopAndDestroy( registry );
+ __TIME_ENDMARK( "CAiFw::RunL - CAiIdleAppRegister::NewLC, done", time );
+
// Tell UI controller manager to start application framework and event loop.
- // This function returns only when the application is shut down.
- // See in CAiFw::HandleUiReadyEventL how the framework initialization continues.
+ // This function returns only when the application is shut down.
iUiControllerManager->RunApplicationL();
+
+ __PRINTS( "*** CAiFw::RunL - done" );
}
// ----------------------------------------------------------------------------
// CAiFw::AppEnvReadyL()
+//
// ----------------------------------------------------------------------------
//
void CAiFw::AppEnvReadyL()
{
+ __TICK( "CAiFw::AppEnvReadyL" );
+ __TIME_MARK( time );
+
// Initialize members which need to be connected to the app environment's
// active scheduler or depend on the app environment being initialized.
- // Create state managers system state observers
- CAiPluginStateManager& stateManager( iPluginManager->StateManager() );
-
- stateManager.CreateSystemStateObserversL();
-
- // Connect state managers UI observer to UI controllers
- MAiUiFrameworkObserver* fwObserver( stateManager.UiFwObserver() );
-
- if ( fwObserver )
- {
- iUiControllerManager->AddObserverL( *fwObserver );
- }
+ CCoeEnv& env( iUiControllerManager->CoeEnv() );
// Create WS pluign manager
- iWsPluginManager = CAiWsPluginManager::NewL
- ( iUiControllerManager->CoeEnv() );
-
- // CenRep notifier to listen key changes in cenrep. Application is restarted
- // if key value is changed.
- iNotifyHandler = CCenRepNotifyHandler::NewL( *this,
- *iAIRepository,
- CCenRepNotifyHandler::EIntKey,
- KAiMainUIController );
+ iWsPluginManager = CAiWsPluginManager::NewL( env );
+
+ // Start state provider
+ iStateProvider->StartL( env );
+
+ // CenRep notifier to listen key changes in cenrep.
+ // Application is restarted if key value is changed.
+ iNotifyHandler = CCenRepNotifyHandler::NewL( *this, *iRepository,
+ CCenRepNotifyHandler::EIntKey, KAiMainUIController );
+
iNotifyHandler->StartListeningL();
- // Cenrep notifier to listen ESS changes in cenrep
- //
- iNotifyHandlerESS = CCenRepNotifyHandler::NewL( *this,
- *iAIRepository,
- CCenRepNotifyHandler::EIntKey,
- KAIExternalStatusScreen );
+ // Cenrep notifier to listen ESS changes in cenrep
+ iNotifyHandlerESS = CCenRepNotifyHandler::NewL( *this, *iRepository,
+ CCenRepNotifyHandler::EIntKey, KAIExternalStatusScreen );
+
iNotifyHandlerESS->StartListeningL();
-
- iIdleRestartObserver = AiUtility::CreatePSPropertyObserverL(
- TCallBack( HandleRestartEvent, this ),
- KPSUidAiInformation,
- KActiveIdleRestartAI2 );
- stateManager.ReportStateChange( ESMAISystemBoot );
+ __PRINTS( "*** CAiFw::AppEnvReadyL - done" );
}
// ----------------------------------------------------------------------------
// CAiFw::HandleUiReadyEventL()
+//
// ----------------------------------------------------------------------------
//
void CAiFw::HandleUiReadyEventL( CAiUiController& aUiController )
{
- if( iUiControllerManager->IsMainUiController( aUiController ) )
- {
- iUiControllerManager->LoadUIDefinition();
-
+ __TICK( "CAiFw::HandleUiReadyEventL" );
+
+ if ( iUiControllerManager->IsMainUiController( aUiController ) )
+ {
TInt value( EIdlePhase1Ok );
- RProperty::Get( KPSUidStartup,
- KPSIdlePhase1Ok,
- value );
-
- if( value == EIdlePhase1NOK )
+ RProperty::Get( KPSUidStartup, KPSIdlePhase1Ok, value );
+
+ if ( value == EIdlePhase1NOK )
{
- RProperty::Set( KPSUidStartup,
- KPSIdlePhase1Ok,
- EIdlePhase1Ok );
- }
-
- if( !iLibrariesLoaded )
+ __TICK( "CAiFw::HandleUiReadyEventL - Setting EIdlePhase1Ok" );
+
+ RProperty::Set( KPSUidStartup, KPSIdlePhase1Ok, EIdlePhase1Ok );
+ }
+
+ if ( !iLibrariesLoaded )
{
+ __PRINTS( "*** CAiFw::HandleUiReadyEventL - load libraries" );
+ __TIME_MARK( time );
+
_LIT( KAIVoiceUIDialer, "VoiceUiNameDialer.dll" );
_LIT( KAIVoiceUIRecog, "VoiceUiRecognition.dll" );
_LIT( KAIVCommandHandler, "vcommandhandler.dll" );
@@ -282,154 +279,132 @@
iLibrary3.Load( KAIVCommandHandler );
iLibrariesLoaded = ETrue;
- }
-
+
+ __TIME_ENDMARK( "CAiFw::HandleUiReadyEventL - load libraries, done", time );
+ }
}
+
+ __PRINTS( "*** CAiFw::HandleUiReadyEventL - done" );
}
// ---------------------------------------------------------------------------
// CAiFw::HandleActivateUI()
+//
// ----------------------------------------------------------------------------
//
void CAiFw::HandleActivateUI()
{
- iUiControllerManager->ActivateUI();
+ __PRINTS( "*** CAiFw::HandleActivateUI" );
+ __TIME_MARK( time );
+
+ iUiControllerManager->LoadUIDefinition();
+
+ iUiControllerManager->ActivateUI();
+
+ __TIME_ENDMARK( "CAiFw::HandleActivateUI, done", time );
}
// ---------------------------------------------------------------------------
// CAiFw::HandleUiShutdown()
+//
// ----------------------------------------------------------------------------
//
void CAiFw::HandleUiShutdown( CAiUiController& aUiController )
{
- if( iUiControllerManager->IsMainUiController( aUiController ) )
+ if ( iUiControllerManager->IsMainUiController( aUiController ) )
{
- if( iNotifyHandler )
+ if ( iNotifyHandler )
{
iNotifyHandler->StopListening();
- delete iNotifyHandler;
- iNotifyHandler = NULL;
}
- if( iNotifyHandlerESS )
+ delete iNotifyHandler;
+ iNotifyHandler = NULL;
+
+ if ( iNotifyHandlerESS )
{
iNotifyHandlerESS->StopListening();
- delete iNotifyHandlerESS;
- iNotifyHandlerESS = NULL;
}
+
+ delete iNotifyHandlerESS;
+ iNotifyHandlerESS = NULL;
- iPluginManager->PluginFactory().DestroyPlugins();
-
- iPluginManager->StateManager().DestroySystemStateObservers();
-
iUiControllerManager->DestroySecondaryUiControllers();
- iUiControllerManager->RemoveObserver(
- *iPluginManager->StateManager().UiFwObserver() );
+ delete iWsPluginManager;
+ iWsPluginManager = NULL;
- if( iWsPluginManager )
- {
- delete iWsPluginManager;
- iWsPluginManager = NULL;
- }
-
- if( iIdleRestartObserver )
- {
- Release( iIdleRestartObserver );
- iIdleRestartObserver = NULL;
- }
+ iStateProvider->Stop();
}
}
// ----------------------------------------------------------------------------
-// CAiFw::HandleLoadPluginL()
-// ----------------------------------------------------------------------------
+// CAiFw::HandlePluginEvent()
//
-void CAiFw::HandleLoadPluginL( const TAiPublisherInfo& aPublisherInfo )
- {
- iPluginManager->PluginFactory().CreatePluginL(
- aPublisherInfo, iUiControllerManager->UiControllers() );
- }
-
-// ----------------------------------------------------------------------------
-// CAiFw::HandleDestroyPluginL()
-// ----------------------------------------------------------------------------
-//
-void CAiFw::HandleDestroyPluginL( const TAiPublisherInfo& aPublisherInfo )
- {
- iPluginManager->PluginFactory().DestroyPluginL(
- aPublisherInfo, iUiControllerManager->UiControllers() );
- }
-
-// ----------------------------------------------------------------------------
-// CAiFw::HandlePluginEvent()
// ----------------------------------------------------------------------------
//
void CAiFw::HandlePluginEvent( const TDesC& aParam )
{
- iPluginManager->HandlePluginEvent( aParam );
+ iEventHandler->HandlePluginEvent( aParam );
}
// ----------------------------------------------------------------------------
// CAiFw::HandlePluginEventL()
+//
// ----------------------------------------------------------------------------
//
-void CAiFw::HandlePluginEventL( const TAiPublisherInfo& aPublisherInfo,
+void CAiFw::HandlePluginEventL( const THsPublisherInfo& aPublisherInfo,
const TDesC& aParam )
{
- iPluginManager->HandlePluginEventL( aPublisherInfo, aParam );
+ iEventHandler->HandlePluginEventL( aPublisherInfo, aParam );
}
// ----------------------------------------------------------------------------
// CAiFw::HasMenuItemL()
+//
// ----------------------------------------------------------------------------
//
-TBool CAiFw::HasMenuItemL( const TAiPublisherInfo& aPublisherInfo,
+TBool CAiFw::HasMenuItemL( const THsPublisherInfo& aPublisherInfo,
const TDesC& aMenuItem )
{
- return iPluginManager->HasMenuItemL( aPublisherInfo, aMenuItem );
+ return iEventHandler->HasMenuItemL( aPublisherInfo, aMenuItem );
}
// ----------------------------------------------------------------------------
// CAiFw::RefreshContent()
+//
// ----------------------------------------------------------------------------
//
TBool CAiFw::RefreshContent( const TDesC& aContentCid )
{
- return iPluginManager->RefreshContent( aContentCid );
+ return iEventHandler->RefreshContent( aContentCid );
}
// ----------------------------------------------------------------------------
-// CAiFw::ProcessStateChange()
+// CAiFw::RefreshContent()
+//
// ----------------------------------------------------------------------------
//
-void CAiFw::ProcessStateChange( TAifwStates aState )
+TBool CAiFw::RefreshContent( const THsPublisherInfo& aPublisherInfo,
+ const TDesC& aContentCid )
{
- switch ( aState )
- {
- case EAifwOnline :
- {
- iPluginManager->ProcessOnlineState( ETrue );
- }
- break;
- case EAifwOffline :
- {
- iPluginManager->ProcessOnlineState( EFalse );
- }
- break;
- case EAifwPageSwitch:
- {
- iPluginManager->StateManager().ReportStateChange( ESMAIPageSwitch );
- }
- break;
- default :
- break;
- }
-
+ return iEventHandler->RefreshContent( aPublisherInfo, aContentCid );
+ }
+
+// ----------------------------------------------------------------------------
+// CAiFw::SuspendContent()
+//
+// ----------------------------------------------------------------------------
+//
+TBool CAiFw::SuspendContent( const THsPublisherInfo& aPublisherInfo,
+ const TDesC& aContentCid )
+ {
+ return iEventHandler->SuspendContent( aPublisherInfo, aContentCid );
}
// ----------------------------------------------------------------------------
// CAiFw::QueryIsMenuOpen()
+//
// ----------------------------------------------------------------------------
//
TBool CAiFw::QueryIsMenuOpen()
@@ -439,14 +414,15 @@
// ----------------------------------------------------------------------------
// CAiFw::HandleNotifyInt()
+//
// ----------------------------------------------------------------------------
//
void CAiFw::HandleNotifyInt( TUint32 aId, TInt aNewValue )
{
- switch( aId )
+ switch ( aId )
{
case KAiMainUIController:
- if( aNewValue == AI_UID_ECOM_IMPLEMENTATION_UICONTROLLER_XML ||
+ if ( aNewValue == AI_UID_ECOM_IMPLEMENTATION_UICONTROLLER_XML ||
aNewValue == AI_UID_ECOM_IMPLEMENTATION_UICONTROLLER_NATIVE ||
aNewValue == AI3_UID_ECOM_IMPLEMENTATION_UICONTROLLER_XML ||
aNewValue == AI3_UID_ECOM_IMPLEMENTATION_UICONTROLLER_NATIVE )
@@ -455,17 +431,14 @@
}
else
{
- // Someone wrote an invalid configuration! Reset repository.
- if( iAIRepository )
- {
- iAIRepository->Reset( KAiMainUIController );
- iAIRepository->Reset( KAiFirstUIController );
- iAIRepository->Delete( KAiFirstUIController + 1 );
- }
+ // Someone wrote an invalid configuration! Reset repository.
+ iRepository->Reset( KAiMainUIController );
+ iRepository->Reset( KAiFirstUIController );
+ iRepository->Delete( KAiFirstUIController + 1 );
}
break;
case KAIExternalStatusScreen:
- if( ( aNewValue & 0x7FFFFFFF ) != 0 )
+ if ( ( aNewValue & 0x7FFFFFFF ) != 0 )
{
TRAP_IGNORE( SwapUiControllerL( EFalse ) );
}
@@ -481,62 +454,46 @@
// ----------------------------------------------------------------------------
// CAiFw::SwapUiControllerL()
+//
// ----------------------------------------------------------------------------
//
void CAiFw::SwapUiControllerL( TBool aToExtHS )
- {
- TUid uid = { KCRUidActiveIdleLV };
- CRepository* cenRep = CRepository::NewL( uid );
-
+ {
if( !aToExtHS ) // Switch to XML UI
{
- cenRep->Create( KAiFirstUIController,
+ iRepository->Create( KAiFirstUIController,
AI_UID_ECOM_IMPLEMENTATION_UICONTROLLER_NATIVE );
- cenRep->Set( KAiFirstUIController,
+ iRepository->Set( KAiFirstUIController,
AI_UID_ECOM_IMPLEMENTATION_UICONTROLLER_NATIVE );
- cenRep->Delete( KAiFirstUIController + 1 );
- cenRep->Set( KAiMainUIController,
+ iRepository->Delete( KAiFirstUIController + 1 );
+
+ iRepository->Set( KAiMainUIController,
AI_UID_ECOM_IMPLEMENTATION_UICONTROLLER_XML );
}
else // Switch to ExtHS
{
- cenRep->Delete( KAiFirstUIController );
- cenRep->Delete( KAiFirstUIController + 1 );
- cenRep->Set( KAiMainUIController,
- AI_UID_ECOM_IMPLEMENTATION_UICONTROLLER_NATIVE );
+ iRepository->Delete( KAiFirstUIController );
+
+ iRepository->Delete( KAiFirstUIController + 1 );
+
+ iRepository->Set( KAiMainUIController,
+ AI_UID_ECOM_IMPLEMENTATION_UICONTROLLER_NATIVE );
}
-
- delete cenRep;
-
+
// Restart
iUiControllerManager->ExitMainController();
}
// ----------------------------------------------------------------------------
-// CAiFw::HandleRestartEvent()
+// CAiFw::Repository()
+//
// ----------------------------------------------------------------------------
//
-TInt CAiFw::HandleRestartEvent( TAny* aSelf )
+CRepository& CAiFw::Repository() const
{
- CAiFw* self = static_cast<CAiFw*>( aSelf );
-
- TInt value( 0 );
-
- if( self->iIdleRestartObserver )
- {
- TInt err( self->iIdleRestartObserver->Get( value ) );
-
- // Check the PS keys value and call manager with approriate parameter.
- // Report either "idle foreground" or "idle background"
- if( value == KActiveIdleRestartCode )
- {
- self->iUiControllerManager->ExitMainController();
- }
- }
-
- return KErrNone;
+ return *iRepository;
}
// End of file
--- a/idlefw/src/framework/aifwstartupscheduler.cpp Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,56 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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: AvtiveIdle2 startup scheduler
-*
-*/
-
-
-#include "aifwstartupscheduler.h"
-
-CAiFwStartupScheduler::CAiFwStartupScheduler()
- : iResult(KErrNone)
- {
- }
-
-CAiFwStartupScheduler* CAiFwStartupScheduler::NewLC()
- {
- CAiFwStartupScheduler* self = new(ELeave) CAiFwStartupScheduler;
- CleanupStack::PushL(self);
- return self;
- }
-
-CAiFwStartupScheduler::~CAiFwStartupScheduler()
- {
- }
-
-TInt CAiFwStartupScheduler::Result()
- {
- return iResult;
- }
-
-// All RunL leaves from active objects which execute during Active Idle
-// Framework startup end up here
-void CAiFwStartupScheduler::Error(TInt aError) const
- {
- // Store any error code
- if (aError != KErrNone && iResult == KErrNone)
- {
- iResult = aError;
- }
-
- // Stop the scheduler as all errors during Active Idle Framework startup
- // are fatal
- Stop();
- }
-
--- a/idlefw/src/framework/aikeylockobserver.cpp Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,89 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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: Focus observer for Active idle 2
-*
-*/
-
-
-#include <aipspropertyobserver.h>
-#include <activeidle2domainpskeys.h>
-#include <avkondomainpskeys.h> // KPSUidAvkonDomain, KAknKeyguardStatus, TAknKeyguardStatus
-#include "aistatemanager.h"
-#include "aikeylockobserver.h"
-#include "aifwpanic.h"
-#include "debug.h"
-
-CAiKeylockObserver::CAiKeylockObserver()
- {
- }
-
-CAiKeylockObserver::~CAiKeylockObserver()
- {
- }
-
-CAiKeylockObserver* CAiKeylockObserver::NewL(
- MAiStateManager* aStateManager )
- {
- CAiKeylockObserver* self = new (ELeave) CAiKeylockObserver();
- CleanupStack::PushL(self);
- self->ConstructL( aStateManager );
- CleanupStack::Pop(self);
- return self;
- }
-
-void CAiKeylockObserver::ConstructL( MAiStateManager* aStateManager )
- {
- BaseConstructL( TCallBack( HandleKeylockStatusEvent, this ),
- KPSUidAvkonDomain,
- KAknKeyguardStatus,
- aStateManager );
- }
-
-TAiStateChanges CAiKeylockObserver::Status()
- {
- TInt value;
- TInt err = iObserver->Get( value );
- if( err != KErrNone )
- {
- return ESMAIKeylockDisabled;
- }
-
- switch( value )
- {
- case EKeyguardLocked:
- case EKeyguardAutolockEmulation: // fallthorugh
- {
- return ESMAIKeylockEnabled;
- }
- case EKeyguardNotActive:
- default: // fallthorugh
- {
- return ESMAIKeylockDisabled;
- }
- }
- }
-
-TInt CAiKeylockObserver::HandleKeylockStatusEvent( TAny* aPtr )
- {
- CAiKeylockObserver* self =
- static_cast<CAiKeylockObserver*>( aPtr );
-
- __ASSERT_DEBUG( self,
- AiFwPanic::Panic( AiFwPanic::EAiFwPanic_NullPointerReference ) );
-
- TAiStateChanges stateChange = self->Status();
- self->iStateManager->ReportStateChange( stateChange );
- return KErrNone;
- }
-
--- a/idlefw/src/framework/ailightstatusobserver.cpp Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,80 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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: Light status observer for AI2
-*
-*/
-
-
-#include <aipspropertyobserver.h>
-#include "ailightstatusobserver.h"
-#include "aistatemanager.h"
-#include "debug.h"
-
-CAiLightStatusObserver::CAiLightStatusObserver()
- {
- }
-
-CAiLightStatusObserver::~CAiLightStatusObserver()
- {
- delete iLight;
- }
-
-CAiLightStatusObserver* CAiLightStatusObserver::NewL( MAiStateManager* aStateManager )
- {
- CAiLightStatusObserver* self = new (ELeave) CAiLightStatusObserver();
- CleanupStack::PushL(self);
- self->ConstructL( aStateManager );
- CleanupStack::Pop(self);
- return self;
- }
-
-void CAiLightStatusObserver::ConstructL( MAiStateManager* aStateManager )
- {
- iStateManager = aStateManager;
- iLight = CHWRMLight::NewL( this );
- }
-
-TAiStateChanges CAiLightStatusObserver::Status()
- {
- // In future handle other screen lights here also..
- CHWRMLight::TLightStatus status = iLight->LightStatus( CHWRMLight::EPrimaryDisplay );
- if( status == CHWRMLight::ELightOn )
- {
- return ESMAIBacklightOn;
- }
- else if( status == CHWRMLight::ELightOff )
- {
- return ESMAIBacklightOff;
- }
- return ESMAIBacklightOn;
- }
-
-void CAiLightStatusObserver::LightStatusChanged( TInt aTarget, CHWRMLight::TLightStatus aStatus )
- {
- if( aTarget == CHWRMLight::EPrimaryDisplay ||
- aTarget == CHWRMLight::EPrimaryDisplayAndKeyboard )
- {
- if( aStatus == CHWRMLight::ELightOn )
- {
- __PRINTS("XAI: Light = ON");
- iStateManager->ReportStateChange( ESMAIBacklightOn );
- }
- else if( aStatus == CHWRMLight::ELightOff )
- {
- __PRINTS("XAI: Light = OFF");
- iStateManager->ReportStateChange( ESMAIBacklightOff );
- }
- }
- }
-
--- a/idlefw/src/framework/ainetworklistener.cpp Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,165 +0,0 @@
-/*
-* 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: Network info listener
-*
-*/
-
-#include <NetworkHandlingProxy.h>
-#include <CNWSession.h>
-#include "ainetworklistener.h"
-#include "ainetworkobserver.h"
-
-/// ======== MEMBER FUNCTIONS ========
-
-// -----------------------------------------------------------------------------
-// Two-phased constructor. Can leave.
-// -----------------------------------------------------------------------------
-//
-CAiNetworkListener* CAiNetworkListener::NewL(MAiNetworkObserver& aNetworkObserver)
- {
- CAiNetworkListener* self = new (ELeave) CAiNetworkListener(aNetworkObserver);
- CleanupStack::PushL( self );
- self->ConstructL();
- CleanupStack::Pop();
- return self;
- }
-
-CAiNetworkListener::CAiNetworkListener(MAiNetworkObserver& aNetworkObserver)
-:iObserver(aNetworkObserver)
- {
- }
-
-void CAiNetworkListener::ConstructL()
- {
- //Create network handling engine session.
- iSession = CreateL( *this, iInfo );
- iCurrentNwState = MAiNetworkObserver::ENone;
- }
-
-CAiNetworkListener::~CAiNetworkListener()
- {
- delete iSession;
- }
-
-void CAiNetworkListener::HandleNetworkMessage( const TNWMessages aMessage )
- {
- TBool hasNetInfoChanged = HasNetworkInfoChanged( aMessage );
- if ( !hasNetInfoChanged )
- {
- return;
- }
-
- // Interpret new nw state
- MAiNetworkObserver::TNetworkState newState;
- newState= InterpretNWMessage(aMessage,iInfo);
-
- // Inform observer of only new nw states (TNetworkState)
- if (newState != iCurrentNwState)
- {
- iObserver.HandleNetworkStateChange(newState);
- }
-
- // Store new nw state
- iCurrentNwState= newState;
-
- }
-
-MAiNetworkObserver::TNetworkState CAiNetworkListener::InterpretNWMessage(const TNWMessages aMessage, const TNWInfo aNWInfo)
- {
- MAiNetworkObserver::TNetworkState nwstate = MAiNetworkObserver::ENone;
-
- switch (aMessage)
- {
- case MNWMessageObserver::ENWMessageNetworkRegistrationStatusChange:
- case MNWMessageObserver::ENWMessageCurrentHomeZoneMessage:
- {
- switch (aNWInfo.iRegistrationStatus)
- {
- case ENWRegisteredRoaming:
- nwstate = MAiNetworkObserver::ERoaming;
- break;
- case ENWRegisteredOnHomeNetwork:
- nwstate = MAiNetworkObserver::EHomeNetwork;
- break;
-
- default:
- // unknown state
- break;
- }
- }
- }
-
- return nwstate;
- }
-
-void CAiNetworkListener::HandleNetworkError( const TNWOperation aOperation, TInt /*aErrorCode*/ )
- {
- switch ( aOperation )
- {
- case MNWMessageObserver::ENWGetNetworkProviderName:
- iReceivedMessageFlags |= ENetworkProviderNameReceived;
- iReceivedMessageFlags &= ~ENetworkProviderNameOk;
- iInfo.iNPName.Zero();
- break;
- case MNWMessageObserver::ENWGetProgrammableOperatorName:
- iReceivedMessageFlags |= EProgrammableOperatorInfoReceived;
- iReceivedMessageFlags &= ~EProgrammableOperatorInfoReceivedOk;
- iInfo.iOperatorNameInfo.iName.Zero();
- break;
- case MNWMessageObserver::ENWGetServiceProviderName:
- iReceivedMessageFlags |= EServiceProviderNameReceived;
- iReceivedMessageFlags &= ~EServiceProviderNameOk;
- iInfo.iServiceProviderNameDisplayReq = RMobilePhone::KDisplaySPNNotRequired;
- iInfo.iSPName.Zero();
- iInfo.iPLMNField.Zero();
- break;
- default:
- break;
- }
-
- HandleNetworkMessage( TNWMessages( KErrGeneral ) );
- }
-
-TBool CAiNetworkListener::HasNetworkInfoChanged( const TNWMessages aMessage )
- {
- TBool result = ETrue;
-
- // pass through
- if ( aMessage == MNWMessageObserver::ENWMessageCurrentHomeZoneMessage ||
- aMessage == MNWMessageObserver::ENWMessageNetworkConnectionFailure ||
- aMessage == MNWMessageObserver::ENWMessageCurrentCellInfoMessage ||
- aMessage == MNWMessageObserver::ENWMessageNetworkRegistrationStatusChange )
- {
- return result;
- }
-
- result = ( iReceivedMessageFlags != iOldReceivedMessageFlags );
-
- if ( !result )
- {
- result =
- iInfo.iRegistrationStatus != iOldInfo.iRegistrationStatus;
- }
-
- iOldReceivedMessageFlags = iReceivedMessageFlags;
- iOldInfo = iInfo;
-
- return result;
- }
-
-MAiNetworkObserver::TNetworkState CAiNetworkListener::NetworkState()
- {
- return iCurrentNwState;
- }
-
--- a/idlefw/src/framework/ainwsdlgcontroller.cpp Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,183 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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: Network selection dialog controller
-*
-*/
-
-
-#include <networkhandlingproxy.h>
-#include <cnwsession.h>
-#include <centralrepository.h>
-#include <e32property.h>
-
-#include <ProfileEngineSDKCRKeys.h>
-#include <BTSapDomainPSKeys.h>
-
-#include "ainwsdlgcontroller.h"
-#include "debug.h"
-
-
-// 1-minute timeout before showing soft notification
-const TInt KPhoneNetworkLostTimeout = 60*1000000;
-
-// Offline profile, from ProfileEngineSDKCRKeys.h
-const TInt KOfflineProfileId = 5;
-
-
-CAiNwSDlgController* CAiNwSDlgController::NewL()
- {
- CAiNwSDlgController* self = new(ELeave) CAiNwSDlgController();
- CleanupStack::PushL(self);
- self->ConstructL();
- CleanupStack::Pop(); // self
- return self;
- }
-
-CAiNwSDlgController::CAiNwSDlgController()
- {
- iRegistered = ETrue;
- }
-
-void CAiNwSDlgController::ConstructL()
- {
- __PRINTS( "XAI: CAiNwSDlgController is initializing" );
-
- iSoftNotifier = CAknSoftNotifier::NewL();
- iSession = CreateL( *this, iInfo );
- iProfileApi = CRepository::NewL( KCRUidProfileEngine );
- iPeriodic = CPeriodic::NewL( CActive::EPriorityStandard );
-
- HandleStateChange();
-
- __PRINTS( "XAI: CAiNwSDlgController initialized succesfully" );
- }
-
-CAiNwSDlgController::~CAiNwSDlgController()
- {
- delete iPeriodic;
- delete iProfileApi;
- delete iSession;
- delete iSoftNotifier;
- }
-
-void CAiNwSDlgController::HandleStateChange()
- {
- switch( iInfo.iRegistrationStatus )
- {
- case ENWNotRegisteredNoService:
- // Fall-through
- case ENWNotRegisteredEmergencyOnly:
- // Fall-through
- case ENWNotRegisteredSearching:
- // Fall-through
- case ENWRegistrationDenied:
- HandleNetworkLost();
- break;
-
- case ENWRegisteredBusy:
- // Fall-through
- case ENWRegisteredOnHomeNetwork:
- // Fall-through
- case ENWRegisteredRoaming:
- HandleNetworkFound();
- break;
-
- case ENWRegistrationUnknown:
- // Take no action
- default:
- break;
- }
- }
-
-void CAiNwSDlgController::HandleNetworkFound()
- {
- __PRINTS( "XAI: Network found" );
- iRegistered = ETrue;
- iPeriodic->Cancel();
- CancelDialog();
- }
-
-void CAiNwSDlgController::HandleNetworkLost()
- {
- if( iInfo.iSelectionSetting == ENWNetworkSelectionManual )
- {
- // See if we were registered before
- if( iRegistered )
- {
- iRegistered = EFalse;
-
- if(!IsOffLineMode() && !IsBluetoothSAPConnected())
- {
- __PRINTS( "XAI: Network lost, show dialog in 1 minute" );
- iPeriodic->Start( KPhoneNetworkLostTimeout,
- KPhoneNetworkLostTimeout, TCallBack( DelayCallBack, this ));
- }
- }
- }
- }
-
-void CAiNwSDlgController::LaunchDialog()
- {
- iPeriodic->Cancel();
- TRAP_IGNORE( iSoftNotifier->AddNotificationL( ESelectNetworkNotification, 1 ); );
- }
-
-void CAiNwSDlgController::CancelDialog()
- {
- TRAP_IGNORE( iSoftNotifier->CancelSoftNotificationL( ESelectNetworkNotification ); );
- }
-
-TInt CAiNwSDlgController::DelayCallBack(TAny* aParam)
- {
- CAiNwSDlgController* self = (CAiNwSDlgController*) aParam;
- self->LaunchDialog();
- return KErrNone;
- }
-
-void CAiNwSDlgController::HandleNetworkMessage( const TNWMessages aMessage )
- {
- switch(aMessage)
- {
- case ENWMessageNetworkRegistrationStatusChange:
- HandleStateChange();
- break;
-
- default:
- break;
- }
- }
-
-void CAiNwSDlgController::HandleNetworkError( const TNWOperation /*aOperation*/,
- TInt /*aErrorCode*/ )
- {
- // Take no action.
- }
-
-TBool CAiNwSDlgController::IsOffLineMode() const
- {
- TInt profileId;
- TInt err = iProfileApi->Get( KProEngActiveProfile, profileId );
- return profileId == KOfflineProfileId && err == KErrNone;
- }
-
-TBool CAiNwSDlgController::IsBluetoothSAPConnected() const
- {
- TInt btSapState( EBTSapNotConnected );
- TInt err = RProperty::Get( KPSUidBluetoothSapConnectionState,
- KBTSapConnectionState,
- btSapState );
- return btSapState != EBTSapNotConnected && err == KErrNone;
- }
-
-// End of file.
--- a/idlefw/src/framework/aipluginactivitypstool.cpp Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,223 +0,0 @@
-/*
-* Copyright (c) 2005-2006 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: Plugin activity PS tool
-*
-*/
-
-
-#include "aipluginactivitypstool.h"
-#include "aipropertyextension.h"
-#include <activeidle2domainpskeys.h>
-#include <e32std.h> // for User
-#include <e32property.h> // for RProperty
-#include <e32capability.h>
-
-// Unnamed namespace for local definitions
-namespace
- {
-
- const TInt KStartOrdinal( KAIActivePluginRangeStart );
-
- // All reads are allowed.
- _LIT_SECURITY_POLICY_PASS( KPluginActivityRegistryReadPolicy );
-
- // Write requires WriteDeviceData capability
- _LIT_SECURITY_POLICY_C1( KPluginActivityRegistryWritePolicy, ECapabilityWriteDeviceData );
-
- }
-
-CAiPluginActivityRegistry::CAiPluginActivityRegistry()
- : iRegistryOrdinal( KStartOrdinal )
- {
- }
-
-CAiPluginActivityRegistry* CAiPluginActivityRegistry::NewL()
- {
- CAiPluginActivityRegistry* self =
- new (ELeave) CAiPluginActivityRegistry();
- CleanupStack::PushL( self );
- self->ConstructL();
- CleanupStack::Pop( self );
- return self;
- }
-
-void CAiPluginActivityRegistry::ConstructL()
- {
- }
-
-CAiPluginActivityRegistry::~CAiPluginActivityRegistry()
- {
- CleanRegistry();
- }
-
-TInt CAiPluginActivityRegistry::SetPluginActive( const TAiPublisherInfo& aPubInfo )
- {
- TInt psErr = KErrArgument;
- TInt uid = aPubInfo.iUid.iUid;
-
- // Make sure the keys are within their assigned ranges
- if( uid >= KAIPluginNameRangeStart &&
- uid <= KAIPluginNameRangeEnd &&
- iRegistryOrdinal >= KAIActivePluginRangeStart &&
- iRegistryOrdinal <= KAIActivePluginRangeEnd )
- {
- psErr = UpdateOrdinalRegister( uid );
-
- ++iPluginCount; // now there is partial data in registry for next item
- // so update count allready here, so that
- // the data may be cleaned in case on error
-
- psErr |= UpdateNameRegister( uid, aPubInfo.iName );
-
- psErr |= UpdateCountRegister();
-
- if( psErr != KErrNone )
- {
- CleanLastEntry( uid,
- iRegistryOrdinal,
- iPluginCount - 1 );
- // Decrement only after rollback so failures may be cleaned properly
- // in case there is interrupting error situations
- --iPluginCount;
- return psErr;
- }
-
- ++iRegistryOrdinal;
- }
-
- return psErr;
- }
-
-void CAiPluginActivityRegistry::CleanRegistry()
- {
- // The count in p&s might not be updated before
- // we end up here that why we use iPluginCount for count.
- for( TInt i = 0; i < iPluginCount; ++i )
- {
- TInt categoryKey = i + KStartOrdinal;
- TInt pluginUid = 0;
- TInt err = RProperty::Get(
- KPSUidActiveIdle2,
- categoryKey,
- pluginUid );
- if( err == KErrNone )
- {
- // Delete name
- RProperty::Delete( KPSUidActiveIdle2, pluginUid );
- }
- // Delete ordinal
- RProperty::Delete( KPSUidActiveIdle2, categoryKey );
- }
- // Delete count
- RProperty::Delete( KPSUidActiveIdle2, KAIActivePluginCount );
- iRegistryOrdinal = KStartOrdinal;
- }
-
-TInt CAiPluginActivityRegistry::UpdateCountRegister()
- {
- TInt err = RProperty::Define(
- KPSUidActiveIdle2,
- KAIActivePluginCount,
- RProperty::EInt,
- KPluginActivityRegistryReadPolicy,
- KPluginActivityRegistryWritePolicy );
- if( err == KErrAlreadyExists &&
- iRegistryOrdinal == KStartOrdinal )
- {
- // Some error has occured
- CleanRegistry();
- err = RProperty::Define(
- KPSUidActiveIdle2,
- KAIActivePluginCount,
- RProperty::EInt,
- KPluginActivityRegistryReadPolicy,
- KPluginActivityRegistryWritePolicy );
- }
- if( err != KErrAlreadyExists &&
- err != KErrNone )
- {
- return err;
- }
-
- // iRegistryOrdinal starts from 1, so it can be used as count, but only
- // before incrementation.
- err = RProperty::Set(
- KPSUidActiveIdle2,
- KAIActivePluginCount,
- iPluginCount );
- return err;
- }
-
-TInt CAiPluginActivityRegistry::UpdateOrdinalRegister( TInt aPluginUid )
- {
- TInt categoryKey = iRegistryOrdinal;
- TInt err = RProperty::Define(
- KPSUidActiveIdle2,
- categoryKey,
- RProperty::EInt,
- KPluginActivityRegistryReadPolicy,
- KPluginActivityRegistryWritePolicy );
-
- if( err == KErrNone ||
- err == KErrAlreadyExists )
- {
- // Set plugin uid to ordinal key
- err = RProperty::Set(
- KPSUidActiveIdle2,
- categoryKey,
- aPluginUid );
- }
- return err;
- }
-
-TInt CAiPluginActivityRegistry::UpdateNameRegister( TInt aPluginUid,
- const TDesC& aName )
- {
- TInt err = RProperty::Define(
- KPSUidActiveIdle2,
- aPluginUid,
- RProperty::EText,
- KPluginActivityRegistryReadPolicy,
- KPluginActivityRegistryWritePolicy );
-
- if( err == KErrNone ||
- err == KErrAlreadyExists )
- {
- // Set plugin uid to ordinal key
- err = RProperty::Set(
- KPSUidActiveIdle2,
- aPluginUid,
- aName );
- }
- return err;
- }
-
-void CAiPluginActivityRegistry::CleanLastEntry( TInt aPluginUid,
- TInt aOrdinal,
- TInt aLastCount )
- {
- RProperty::Delete( KPSUidActiveIdle2, aOrdinal );
- RProperty::Delete( KPSUidActiveIdle2, aPluginUid );
- if( aLastCount == 0 )
- {
- RProperty::Delete( KPSUidActiveIdle2, KAIActivePluginCount );
- }
- else
- {
- RProperty::Set(
- KPSUidActiveIdle2,
- KAIActivePluginCount,
- aLastCount );
- }
- }
--- a/idlefw/src/framework/aipluginfactory.cpp Wed Mar 03 15:38:34 2010 +0200
+++ b/idlefw/src/framework/aipluginfactory.cpp Wed May 12 13:36:47 2010 +0300
@@ -18,86 +18,107 @@
// System includes
#include <ecom/ecom.h>
#include <ecom/implementationinformation.h>
-#include <AknGlobalNote.h>
-#include <StringLoader.h>
-#include <e32property.h> // For RProperty
// User includes
+#include <aisystemuids.hrh>
+#include <hscontentpublisher.h>
+#include <hspublisherinfo.h>
#include <aicontentobserver.h>
-#include <aiutility.h>
-#include <aiplugintool.h>
-#include <activeidle2domainpskeys.h> // PubSub category
-#include <activeidle2internalpskeys.h> // PubSub category key and values
-
+#include <aiuicontroller.h>
+#include "caicpscommandbuffer.h"
+#include "aiuicontrollermanager.h"
#include "aipluginfactory.h"
-#include "aicontentpluginmanager.h"
-#include "aipluginlifecycleobserver.h"
+#include "debug.h"
+
+// Constants
+const TUid KDeviceStatusPluginUid =
+ { AI_UID_ECOM_IMPLEMENTATION_CONTENTPUBLISHER_DEVSTAPLUGIN };
-#include "aiuicontroller.h"
-#include "aifwpanic.h"
-#include "debug.h"
+const TUid KProfilePluginUid =
+ { AI_UID_ECOM_IMPLEMENTATION_CONTENTPUBLISHER_PROFILEPLUGIN };
+
+_LIT( KDeviceStatusPluginName, "DeviceStatus" );
+_LIT( KProfilePluginName, "Profile" );
// ======== LOCAL FUNCTIONS ========
// ----------------------------------------------------------------------------
-// CleanupResetAndDestroy()
+// IsRecyclable()
+//
// ----------------------------------------------------------------------------
//
-template<class T>
-static void CleanupResetAndDestroy( TAny* aObj )
+TBool IsRecyclable( const THsPublisherInfo& aInfo )
{
- if( aObj )
+ if ( ( aInfo.Name() == KProfilePluginName &&
+ aInfo.Uid() == KProfilePluginUid ) ||
+ ( aInfo.Name() == KDeviceStatusPluginName &&
+ aInfo.Uid() == KDeviceStatusPluginUid ) )
{
- static_cast<T*>( aObj )->ResetAndDestroy();
+ return ETrue;
}
+
+ return EFalse;
+ }
+
+// ----------------------------------------------------------------------------
+// CleanupResetAndDestroy()
+//
+// ----------------------------------------------------------------------------
+//
+template< class T >
+static void CleanupResetAndDestroy( TAny* aObj )
+ {
+ static_cast< T* >( aObj )->ResetAndDestroy();
}
// ----------------------------------------------------------------------------
// CleanupResetAndDestroyPushL()
+//
// ----------------------------------------------------------------------------
//
-template<class T>
-static void CleanupResetAndDestroyPushL(T& aArray)
+template< class T >
+static void CleanupResetAndDestroyPushL( T& aArray )
{
- CleanupStack::PushL( TCleanupItem( &CleanupResetAndDestroy<T>, &aArray ) );
+ CleanupStack::PushL(
+ TCleanupItem( &CleanupResetAndDestroy< T >, &aArray ) );
}
// ======== MEMBER FUNCTIONS ========
// ----------------------------------------------------------------------------
// CAiPluginFactory::CAiPluginFactory()
+//
// ----------------------------------------------------------------------------
//
-CAiPluginFactory::CAiPluginFactory(
- RPointerArray<CAiContentPublisher>& aPlugins,
- CAiContentPluginManager& aManager )
- : iPlugins( aPlugins ), iManager( aManager )
+CAiPluginFactory::CAiPluginFactory( CAiUiControllerManager& aManager )
+ : iUiControllerManager( aManager )
{
}
// ----------------------------------------------------------------------------
// CAiPluginFactory::~CAiPluginFactory()
+//
// ----------------------------------------------------------------------------
//
CAiPluginFactory::~CAiPluginFactory()
- {
- Release( iPluginTool );
-
- iEComPlugins.ResetAndDestroy();
-
- iLifecycleObservers.Reset();
+ {
+ // All publishers should be already deleted from CAiFw::HandleUiShutdown
+ iPublishers.ResetAndDestroy();
+
+ iEComPlugins.ResetAndDestroy();
+
+ REComSession::FinalClose();
}
// ----------------------------------------------------------------------------
// CAiPluginFactory::NewL()
+//
// ----------------------------------------------------------------------------
//
-CAiPluginFactory* CAiPluginFactory::NewL(
- RPointerArray<CAiContentPublisher>& aPlugins,
- CAiContentPluginManager& aManager )
+CAiPluginFactory* CAiPluginFactory::NewL( CAiUiControllerManager& aManager )
{
CAiPluginFactory* self =
- new ( ELeave ) CAiPluginFactory( aPlugins, aManager );
+ new ( ELeave ) CAiPluginFactory( aManager );
CleanupStack::PushL( self );
self->ConstructL();
@@ -107,222 +128,201 @@
// ----------------------------------------------------------------------------
// CAiPluginFactory::ConstructL()
+//
// ----------------------------------------------------------------------------
//
void CAiPluginFactory::ConstructL()
- {
- iPluginTool = AiUtility::CreatePluginToolL();
+ {
+ REComSession::ListImplementationsL(
+ KInterfaceUidHsContentPlugin, iEComPlugins );
}
// ----------------------------------------------------------------------------
-// CAiPluginFactory::AddLifecycleObserverL()
-// ----------------------------------------------------------------------------
+// CAiPluginFactory::CreatePluginL()
//
-void CAiPluginFactory::AddLifecycleObserverL(
- MAiPluginLifecycleObserver& aObserver )
- {
- if( iLifecycleObservers.Find( &aObserver ) == KErrNotFound )
- {
- iLifecycleObservers.AppendL( &aObserver );
- }
- }
-
-// ----------------------------------------------------------------------------
-// CAiPluginFactory::CreatePluginL()
// ----------------------------------------------------------------------------
//
-void CAiPluginFactory::CreatePluginL(
- const TAiPublisherInfo& aPublisherInfo,
- RPointerArray<CAiUiController>& aControllerArray )
- {
- iEComPlugins.ResetAndDestroy();
-
- // Discover Plugin implementations.
- __TIME_MARK( ecomOverhead );
-
- REComSession::ListImplementationsL(
- KInterfaceUidContentPlugin, iEComPlugins );
-
- __TIME_ENDMARK( "FW: ECom Discover plug-ins", ecomOverhead );
-
- iPlugins.ReserveL( iPlugins.Count() + 1 );
-
+TInt CAiPluginFactory::CreatePlugin(
+ const THsPublisherInfo& aPublisherInfo )
+ {
+ __PRINTS( "*** CAiPluginFactory::CreatePlugin: Start ***" );
+
+ if ( IsRecyclable( aPublisherInfo ) )
+ {
+ CHsContentPublisher* plugin( PluginByUid( aPublisherInfo.Uid() ) );
+
+ if ( plugin )
+ {
+ if ( aPublisherInfo.Namespace() == KNullDesC8 )
+ {
+ // No namespace available
+ __PRINTS( "*** CAiPluginFactory::CreatePlugin: Done -\
+ Failed to Load Plug-in: KErrNotSupported ***" );
+ return KErrNotSupported;
+ }
+
+ // Plugin already exists, update its namespace
+ THsPublisherInfo& info(
+ const_cast< THsPublisherInfo& >( plugin->PublisherInfo() ) );
+
+ info.iNamespace.Copy( aPublisherInfo.Namespace() );
+
+ __PRINTS( "*** CAiPluginFactory::CreatePlugin: Done -\
+ Plugin recycled ***" );
+
+ return KErrNone;
+ }
+ }
+
TBool implFound( EFalse );
-
+
for( TInt i = 0; i < iEComPlugins.Count(); i++ )
{
CImplementationInformation* information( iEComPlugins[i] );
-
- if( information->ImplementationUid().iUid == aPublisherInfo.iUid.iUid )
+
+ if( information->ImplementationUid().iUid == aPublisherInfo.Uid().iUid )
{
implFound = ETrue;
break;
}
}
- if( aPublisherInfo.iNamespace == KNullDesC8 || !implFound )
+ if( aPublisherInfo.Namespace() == KNullDesC8 || !implFound )
{
- // No namespace available or no ecom implementation available
- User::Leave( KErrNotSupported );
- }
-
- CAiContentPublisher* plugin( PluginByInfoL( aPublisherInfo ) );
-
- if( plugin )
- {
- User::Leave( KErrAlreadyExists );
+ // No namespace available or no ecom implementation available
+ __PRINTS( "*** CAiPluginFactory::CreatePlugin: Done -\
+ Failed to Load Plug-in: KErrNotSupported ***" );
+
+ return KErrNotSupported;
}
- __PRINT( __DBG_FORMAT( "\t[I]\t Loading plug-in uid=%x name=%S"),
- aPublisherInfo.iUid, &(aPublisherInfo.iName) );
-
- __TIME( "FW: Create plug-in:",
- plugin = CreatePluginLC( aPublisherInfo );
- ) // __TIME
-
- __TIME( "FW: Subscribe content observers",
- SubscribeContentObserversL( *plugin,
- aPublisherInfo, aControllerArray );
- ) // __TIME
-
- // Plug-in settings
- __TIME( "FW: Configure Plugin",
- ConfigurePluginL( aControllerArray, *plugin, aPublisherInfo );
- ) // __TIME
-
- __PRINTS( "*** FW: Done - Load Plug-in ***" );
+ CHsContentPublisher* plugin( PluginByInfo( aPublisherInfo ) );
+
+ if( plugin )
+ {
+ __PRINTS( "*** CAiPluginFactory::CreatePlugin: Done -\
+ Failed to Load Plug-in: KErrAlreadyExists ***" );
+
+ return KErrAlreadyExists;
+ }
+
+ TInt err( KErrNone );
+
+ TRAP( err, CreatePluginL( aPublisherInfo ) );
- // This might fail and the plugin ends up destroyed
- for( TInt i = 0; i < iLifecycleObservers.Count(); ++i )
- {
- iLifecycleObservers[i]->PluginCreatedL( *plugin );
- }
-
- for( TInt i = 0; i < iLifecycleObservers.Count(); ++i )
- {
- iLifecycleObservers[i]->AllPluginsCreated();
- }
-
- // Move plugins to manager
- iPlugins.Append( plugin );
- CleanupStack::Pop( plugin );
-
- iEComPlugins.ResetAndDestroy();
+ __PRINTS( "*** CAiPluginFactory::CreatePlugin: Done - Load Plug-in ***" );
+
+ return err;
}
-
+
// ----------------------------------------------------------------------------
-// CAiPluginFactory::DestroyPluginL()
+// CAiPluginFactory::DestroyPlugin()
+//
// ----------------------------------------------------------------------------
//
-void CAiPluginFactory::DestroyPluginL(
- const TAiPublisherInfo& aPublisherInfo,
- RPointerArray< CAiUiController >& /*aControllerArray*/ )
+void CAiPluginFactory::DestroyPlugin( const THsPublisherInfo& aPublisherInfo )
{
- // TODO: check is there need to call
- // iUiControllerManager->RemovePluginFromUI( aPlugin );
- // it will clean the published content.
+ __PRINTS( "*** CAiPluginFactory::DestroyPlugin: Start ***" );
- if( iPlugins.Count() == 0 )
+ if ( IsRecyclable( aPublisherInfo ) )
{
+ // Don't destroy recyclable plugin
+ __PRINTS( "*** CAiPluginFactory::DestroyPlugin: Done - Keeping recyclable Plug-in ***" );
+
return;
}
-
- CAiContentPublisher* plugin( PluginByInfoL( aPublisherInfo ) );
-
- TInt index( iPlugins.Find( plugin ) );
+
+ CHsContentPublisher* plugin( PluginByInfo( aPublisherInfo ) );
- if( plugin && index != KErrNotFound )
- {
- for( TInt i = 0; i < iLifecycleObservers.Count(); i++ )
- {
- iLifecycleObservers[i]->PluginDestroyed( *plugin );
- }
-
- iPlugins.Remove( index );
+ if ( plugin )
+ {
+ iPublishers.Remove( iPublishers.Find( plugin ) );
delete plugin;
- plugin = NULL;
+ plugin = NULL;
}
-
- if( iPlugins.Count() == 0 )
- {
- for( TInt i = 0; i < iLifecycleObservers.Count(); i++ )
- {
- iLifecycleObservers[i]->AllPluginsDestroyed();
- }
- }
+
+ __PRINTS( "*** CAiPluginFactory::DestroyPlugin: Done ***" );
}
// ----------------------------------------------------------------------------
-// CAiPluginFactory::DestroyPlugins()
+// CAiPluginFactory::DestroyPlugin()
+//
// ----------------------------------------------------------------------------
//
-void CAiPluginFactory::DestroyPlugins()
+void CAiPluginFactory::DestroyPlugin( const TUid& aUid )
{
- for( TInt i = 0; i < iPlugins.Count(); i++ )
+ __PRINTS( "*** CAiPluginFactory::DestroyPlugin: Start ***" );
+
+ CHsContentPublisher* plugin( PluginByUid( aUid ) );
+
+ while ( plugin )
{
- CAiContentPublisher* plugin( iPlugins[i] );
+ iPublishers.Remove( iPublishers.Find( plugin ) );
- for( TInt i = 0; i < iLifecycleObservers.Count(); i++ )
- {
- iLifecycleObservers[i]->PluginDestroyed( *plugin );
- }
+ __PRINT( __DBG_FORMAT(
+ "CAiPluginFactory::DestroyPlugin: name: %S" ), &plugin->PublisherInfo().Name() );
+
+ delete plugin;
+ plugin = NULL;
}
+
+ __PRINTS( "*** CAiPluginFactory::DestroyPlugin: Done ***" );
+ }
- iPlugins.ResetAndDestroy();
-
- for( TInt i = 0; i < iLifecycleObservers.Count(); i++ )
- {
- iLifecycleObservers[i]->AllPluginsDestroyed();
- }
- }
-
// ----------------------------------------------------------------------------
-// CAiPluginFactory::CreatePluginLC()
+// CAiPluginFactory::CreatePluginL()
+//
// ----------------------------------------------------------------------------
//
-CAiContentPublisher* CAiPluginFactory::CreatePluginLC(
- const TAiPublisherInfo& aPluginInfo )
- {
- CAiContentPublisher* plugin =
- CAiContentPublisher::NewL( aPluginInfo.iUid );
+void CAiPluginFactory::CreatePluginL(
+ const THsPublisherInfo& aPublisherInfo )
+ {
+ __PRINT( __DBG_FORMAT( "\t[I]\t Loading plug-in uid=%x name=%S"),
+ aPublisherInfo.Uid(), &(aPublisherInfo.Name() ) );
+
+ iPublishers.ReserveL( iPublishers.Count() + 1 );
+
+ CHsContentPublisher* plugin( NULL );
+
+ __TIME( "CAiPluginFactory::CreatePluginL Create plug-in:",
+ plugin = CHsContentPublisher::NewL( aPublisherInfo ) );
CleanupStack::PushL( plugin );
-
- MAiPropertyExtension* ext( iPluginTool->PropertyExt( *plugin ) );
- if( !ext )
- {
- User::Leave( KErrNotFound );
- }
+ // Ensure interface is available
+ iCommandBuffer->GetCPSInterfaceL();
- ext->SetPropertyL( EAiPublisherInfo, (TAny*)&aPluginInfo );
+ plugin->SetProperty( CHsContentPublisher::ECpsCmdBuffer,
+ static_cast< MAiCpsCommandBuffer* >( iCommandBuffer ) );
- const TAiPublisherInfo* info( ext->PublisherInfoL() );
+ __TIME( "FW: Subscribe content observers",
+ SubscribeContentObserversL( *plugin, aPublisherInfo ) );
+
+ __TIME( "FW: Configure Plugin",
+ ConfigurePluginL( *plugin, aPublisherInfo ) );
- if( info->iNamespace != aPluginInfo.iNamespace )
- {
- // SetPropertyL is not implemented correctly
- User::Leave( KErrNotSupported );
- }
-
- return plugin;
+ // Take plugin's ownership
+ iPublishers.Append( plugin );
+ CleanupStack::Pop( plugin );
}
// ----------------------------------------------------------------------------
// CAiPluginFactory::SubscribeContentObserversL()
+//
// ----------------------------------------------------------------------------
//
void CAiPluginFactory::SubscribeContentObserversL(
- CAiContentPublisher& aContentPublisher,
- const TAiPublisherInfo& aPublisherInfo,
- RPointerArray<CAiUiController>& aControllerArray )
- {
-
- for( TInt i = 0; i < aControllerArray.Count(); i++ )
+ CHsContentPublisher& aContentPublisher,
+ const THsPublisherInfo& aPublisherInfo )
+ {
+ RPointerArray< CAiUiController >&
+ controllers( iUiControllerManager.UiControllers() );
+
+ for( TInt i = 0; i < controllers.Count(); i++ )
{
MAiContentObserver& observer(
- aControllerArray[i]->GetContentObserver() );
+ controllers[i]->GetContentObserver() );
if ( observer.RequiresSubscription( aPublisherInfo ) )
{
@@ -334,44 +334,46 @@
// ----------------------------------------------------------------------------
// CAiPluginFactory::ConfigurePluginL()
+//
// ----------------------------------------------------------------------------
//
-void CAiPluginFactory::ConfigurePluginL(
- RPointerArray<CAiUiController>& aControllerArray,
- CAiContentPublisher& aContentPublisher,
- const TAiPublisherInfo& aPubInfo )
+void CAiPluginFactory::ConfigurePluginL(
+ CHsContentPublisher& aContentPublisher,
+ const THsPublisherInfo& aPublisherInfo )
{
- RAiSettingsItemArray pluginSettings;
- CleanupResetAndDestroyPushL( pluginSettings );
+ RAiSettingsItemArray settings;
+ CleanupResetAndDestroyPushL( settings );
- for( TInt i = 0; i < aControllerArray.Count(); i++ )
+ RPointerArray< CAiUiController >&
+ controllers( iUiControllerManager.UiControllers() );
+
+ for( TInt i = 0; i < controllers.Count(); i++ )
{
// Get settings for plug-in
- aControllerArray[i]->GetSettingsL( aPubInfo, pluginSettings );
+ controllers[i]->GetSettingsL( aPublisherInfo, settings );
}
// Configure plug-in with its settings
- aContentPublisher.ConfigureL( pluginSettings );
+ aContentPublisher.ConfigureL( settings );
- CleanupStack::PopAndDestroy( &pluginSettings );
+ CleanupStack::PopAndDestroy( &settings );
}
// ----------------------------------------------------------------------------
-// CAiPluginFactory::PluginByInfoL()
+// CAiPluginFactory::PluginByInfo()
+// Gets plugin by publisher info. Only this overload returns the exact match
// ----------------------------------------------------------------------------
//
-CAiContentPublisher* CAiPluginFactory::PluginByInfoL(
- const TAiPublisherInfo& aInfo ) const
+CHsContentPublisher* CAiPluginFactory::PluginByInfo(
+ const THsPublisherInfo& aPublisherInfo ) const
{
- for( TInt i = 0; i < iPlugins.Count(); i++ )
+ for( TInt i = 0; i < iPublishers.Count(); i++ )
{
- const TAiPublisherInfo* info( NULL );
-
- info = iPluginTool->PublisherInfoL( *iPlugins[i] );
-
- if( info && ( aInfo == *info ) )
+ const THsPublisherInfo& info( iPublishers[i]->PublisherInfo() );
+
+ if( aPublisherInfo == info )
{
- return iPlugins[i];
+ return iPublishers[i];
}
}
@@ -379,25 +381,64 @@
}
// ----------------------------------------------------------------------------
-// CAiPluginFactory::PluginByNameL()
+// CAiPluginFactory::PluginByUid()
+// Gets plugin by UID
// ----------------------------------------------------------------------------
//
-CAiContentPublisher* CAiPluginFactory::PluginByNameL(
+CHsContentPublisher* CAiPluginFactory::PluginByUid( const TUid& aUid ) const
+ {
+ for( TInt i = 0; i < iPublishers.Count(); i++ )
+ {
+ const THsPublisherInfo& info( iPublishers[i]->PublisherInfo() );
+
+ if( info.Uid() == aUid )
+ {
+ return iPublishers[i];
+ }
+ }
+
+ return NULL;
+ }
+
+// ----------------------------------------------------------------------------
+// CAiPluginFactory::PluginByName()
+// Gets plugin by name
+// ----------------------------------------------------------------------------
+//
+CHsContentPublisher* CAiPluginFactory::PluginByName(
const TDesC& aName ) const
{
- for( TInt i = 0; i < iPlugins.Count(); i++ )
+ for( TInt i = 0; i < iPublishers.Count(); i++ )
{
- const TAiPublisherInfo* info( NULL );
-
- TRAP_IGNORE( info = iPluginTool->PublisherInfoL( *iPlugins[i] ) );
-
- if( info && info->iName == aName )
+ const THsPublisherInfo& info( iPublishers[i]->PublisherInfo() );
+
+ if( info.Name() == aName )
{
- return iPlugins[i];
+ return iPublishers[i];
}
}
return NULL;
}
+// ----------------------------------------------------------------------------
+// CAiPluginFactory::Publishers()
+//
+// ----------------------------------------------------------------------------
+//
+RPointerArray< CHsContentPublisher >& CAiPluginFactory::Publishers() const
+ {
+ return iPublishers;
+ }
+
+// ----------------------------------------------------------------------------
+// CAiPluginFactory::SetCommandBuffer()
+//
+// ----------------------------------------------------------------------------
+//
+void CAiPluginFactory::SetCommandBuffer( CAiCpsCommandBuffer* aCommandBuffer )
+ {
+ iCommandBuffer = aCommandBuffer;
+ }
+
// End of file
--- a/idlefw/src/framework/aipluginstatemachineimpl.cpp Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,220 +0,0 @@
-/*
-* Copyright (c) 2005-2006 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: Plugin state machine impl
-*
-*/
-
-
-#include "aipluginstatemachineimpl.h"
-#include "aipluginstatemachine.h"
-#include "aipluginlifecycleobserver.h"
-#include "aipluginstate.h"
-#include "aifwpanic.h"
-
-// ======== MEMBER FUNCTIONS ========
-
-// ---------------------------------------------------------------------------
-// CAiPluginStateMachine::CAiPluginStateMachine()
-// ----------------------------------------------------------------------------
-//
-CAiPluginStateMachine::CAiPluginStateMachine(
- MAiPluginStateResources& aPluginStateResource,
- CAiContentPublisher& aPlugin )
- : iAlive( *this ),
- iCurrentState( NULL ),
- iPluginStateResource( aPluginStateResource ),
- iPlugin( aPlugin )
- {
- }
-
-// ---------------------------------------------------------------------------
-// CAiPluginStateMachine::SwitchToState()
-// ----------------------------------------------------------------------------
-//
-void CAiPluginStateMachine::SwitchToState( TAiState aState,
- TAiStateChanges aStateChange )
- {
- // Store previous state
- MAiPluginState* previousState( iCurrentState );
-
- // Determine new current state
- switch( aState )
- {
- case EAiAlive:
- {
- iCurrentState = &iAlive;
- break;
- }
- case EAiSuspended:
- {
- iCurrentState = &iSuspended;
- break;
- }
- case EAiIdle:
- {
- iCurrentState = &iIdle;
- break;
- }
- default:
- {
-#ifdef _DEBUG
- AiFwPanic::Panic( AiFwPanic::EAiFwPanic_IllegalPluginStateChange );
-#endif
- break;
- }
- }
-
- if( previousState != iCurrentState )
- {
- if( previousState )
- {
- // Exit the previous state
- previousState->Exit( *this, aStateChange );
- }
-
- if( iCurrentState )
- {
- // Enter the new state
- iCurrentState->Enter( *this, aStateChange );
- }
- }
- }
-
-// ---------------------------------------------------------------------------
-// CAiPluginStateMachine::StateVariable()
-// ----------------------------------------------------------------------------
-//
-TBool CAiPluginStateMachine::StateVariable( TAiStateVariable aStateVariable )
- {
- return iPluginStateResource.StateVariable( aStateVariable );
- }
-
-// ---------------------------------------------------------------------------
-// CAiPluginStateMachine::Plugin()
-// ----------------------------------------------------------------------------
-//
-CAiContentPublisher& CAiPluginStateMachine::Plugin() const
- {
- return iPlugin;
- }
-
-// ---------------------------------------------------------------------------
-// CAiPluginStateMachine::HandleEvent()
-// ----------------------------------------------------------------------------
-//
-TBool CAiPluginStateMachine::HandleEvent( TAiStateChanges aStateChange )
- {
- // State machine handles some state changes directly.
- switch( aStateChange )
- {
- case ESMAISystemBoot:
- {
- // State machine handles startup event(boot/theme change).
- // Check if backup is ongoing
- if( iPluginStateResource.StateVariable( ESMAIBackupRestoreStatus ) )
- {
- SwitchToState( EAiIdle, aStateChange );
- }
- else
- {
- SwitchToState( EAiAlive, aStateChange );
- }
- break;
- }
- case ESMAIBackupOn:
- {
- // Backup/restore directs straight to idle state.
- SwitchToState( EAiIdle, aStateChange );
- break;
- }
- case ESMAIReportThemeChangeStarted:
- case ESMAISystemShutdown:
- {
- // Shutdown drives directly to idle state.
- ChangePluginState( iPluginStateResource.TranslateReason( aStateChange ),
- CAiContentPublisher::Stop );
- break;
- }
- case ESMAIOnLine:
- {
- if( !iOnline && iCurrentState )
- {
- iOnline = ETrue;
-
- return iCurrentState->HandleEvent( *this, aStateChange );
- }
- break;
- }
- case ESMAIOffLine:
- {
- if( iCurrentState )
- {
- iOnline = EFalse;
-
- return iCurrentState->HandleEvent( *this, aStateChange );
- }
- break;
- }
- default:
- {
- if( ( aStateChange == ESMAIBacklightOn ) &&
- !iPluginStateResource.StateVariable( ESMAIIdleFocusStatus ) )
- {
- // Ignore lights on when on background
- return ETrue;
- }
-
- if( iCurrentState )
- {
- // Other events are handled by the current set state.
- // Current state determines return value.
- return iCurrentState->HandleEvent( *this, aStateChange );
- }
- }
- }
-
- // Return event handled.
- return ETrue;
- }
-
-// ---------------------------------------------------------------------------
-// CAiPluginStateMachine::TranslateReason()
-// ----------------------------------------------------------------------------
-//
-TAiTransitionReason CAiPluginStateMachine::TranslateReason(
- TAiStateChanges aStateChange )
- {
- return iPluginStateResource.TranslateReason( aStateChange );
- }
-
-// ---------------------------------------------------------------------------
-// CAiPluginStateMachine::RestartSuspendTimer()
-// ----------------------------------------------------------------------------
-//
-void CAiPluginStateMachine::RestartSuspendTimer()
- {
- iPluginStateResource.RestartSuspendTimer();
- }
-
-// ---------------------------------------------------------------------------
-// CAiPluginStateMachine::ChangePluginState()
-// ----------------------------------------------------------------------------
-//
-void CAiPluginStateMachine::ChangePluginState( TAiTransitionReason aReason,
- void (CAiContentPublisher::*aStateChangeMethod)( TAiTransitionReason ) )
- {
- TRAP_IGNORE( ( iPlugin.*aStateChangeMethod)( aReason ) );
- }
-
-// End of file.
--- a/idlefw/src/framework/aipluginstatemanager.cpp Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,549 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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: System state observer and notifier
-*
-*/
-
-
-#include <connect/sbdefs.h>
-#include <aipspropertyobserver.h>
-#include <settingsinternalcrkeys.h> // for KSettingsScreenSaverPeriod
-#include <e32property.h>
-#include <aiutility.h>
-#include <e32base.h>
-#include <centralrepository.h>
-#include <activeidle2domaincrkeys.h>
-#include "aifwpanic.h"
-#include "aipluginstatemanager.h"
-#include "aipluginstatemachineimpl.h"
-#include "ailightstatusobserver.h"
-#include "aicallstatusobserver.h"
-#include "aifocusobserver.h"
-#include "aikeylockobserver.h"
-#include "aibackuprestorestatusobserver.h"
-#include "aienvironmentchangeobserver.h"
-#include "aiuiframeworkobserverimpl.h"
-
-#include <ScreensaverInternalPSKeys.h> // this include needs to be last
-
-#include "debug.h"
-
-const TInt KMinuteInSeconds( 60 );
-const TInt KSecondInMikroSeconds( 1000*1000 );
-const TInt KAIFadeOutEstimateMikroSeconds( 10 * KSecondInMikroSeconds );
-const TInt KTwoMinutesInMikroSeconds( 2 * KMinuteInSeconds * KSecondInMikroSeconds );
-
-#define AI2_OPTION_RESUME_AT_CREATION
-
-// ======== MEMBER FUNCTIONS ========
-
-// ----------------------------------------------------------------------------
-// CAiPluginStateManager::NewL()
-// ----------------------------------------------------------------------------
-//
-CAiPluginStateManager* CAiPluginStateManager::NewL()
- {
- CAiPluginStateManager* self = new (ELeave) CAiPluginStateManager;
-
- CleanupStack::PushL( self );
- self->ConstructL();
- CleanupStack::Pop( self );
-
- return self;
- }
-
-// ----------------------------------------------------------------------------
-// CAiPluginStateManager::~CAiPluginStateManager()
-// ----------------------------------------------------------------------------
-//
-CAiPluginStateManager::~CAiPluginStateManager()
- {
- iStateMachines.ResetAndDestroy();
-
- DestroySystemStateObservers();
- }
-
-// ----------------------------------------------------------------------------
-// CAiPluginStateManager::CAiPluginStateManager()
-// ----------------------------------------------------------------------------
-//
-CAiPluginStateManager::CAiPluginStateManager()
- {
- }
-
-// ----------------------------------------------------------------------------
-// CAiPluginStateManager::ConstructL()
-// ----------------------------------------------------------------------------
-//
-void CAiPluginStateManager::ConstructL()
- {
- TInt value( 0 );
-
- TInt err( RProperty::Get( KCRUidPersonalizationSettings,
- KSettingsScreenSaverPeriod, value ) );
-
- if( err == KErrNone )
- {
- iT1Delay = ( value * KMinuteInSeconds * KSecondInMikroSeconds )
- + KAIFadeOutEstimateMikroSeconds;
- }
- else
- {
- // default when error to 2 minutes
- iT1Delay = KTwoMinutesInMikroSeconds;
- }
- }
-
-// ----------------------------------------------------------------------------
-// CAiPluginStateManager::CreateSystemStateObserversL()
-// ----------------------------------------------------------------------------
-//
-void CAiPluginStateManager::CreateSystemStateObserversL()
- {
- iT1Timer = CPeriodic::NewL( CActive::EPriorityStandard );
-
- iBackupOperationObserver = CAiBackupRestoreStatusObserver::NewL( this );
-
- iCallStateObserver = CAiCallStatusObserver::NewL( this );
-
- iLightStateObserver = CAiLightStatusObserver::NewL( this );
-
- iFocusObserver = CAiFocusObserver::NewL( this );
-
- iKeylockObserver = CAiKeylockObserver::NewL( this );
-
- // Environment change observer notifies time/date/midnight/language
- // changes
- iEnvironmentObserver = CAiEnvironmentChangeObserver::NewL( this );
-
- // Ui framework observer notifies currently general theme changes
- iFrameworkObserver = CAiUiFrameworkObserverImpl::NewL( *this );
- }
-
-// ----------------------------------------------------------------------------
-// CAiPluginStateManager::DestroySystemStateObservers()
-// ----------------------------------------------------------------------------
-//
-void CAiPluginStateManager::DestroySystemStateObservers()
- {
- if( iT1Timer )
- {
- iT1Timer->Cancel();
-
- delete iT1Timer;
- iT1Timer = NULL;
- }
-
- delete iBackupOperationObserver;
- iBackupOperationObserver = NULL;
-
- delete iCallStateObserver;
- iCallStateObserver = NULL;
-
- delete iLightStateObserver;
- iLightStateObserver = NULL;
-
- delete iFocusObserver;
- iFocusObserver = NULL;
-
- delete iKeylockObserver;
- iKeylockObserver = NULL;
-
- delete iEnvironmentObserver;
- iEnvironmentObserver = NULL;
-
- delete iFrameworkObserver;
- iFrameworkObserver = NULL;
- }
-
-// ----------------------------------------------------------------------------
-// CAiPluginStateManager::UiFwObserver()
-// ----------------------------------------------------------------------------
-//
-MAiUiFrameworkObserver* CAiPluginStateManager::UiFwObserver() const
- {
- return iFrameworkObserver;
- }
-
-// ----------------------------------------------------------------------------
-// CAiPluginStateManager::ReportStateChange()
-// ----------------------------------------------------------------------------
-//
-void CAiPluginStateManager::ReportStateChange( TAiStateChanges aState )
- {
- if( !iIsDeviceStarted )
- {
- if( aState == ESMAISystemBoot )
- {
- iIsDeviceStarted = ETrue;
- }
- }
-
- if( aState == ESMAISystemBoot )
- {
- return;
- }
-
- ProcessStateChangeForAll( aState );
- }
-
-// ----------------------------------------------------------------------------
-// CAiPluginStateManager::StateVariable()
-// ----------------------------------------------------------------------------
-//
-TBool CAiPluginStateManager::StateVariable( TAiStateVariable aStateChange )
- {
- switch ( aStateChange )
- {
- case ESMAICallStatus:
- {
- return CallOngoing();
- }
- case ESMAILightStatus:
- {
- return LightsOn();
- }
- case ESMAIBackupRestoreStatus:
- {
- return BackupOngoing();
- }
- case ESMAIIdleFocusStatus:
- {
- return IdleFocused();
- }
- default:
- {
- return EFalse;
- }
- }
- }
-
-// ----------------------------------------------------------------------------
-// CAiPluginStateManager::RestartSuspendTimer()
-// ----------------------------------------------------------------------------
-//
-void CAiPluginStateManager::RestartSuspendTimer()
- {
- if( iT1Timer )
- {
- iT1Timer->Cancel();
-
- iT1Timer->Start( iT1Delay, iT1Delay,
- TCallBack( T1TimerCallback, this ) );
- }
- }
-
-// ----------------------------------------------------------------------------
-// CAiPluginStateManager::PluginCreatedL()
-// ----------------------------------------------------------------------------
-//
-void CAiPluginStateManager::PluginCreatedL( CAiContentPublisher& aPlugin )
- {
- // Create a new state machine for the plugin from the heap
- // and append the machine to our local array.
- CAiPluginStateMachine* machine =
- new ( ELeave ) CAiPluginStateMachine( *this, aPlugin );
-
- // Important to append first so failure will be handled properly
- CleanupStack::PushL( machine );
- iStateMachines.AppendL( machine );
- CleanupStack::Pop( machine );
-
- // This will effectively resume the plugin NOW.
- ProcessStateChange( ESMAISystemBoot, *machine );
- }
-
-// ----------------------------------------------------------------------------
-// CAiPluginStateManager::PluginDestroyed()
-// ----------------------------------------------------------------------------
-//
-void CAiPluginStateManager::PluginDestroyed( CAiContentPublisher& aPlugin )
- {
- // plugin has beed destroyed, remove the state machine also
- for( TInt i = 0; i < iStateMachines.Count(); i++ )
- {
- if( &iStateMachines[i]->Plugin() == &aPlugin )
- {
- iStateMachines[i]->HandleEvent( ESMAISystemShutdown );
- delete iStateMachines[i];
-
- iStateMachines.Remove( i );
- break;
- }
- }
- }
-
-// ----------------------------------------------------------------------------
-// CAiPluginStateManager::AllPluginsCreated()
-// ----------------------------------------------------------------------------
-//
-void CAiPluginStateManager::AllPluginsCreated()
- {
- // Currently we get this event via pluginmanager -> aifw -> EAISMSystemBoot event
- // so no implementation required. We might want to handle this locally in the
- // future though. Current impl is such because RefreshUI for ui controller
- // needs to after the plugins are resumed -> If we handle this here it is not
- // garanteed.
- }
-
-// ----------------------------------------------------------------------------
-// CAiPluginStateManager::AllPluginsDestroyed()
-// ----------------------------------------------------------------------------
-//
-void CAiPluginStateManager::AllPluginsDestroyed()
- {
- // Plugins have been destroyed, so destroy the state machines also.
- iStateMachines.ResetAndDestroy();
- }
-
-// ----------------------------------------------------------------------------
-// CAiPluginStateManager::TranslateReason()
-// ----------------------------------------------------------------------------
-//
-TAiTransitionReason CAiPluginStateManager::TranslateReason(
- TAiStateChanges aStateChange )
- {
- switch ( aStateChange )
- {
- case ESMAIBacklightOn:
- {
- return EAiBacklightOn;
- }
- case ESMAIBacklightOff:
- {
- return EAiBacklightOff;
- }
- case ESMAIBackupOn:
- {
- return EAiBackupRestoreStarted;
- }
- case ESMAIBackupOff:
- {
- return EAiBackupRestoreEnded;
- }
- case ESMAIInCall:
- {
- return EAiPhoneCallStarted;
- }
- case ESMAINoCall:
- {
- return EAiPhoneCallEnded;
- }
- case ESMAISystemBoot:
- {
- return EAiSystemStartup;
- }
- case ESMAILocaleChanged:
- {
- return EAiLanguageChanged;
- }
- case ESMAIIdleForeground:
- {
- return EAiIdleForeground;
- }
- case ESMAIIdleBackground:
- {
- return EAiIdleBackground;
- }
- case ESMAITimeChanged:
- {
- return EAiTimeChanged;
- }
- case ESMAIMidnightCrossover:
- {
- return EAiMidnightPassed;
- }
- case ESMAIRelayoutScreen:
- {
- return EAiScreenLayoutChanged;
- }
- case ESMAIReportThemeChangeStarted:
- {
- return EAiUiDefinitionChangeStarted;
- }
- case ESMAIReportThemeChangeReady:
- {
- return EAiUiDefinitionChangeEnded;
- }
- case ESMAIGeneralThemeChanged:
- {
- return EAiGeneralThemeChanged;
- }
- case ESMAISystemShutdown:
- {
- return EAiSystemShutdown;
- }
- case ESMAIT1Timeout:
- {
- return EAiSuspendPlugins;
- }
- case ESMAIKeylockEnabled:
- {
- return EAiKeylockEnabled;
- }
- case ESMAIKeylockDisabled:
- {
- return EAiKeylockDisabled;
- }
- case ESMAIOffLine:
- {
- return EAiIdleOffLine;
- }
- case ESMAIOnLine:
- {
- return EAiIdleOnLine;
- }
- case ESMAIPageSwitch:
- {
- return EAiIdlePageSwitch;
- }
- case ESMAIUnknownState: // fallthrough
- default:
- {
- return EAiUnknownTransitionReason;
- }
- }
- }
-
-// ----------------------------------------------------------------------------
-// CAiPluginStateManager::ProcessStateChange()
-// ----------------------------------------------------------------------------
-//
-void CAiPluginStateManager::ProcessStateChange( TAiStateChanges aState,
- CAiPluginStateMachine& aMachine )
- {
- aMachine.HandleEvent( aState );
- }
-
-// ----------------------------------------------------------------------------
-// CAiPluginStateManager::ProcessOnlineState()
-// ----------------------------------------------------------------------------
-//
-void CAiPluginStateManager::ProcessOnlineState( CAiContentPublisher& aPlugin )
- {
- for ( TInt i = 0; i < iStateMachines.Count(); i++ )
- {
- if( &iStateMachines[i]->Plugin() == &aPlugin )
- {
- iStateMachines[i]->HandleEvent( ESMAIOnLine );
- break;
- }
- }
- }
-
-// ----------------------------------------------------------------------------
-// CAiPluginStateManager::ProcessOfflineState()
-// ----------------------------------------------------------------------------
-//
-void CAiPluginStateManager::ProcessOfflineState( CAiContentPublisher& aPlugin )
- {
- for ( TInt i = 0; i < iStateMachines.Count(); i++ )
- {
- if( &iStateMachines[i]->Plugin() == &aPlugin )
- {
- iStateMachines[i]->HandleEvent( ESMAIOffLine );
- break;
- }
- }
- }
-
-// ----------------------------------------------------------------------------
-// CAiPluginStateManager::ProcessStateChangeForAll()
-// ----------------------------------------------------------------------------
-//
-void CAiPluginStateManager::ProcessStateChangeForAll( TAiStateChanges aState )
- {
- for ( TInt i = 0; i < iStateMachines.Count(); ++i )
- {
- iStateMachines[i]->HandleEvent( aState );
- }
- }
-
-// ----------------------------------------------------------------------------
-// CAiPluginStateManager::IdleFocused()
-// ----------------------------------------------------------------------------
-//
-TBool CAiPluginStateManager::IdleFocused() const
- {
- if ( iFocusObserver )
- {
- return ( iFocusObserver->Status() == ESMAIIdleForeground );
- }
-
- return EFalse;
- }
-
-// ----------------------------------------------------------------------------
-// CAiPluginStateManager::BackupOngoing()
-// ----------------------------------------------------------------------------
-//
-TBool CAiPluginStateManager::BackupOngoing() const
- {
- if ( iBackupOperationObserver )
- {
- return ( iBackupOperationObserver->Status() == ESMAIBackupOn );
- }
-
- return EFalse;
- }
-
-// ----------------------------------------------------------------------------
-// CAiPluginStateManager::LightsOn()
-// ----------------------------------------------------------------------------
-//
-TBool CAiPluginStateManager::LightsOn() const
- {
- if ( iLightStateObserver )
- {
- return ( iLightStateObserver->Status() == ESMAIBacklightOn );
- }
-
- return EFalse;
- }
-
-// ----------------------------------------------------------------------------
-// CAiPluginStateManager::CallOngoing()
-// ----------------------------------------------------------------------------
-//
-TBool CAiPluginStateManager::CallOngoing() const
- {
- if ( iCallStateObserver )
- {
- return ( iCallStateObserver->Status() == ESMAIInCall );
- }
-
- return EFalse;
- }
-
-// ----------------------------------------------------------------------------
-// CAiPluginStateManager::T1TimerCallback()
-// ----------------------------------------------------------------------------
-//
-TInt CAiPluginStateManager::T1TimerCallback( TAny* aPtr )
- {
- CAiPluginStateManager* self =
- static_cast< CAiPluginStateManager* >( aPtr );
-
- __ASSERT_DEBUG( self,
- AiFwPanic::Panic( AiFwPanic::EAiFwPanic_NullPointerReference ) );
-
- self->iT1Timer->Cancel();
-
-// self->ProcessStateChangeForAll( ESMAIT1Timeout );
-
- return KErrNone;
- }
-
-// End of file
-
--- a/idlefw/src/framework/aipsstatusobserver.cpp Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,47 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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: Generic PS observer base class
-*
-*/
-
-
-#include <aiutility.h>
-#include <aipspropertyobserver.h>
-#include "aipsstatusobserver.h"
-
-CAiPSStatusObserver::~CAiPSStatusObserver()
- {
- if( iObserver )
- iObserver->Release();
- }
-
-TAiStateChanges CAiPSStatusObserver::Status()
- {
- return ESMAIUnknownState;
- }
-
-CAiPSStatusObserver::CAiPSStatusObserver()
- {
- }
-
-void CAiPSStatusObserver::BaseConstructL( TCallBack aCallBack,
- TUid aCategory,
- TInt aKey,
- MAiStateManager* aStateManager )
- {
- iStateManager = aStateManager;
- iObserver = AiUtility::CreatePSPropertyObserverL( aCallBack, aCategory, aKey );
- }
-
-// End of File.
--- a/idlefw/src/framework/aissaverstatusobserver.cpp Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,92 +0,0 @@
-/*
-* Copyright (c) 2005-2005 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 <aipspropertyobserver.h>
-#include "aissaverstatusobserver.h"
-#include <screensaverinternalpskeys.h> // this include needs to be last
-#include "aifwpanic.h"
-#include "debug.h"
-
-CAiSSaverStatusObserver::CAiSSaverStatusObserver()
- {
- }
-
-CAiSSaverStatusObserver::~CAiSSaverStatusObserver()
- {
- }
-
-CAiSSaverStatusObserver* CAiSSaverStatusObserver::NewL( MAiStateManager* aStateManager )
- {
- CAiSSaverStatusObserver* self = new (ELeave) CAiSSaverStatusObserver();
- CleanupStack::PushL(self);
- self->ConstructL( aStateManager );
- CleanupStack::Pop(self);
- return self;
- }
-
-void CAiSSaverStatusObserver::ConstructL( MAiStateManager* aStateManager )
- {
- BaseConstructL( TCallBack( HandleScreenSaverStateChanged, this ),
- KPSUidScreenSaver,
- KScreenSaverOn,
- aStateManager );
- }
-
-TAiStateChanges CAiSSaverStatusObserver::Status()
- {
- TInt value = 0;
- Tint err = iObserver->Get( value );
- if( ( value == 0 ) ||
- ( err != KErrNone ) )
- {
- return ESMAIScreensaverInactive;
- }
- else
- {
- return ESMAIScreensaverActive;
- }
- }
-
-TInt CAiSSaverStatusObserver::HandleScreenSaverStateChanged( TAny* aPtr )
- {
- CAiSSaverStatusObserver* self =
- static_cast<CAiSSaverStatusObserver*>( aPtr );
-
- __ASSERT_DEBUG( self,
- AiFwPanic::Panic( AiFwPanic::EAiFwPanic_NullPointerReference ) );
-
- TInt value = 0;
- TInt err = self->iObserver->Get( value );
-
- if ( ( value == 0 ) ||
- ( err != KErrNone ) )
- {
- // screensaver off
- __PRINTS("XAI: Screen saver = OFF");
- self->iStateManager->ReportStateChange( ESMAIScreensaverInactive );
- }
- else
- {
- // screensaver on
- __PRINTS("XAI: Screen saver = ON");
- self->iStateManager->ReportStateChange( ESMAIScreensaverActive );
- }
-
- return KErrNone;
- }
-
--- a/idlefw/src/framework/aistatealive.cpp Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,387 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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: State class for alive states
-*
-*/
-
-
-#include "aistatealive.h"
-#include "aipluginstatemachine.h"
-#include "debug.h"
-
-
-// ======== MEMBER FUNCTIONS ========
-
-// ----------------------------------------------------------------------------
-// TAiStateAliveActive::TAiStateAliveActive()
-// ----------------------------------------------------------------------------
-//
-TAiStateAliveActive::TAiStateAliveActive()
- {
- }
-
-// ----------------------------------------------------------------------------
-// TAiStateAliveActive::Enter()
-// ----------------------------------------------------------------------------
-//
-void TAiStateAliveActive::Enter( MAiPluginStateMachine& aStateMachine,
- TAiStateChanges aStateChange )
- {
- __PRINTS( "XAI: Enter Alive active" );
-
- const TAiTransitionReason reason(
- aStateMachine.TranslateReason( aStateChange ) );
-
- aStateMachine.ChangePluginState( reason, CAiContentPublisher::Resume );
- }
-
-// ----------------------------------------------------------------------------
-// TAiStateAliveActive::HandleEvent()
-// ----------------------------------------------------------------------------
-//
-TBool TAiStateAliveActive::HandleEvent( MAiPluginStateMachine& aStateMachine,
- TAiStateChanges aStateChange )
- {
- __PRINTS( "XAI: Alive active handles event" );
- switch( aStateChange )
- {
- case ESMAIBacklightOff:
- {
- aStateMachine.SwitchToState( EAiAliveInactive, aStateChange );
- return ETrue;
- }
- default:
- {
- return EFalse;
- }
- }
- }
-
-// ----------------------------------------------------------------------------
-// TAiStateAliveActive::Exit()
-// ----------------------------------------------------------------------------
-//
-void TAiStateAliveActive::Exit( MAiPluginStateMachine& /*aStateMachine*/,
- TAiStateChanges /*aStateChange*/ )
- {
- __PRINTS( "XAI: Exit alive active" );
- }
-
-// ======== MEMBER FUNCTIONS ========
-
-// ----------------------------------------------------------------------------
-// TAiStateAliveInactive::TAiStateAliveInactive()
-// ----------------------------------------------------------------------------
-//
-TAiStateAliveInactive::TAiStateAliveInactive()
- {
- }
-
-// ----------------------------------------------------------------------------
-// TAiStateAliveInactive::Enter()
-// ----------------------------------------------------------------------------
-//
-void TAiStateAliveInactive::Enter( MAiPluginStateMachine& aStateMachine,
- TAiStateChanges aStateChange )
- {
- __PRINTS( "XAI: Enter alive inactive" );
- const TAiTransitionReason reason(
- aStateMachine.TranslateReason( aStateChange ) );
-
- aStateMachine.ChangePluginState( reason, CAiContentPublisher::Resume );
-
- aStateMachine.RestartSuspendTimer();
- }
-
-// ----------------------------------------------------------------------------
-// TAiStateAliveInactive::HandleEvent()
-// ----------------------------------------------------------------------------
-//
-TBool TAiStateAliveInactive::HandleEvent( MAiPluginStateMachine& aStateMachine,
- TAiStateChanges aStateChange )
- {
- __PRINTS( "XAI: alive inactive handles event" );
- switch( aStateChange )
- {
- case ESMAIIdleForeground:
- case ESMAIBacklightOn:
- {
- aStateMachine.SwitchToState( EAiAliveActive, aStateChange );
- return ETrue;
- }
- case ESMAIT1Timeout:
- {
- aStateMachine.SwitchToState( EAiSuspended, aStateChange );
- return ETrue;
- }
- default:
- {
- return EFalse;
- }
- }
- }
-
-// ----------------------------------------------------------------------------
-// TAiStateAliveInactive::Exit()
-// ----------------------------------------------------------------------------
-//
-void TAiStateAliveInactive::Exit( MAiPluginStateMachine& /*aStateMachine*/,
- TAiStateChanges /*aStateChange*/ )
- {
- __PRINTS( "XAI: Exit alive inactive" );
- }
-
-
-// ======== MEMBER FUNCTIONS ========
-
-// ----------------------------------------------------------------------------
-// TAiStateAliveIncall::TAiStateAliveIncall()
-// ----------------------------------------------------------------------------
-//
-TAiStateAliveIncall::TAiStateAliveIncall()
- {
- }
-
-// ----------------------------------------------------------------------------
-// TAiStateAliveIncall::Enter()
-// ----------------------------------------------------------------------------
-//
-void TAiStateAliveIncall::Enter( MAiPluginStateMachine& aStateMachine,
- TAiStateChanges aStateChange )
- {
- __PRINTS( "XAI: Enter alive incall" );
-
- const TAiTransitionReason reason(
- aStateMachine.TranslateReason( aStateChange ) );
-
- aStateMachine.ChangePluginState( reason, CAiContentPublisher::Resume );
- }
-
-// ----------------------------------------------------------------------------
-// TAiStateAliveIncall::HandleEvent()
-// ----------------------------------------------------------------------------
-//
-TBool TAiStateAliveIncall::HandleEvent( MAiPluginStateMachine& aStateMachine,
- TAiStateChanges aStateChange )
- {
- __PRINTS( "XAI: alive incall handles event" );
- switch( aStateChange )
- {
- case ESMAINoCall:
- {
- // To alive switch
- aStateMachine.SwitchToState( EAiAlive, aStateChange );
- return ETrue;
- }
- case ESMAIInCall:
- {
- // prevent master state from handling this
- return ETrue;
- }
- default:
- {
- return EFalse;
- }
- }
- }
-
-// ----------------------------------------------------------------------------
-// TAiStateAliveIncall::Exit()
-// ----------------------------------------------------------------------------
-//
-void TAiStateAliveIncall::Exit( MAiPluginStateMachine& /*aStateMachine*/,
- TAiStateChanges /*aStateChange*/ )
- {
- __PRINTS( "XAI: Exit alive incall" );
- }
-
-// ======== MEMBER FUNCTIONS ========
-
-// ----------------------------------------------------------------------------
-// TAiStateAlive::TAiStateAlive()
-// ----------------------------------------------------------------------------
-//
-TAiStateAlive::TAiStateAlive( MAiPluginStateMachine& aParentStateMachine )
- : iCurrentState( &iStateAliveInactive ),
- iParentStateMachine( &aParentStateMachine )
- {
- }
-
-// ----------------------------------------------------------------------------
-// TAiStateAlive::SwitchToState()
-// ----------------------------------------------------------------------------
-//
-void TAiStateAlive::SwitchToState( TAiState aState,
- TAiStateChanges aStateChange )
- {
- switch( aState )
- {
- case EAiAliveInactive:
- {
- iCurrentState = &iStateAliveInactive;
- break;
- }
- case EAiAliveActive:
- {
- iCurrentState = &iStateAliveActive;
- break;
- }
- case EAiAliveIncall:
- {
- iCurrentState = &iStateAliveIncall;
- break;
- }
- default:
- {
- iParentStateMachine->SwitchToState( aState, aStateChange );
- return;
- }
- }
- iCurrentState->Enter( *this, aStateChange );
- }
-
-// ----------------------------------------------------------------------------
-// TAiStateAlive::StateVariable()
-// ----------------------------------------------------------------------------
-//
-TBool TAiStateAlive::StateVariable( TAiStateVariable aStateVariable )
- {
- return iParentStateMachine->StateVariable( aStateVariable );
- }
-
-// ----------------------------------------------------------------------------
-// TAiStateAlive::Plugin()
-// ----------------------------------------------------------------------------
-//
-CAiContentPublisher& TAiStateAlive::Plugin() const
- {
- return iParentStateMachine->Plugin();
- }
-
-// ----------------------------------------------------------------------------
-// TAiStateAlive::TranslateReason()
-// ----------------------------------------------------------------------------
-//
-TAiTransitionReason TAiStateAlive::TranslateReason(
- TAiStateChanges aStateChange )
- {
- return iParentStateMachine->TranslateReason( aStateChange );
- }
-
-// ----------------------------------------------------------------------------
-// TAiStateAlive::RestartSuspendTimer()
-// ----------------------------------------------------------------------------
-//
-void TAiStateAlive::RestartSuspendTimer()
- {
- iParentStateMachine->RestartSuspendTimer();
- }
-
-// ----------------------------------------------------------------------------
-// TAiStateAlive::Enter()
-// ----------------------------------------------------------------------------
-//
-void TAiStateAlive::Enter( MAiPluginStateMachine& aStateMachine,
- TAiStateChanges aStateChange )
- {
- __PRINTS( "XAI: Alive switch - enter" );
- if( aStateMachine.StateVariable( ESMAICallStatus ) )
- {
- // If call is ongoing enter alive in call
- iCurrentState = &iStateAliveIncall;
- }
- else if( !aStateMachine.StateVariable( ESMAILightStatus ) )
- {
- // If light is off enter alive inactive
- iCurrentState = &iStateAliveInactive;
- }
- else
- {
- // Otherwise alive active
- iCurrentState = &iStateAliveActive;
- }
- // finally call the Enter() method
- iCurrentState->Enter( *this, aStateChange );
- }
-
-// ----------------------------------------------------------------------------
-// TAiStateAlive::HandleEvent()
-// ----------------------------------------------------------------------------
-//
-TBool TAiStateAlive::HandleEvent( MAiPluginStateMachine& /*aStateMachine*/,
- TAiStateChanges aStateChange )
- {
- __PRINTS( "XAI: Alive switch handle event" );
-
- if( !iCurrentState->HandleEvent( *this, aStateChange ) )
- {
- // Only master state machine handles the "backup/restore on" and
- // screen layout changed cases.
- // Other event are forwarded to the currently active sub state.
- // Other common events may be added here in the future also.
- switch( aStateChange )
- {
- case ESMAIOffLine:
- case ESMAIOnLine:
- case ESMAIKeylockEnabled:
- case ESMAIKeylockDisabled:
- case ESMAIRelayoutScreen:
- case ESMAIIdleForeground:
- case ESMAIIdleBackground:
- case ESMAIPageSwitch:
- case ESMAIGeneralThemeChanged: // fallthrough
- {
- iCurrentState->Enter( *this, aStateChange );
- // Handled the event ok
- break;
- }
- case ESMAIInCall:
- {
- SwitchToState( EAiAliveIncall, aStateChange );
- // Handled the event ok
- break;
- }
- default:
- {
- // Neither current state or master handled this event
- return EFalse;
- }
- }
- }
- // Current state handled the event
- return ETrue;
- }
-
-// ----------------------------------------------------------------------------
-// TAiStateAlive::Exit()
-// ----------------------------------------------------------------------------
-//
-void TAiStateAlive::Exit( MAiPluginStateMachine& /*aStateMachine*/,
- TAiStateChanges aStateChange )
- {
- __PRINTS( "XAI: Alive switch exit" );
- iCurrentState->Exit( *this, aStateChange );
- }
-
-// ----------------------------------------------------------------------------
-// TAiStateAlive::ChangePluginState()
-// ----------------------------------------------------------------------------
-//
-void TAiStateAlive::ChangePluginState( TAiTransitionReason aReason,
- void (CAiContentPublisher::*aStateChangeMethod)(TAiTransitionReason) )
- {
- iParentStateMachine->ChangePluginState( aReason, aStateChangeMethod );
- }
-
-// End of file
--- a/idlefw/src/framework/aistateidle.cpp Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,85 +0,0 @@
-/*
-* Copyright (c) 2005-2005 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: State class for idle state
-*
-*/
-
-
-#include "aistateidle.h"
-#include "aipluginstatemachine.h"
-#include "debug.h"
-
-// ======== MEMBER FUNCTIONS ========
-
-// ----------------------------------------------------------------------------
-// TAiStateIdle::TAiStateIdle()
-// ----------------------------------------------------------------------------
-//
-TAiStateIdle::TAiStateIdle()
- {
- }
-
-// ----------------------------------------------------------------------------
-// TAiStateIdle::Enter()
-// ----------------------------------------------------------------------------
-//
-void TAiStateIdle::Enter( MAiPluginStateMachine& aStateMachine,
- TAiStateChanges aStateChange )
- {
- __PRINTS( "XAI: Enter idle backup restore" );
- const TAiTransitionReason reason(
- aStateMachine.TranslateReason( aStateChange ) );
-
- aStateMachine.ChangePluginState( reason, CAiContentPublisher::Stop );
- }
-
-// ----------------------------------------------------------------------------
-// TAiStateIdle::HandleEvent()
-// ----------------------------------------------------------------------------
-//
-TBool TAiStateIdle::HandleEvent( MAiPluginStateMachine& aStateMachine,
- TAiStateChanges aStateChange )
- {
- __PRINTS( "XAI: Idle backup restore handle event" );
- switch( aStateChange )
- {
- case ESMAIBackupOff:
- {
- aStateMachine.SwitchToState( EAiAlive, aStateChange );
- return ETrue;
- }
- case ESMAIKeylockEnabled:
- case ESMAIKeylockDisabled: // fallthrough
- {
- Enter( aStateMachine, aStateChange );
- return ETrue;
- }
- default:
- {
- return EFalse;
- }
- }
- }
-
-// ----------------------------------------------------------------------------
-// TAiStateIdle::Exit()
-// ----------------------------------------------------------------------------
-//
-void TAiStateIdle::Exit( MAiPluginStateMachine& /*aStateMachine*/,
- TAiStateChanges /*aStateChange*/ )
- {
- __PRINTS( "XAI: Exit idle backup restore" );
- }
-
-// End of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/idlefw/src/framework/aistatemanager.cpp Wed May 12 13:36:47 2010 +0300
@@ -0,0 +1,633 @@
+/*
+* 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".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: State Manager
+*
+*/
+
+// System includes
+
+// User includes
+#include <hscontentpublisher.h>
+#include <aifwdefs.h>
+#include <AknWaitDialog.h>
+#include <bautils.h>
+#include <ConeResLoader.h>
+#include <debug.h>
+
+#include "caicpscommandbuffer.h"
+#include "aipluginfactory.h"
+
+#include "aistatemanager.h"
+
+// ======== LOCAL FUNCTIONS ========
+// ----------------------------------------------------------------------------
+// StartReason
+//
+// ----------------------------------------------------------------------------
+//
+static CHsContentPublisher::TStartReason StartReason( TAiFwLoadReason aReason )
+ {
+ CHsContentPublisher::TStartReason reason;
+
+ if ( aReason == EAiFwPageStartup )
+ {
+ reason = CHsContentPublisher::EPageStartup;
+ }
+ else if ( aReason == EAiFwPluginStartup )
+ {
+ reason = CHsContentPublisher::EPluginStartup;
+ }
+ else
+ {
+ reason = CHsContentPublisher::ESystemStartup;
+ }
+
+ return reason;
+ }
+
+// ----------------------------------------------------------------------------
+// StopReason
+//
+// ----------------------------------------------------------------------------
+//
+static CHsContentPublisher::TStopReason StopReason( TAiFwDestroyReason aReason )
+ {
+ CHsContentPublisher::TStopReason reason;
+
+ if ( aReason == EAiFwPageShutdown )
+ {
+ reason = CHsContentPublisher::EPageShutdown;
+ }
+ else if ( aReason == EAiFwPluginShutdown )
+ {
+ reason = CHsContentPublisher::EPluginShutdown;
+ }
+ else
+ {
+ reason = CHsContentPublisher::ESystemShutdown;
+ }
+
+ return reason;
+ }
+
+// ======== MEMBER FUNCTIONS ========
+// ----------------------------------------------------------------------------
+// CAiStateManager::NewL()
+// Two-phased constructor.
+// ----------------------------------------------------------------------------
+//
+CAiStateManager* CAiStateManager::NewL( CAiPluginFactory& aFactory )
+ {
+ CAiStateManager* self = CAiStateManager::NewLC( aFactory );
+ CleanupStack::Pop( self );
+ return self;
+ }
+
+// ----------------------------------------------------------------------------
+// CAiStateManager::NewLC()
+// Two-phased constructor.
+// ----------------------------------------------------------------------------
+//
+CAiStateManager* CAiStateManager::NewLC( CAiPluginFactory& aFactory )
+ {
+ CAiStateManager* self = new ( ELeave ) CAiStateManager( aFactory );
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ return self;
+ }
+
+// ----------------------------------------------------------------------------
+// CAiStateManager::~CAiStateManager()
+// C++ default destructor.
+// ----------------------------------------------------------------------------
+//
+CAiStateManager::~CAiStateManager()
+ {
+ delete iCommandBuffer;
+ iReloadPlugins.Close();
+ }
+
+// ----------------------------------------------------------------------------
+// CAiStateManager::CAiStateManager()
+// C++ default constructor.
+// ----------------------------------------------------------------------------
+//
+CAiStateManager::CAiStateManager( CAiPluginFactory& aFactory )
+ : iFactory( aFactory )
+ {
+ }
+
+// ----------------------------------------------------------------------------
+// CAiStateManager::ConstructL()
+// 2nd phase constructor
+// ----------------------------------------------------------------------------
+//
+void CAiStateManager::ConstructL()
+ {
+ iCommandBuffer = CAiCpsCommandBuffer::NewL();
+
+ iFactory.SetCommandBuffer( iCommandBuffer );
+ }
+
+// ----------------------------------------------------------------------------
+// CAiStateManager::NotifyStateChange()
+//
+// ----------------------------------------------------------------------------
+//
+void CAiStateManager::NotifyStateChange( TAiFwState aState )
+ {
+ if ( aState == EAiFwUiShutdown )
+ {
+ __PRINTS( "CAiStateManager::NotifyStateChange, aState: EAiFwUiShutdown" );
+
+ iFlags.Set( EShutdown );
+
+ DestroyPlugins();
+
+ return;
+ }
+ else if ( aState == EAiFwUiStartup )
+ {
+ __PRINTS( "CAiStateManager::NotifyStateChange, aState: EAiFwUiStartup" );
+
+ iFlags.Clear( EShutdown );
+
+ return;
+ }
+
+ TBitFlags32 flags( iFlags );
+
+ if ( aState == EAiFwForeground )
+ {
+ __PRINTS( "CAiStateManager::NotifyStateChange, aState: EAiFwForeground" );
+
+ iFlags.Set( EIsForeground );
+ }
+ else if ( aState == EAiFwBackground )
+ {
+ __PRINTS( "CAiStateManager::NotifyStateChange, aState: EAiFwBackground" );
+
+ iFlags.Clear( EIsForeground );
+ }
+ else if ( aState == EAiFwBacklightOn )
+ {
+ __PRINTS( "CAiStateManager::NotifyStateChange, aState: EAiFwBacklightOn" );
+
+ iFlags.Set( EIsLightsOn );
+ }
+ else if ( aState == EAiFwBacklightOff )
+ {
+ __PRINTS( "CAiStateManager::NotifyStateChange, aState: EAiFwBacklightOff" );
+
+ iFlags.Clear( EIsLightsOn );
+ }
+ else if ( aState == EAiFwOnline )
+ {
+ __PRINTS( "CAiStateManager::NotifyStateChange, aState: EAiFwOnline" );
+
+ iFlags.Set( EIsOnline );
+
+ ProcessOnlineStateChange();
+ }
+ else if ( aState == EAiFwOffline )
+ {
+ __PRINTS( "CAiStateManager::NotifyStateChange, aState: EAiFwOffline" );
+
+ iFlags.Clear( EIsOnline );
+
+ ProcessOnlineStateChange();
+ }
+ else if ( aState == EAiFwGeneralThemeChange )
+ {
+ __PRINTS( "CAiStateManager::NotifyStateChange, aState: EAiFwGeneralThemeChange" );
+
+ ProcessGeneralThemeChange();
+ }
+ else if ( aState == EAiFwBackupRestoreStart ||
+ aState == EAiFwBackupRestoreEnd )
+ {
+ __PRINTS( "CAiStateManager::NotifyStateChange, aState: EAiFwBackupRestoreStart/End" );
+
+ ProcessBackupRestore( aState == EAiFwBackupRestoreStart );
+ }
+ else
+ {
+ __PRINTS( "CAiStateManager::NotifyStateChange, aState: Unknown" );
+ }
+
+ // State change evaluation and state change trial is done always here
+ __PRINTS( "CAiStateManager::NotifyStateChange, Run state change" );
+ ProcessStateChange( EvaluateNextState() );
+ }
+
+// ----------------------------------------------------------------------------
+// CAiStateManager::NotifyLoadPlugin()
+//
+// ----------------------------------------------------------------------------
+//
+TInt CAiStateManager::NotifyLoadPlugin( const THsPublisherInfo& aPublisherInfo,
+ TAiFwLoadReason aReason )
+ {
+ __PRINT( __DBG_FORMAT(
+ "CAiStateManager::NotifyLoadPlugin: name: %S, reason: %d " ),
+ &aPublisherInfo.Name(), (TInt) aReason );
+
+ __TIME_MARK( time );
+
+ // Create plugin
+ TInt retval( iFactory.CreatePlugin( aPublisherInfo ) );
+
+ if ( retval == KErrNone )
+ {
+ CHsContentPublisher* plugin( iFactory.PluginByInfo( aPublisherInfo ) );
+
+ if( plugin )
+ {
+ // Do startup state transition
+ StartPlugin( *plugin, StartReason( aReason ) );
+ }
+ }
+
+ __TIME_ENDMARK( "CAiStateManager::NotifyLoadPlugin, construction", time );
+
+ return retval;
+ }
+
+// ----------------------------------------------------------------------------
+// CAiStateManager::NotifyDestroyPlugin()
+//
+// ----------------------------------------------------------------------------
+//
+void CAiStateManager::NotifyDestroyPlugin(
+ const THsPublisherInfo& aPublisherInfo, TAiFwDestroyReason aReason )
+ {
+ __PRINT( __DBG_FORMAT(
+ "CAiStateManager::NotifyDestroyPlugin: name: %S, reason: %d " ),
+ &aPublisherInfo.Name(), (TInt)aReason );
+
+ __TIME_MARK( time );
+
+ // Resolve plugin
+ CHsContentPublisher* plugin( iFactory.PluginByInfo( aPublisherInfo ) );
+
+ if ( plugin )
+ {
+ // Do shutdown state transition
+ StopPlugin( *plugin, StopReason( aReason ) );
+
+ // Destroy plugin
+ iFactory.DestroyPlugin( aPublisherInfo );
+ }
+
+ __TIME_ENDMARK( "CAiStateManager::DestroyPlugin, done", time );
+ }
+
+// ----------------------------------------------------------------------------
+// CAiStateManager::NotifyReloadPlugins()
+//
+// ----------------------------------------------------------------------------
+//
+void CAiStateManager::NotifyReloadPlugins()
+ {
+ __PRINTS( "CAiStateManager::NotifyReloadPlugins" );
+
+ for ( TInt i = 0; i < iReloadPlugins.Count(); i++ )
+ {
+ // Reload plugin
+ NotifyLoadPlugin( iReloadPlugins[ i ], EAiFwSystemStartup );
+ }
+
+ __PRINTS( "CAiStateManager::NotifyReloadPlugins, done" );
+ }
+
+// ----------------------------------------------------------------------------
+// CAiStateManager::EvaluateNextState()
+//
+// ----------------------------------------------------------------------------
+//
+CAiStateManager::TState CAiStateManager::EvaluateNextState() const
+ {
+ TState nextState( iCurrentState );
+
+ if ( iFlags.IsSet( EIsForeground ) && iFlags.IsSet( EIsLightsOn ) )
+ {
+ nextState = EAlive;
+ }
+ else
+ {
+ nextState = ESuspended;
+ }
+
+ __PRINT( __DBG_FORMAT(
+ "CAiStateManager::EvaluateNextState: current state: %d, next state: %d" ),
+ (TInt)iCurrentState, (TInt)nextState );
+
+ return nextState;
+ }
+
+// ----------------------------------------------------------------------------
+// CAiStateManager::ProcessStateChange()
+//
+// ----------------------------------------------------------------------------
+//
+void CAiStateManager::ProcessStateChange( TState aNextState )
+ {
+ __PRINT( __DBG_FORMAT(
+ "CAiStateManager::ProcessStateChange: current state: %d, next state: %d, halt: %d" ),
+ (TInt)iCurrentState, (TInt)aNextState, iHalt );
+
+ __TIME_MARK( time );
+
+ if ( aNextState != iCurrentState )
+ {
+ // Update state
+ iCurrentState = aNextState;
+
+ RPointerArray< CHsContentPublisher >& plugins( iFactory.Publishers() );
+
+ // Process state for all
+ for( TInt i = 0; !iHalt && i < plugins.Count(); i++ )
+ {
+ CHsContentPublisher* plugin( plugins[i] );
+
+ const THsPublisherInfo& info( plugin->PublisherInfo() );
+
+ __PRINT( __DBG_FORMAT(
+ "CAiStateManager::ProcessStateChange: name: %S" ), &info.Name() );
+
+ if ( iCurrentState == EAlive )
+ {
+ __TIME( "CAiStateManager::ProcessStateChange, EAlive",
+
+ plugin->Resume( CHsContentPublisher::EForeground ) );
+ }
+ else if ( iCurrentState == ESuspended )
+ {
+ __TIME( "CAiStateManager::ProcessStateChange, ESuspended",
+
+ plugin->Suspend( CHsContentPublisher::EBackground ) );
+ }
+ }
+
+ FlushCommandBuffer();
+ }
+ else
+ {
+ __PRINTS( "CAiStateManager::ProcessStateChange, no state change" );
+ }
+
+ __TIME_ENDMARK( "CAiStateManager::ProcessStateChange, done", time );
+ }
+
+// ----------------------------------------------------------------------------
+// CAiStateManager::ProcessGeneralThemeChange()
+//
+// ----------------------------------------------------------------------------
+//
+void CAiStateManager::ProcessGeneralThemeChange()
+ {
+ __PRINTS( "CAiStateManager::ProcessGeneralThemeChange" );
+ __TIME_MARK( time );
+
+ RPointerArray< CHsContentPublisher >& plugins( iFactory.Publishers() );
+
+ for( TInt i = 0; i < plugins.Count(); i++ )
+ {
+ CHsContentPublisher* plugin( plugins[i] );
+
+ plugin->Suspend( CHsContentPublisher::EGeneralThemeChange );
+
+ // Resume publisher immediately if in alive state
+ if( !iHalt && iCurrentState == EAlive )
+ {
+ plugin->Resume( CHsContentPublisher::EForeground );
+ }
+ }
+
+ FlushCommandBuffer();
+
+ __TIME_ENDMARK( "CAiStateManager::ProcessGeneralThemeChange, done", time );
+ }
+
+// ----------------------------------------------------------------------------
+// CAiStateManager::ProcessBackupRestore()
+//
+// ----------------------------------------------------------------------------
+//
+void CAiStateManager::ProcessBackupRestore( TBool aStart )
+ {
+ __PRINTS( "CAiStateManager::ProcessBackupRestore" );
+ __TIME_MARK( time );
+
+ iHalt = aStart;
+
+ RPointerArray< CHsContentPublisher >& plugins( iFactory.Publishers() );
+
+ for( TInt i = 0; i < plugins.Count(); i++ )
+ {
+ CHsContentPublisher* plugin( plugins[i] );
+
+ if ( aStart )
+ {
+ plugin->Suspend( CHsContentPublisher::EBackupRestore );
+ }
+ else
+ {
+ // Resume publisher immediately if in alive state
+ if ( !iHalt && iCurrentState == EAlive )
+ {
+ plugin->Resume( CHsContentPublisher::EForeground );
+ }
+ }
+ }
+
+ FlushCommandBuffer();
+
+ __TIME_ENDMARK( "CAiStateManager::ProcessBackupRestore, done", time );
+ }
+
+// ----------------------------------------------------------------------------
+// CAiStateManager::ProcessOnlineStateChange()
+//
+// ----------------------------------------------------------------------------
+//
+void CAiStateManager::ProcessOnlineStateChange()
+ {
+ __PRINTS( "CAiStateManager::ProcessOnlineStateChange" );
+
+ RPointerArray< CHsContentPublisher >& plugins( iFactory.Publishers() );
+
+ for( TInt i = 0; i < plugins.Count(); i++ )
+ {
+ CHsContentPublisher* plugin( plugins[i] );
+
+ if ( iFlags.IsSet( EIsOnline ) )
+ {
+ plugin->SetOnline();
+ }
+ else
+ {
+ plugin->SetOffline();
+ }
+ }
+
+ FlushCommandBuffer();
+ }
+
+// ----------------------------------------------------------------------------
+// CAiStateManager::StartPlugin()
+//
+// ----------------------------------------------------------------------------
+//
+void CAiStateManager::StartPlugin( CHsContentPublisher& aPlugin,
+ CHsContentPublisher::TStartReason aReason )
+ {
+ const THsPublisherInfo& info( aPlugin.PublisherInfo() );
+
+ __PRINT( __DBG_FORMAT(
+ "CAiStateManager::StartPlugin: name: %S, reason: %d" ), &info.Name(), (TInt)aReason );
+
+ aPlugin.Start( aReason );
+
+ if ( iCurrentState == EAlive )
+ {
+ __TIME( "CAiStateManager::StartPlugin, enter EAlive",
+
+ aPlugin.Resume( CHsContentPublisher::EForeground ) );
+ }
+ else if ( iCurrentState == ESuspended )
+ {
+ __TIME( "CAiStateManager::StartPlugin, enter ESuspended",
+
+ aPlugin.Suspend( CHsContentPublisher::EBackground ) );
+ }
+
+ if ( iFlags.IsSet( EIsOnline ) )
+ {
+ __TIME( "CAiStateManager::StartPlugin, Set Online",
+
+ aPlugin.SetOnline() );
+ }
+ else
+ {
+ __TIME( "CAiStateManager::StartPlugin, Set Offline",
+
+ aPlugin.SetOffline() );
+ }
+
+ FlushCommandBuffer();
+
+ __PRINTS( "CAiStateManager::StartPlugin - done" );
+ }
+
+// ----------------------------------------------------------------------------
+// CAiStateManager::StopPlugin()
+//
+// ----------------------------------------------------------------------------
+//
+void CAiStateManager::StopPlugin( CHsContentPublisher& aPlugin,
+ CHsContentPublisher::TStopReason aReason )
+ {
+ const THsPublisherInfo& info( aPlugin.PublisherInfo() );
+
+ __PRINT( __DBG_FORMAT(
+ "CAiStateManager::StopPlugin: name: %S, reason: %d" ), &info.Name(), (TInt)aReason );
+
+ if ( iCurrentState == EAlive )
+ {
+ __TIME( "CAiStateManager::StopPlugin, enter ESuspended",
+
+ aPlugin.Suspend( CHsContentPublisher::EBackground ) );
+ }
+
+ aPlugin.Stop( aReason );
+
+ FlushCommandBuffer();
+
+ __PRINTS( "CAiStateManager::StopPlugin - done" );
+ }
+
+// ----------------------------------------------------------------------------
+// CAiStateManager::DestroyPlugins()
+//
+// ----------------------------------------------------------------------------
+//
+void CAiStateManager::DestroyPlugins()
+ {
+ __PRINTS( "CAiStateManager::DestroyPlugins, start" );
+ __TIME_MARK( time );
+
+ RPointerArray< CHsContentPublisher >& plugins( iFactory.Publishers() );
+
+ for ( TInt i = 0; i < plugins.Count(); i++ )
+ {
+ CHsContentPublisher* plugin( plugins[i] );
+
+ // Do shutdown state transition
+ StopPlugin( *plugin, CHsContentPublisher::ESystemShutdown );
+ }
+
+ FlushCommandBuffer();
+
+ // Finally get rid of all plugins
+ plugins.ResetAndDestroy();
+
+ __TIME_ENDMARK( "CAiStateManager::DestroyPlugins, done", time );
+ }
+
+// ----------------------------------------------------------------------------
+// CAiStateManager::FlushCommandBuffer();()
+//
+// ----------------------------------------------------------------------------
+//
+void CAiStateManager::FlushCommandBuffer()
+ {
+ __PRINTS( "CAiStateManager::FlushCommandBuffer, start" );
+
+ if ( iCommandBuffer )
+ {
+ __TIME( "CAiStateManager::FlushCommandBuffer, flush",
+
+ iCommandBuffer->Flush() );
+ }
+
+ __PRINTS( "CAiStateManager::FlushCommandBuffer - done" );
+ }
+
+// ----------------------------------------------------------------------------
+// CAiStateManager::NotifyReleasePlugins()
+//
+// ----------------------------------------------------------------------------
+//
+void CAiStateManager::NotifyReleasePlugins( const RArray<TUid>& aUidList )
+ {
+ __PRINTS( "CAiStateManager::NotifyReleasePlugins" );
+
+ iReloadPlugins.Reset();
+
+ for ( TInt i = 0; i < aUidList.Count(); i++ )
+ {
+ CHsContentPublisher* plugin = iFactory.PluginByUid( aUidList[ i ] );
+ if ( plugin )
+ {
+ StopPlugin( *plugin, CHsContentPublisher::ESystemShutdown );
+ THsPublisherInfo info = plugin->PublisherInfo();
+ iReloadPlugins.Append( info );
+ iFactory.DestroyPlugin( aUidList[ i ] );
+ }
+ }
+ __PRINTS( "CAiStateManager::NotifyReleasePlugins: return void" );
+ }
+
+// End of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/idlefw/src/framework/aistateprovider.cpp Wed May 12 13:36:47 2010 +0300
@@ -0,0 +1,341 @@
+/*
+* 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".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: State Provider
+*
+*/
+
+// System includes
+#include <AknDef.h>
+#include <connect/sbdefs.h>
+#include <e32property.h>
+#include <swi/swispubsubdefs.h>
+#include <swi/swiutils.h>
+#include <sacls.h> // KSWIUidsCurrentlyBeingProcessed
+
+// User includes
+#include <aipspropertyobserver.h>
+#include <aiutility.h>
+#include <aifwdefs.h>
+#include "aiecomobserver.h"
+#include "aistateobserver.h"
+
+#include "aistateprovider.h"
+
+#include "debug.h"
+
+// Constants
+
+// ======== LOCAL FUNCTIONS ========
+
+// ======== MEMBER FUNCTIONS ========
+
+// ----------------------------------------------------------------------------
+// CAiStateProvider::NewL()
+// Two-phased constructor.
+// ----------------------------------------------------------------------------
+//
+CAiStateProvider* CAiStateProvider::NewL( MAiStateObserver& aObserver )
+ {
+ CAiStateProvider* self =
+ CAiStateProvider::NewLC( aObserver );
+
+ CleanupStack::Pop( self );
+
+ return self;
+ }
+
+// ----------------------------------------------------------------------------
+// CAiStateProvider::NewLC()
+// Two-phased constructor.
+// ----------------------------------------------------------------------------
+//
+CAiStateProvider* CAiStateProvider::NewLC( MAiStateObserver& aObserver )
+ {
+ CAiStateProvider* self =
+ new ( ELeave ) CAiStateProvider( aObserver );
+
+ CleanupStack::PushL( self );
+ self->ConstructL();
+
+ return self;
+ }
+
+// ----------------------------------------------------------------------------
+// CAiStateProvider::~CAiStateProvider()
+// C++ default destructor.
+// ----------------------------------------------------------------------------
+//
+CAiStateProvider::~CAiStateProvider()
+ {
+ Stop();
+ }
+
+// ----------------------------------------------------------------------------
+// CAiStateProvider::CAiStateProvider()
+// C++ default constructor.
+// ----------------------------------------------------------------------------
+//
+CAiStateProvider::CAiStateProvider( MAiStateObserver& aObserver )
+ : iObserver( aObserver )
+ {
+ }
+
+// ----------------------------------------------------------------------------
+// CAiStateProvider::ConstructL()
+// 2nd phase constructor
+// ----------------------------------------------------------------------------
+//
+void CAiStateProvider::ConstructL()
+ {
+ }
+
+// ----------------------------------------------------------------------------
+// CAiStateProvider::StartL()
+//
+// ----------------------------------------------------------------------------
+//
+void CAiStateProvider::StartL( CCoeEnv& aCoeEnv )
+ {
+ if ( !iStarted )
+ {
+ iStarted = ETrue;
+
+ iObserver.NotifyStateChange( EAiFwUiStartup );
+
+ iLightObserver = CHWRMLight::NewL( this );
+
+ iBackupRestoreObserver = AiUtility::CreatePSPropertyObserverL(
+ TCallBack( BackupRestoreEvent, this ),
+ KUidSystemCategory, conn::KUidBackupRestoreKey );
+
+ iSwiUidListObserver = AiUtility::CreatePSPropertyObserverL(
+ TCallBack( SwiUidListEvent, this ),
+ KUidSystemCategory, KSWIUidsCurrentlyBeingProcessed );
+
+ User::LeaveIfError( iSkinSrv.Connect( this ) );
+
+ iEcomObserver = CAiEcomObserver::NewL();
+ iEcomObserver->AddObserverL( this );
+
+ iCoeEnv = &aCoeEnv;
+
+ iCoeEnv->AddMessageMonitorObserverL( *this );
+ }
+ }
+
+// ----------------------------------------------------------------------------
+// CAiStateProvider::Stop()
+//
+// ----------------------------------------------------------------------------
+//
+void CAiStateProvider::Stop()
+ {
+ if ( iStarted )
+ {
+ iStarted = EFalse;
+
+ iObserver.NotifyStateChange( EAiFwUiShutdown );
+
+ if ( iCoeEnv )
+ {
+ iCoeEnv->RemoveMessageMonitorObserver( *this );
+ }
+
+ iCoeEnv = NULL;
+
+ delete iEcomObserver;
+ iEcomObserver = NULL;
+
+ iSkinSrv.Close();
+
+ Release( iBackupRestoreObserver );
+ iBackupRestoreObserver = NULL;
+
+ Release( iSwiUidListObserver );
+ iSwiUidListObserver = NULL;
+
+ delete iLightObserver;
+ iLightObserver = NULL;
+ }
+ }
+
+// ----------------------------------------------------------------------------
+// CAiStateProvider::MonitorWsMessage()
+//
+// ----------------------------------------------------------------------------
+//
+void CAiStateProvider::MonitorWsMessage( const TWsEvent& aEvent )
+ {
+ TInt type( aEvent.Type() );
+
+ if ( type == KAknFullOrPartialForegroundGained )
+ {
+ iObserver.NotifyStateChange( EAiFwForeground );
+ }
+ else if ( type == KAknFullOrPartialForegroundLost )
+ {
+ iObserver.NotifyStateChange( EAiFwBackground );
+ }
+ }
+
+// ----------------------------------------------------------------------------
+// CAiStateProvider::LightStatusChanged()
+//
+// ----------------------------------------------------------------------------
+//
+void CAiStateProvider::LightStatusChanged( TInt aTarget,
+ CHWRMLight::TLightStatus aStatus )
+ {
+ if ( aTarget == CHWRMLight::EPrimaryDisplay )
+ {
+ if ( aStatus == CHWRMLight::ELightOn )
+ {
+ iObserver.NotifyStateChange( EAiFwBacklightOn );
+ }
+ else if ( aStatus == CHWRMLight::ELightOff )
+ {
+ iObserver.NotifyStateChange( EAiFwBacklightOff );
+ }
+ }
+ }
+
+// ----------------------------------------------------------------------------
+// CAiStateProvider::SkinContentChanged()
+//
+// ----------------------------------------------------------------------------
+//
+void CAiStateProvider::SkinContentChanged()
+ {
+ }
+
+// ----------------------------------------------------------------------------
+// CAiStateProvider::SkinConfigurationChanged()
+//
+// ----------------------------------------------------------------------------
+//
+void CAiStateProvider::SkinConfigurationChanged(
+ const TAknsSkinStatusConfigurationChangeReason aReason )
+ {
+ if ( aReason == EAknsSkinStatusConfigurationDeployed )
+ {
+ iObserver.NotifyStateChange( EAiFwGeneralThemeChange );
+ }
+ }
+
+// ----------------------------------------------------------------------------
+// CAiStateProvider::SkinPackageChanged()
+//
+// ----------------------------------------------------------------------------
+//
+void CAiStateProvider::SkinPackageChanged(
+ const TAknsSkinStatusPackageChangeReason /*aReason*/ )
+ {
+ }
+
+// ----------------------------------------------------------------------------
+// CAiStateProvider::NotifyEcomRegistryChanged()
+//
+// ----------------------------------------------------------------------------
+//
+void CAiStateProvider::NotifyEcomRegistryChanged()
+ {
+ __PRINTS( "CAiStateProvider::NotifyEcomRegistryChanged" );
+ iObserver.NotifyReloadPlugins();
+ __PRINTS( "CAiStateProvider::NotifyEcomRegistryChanged - return void" );
+ }
+
+// ----------------------------------------------------------------------------
+// CAiStateProvider::LoadPlugin()
+//
+// ----------------------------------------------------------------------------
+//
+TInt CAiStateProvider::LoadPlugin( const THsPublisherInfo& aPublisherInfo,
+ TAiFwLoadReason aReason )
+ {
+ return iObserver.NotifyLoadPlugin( aPublisherInfo, aReason );
+ }
+
+// ----------------------------------------------------------------------------
+// CAiStateProvider::DestroyPlugin()
+//
+// ----------------------------------------------------------------------------
+//
+void CAiStateProvider::DestroyPlugin( const THsPublisherInfo& aPublisherInfo,
+ TAiFwDestroyReason aReason )
+ {
+ iObserver.NotifyDestroyPlugin( aPublisherInfo, aReason );
+ }
+
+// ----------------------------------------------------------------------------
+// CAiStateProvider::ChangePluginState()
+//
+// ----------------------------------------------------------------------------
+//
+void CAiStateProvider::ChangePluginState( TAiFwState aState )
+ {
+ if ( aState == EAiFwOnline || aState == EAiFwOffline )
+ {
+ iObserver.NotifyStateChange( aState );
+ }
+ }
+
+// ----------------------------------------------------------------------------
+// CAiStateProvider::BackupRestoreEvent()
+//
+// ----------------------------------------------------------------------------
+//
+/* static */ TInt CAiStateProvider::BackupRestoreEvent( TAny* aAny )
+ {
+ CAiStateProvider* self = static_cast< CAiStateProvider* >( aAny );
+
+ const TUint mask( conn::KBURPartTypeMask ^ conn::EBURNormal );
+
+ TInt value( 0 );
+
+ if ( self->iBackupRestoreObserver->Get( value ) == KErrNone )
+ {
+ if ( value & mask )
+ {
+ // Any type of backup or restore operation
+ self->iObserver.NotifyStateChange( EAiFwBackupRestoreStart );
+ }
+ else
+ {
+ self->iObserver.NotifyStateChange( EAiFwBackupRestoreEnd );
+ }
+ }
+
+ return KErrNone;
+ }
+
+// ----------------------------------------------------------------------------
+// CAiStateProvider::SwiUidLIstEvent()
+//
+// ----------------------------------------------------------------------------
+//
+/* static */ TInt CAiStateProvider::SwiUidListEvent( TAny* aAny )
+ {
+ CAiStateProvider* self = static_cast< CAiStateProvider* >( aAny );
+
+ RArray<TUid> uidList;
+ if ( KErrNone == Swi::GetAllUids( uidList ) )
+ {
+ self->iObserver.NotifyReleasePlugins( uidList );
+ }
+
+ return KErrNone;
+ }
+
+// End of file
+
--- a/idlefw/src/framework/aistatesuspended.cpp Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,91 +0,0 @@
-/*
-* Copyright (c) 2005-2005 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: State class for suspended state
-*
-*/
-
-
-#include "aistatesuspended.h"
-#include "aipluginstatemachine.h"
-#include "debug.h"
-
-// ======== MEMBER FUNCTIONS ========
-
-// ----------------------------------------------------------------------------
-// TAiStateSuspended::TAiStateSuspended()
-// ----------------------------------------------------------------------------
-//
-TAiStateSuspended::TAiStateSuspended()
- {
- }
-
-// ----------------------------------------------------------------------------
-// TAiStateSuspended::Enter()
-// ----------------------------------------------------------------------------
-//
-void TAiStateSuspended::Enter( MAiPluginStateMachine& aStateMachine,
- TAiStateChanges aStateChange )
- {
- __PRINTS( "XAI: Enter Suspended" );
- const TAiTransitionReason reason(
- aStateMachine.TranslateReason( aStateChange ) );
-
- aStateMachine.ChangePluginState( reason, &CAiContentPublisher::Suspend );
- }
-
-// ----------------------------------------------------------------------------
-// TAiStateSuspended::HandleEvent()
-// ----------------------------------------------------------------------------
-//
-TBool TAiStateSuspended::HandleEvent( MAiPluginStateMachine& aStateMachine,
- TAiStateChanges aStateChange )
- {
- __PRINTS( "XAI: Suspended handle event" );
- switch( aStateChange )
- {
- case ESMAIIdleForeground:
- case ESMAIBacklightOn:
- case ESMAILocaleChanged:
- case ESMAITimeChanged:
- case ESMAIMidnightCrossover:
- case ESMAIRelayoutScreen:
- case ESMAIGeneralThemeChanged:
- case ESMAIInCall: // fallthrough
- {
- aStateMachine.SwitchToState( EAiAlive, aStateChange );
- return ETrue;
- }
- case ESMAIKeylockEnabled:
- case ESMAIKeylockDisabled:
- {
- Enter( aStateMachine, aStateChange );
- return ETrue;
- }
- default:
- {
- return EFalse;
- }
- }
- }
-
-// ----------------------------------------------------------------------------
-// TAiStateSuspended::Exit()
-// ----------------------------------------------------------------------------
-//
-void TAiStateSuspended::Exit( MAiPluginStateMachine& /*aStateMachine*/,
- TAiStateChanges /*aStateChange*/ )
- {
- __PRINTS( "XAI: Exit Suspended" );
- }
-
--- a/idlefw/src/framework/aiuicontrollermanager.cpp Wed Mar 03 15:38:34 2010 +0200
+++ b/idlefw/src/framework/aiuicontrollermanager.cpp Wed May 12 13:36:47 2010 +0300
@@ -15,18 +15,19 @@
*
*/
+// System includes
+#include <centralrepository.h>
-#include "aiuicontrollermanager.h"
+// User includes
+#include <aisystemuids.hrh>
#include "aiuicontroller.h"
-#include "aicontentpublisher.h"
#include "aicontentobserver.h"
#include "activeidle2domaincrkeys.h"
+#include "aifw.h"
+
+#include "aiuicontrollermanager.h"
+
#include "aifwpanic.h"
-#include <ecom/ecom.h>
-#include <ecom/implementationinformation.h>
-#include <centralrepository.h>
-
-#include <aisystemuids.hrh>
#include "debug.h"
@@ -34,6 +35,7 @@
// ----------------------------------------------------------------------------
// CAiUiControllerManager::CAiUiControllerManager()
+//
// ----------------------------------------------------------------------------
//
CAiUiControllerManager::CAiUiControllerManager()
@@ -42,15 +44,15 @@
// ----------------------------------------------------------------------------
// CAiUiControllerManager::LoadMainControllerL()
+//
// ----------------------------------------------------------------------------
//
-void CAiUiControllerManager::LoadMainControllerL(
- CRepository& aCenRepConfig )
+void CAiUiControllerManager::LoadMainControllerL( CRepository& aRepository )
{
TInt value( 0 );
// Main UI Controller must be configured correctly
- User::LeaveIfError( aCenRepConfig.Get( KAiMainUIController, value ) );
+ User::LeaveIfError( aRepository.Get( KAiMainUIController, value ) );
CAiUiController* controller = CAiUiController::NewL( TUid::Uid( value ) );
@@ -67,24 +69,22 @@
}
iUiControllerArray.AppendL( controller );
- CleanupStack::Pop( controller );
-
- // Register this as a UI framework observer of the main UI controller
- iMainUiController->SetUiFrameworkObserver( *this );
+ CleanupStack::Pop( controller );
}
// ----------------------------------------------------------------------------
// CAiUiControllerManager::LoadSecondaryControllersL()
+//
// ----------------------------------------------------------------------------
//
void CAiUiControllerManager::LoadSecondaryControllersL(
- CRepository& aCenRepConfig )
+ CRepository& aRepository )
{
TInt value( 0 );
// Instantiate rest of the UI controllers.
for( TInt key = KAiFirstUIController;
- key <= KAiLastUIController && aCenRepConfig.Get( key, value ) == KErrNone;
+ key <= KAiLastUIController && aRepository.Get( key, value ) == KErrNone;
++key )
{
// skip empty entries
@@ -106,77 +106,48 @@
CleanupStack::PushL( controller );
iUiControllerArray.AppendL( controller );
- CleanupStack::Pop( controller );
-
- // Get the secondary interface
- MAiSecondaryUiController* secController(
- controller->SecondaryInterface() );
-
- if( secController )
- {
- MAiUiFrameworkObserver* uiFwObserver(
- secController->UiFrameworkObserver() );
-
- if( uiFwObserver )
- {
- // Add secondary controller as UI framework event observer.
- User::LeaveIfError(
- iUiFrameworkObservers.InsertInAddressOrder( uiFwObserver ) );
- }
- }
+ CleanupStack::Pop( controller );
}
}
// ----------------------------------------------------------------------------
// CAiUiControllerManager::ConstructL()
+//
// ----------------------------------------------------------------------------
//
-void CAiUiControllerManager::ConstructL()
+void CAiUiControllerManager::ConstructL( CAiFw* aAiFw )
{
__HEAP("FW: Init - Create UI Ctrls");
__TIME_MARK(t);
-
- CRepository* cenRep( NULL );
-
-#if 0
- // For AI3_test
- RProcess proc;
- // 0x102750F0 in AI3, 0x2001CB4F in AI3_Test
- TSecureId secId( proc.SecureId() );
-
- if( secId == 0x2001CB4F )
- {
- cenRep = CRepository::NewL( TUid::Uid( 0x2001952B ) );
- }
- else
- {
- cenRep = CRepository::NewL( TUid::Uid( KCRUidActiveIdleLV ) );
- }
-#else
- cenRep = CRepository::NewLC( TUid::Uid( KCRUidActiveIdleLV ) );
-#endif
-
- LoadMainControllerL( *cenRep );
+
+ CRepository& repository( aAiFw->Repository() );
+
+ LoadMainControllerL( repository );
// Failing on secondary is not fatal. Ignore leaves.
- TRAP_IGNORE( LoadSecondaryControllersL( *cenRep ) );
-
- CleanupStack::PopAndDestroy( cenRep );
-
+ TRAP_IGNORE( LoadSecondaryControllersL( repository ) );
+
+ for ( TInt i = 0; i < iUiControllerArray.Count(); i++ )
+ {
+ iUiControllerArray[i]->SetEventHandler( *aAiFw );
+ }
+
__TIME_ENDMARK("FW: Create UI Ctrls", t);
__HEAP("FW: Done - Create UI Ctrls");
}
// ----------------------------------------------------------------------------
// CAiUiControllerManager::NewL()
+//
// ----------------------------------------------------------------------------
//
-CAiUiControllerManager* CAiUiControllerManager::NewL()
+CAiUiControllerManager* CAiUiControllerManager::NewL( CAiFw* aAiFw )
{
- CAiUiControllerManager* self = new (ELeave) CAiUiControllerManager;
+ CAiUiControllerManager* self =
+ new ( ELeave ) CAiUiControllerManager;
CleanupStack::PushL( self );
- self->ConstructL();
+ self->ConstructL( aAiFw );
CleanupStack::Pop( self ); // self
return self;
@@ -184,19 +155,19 @@
// ----------------------------------------------------------------------------
// CAiUiControllerManager::~CAiUiControllerManager()
+//
// ----------------------------------------------------------------------------
//
CAiUiControllerManager::~CAiUiControllerManager()
{
iUiControllerArray.ResetAndDestroy();
-
- iUiFrameworkObservers.Reset();
-
+
iCreatedUICList.Reset();
}
// ----------------------------------------------------------------------------
-// CAiUiControllerManager::UiControllers()
+// CAiUiControllerManager::UiControllers()
+//
// ----------------------------------------------------------------------------
//
RPointerArray< CAiUiController >& CAiUiControllerManager::UiControllers() const
@@ -206,6 +177,7 @@
// ----------------------------------------------------------------------------
// CAiUiControllerManager::IsMainUiController()
+//
// ----------------------------------------------------------------------------
//
TBool CAiUiControllerManager::IsMainUiController(
@@ -215,20 +187,8 @@
}
// ----------------------------------------------------------------------------
-// CAiUiControllerManager::SetEventHandler()
-// ----------------------------------------------------------------------------
+// CAiUiControllerManager::RunApplicationL()
//
-void CAiUiControllerManager::SetEventHandler(
- MAiFwEventHandler& aEventHandler )
- {
- for ( TInt i = 0; i < iUiControllerArray.Count(); i++ )
- {
- iUiControllerArray[i]->SetEventHandler( aEventHandler );
- }
- }
-
-// ----------------------------------------------------------------------------
-// CAiUiControllerManager::RunApplicationL()
// ----------------------------------------------------------------------------
//
void CAiUiControllerManager::RunApplicationL()
@@ -238,6 +198,7 @@
// ----------------------------------------------------------------------------
// CAiUiControllerManager::ActivateUI()
+//
// ----------------------------------------------------------------------------
//
void CAiUiControllerManager::ActivateUI()
@@ -250,6 +211,7 @@
// ----------------------------------------------------------------------------
// CAiUiControllerManager::LoadUIDefinition()
+//
// ----------------------------------------------------------------------------
//
void CAiUiControllerManager::LoadUIDefinition()
@@ -290,6 +252,7 @@
// ----------------------------------------------------------------------------
// CAiUiControllerManager::CoeEnv()
+//
// ----------------------------------------------------------------------------
//
CCoeEnv& CAiUiControllerManager::CoeEnv() const
@@ -299,6 +262,7 @@
// ----------------------------------------------------------------------------
// CAiUiControllerManager::MainUiController()
+//
// ----------------------------------------------------------------------------
//
MAiMainUiController& CAiUiControllerManager::MainUiController() const
@@ -308,6 +272,7 @@
// ----------------------------------------------------------------------------
// CAiUiControllerManager::DestroySecondaryUiControllers()
+//
// ----------------------------------------------------------------------------
//
void CAiUiControllerManager::DestroySecondaryUiControllers()
@@ -328,82 +293,25 @@
// ----------------------------------------------------------------------------
// CAiUiControllerManager::ExitMainController()
+//
// ----------------------------------------------------------------------------
//
void CAiUiControllerManager::ExitMainController()
{
iMainUiController->Exit();
}
-
-// ----------------------------------------------------------------------------
-// CAiUiControllerManager::AddObserverL()
-// ----------------------------------------------------------------------------
-//
-void CAiUiControllerManager::AddObserverL(
- MAiUiFrameworkObserver& aUiFwObserver )
- {
- User::LeaveIfError(
- iUiFrameworkObservers.InsertInAddressOrder( &aUiFwObserver ) );
- }
-
-// ----------------------------------------------------------------------------
-// CAiUiControllerManager::RemoveObserver()
+
// ----------------------------------------------------------------------------
+// CAiUiControllerManager::SetStateHandler()
//
-void CAiUiControllerManager::RemoveObserver(
- MAiUiFrameworkObserver& aUiFwObserver )
- {
- TInt index( iUiFrameworkObservers.FindInAddressOrder( &aUiFwObserver ) );
-
- if( index != KErrNotFound )
- {
- iUiFrameworkObservers.Remove( index );
- }
- }
-
-// ----------------------------------------------------------------------------
-// CAiUiControllerManager::RemovePluginFromUI()
// ----------------------------------------------------------------------------
//
-void CAiUiControllerManager::RemovePluginFromUI( CAiContentPublisher& aPlugin )
+void CAiUiControllerManager::SetStateHandler( MAiFwStateHandler& aHandler )
{
- // Get MAiPropertyExtension from plugin
- MAiPropertyExtension* plugin =
- static_cast< MAiPropertyExtension* >(
- aPlugin.Extension( KExtensionUidProperty ) );
-
- // Inform all UI controller that this plugin need to be removed from UI.
- if( plugin )
+ for ( TInt i = 0; i < iUiControllerArray.Count(); i++ )
{
- for ( TInt i = 0; i < iUiControllerArray.Count(); i++ )
- {
- iUiControllerArray[i]->RemovePluginFromUI( *plugin );
- }
- }
+ iUiControllerArray[i]->SetStateHandler( aHandler );
+ }
}
-// ----------------------------------------------------------------------------
-// CAiUiControllerManager::HandleResourceChange()
-// ----------------------------------------------------------------------------
-//
-void CAiUiControllerManager::HandleResourceChange( TInt aType )
- {
- for( TInt i = 0; i < iUiFrameworkObservers.Count(); i++ )
- {
- iUiFrameworkObservers[i]->HandleResourceChange( aType );
- }
- }
-
-// ----------------------------------------------------------------------------
-// CAiUiControllerManager::HandleForegroundEvent()
-// ----------------------------------------------------------------------------
-//
-void CAiUiControllerManager::HandleForegroundEvent( TBool aForeground )
- {
- for( TInt i = 0; i < iUiFrameworkObservers.Count(); i++ )
- {
- iUiFrameworkObservers[i]->HandleForegroundEvent( aForeground );
- }
- }
-
// End of file
--- a/idlefw/src/framework/aiuiframeworkobserverimpl.cpp Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,89 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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: UI framework observer for Active Idle framework
-*
-*/
-
-
-#include <AknsConstants.h> // for KAknsMessageSkinChange equal general theme changed
-#include "aiuiframeworkobserverimpl.h"
-#include "debug.h"
-
-CAiUiFrameworkObserverImpl::CAiUiFrameworkObserverImpl( MAiStateManager& aManager )
- : iManager( aManager )
- {
- }
-
-void CAiUiFrameworkObserverImpl::ConstructL()
- {
- }
-
-CAiUiFrameworkObserverImpl* CAiUiFrameworkObserverImpl::NewL( MAiStateManager& aManager )
-
- {
- CAiUiFrameworkObserverImpl* self =
- new(ELeave) CAiUiFrameworkObserverImpl( aManager );
- CleanupStack::PushL( self );
- self->ConstructL();
- CleanupStack::Pop( self );
- return self;
- }
-
-CAiUiFrameworkObserverImpl::~CAiUiFrameworkObserverImpl()
- {
- }
-
-// ---------------------------------------------------------------------------
-// From class MAiUiFrameworkObserver.
-//
-// ---------------------------------------------------------------------------
-//
-void CAiUiFrameworkObserverImpl::HandleResourceChange( TInt aType )
- {
- switch( aType )
- {
- case KAknsMessageSkinChange:
- {
- iManager.ReportStateChange( ESMAIGeneralThemeChanged );
- break;
- }
- default:
- {
- // Do nothing
- break;
- }
- }
- }
-
-// ---------------------------------------------------------------------------
-// From class MAiUiFrameworkObserver.
-//
-// ---------------------------------------------------------------------------
-//
-void CAiUiFrameworkObserverImpl::HandleForegroundEvent( TBool /*aForeground*/ )
- {
- // Focus observer disabled from this location
- }
-
-// ---------------------------------------------------------------------------
-// From class MAiDeviceStatusObserver.
-//
-// ---------------------------------------------------------------------------
-//
-TAiStateChanges CAiUiFrameworkObserverImpl::Status()
- {
- // Resource change event are by nature single shot, so no status can
- // be defined for them.
- return ESMAIUnknownState;
- }
--- a/idlefw/src/idleint/aiidleappregister.cpp Wed Mar 03 15:38:34 2010 +0200
+++ b/idlefw/src/idleint/aiidleappregister.cpp Wed May 12 13:36:47 2010 +0300
@@ -89,33 +89,6 @@
KTelephonyInformationReadPolicy,
KTelephonyInformationWritePolicy );
}
-
- TInt DefineIdleAI2RestartPS()
- {
- return RProperty::Define(
- KPSUidAiInformation,
- KActiveIdleRestartAI2,
- RProperty::EInt,
- KTelephonyInformationReadPolicy,
- KTelephonyInformationWritePolicy );
- }
- TInt SetIdleAI2RestartPS()
- {
- return RProperty::Set(
- KPSUidAiInformation,
- KActiveIdleRestartAI2,
- 0 );
- }
-
- TInt DefineIdleLaunchPS()
- {
- return RProperty::Define(
- KPSUidAiInformation,
- KActiveIdleLaunch,
- RProperty::EInt,
- ECapabilityReadDeviceData,
- ECapabilityWriteDeviceData );
- }
TInt DefineIdleSendNumKeysToPhonePS()
{
@@ -166,8 +139,6 @@
DefineIdleSimRegFailedReceivedPS();
- DefineIdleLaunchPS();
-
// Set the default value to 1 so the send key press is reacted
SetIdleSendKeyPS();
@@ -177,10 +148,6 @@
// Define idle state key
DefineIdleStatePS();
- DefineIdleAI2RestartPS();
-
- SetIdleAI2RestartPS();
-
DefineIdleSendNumKeysToPhonePS();
SetIdleSendNumKeysToPhonePS();
--- a/idlefw/src/idleint/aiuiidleintegration.cpp Wed Mar 03 15:38:34 2010 +0200
+++ b/idlefw/src/idleint/aiuiidleintegration.cpp Wed May 12 13:36:47 2010 +0300
@@ -11,35 +11,32 @@
*
* Contributors:
*
-* Description: Window server plug-in manager.
+* Description: Idle integration
*
*/
-#include "aiuiidleintegrationimpl.h"
-#include "aifweventhandler.h"
-
-#include <coemain.h>
+// System includes
+#include <startupdomainpskeys.h>
#include <coeaui.h>
#include <eikenv.h>
-#include <apgtask.h>
#include <AknIncallBubbleNotify.h>
#include <aknsoundsystem.h>
-#include <apgwgnam.h>
#include <AknDef.h>
-#include <AknCapServerDefs.h>
-#include <startupdomainpskeys.h>
+#include <ctsydomainpskeys.h>
+#include <apgtask.h>
+
+// User includes
+#include <aisystemuids.hrh>
#include <aiutility.h>
#include <aipspropertyobserver.h>
-#include <aisystemuids.hrh>
-
+#include "activeidle2domainpskeys.h"
+#include "aiuiidleintegrationimpl.h"
+#include "aifweventhandler.h"
#include "aistate.h"
#include "aifwpanic.h"
-#include "activeidle2domainpskeys.h"
+#include "debug.h"
-#include <ctsydomainpskeys.h>
-
-#include <AknSgcc.h>
// ======== MEMBER FUNCTIONS ========
@@ -70,11 +67,9 @@
delete iIncallBubble;
- Release( iSystemStateObserver );
+ Release( iCallStatusObserver );
Release( iUiStartupStateObserver );
-
- Release( iCallStatusObserver );
}
// ----------------------------------------------------------------------------
@@ -95,6 +90,9 @@
void CAiUiIdleIntegrationImpl::ConstructL(
const TAiIdleKeySoundConfig& aKeySoundConfig )
{
+ __PRINTS( "*** CAiUiIdleIntegrationImpl::ConstructL" );
+ __TIME_MARK( time );
+
iIncallBubble = CAknIncallBubble::NewL();
iActiveIdleState = CActiveIdleState::NewL();
@@ -102,45 +100,37 @@
// Set up keysounds
if( aKeySoundConfig.iKeySounds )
{
- aKeySoundConfig.iKeySounds
- ->PushContextL( aKeySoundConfig.iContextResId );
+ aKeySoundConfig.iKeySounds->PushContextL(
+ aKeySoundConfig.iContextResId );
}
- // Set Active Idle application to be system application and disable
- // priority switching performed by window server.
iEikEnv.SetSystem( ETrue );
- iEikEnv.WsSession().ComputeMode( RWsSession::EPriorityControlDisabled );
- // Eikon server window group
- iThisApplicationWgId = iEikEnv.RootWin().Identifier();
-
- iEikEnv.RootWin().EnableFocusChangeEvents();
- iEikEnv.RootWin().EnableGroupChangeEvents();
+ TInt wgId( iEikEnv.RootWin().Identifier() );
+ TInt focusWgId( iEikEnv.WsSession().GetFocusWindowGroup() );
- CApaWindowGroupName::FindByAppUid( KAknCapServerUid,
- iEikEnv.WsSession(),
- iEikonServerWgId );
-
- iActiveIdleState->SetIsIdleForeground( iThisApplicationForeground );
+ if ( focusWgId == wgId )
+ {
+ __PRINTS( "*** CAiUiIdleIntegrationImpl::ConstructL - iForeground: 1" );
+
+ iForeground = ETrue;
+ }
+
+ iActiveIdleState->SetIsIdleForeground( iForeground );
- iSystemStateObserver = AiUtility::CreatePSPropertyObserverL(
- TCallBack( HandleSystemStateChange, this ),
- KPSUidStartup,
- KPSGlobalSystemState );
-
- iUiStartupStateObserver = AiUtility::CreatePSPropertyObserverL(
- TCallBack( HandleUiStartupStateChange, this ),
- KPSUidStartup,
- KPSStartupUiPhase );
-
iCallStatusObserver = AiUtility::CreatePSPropertyObserverL(
TCallBack( HandleCallEvent, this ),
KPSUidCtsyCallInformation,
KCTsyCallState );
- // Update state flags.
- CAiUiIdleIntegrationImpl::HandleSystemStateChange( this );
- CAiUiIdleIntegrationImpl::HandleUiStartupStateChange( this );
+ iUiStartupStateObserver = AiUtility::CreatePSPropertyObserverL(
+ TCallBack( HandleUiStartupStateChange, this ),
+ KPSUidStartup,
+ KPSStartupUiPhase );
+
+ HandleUiStartupStateChange( this );
+
+ __TIME_ENDMARK( "CAiUiIdleIntegrationImpl::ConstructL, done", time );
}
// ----------------------------------------------------------------------------
@@ -148,24 +138,23 @@
// ----------------------------------------------------------------------------
//
void CAiUiIdleIntegrationImpl::ActivateUI()
- {
- if( iUiStartupPhaseOk && iSystemStateOk )
- {
- RWsSession& wsSession( iEikEnv.WsSession() );
-
- TInt focusWgId( wsSession.GetFocusWindowGroup() );
+ {
+ __TICK( "CAiUiIdleIntegrationImpl::ActivateUI" );
+
+ Release( iUiStartupStateObserver );
+ iUiStartupStateObserver = NULL;
+
+ iAiFwEventHandler->HandleActivateUI();
+
+ RWsSession& wsSession( iEikEnv.WsSession() );
+
+ TApaTaskList taskList( wsSession );
+
+ TApaTask task( taskList.FindApp( TUid::Uid( AI_UID3_AIFW_EXE ) ) );
+
+ task.BringToForeground();
- if( iThisApplicationWgId != focusWgId )
- {
- TApaTaskList taskList( wsSession );
-
- TApaTask task( taskList.FindApp( TUid::Uid( AI_UID3_AIFW_EXE ) ) );
-
- task.SendSystemEvent( EApaSystemEventBroughtToForeground );
- }
-
- iAiFwEventHandler->HandleActivateUI();
- }
+ __PRINTS( "*** CAiUiIdleIntegrationImpl::ActivateUI - done" );
}
// ----------------------------------------------------------------------------
@@ -175,64 +164,52 @@
void CAiUiIdleIntegrationImpl::HandleWsEventL( const TWsEvent& aEvent,
CCoeControl* /*aDestination*/ )
{
- if( !iSystemStateOk || !iUiStartupPhaseOk )
- {
- return;
- }
-
- switch ( aEvent.Type() )
- {
- case KAknFullOrPartialForegroundGained:
- {
- if ( !iThisApplicationForeground )
- {
- iThisApplicationForeground = ETrue;
- iActiveIdleState->SetIsIdleForeground( ETrue );
- SetCallBubbleIfNeededL();
- }
- break;
- }
-
- case KAknFullOrPartialForegroundLost:
- {
- if ( iThisApplicationForeground )
- {
- iThisApplicationForeground = EFalse;
- iActiveIdleState->SetIsIdleForeground( EFalse );
- ClearCallBubbleL();
- }
- break;
- }
+ TInt type( aEvent.Type() );
+
+ if ( type == KAknFullOrPartialForegroundGained )
+ {
+ __PRINTS( "*** CAiUiIdleIntegrationImpl::HandleWsEventL - Foreground" );
- case EEventKeyDown:
- {
- if( aEvent.Key()->iScanCode == EStdKeyDevice0 )
- {
- TBool isDialog( iEikEnv.AppUi()->IsDisplayingMenuOrDialog() );
-
- if( isDialog || iAiFwEventHandler->QueryIsMenuOpen() )
- {
- RProperty::Set(
- KPSUidAiInformation,
- KActiveIdlePopupState,
- EPSAiDisplayingMenuOrDialog );
- }
- else
- {
- RProperty::Set(
- KPSUidAiInformation,
- KActiveIdlePopupState,
- EPSAiNotDisplayingMenuOrDialog );
- }
- }
- break;
- }
-
- default:
- {
- break;
- }
- }
+ if ( !iForeground )
+ {
+ iForeground = ETrue;
+ iActiveIdleState->SetIsIdleForeground( ETrue );
+ SetCallBubbleIfNeededL();
+ }
+ }
+ else if ( type == KAknFullOrPartialForegroundLost )
+ {
+ __PRINTS( "*** CAiUiIdleIntegrationImpl::HandleWsEventL - Background" );
+
+ if ( iForeground )
+ {
+ iForeground = EFalse;
+ iActiveIdleState->SetIsIdleForeground( EFalse );
+ ClearCallBubbleL();
+ }
+ }
+ else if ( type == EEventKeyDown )
+ {
+ if( aEvent.Key()->iScanCode == EStdKeyDevice0 )
+ {
+ TBool isDialog( iEikEnv.AppUi()->IsDisplayingMenuOrDialog() );
+
+ if( isDialog || iAiFwEventHandler->QueryIsMenuOpen() )
+ {
+ RProperty::Set(
+ KPSUidAiInformation,
+ KActiveIdlePopupState,
+ EPSAiDisplayingMenuOrDialog );
+ }
+ else
+ {
+ RProperty::Set(
+ KPSUidAiInformation,
+ KActiveIdlePopupState,
+ EPSAiNotDisplayingMenuOrDialog );
+ }
+ }
+ }
}
// ----------------------------------------------------------------------------
@@ -284,110 +261,49 @@
}
// ----------------------------------------------------------------------------
-// CAiUiIdleIntegrationImpl::HandleSystemStateChange()
-// ----------------------------------------------------------------------------
-//
-TInt CAiUiIdleIntegrationImpl::HandleSystemStateChange( TAny* aPtr )
- {
- __ASSERT_DEBUG( aPtr,
- AiFwPanic::Panic( AiFwPanic::EAiFwPanic_NullPointerReference ) );
-
- CAiUiIdleIntegrationImpl* self =
- static_cast<CAiUiIdleIntegrationImpl*>( aPtr );
-
- if( !self->iSystemStateOk )
- {
- TInt state( 0 );
-
- self->iSystemStateObserver->Get( state );
-
- if ( state == ESwStateCriticalPhaseOK ||
- state == ESwStateNormalRfOn ||
- state == ESwStateNormalRfOff ||
- state == ESwStateNormalBTSap )
- {
- self->iSystemStateOk = ETrue;
- self->ActivateUI();
- }
- }
-
- return KErrNone;
- }
-
-// ----------------------------------------------------------------------------
-// CAiUiIdleIntegrationImpl::HandleUiStartupStateChange()
-// ----------------------------------------------------------------------------
-//
-TInt CAiUiIdleIntegrationImpl::HandleUiStartupStateChange( TAny *aPtr )
- {
- __ASSERT_DEBUG( aPtr,
- AiFwPanic::Panic( AiFwPanic::EAiFwPanic_NullPointerReference ) );
-
- CAiUiIdleIntegrationImpl* self =
- static_cast<CAiUiIdleIntegrationImpl*>( aPtr );
-
- if( !self->iUiStartupPhaseOk )
- {
- TInt state( 0 );
-
- self->iUiStartupStateObserver->Get( state );
-
- if( state == EStartupUiPhaseAllDone )
- {
- self->iUiStartupPhaseOk = ETrue;
-
- self->ActivateUI();
- }
- }
-
- return KErrNone;
- }
-
-// ----------------------------------------------------------------------------
// CAiUiIdleIntegrationImpl::HandleCallEvent()
// ----------------------------------------------------------------------------
//
TInt CAiUiIdleIntegrationImpl::HandleCallEvent( TAny* aPtr )
{
__ASSERT_DEBUG( aPtr,
- AiFwPanic::Panic( AiFwPanic::EAiFwPanic_NullPointerReference ) );
+ AiFwPanic::Panic( AiFwPanic::EAiFwPanic_NullPointerReference ) );
CAiUiIdleIntegrationImpl* self =
- static_cast<CAiUiIdleIntegrationImpl*>( aPtr );
+ static_cast< CAiUiIdleIntegrationImpl* >( aPtr );
TInt callStatus( EPSCTsyCallStateNone );
TInt err( self->iCallStatusObserver->Get( callStatus ) );
- if( err == KErrNone )
+ if ( err == KErrNone )
{
// Call ongoing => show bubble if not showing already
TBool allowed = EFalse;
- if( !self->iIncallBubbleAllowed &&
- self->iThisApplicationForeground &&
+ if ( !self->iIncallBubbleAllowed &&
+ self->iForeground &&
( callStatus > EPSCTsyCallStateNone ) )
{
allowed = ETrue;
TRAP( err,
self->iIncallBubble->SetIncallBubbleAllowedInIdleL( allowed ) );
-
-
- if( err == KErrNone )
+
+ if ( err == KErrNone )
{
self->iIncallBubbleAllowed = allowed;
}
}
// No call ongoing => hide if bubble is visible
- else if( self->iIncallBubbleAllowed && callStatus <= EPSCTsyCallStateNone )
+ else if ( self->iIncallBubbleAllowed && callStatus <= EPSCTsyCallStateNone )
{
allowed = EFalse;
TRAP( err,
self->iIncallBubble->SetIncallBubbleAllowedInIdleL( allowed ) );
- if( err == KErrNone )
+ if ( err == KErrNone )
{
self->iIncallBubbleAllowed = allowed;
}
@@ -397,5 +313,33 @@
return err;
}
-// End of file.
+// ----------------------------------------------------------------------------
+// CAiUiIdleIntegrationImpl::HandleUiStartupStateChange()
+// ----------------------------------------------------------------------------
+//
+TInt CAiUiIdleIntegrationImpl::HandleUiStartupStateChange( TAny *aPtr )
+ {
+ __ASSERT_DEBUG( aPtr,
+ AiFwPanic::Panic( AiFwPanic::EAiFwPanic_NullPointerReference ) );
+
+ CAiUiIdleIntegrationImpl* self =
+ static_cast< CAiUiIdleIntegrationImpl* >( aPtr );
+ if ( !self->iUiStartupPhaseOk )
+ {
+ TInt state( 0 );
+
+ self->iUiStartupStateObserver->Get( state );
+
+ if ( state == EStartupUiPhaseAllDone )
+ {
+ self->iUiStartupPhaseOk = ETrue;
+
+ self->ActivateUI();
+ }
+ }
+
+ return KErrNone;
+ }
+
+// End of file
--- a/idlefw/src/idleint/aiuiidleintegrationimpl.h Wed Mar 03 15:38:34 2010 +0200
+++ b/idlefw/src/idleint/aiuiidleintegrationimpl.h Wed May 12 13:36:47 2010 +0300
@@ -19,9 +19,13 @@
#ifndef C_AIUIIDLEINTEGRATIONIMPL_H
#define C_AIUIIDLEINTEGRATIONIMPL_H
+// System includes
+#include <e32property.h>
+
+// User includes
#include "aiuiidleintegration.h"
-#include <startupdomainpskeys.h>
+// Forward declarations
class CActiveIdleState;
class CAknIncallBubble;
class MAiPSPropertyObserver;
@@ -32,7 +36,8 @@
*/
NONSHARABLE_CLASS( CAiUiIdleIntegrationImpl ) : public CAiUiIdleIntegration
{
-public: // constructor and destructor
+public:
+ // constructor and destructor
static CAiUiIdleIntegrationImpl* NewL( CEikonEnv& aEikEnv,
const TAiIdleKeySoundConfig& aKeySoundConfig,
@@ -40,65 +45,75 @@
~CAiUiIdleIntegrationImpl();
-public: // new functions
+public:
+ // new functions
void HandleWsEventL( const TWsEvent& aEvent,
CCoeControl* aDestination );
-private: // constructors
+private:
+ // constructors
CAiUiIdleIntegrationImpl(CEikonEnv& aEikEnv,
MAiFwEventHandler* aAiFwEventHandler);
void ConstructL(const TAiIdleKeySoundConfig& aKeySoundConfig);
-private: // new functions
+private:
+ // new functions
void ActivateUI();
void SetCallBubbleIfNeededL();
void ClearCallBubbleL();
- static TInt HandleSystemStateChange( TAny *aPtr );
- static TInt HandleUiStartupStateChange( TAny *aPtr );
static TInt HandleCallEvent( TAny *aPtr );
-private: // data
-
- CEikonEnv& iEikEnv;
- CActiveIdleState* iActiveIdleState;
- TBool iThisApplicationForeground;
- TBool iIncallBubbleAllowed;
- TInt iThisApplicationWgId;
- TInt iEikonServerWgId;
- CAknIncallBubble* iIncallBubble;
+ static TInt HandleUiStartupStateChange( TAny *aPtr );
+
+private:
+ // data
/**
- * Observer for system state Publish&Subscribe key.
- * Owned.
+ * EikonEnv
+ * Not owned
*/
- MAiPSPropertyObserver* iSystemStateObserver;
-
+ CEikonEnv& iEikEnv;
+
/**
- * Observer for system state Publish&Subscribe key.
- * Owned.
+ * Active idle state
+ * Owned
*/
- MAiPSPropertyObserver* iUiStartupStateObserver;
+ CActiveIdleState* iActiveIdleState;
+
+ /**
+ * Incall bubble
+ * Owned
+ */
+ CAknIncallBubble* iIncallBubble;
/**
* Observer telephony state
* Owned
*/
MAiPSPropertyObserver* iCallStatusObserver;
+
+ /**
+ * Ui startup state
+ * Owned
+ */
+ MAiPSPropertyObserver* iUiStartupStateObserver;
+
/**
* Framework event handler. For notifying critical startup over.
* Not owned.
*/
MAiFwEventHandler* iAiFwEventHandler;
- TBool iSystemStateOk;
- TBool iUiStartupPhaseOk;
+ TBool iForeground;
+ TBool iIncallBubbleAllowed;
+ TBool iUiStartupPhaseOk;
};
-
#endif // C_AIUIIDLEINTEGRATION_H
+// End of file
--- a/idlefw/src/utility/caiplugintool.cpp Wed Mar 03 15:38:34 2010 +0200
+++ b/idlefw/src/utility/caiplugintool.cpp Wed May 12 13:36:47 2010 +0300
@@ -15,14 +15,29 @@
*
*/
+// System includes
-#include <aicontentpublisher.h>
+// User includes
+#include <hscontentpublisher.h>
+
#include "caiplugintool.h"
+// ======== MEMBER FUNCTIONS ========
+
+// ----------------------------------------------------------------------------
+// CAiPluginTool::CAiPluginTool
+//
+// ----------------------------------------------------------------------------
+//
CAiPluginTool::CAiPluginTool()
{
}
+// ----------------------------------------------------------------------------
+// CAiPluginTool::NewL
+//
+// ----------------------------------------------------------------------------
+//
CAiPluginTool* CAiPluginTool::NewL()
{
CAiPluginTool* self = new ( ELeave ) CAiPluginTool();
@@ -32,59 +47,37 @@
return self;
}
+// ----------------------------------------------------------------------------
+// CAiPluginTool::ConstructL
+//
+// ----------------------------------------------------------------------------
+//
void CAiPluginTool::ConstructL()
{
}
+// ----------------------------------------------------------------------------
+// CAiPluginTool::Release
+//
+// ----------------------------------------------------------------------------
+//
void CAiPluginTool::Release()
{
delete this;
}
-
-const TAiPublisherInfo* CAiPluginTool::PublisherInfoL(
- CAiContentPublisher& aContentPublisher )
+
+// ----------------------------------------------------------------------------
+// CAiPluginTool::ContentItemIterator
+//
+// ----------------------------------------------------------------------------
+//
+MAiContentItemIterator* CAiPluginTool::ContentItemIterator(
+ CHsContentPublisher& aContentPublisher,
+ CHsContentPublisher::TProperty aType )
{
- const TAiPublisherInfo* result = NULL;
- MAiPropertyExtension* propExt = PropertyExt( aContentPublisher );
- if ( propExt )
- {
- result = propExt->PublisherInfoL();
- }
- return result;
+ return static_cast< MAiContentItemIterator* >(
+ aContentPublisher.GetProperty( aType ) );
}
-MAiContentItemIterator* CAiPluginTool::ContentItemIteratorL(
- CAiContentPublisher& aContentPublisher,
- TInt aContentType )
- {
- MAiContentItemIterator* result = NULL;
- MAiPropertyExtension* propExt = PropertyExt( aContentPublisher );
- if ( propExt )
- {
- TAny* prop = NULL;
- prop = propExt->GetPropertyL( aContentType );
- if ( prop )
- {
- result = static_cast<MAiContentItemIterator*>( prop );
- }
- }
- return result;
- }
-
-MAiPropertyExtension* CAiPluginTool::PropertyExt(
- CAiContentPublisher& aContentPublisher )
- {
- return static_cast<MAiPropertyExtension*>(
- aContentPublisher.Extension( KExtensionUidProperty ) );
- }
-
-MAiEventHandlerExtension* CAiPluginTool::EventHandlerExt(
- CAiContentPublisher& aContentPublisher )
- {
- return static_cast<MAiEventHandlerExtension*>(
- aContentPublisher.Extension( KExtensionUidEventHandler ) );
- }
-
// End of File.
-
--- a/idlefw/src/utility/caipspropertyobserver.cpp Wed Mar 03 15:38:34 2010 +0200
+++ b/idlefw/src/utility/caipspropertyobserver.cpp Wed May 12 13:36:47 2010 +0300
@@ -38,7 +38,7 @@
CPSPropertyObserver::CPSPropertyObserver( TCallBack aCallBack,
TUid aCategory,
TInt aKey )
- : CActive( EPriorityStandard ),
+ : CActive( EPriorityHigh ),
iCallBack( aCallBack ),
iCategory( aCategory ),
iKey( aKey )
--- a/layers.sysdef.xml Wed Mar 03 15:38:34 2010 +0200
+++ b/layers.sysdef.xml Wed May 12 13:36:47 2010 +0300
@@ -16,13 +16,19 @@
<module name="homescreensrv_api_tests">
<unit unitID="hsdo.content_harvester.test" name="content_harvester.test" bldFile="&layer_real_source_path;/homescreensrv_plat/content_harvester_plugin_api/tsrc/group" mrp="" />
<unit unitID="hsdo.menu_content_service.test" name="menu_content_service.test" bldFile="&layer_real_source_path;/homescreensrv_plat/menu_content_service_api/tsrc/group" mrp="" />
- <unit unitID="hsdo.ai_utilities_api.test" name="ai_utilities_api.test" bldFile="&layer_real_source_path;/homescreensrv_plat/ai_utilities_api/internal/tsrc/group" mrp="" />
<unit unitID="hsdo.action_handler_plugin_api.test" name="action_handler_plugin_api.test" bldFile="&layer_real_source_path;/homescreensrv_plat/action_handler_plugin_api/tsrc/group" mrp="" />
<unit unitID="hsdo.menu_sat_interface_api.test" name="menu_sat_interface_api.test" bldFile="&layer_real_source_path;/homescreensrv_plat/menu_sat_interface_api/tsrc/group" mrp="" />
<unit unitID="hsdo.sapi_homescreenplugin.test" name="sapi_homescreenplugin.test" bldFile="&layer_real_source_path;/homescreensrv_plat/sapi_homescreenplugin/tsrc/group" mrp="" />
</module>
</layer>
+ <layer name="unit_test_layer">
+ <module name="homescreensrv_unit_tests">
+ <unit unitID="hsdo.idlefw.test" name="idlefw.test" bldFile="&layer_real_source_path;/idlefw/Internal/tsrc/group" mrp="" />
+ <unit unitID="hsdo.hsps.test" name="hsps.test" bldFile="&layer_real_source_path;/homescreensrv_plat/sapi_homescreenplugin/tsrc/group" mrp="" />
+ </module>
+ </layer>
+
</systemModel>
</SystemDefinition>
Binary file menucontentsrv/conf/s60mcs.confml has changed
--- a/menucontentsrv/extinc/mcssathandler.h Wed Mar 03 15:38:34 2010 +0200
+++ b/menucontentsrv/extinc/mcssathandler.h Wed May 12 13:36:47 2010 +0300
@@ -21,7 +21,7 @@
#include <AknIconUtils.h>
-#include <RSatSession.h>
+#include <rsatsession.h>
#include <tsaticoninfo.h>
#ifdef SIM_ATK_SERVICE_API_V1
#include <rsatservice.h>// MCL
--- a/menucontentsrv/extsrc/mcsmenuiconutility.cpp Wed Mar 03 15:38:34 2010 +0200
+++ b/menucontentsrv/extsrc/mcsmenuiconutility.cpp Wed May 12 13:36:47 2010 +0300
@@ -12,7 +12,7 @@
* Contributors:
*
* Description: The API supports requesting raw bitmaps
-* Version : %version: 11 % << Don't touch! Updated by Synergy at check-out.
+* Version : %version: ou1s60ui#12 % << Don't touch! Updated by Synergy at check-out.
*
*/
@@ -24,7 +24,7 @@
#include <mcsmenu.h>
#include <mcsmenuitem.h>
#include <mcsmenuutils.h>
-#include <SATDomainPSKeys.h>
+#include <satdomainpskeys.h>
#include <e32property.h>
#include <apgcli.h>
#include <AknInternalIconUtils.h>
--- a/menucontentsrv/group/mcsmenuhandler.mmp Wed Mar 03 15:38:34 2010 +0200
+++ b/menucontentsrv/group/mcsmenuhandler.mmp Wed May 12 13:36:47 2010 +0300
@@ -32,6 +32,7 @@
SOURCE menuurlhandler.cpp
SOURCE menuuninstalloperation.cpp
SOURCE menulinkhandler.cpp
+SOURCE menutasklist.cpp
USERINCLUDE ../inc
USERINCLUDE ../handlerinc
@@ -56,6 +57,7 @@
LIBRARY cone.lib
LIBRARY efsrv.lib
LIBRARY avkon.lib
+LIBRARY charconv.lib
SOURCEPATH ../data
START RESOURCE 200113DE.rss
--- a/menucontentsrv/group/mcsmenusrv.mmp Wed Mar 03 15:38:34 2010 +0200
+++ b/menucontentsrv/group/mcsmenusrv.mmp Wed May 12 13:36:47 2010 +0300
@@ -12,7 +12,7 @@
* Contributors:
*
* Description:
-* Version : %version: sa1spcx1#5.1.7 % << Don't touch! Updated by Synergy at check-out.
+* Version : %version: sa1spcx1#5.1.9 % << Don't touch! Updated by Synergy at check-out.
*
*/
@@ -46,4 +46,3 @@
LIBRARY mcsmenuutils.lib
-
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/menucontentsrv/handlerinc/menutasklist.h Wed May 12 13:36:47 2010 +0300
@@ -0,0 +1,91 @@
+/*
+* Copyright (c) 2005 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 MENUTASKLIST_H
+#define MENUTASKLIST_H
+
+// INCLUDES
+
+#include <w32std.h>
+#include <apgtask.h>
+
+// CLASS DECLARATION
+
+/**
+* Class for finding out about running applications.
+*
+* This is a modification of the original CAknTaskList class, which
+* differs in that it does not discriminate applications based on their
+* window group priority.
+* @since Series 60 3.0
+*/
+class CMenuTaskList : public CBase
+ {
+public:
+ /**
+ * Factory function
+ * @param aWsSession an open session to the window server, often from CEikonEnv::WsSession()
+ * @return a new fully constructed instance of CMenuTaskList
+ */
+ static CMenuTaskList* NewL(RWsSession& aWsSession);
+ /**
+ * Factory function
+ * @param aWsSession an open session to the window server, often from CEikonEnv::WsSession()
+ * @return a new fully constructed instance of CMenuTaskList, which is on the cleanup stack
+ */
+ static CMenuTaskList* NewLC(RWsSession& aWsSession);
+ /**
+ * Destructor.
+ */
+ ~CMenuTaskList();
+
+ /**
+ * Refresh the window group array
+ */
+ void UpdateListL();
+ /**
+ * Accessor for the window group array
+ * @return an array containing the window groups of running applications.
+ */
+ const RArray<RWsSession::TWindowGroupChainInfo>& WgArray() const;
+
+ /**
+ * Find an application with the requested UID 3, which is running as a root application
+ * @param aAppUid the UID 3 of the target application.
+ * @return a TApaTask which refers to the running instance of the application.
+ * if the application is not running, the TApaTask's Exists() function will return EFalse.
+ */
+ TApaTask FindRootApp(TUid aAppUid) const;
+ /**
+ * Query whether an application's window group is running as a root application.
+ * @param aWgId the window group identifier of the target application.
+ * @return ETrue if this window group is running as a root window group.
+ */
+ TBool IsRootWindowGroup(TInt aWgId) const;
+
+private:
+ CMenuTaskList(RWsSession& aWsSession);
+ void ConstructL();
+
+private:
+ RWsSession& iWs;
+ RArray<RWsSession::TWindowGroupChainInfo> iWgs;
+ };
+
+#endif
--- a/menucontentsrv/handlerinc/menuuninstalloperation.h Wed Mar 03 15:38:34 2010 +0200
+++ b/menucontentsrv/handlerinc/menuuninstalloperation.h Wed May 12 13:36:47 2010 +0300
@@ -21,6 +21,7 @@
#include <e32base.h>
#include <SWInstApi.h>
+#include <widgetregistryclient.h>
class RMenu;
class CMenuItem;
@@ -51,11 +52,11 @@
void ConstructL( CMenuItem& aItem );
- void AppInfoL( const TUid& aAppUid, TPtrC8& aMimeType, TUid& aPackageUid );
+ void AppInfoL( const TUid& aAppUid, RBuf8& aMimeType, TUid& aPackageUid );
TBool GetInstallPkgUidL( const TDesC& aAppFullName, TUid& aPackageUid );
void GetJavaSuitUidL( const TUid& aAppUid, TUid& aPackageUid );
- TBool IsWidgetL( const TUid& aAppUid );
+ TBool IsWidget( const TUid& aAppUid );
private: // from CActive
@@ -73,6 +74,7 @@
} iState;
SwiUI::RSWInstLauncher iUninstaller;
CMenuOperation* iRemoveOperation;
+ RWidgetRegistryClientSession iWidgetRegistry;
TInt iId;
};
--- a/menucontentsrv/handlersrc/menuapphandler.cpp Wed Mar 03 15:38:34 2010 +0200
+++ b/menucontentsrv/handlersrc/menuapphandler.cpp Wed May 12 13:36:47 2010 +0300
@@ -18,6 +18,7 @@
#include "mcsmenuitem.h"
#include "menucompletedoperation.h"
#include "menuuninstalloperation.h"
+#include "menutasklist.h"
#include <mcsmenuutils.h>
#include <w32std.h>
@@ -26,7 +27,6 @@
#include <eikenv.h>
#include <eikappui.h>
#include <vwsdef.h>
-#include <AknTaskList.h>
// ================= MEMBER FUNCTIONS =======================
@@ -158,9 +158,8 @@
User::LeaveIfError( wsSession.Connect() );
CleanupClosePushL<RWsSession>( wsSession );
- TApaTaskList* taskList = new (ELeave) TApaTaskList( wsSession );
- TApaTask task = taskList->FindApp( aUid );
-
+ CMenuTaskList* taskList = CMenuTaskList::NewL( wsSession );
+ TApaTask task = taskList->FindRootApp( aUid );
delete taskList;
if ( task.Exists() )
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/menucontentsrv/handlersrc/menutasklist.cpp Wed May 12 13:36:47 2010 +0300
@@ -0,0 +1,91 @@
+/*
+* 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:
+*
+*/
+
+#include <apgwgnam.h>
+
+#include "menutasklist.h"
+
+CMenuTaskList* CMenuTaskList::NewL(RWsSession& aWsSession)
+ {
+ CMenuTaskList* self = NewLC(aWsSession);
+ CleanupStack::Pop(self);
+ return self;
+ }
+
+CMenuTaskList* CMenuTaskList::NewLC(RWsSession& aWsSession)
+ {
+ CMenuTaskList* self = new(ELeave) CMenuTaskList(aWsSession);
+ CleanupStack::PushL(self);
+ self->ConstructL();
+ return self;
+ }
+
+CMenuTaskList::CMenuTaskList(RWsSession& aWsSession)
+: iWs(aWsSession)
+ {
+ }
+
+void CMenuTaskList::ConstructL()
+ {
+ UpdateListL();
+ }
+
+CMenuTaskList::~CMenuTaskList()
+ {
+ iWgs.Close();
+ }
+
+void CMenuTaskList::UpdateListL()
+ {
+ User::LeaveIfError(iWs.WindowGroupList(&iWgs));
+ }
+
+
+TApaTask CMenuTaskList::FindRootApp(TUid aAppUid) const
+ {
+ TApaTask task(iWs);
+ task.SetWgId(0); // initialise task to non-existant task
+ // wgId = 0 tells FindAppByUid to start looking for apps
+ TInt wgId=0;
+ FOREVER
+ {
+ CApaWindowGroupName::FindByAppUid(aAppUid, iWs, wgId);
+ // KErrNotFound means that no more apps can be found
+ if (wgId == KErrNotFound)
+ break;
+ if (IsRootWindowGroup(wgId))
+ {
+ // Found a root wg with the right app UID, return it.
+ task.SetWgId(wgId);
+ break;
+ }
+ }
+ return task;
+ }
+
+TBool CMenuTaskList::IsRootWindowGroup(TInt aWgId) const
+ {
+ TInt count = iWgs.Count();
+ for (TInt ii=0; ii<count; ii++)
+ {
+ const RWsSession::TWindowGroupChainInfo& info = iWgs[ii];
+ // find the window group id and check that it has no parent
+ if (info.iId == aWgId)
+ return (info.iParentId <= 0);
+ }
+ return EFalse;
+ }
--- a/menucontentsrv/handlersrc/menuuninstalloperation.cpp Wed Mar 03 15:38:34 2010 +0200
+++ b/menucontentsrv/handlersrc/menuuninstalloperation.cpp Wed May 12 13:36:47 2010 +0300
@@ -17,11 +17,11 @@
#include <apgcli.h>
#include <swi/sisregistrysession.h>
#include <swi/sisregistryentry.h>
-#include <widgetregistryclient.h>
#include <javaregistry.h>
#include <javaregistrypackageentry.h>
#include <javaregistryapplicationentry.h>
#include <mcsmenuutils.h>
+#include <utf.h>
#include "mcsdef.h"
#include "mcsmenu.h"
#include "mcsmenuitem.h"
@@ -44,6 +44,7 @@
Cancel();
iUninstaller.Close();
delete iRemoveOperation;
+ iWidgetRegistry.Close();
}
// ---------------------------------------------------------
@@ -84,12 +85,12 @@
//
void CMenuUninstallOperation::ConstructL( CMenuItem& aItem )
{
+ User::LeaveIfError( iWidgetRegistry.Connect() );
TBool exists;
TPtrC uidAttr( aItem.GetAttributeL( KMenuAttrUid, exists ) );
TUint uid;
TUid packageUid = KNullUid;
- TPtrC8 mimeType;
-
+
if( !exists )
{
@@ -112,13 +113,16 @@
// Prepare parameters
MenuUtils::GetTUint( uidAttr, uid );
+
+ RBuf8 mimeType;
+ mimeType.CleanupClosePushL();
AppInfoL( TUid::Uid( uid ), mimeType, packageUid );
// Commence the uninstallations
iUninstaller.Uninstall( iStatus, packageUid, mimeType );
iObserverStatus = KRequestPending;
if( mimeType == KMidletMimeType()
- && IsWidgetL( TUid::Uid( uid ) ) )
+ && IsWidget( TUid::Uid( uid ) ) )
{
//we remove java type app(it will gain different uid
//during next install) and widget type app(it MIGHT get
@@ -131,7 +135,7 @@
//appscanner will hide it for later passible reinstallation
iState = ERemoving;
}
-
+ CleanupStack::PopAndDestroy( &mimeType );
SetActive();
}
@@ -139,7 +143,8 @@
// CMenuUninstallOperation::AppInfo
// ---------------------------------------------------------
//
-void CMenuUninstallOperation::AppInfoL( const TUid& aAppUid, TPtrC8& aMimeType, TUid& aPackageUid )
+void CMenuUninstallOperation::AppInfoL( const TUid& aAppUid,
+ RBuf8& aMimeType, TUid& aPackageUid )
{
TUid typeUid;
RApaLsSession apaLsSession;
@@ -152,12 +157,27 @@
typeUid == KMidletType )
{
GetJavaSuitUidL( aAppUid, aPackageUid );
- aMimeType.Set( KMidletMimeType );
+ User::LeaveIfError( aMimeType.Create( KMidletMimeType() ) );
}
- else if( IsWidgetL( aAppUid ) )
+ else if( IsWidget( aAppUid ) )
{
aPackageUid = aAppUid;
- aMimeType.Set( KWidgetMimeType );
+ CWidgetPropertyValue* widgetProperty( iWidgetRegistry.
+ GetWidgetPropertyValueL( aAppUid, EMimeType ) );
+ CleanupStack::PushL( widgetProperty );
+ TPtrC mimeType( *widgetProperty );
+ if (mimeType.Length() == 0)
+ {
+ User::LeaveIfError( aMimeType.Create( KWidgetMimeType() ) );
+ }
+ else
+ {
+ HBufC8* mimeType8 = CnvUtfConverter::ConvertFromUnicodeToUtf8L( mimeType );
+ CleanupStack::PushL( mimeType8 );
+ User::LeaveIfError( aMimeType.Create( *mimeType8 ) );
+ CleanupStack::PopAndDestroy( mimeType8 );
+ }
+ CleanupStack::PopAndDestroy( widgetProperty );
}
else
{
@@ -167,7 +187,7 @@
{
aPackageUid = aAppUid;
}
- aMimeType.Set( KAppMimeType );
+ User::LeaveIfError( aMimeType.Create( KAppMimeType() ) );
}
CleanupStack::PopAndDestroy( &apaLsSession );
@@ -278,21 +298,10 @@
// ---------------------------------------------------------
//
-TBool CMenuUninstallOperation::IsWidgetL( const TUid& aAppUid )
- {
- RWidgetRegistryClientSession widgetReg;
- TBool isWidget;
-
- if( KErrNone != widgetReg.Connect() )
- {
- return EFalse;
- }
- CleanupClosePushL( widgetReg);
- isWidget = widgetReg.IsWidget( aAppUid );
- CleanupStack::PopAndDestroy( &widgetReg );
-
- return isWidget;
- }
+TBool CMenuUninstallOperation::IsWidget( const TUid& aAppUid )
+ {
+ return iWidgetRegistry.IsWidget( aAppUid );
+ }
// ---------------------------------------------------------
// CMenuUninstallOperation::RunL
--- a/menucontentsrv/srvsrc/mcsrunningappswgmonitor.cpp Wed Mar 03 15:38:34 2010 +0200
+++ b/menucontentsrv/srvsrc/mcsrunningappswgmonitor.cpp Wed May 12 13:36:47 2010 +0300
@@ -24,6 +24,9 @@
#include "mcsrunningappshandler.h"
#include "menueng.h"
+const TInt KWindowGroupPosition = -1;
+const TInt KWindowGroupPriority = -1;
+
// ---------------------------------------------------------
// CMcsRunningAppsWgMonitor::NewL
// ---------------------------------------------------------
@@ -91,9 +94,8 @@
iWg.DisableModifierChangedEvents();
iWg.DisableOnEvents();
iWg.DisableScreenChangeEvents();
-
+ iWg.SetOrdinalPosition( KWindowGroupPosition, KWindowGroupPriority );
User::LeaveIfError( iWg.EnableGroupListChangeEvents() );
-
//it makes the soft keys working
iWg.EnableReceiptOfFocus( EFalse );
--- a/menucontentsrv/srvsrc/menusrvengutils.cpp Wed Mar 03 15:38:34 2010 +0200
+++ b/menucontentsrv/srvsrc/menusrvengutils.cpp Wed May 12 13:36:47 2010 +0300
@@ -21,7 +21,7 @@
#include <javaregistryentry.h>
#include <drmrightsinfo.h>
#include <e32property.h>
-#include <SATDomainPSKeys.h>
+#include <satdomainpskeys.h>
#include <AknTaskList.h>
#include <mmf/common/mmfcontrollerpluginresolver.h>
#include <widgetregistryclient.h>
--- a/menucontentsrv/srvsrc/menusrvmain.cpp Wed Mar 03 15:38:34 2010 +0200
+++ b/menucontentsrv/srvsrc/menusrvmain.cpp Wed May 12 13:36:47 2010 +0300
@@ -16,7 +16,6 @@
*/
// INCLUDE FILES
-
#include "menusrv.h"
// ==================== LOCAL FUNCTIONS ====================
@@ -27,6 +26,5 @@
*/
GLDEF_C TInt E32Main()
{
- TInt err = RunMenuServer();
- return err;
+ return RunMenuServer();
}
--- a/package_definition.xml Wed Mar 03 15:38:34 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,89 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<SystemDefinition schema="3.0.0">
- <package id="homescreensrv" name="Home Screen Services" levels="plugin framework server generic specific">
- <collection id="contentpublishingsrv" name="Content Publishing Service" level="server">
- <component id="contentpublishingutils" filter="s60" name="Content Publishing Utils">
- <unit bldFile="contentpublishingsrv/contentpublishingutils/group"/>
- <!-- should only have one bld.inf, does the below need to be #included in the above ? -->
- <unit bldFile="contentpublishingsrv/contentpublishingutils/contentpublishingdebug/group"/>
- </component>
- <component id="contentpublishingserver" filter="s60" name="Content Publishing Server">
- <unit bldFile="contentpublishingsrv/contentpublishingserver/group"/>
- </component>
- <component id="contentharvester" filter="s60" name="Content Harvester">
- <unit bldFile="contentpublishingsrv/contentharvester/group"/>
- </component>
- <component id="contentpublishingsrv_build" filter="s60" name="Content Publishing Service Build">
- <unit bldFile="contentpublishingsrv/group"/>
- </component>
- </collection>
- <collection id="backsteppingsrv" name="Back Stepping Service" level="server">
- <component id="bsengine" name="Back Stepping Engine" filter="s60">
- <unit bldFile="backsteppingsrv/group"/>
- </component>
- </collection>
- <collection id="xcfw" name="XML Content Framework" level="framework">
- <component id="xcfw_build" filter="s60" name="XML Content Framework Build">
- <unit bldFile="xcfw/group"/>
- </component>
- </collection>
- <collection id="homescreenpluginsrv" name="Home Screen Plugin Service" level="plugin">
- <component id="hspsdefinitionengine" filter="s60" name="HS Plugin Service Definition Engine">
- <unit bldFile="homescreenpluginsrv/hspsdefinitionengine/group"/>
- </component>
- <component id="hspsdom" filter="s60" name="HS Plugin Service DOM">
- <unit bldFile="homescreenpluginsrv/hspsdom/group"/>
- </component>
- <component id="hspspluginregistry" filter="s60" name="HS Plugin Registry">
- <unit bldFile="homescreenpluginsrv/hspspluginregistry/group"/>
- </component>
- <component id="hspsmanager" filter="s60" name="HS Plugin Service Manager">
- <unit bldFile="homescreenpluginsrv/hspsmanager/group"/>
- </component>
- <component id="hspsodt" filter="s60" name="HS Plugin Service Object Description Tree">
- <unit bldFile="homescreenpluginsrv/hspsodt/group"/>
- </component>
- <component id="hspsresource" filter="s60" name="HS Plugin Server Resource">
- <unit bldFile="homescreenpluginsrv/hspsresource/group"/>
- </component>
- <component id="hspsresult" filter="s60" name="HS Plugin Server Result">
- <unit bldFile="homescreenpluginsrv/hspsresult/group"/>
- </component>
- <component id="hspstools" filter="s60" name="HS Server Tools">
- <unit bldFile="homescreenpluginsrv/hspstools/group"/>
- </component>
- <component id="homescreenpluginsrv_build" filter="s60" name="HS Plugin Service Build">
- <unit bldFile="homescreenpluginsrv/group"/>
- </component>
- </collection>
- <collection id="idlefw" name="Idle Framework" level="framework">
- <component id="idlefw_plugins" filter="s60" name="Idle Framework Plugins" class="plugin">
- <unit bldFile="idlefw/plugins/group"/>
- <!-- does the next need to be #included? -->
- <!-- <unit bldFile="idlefw/plugins/pslnactiveidleplugin/group"/> -->
- </component>
- <component id="idlefw_build" filter="s60" name="Idle Framework Build">
- <unit bldFile="idlefw/group"/>
- </component>
- </collection>
- <collection id="menucontentsrv" name="Menu Content Service" level="generic">
- <component id="menusatinterface" filter="s60" name="Menu SAT Interface">
- <unit bldFile="menucontentsrv/menusatinterface/group"/>
- </component>
- <component id="menucontentsrv_build" filter="s60" name="Menu Content Service Build">
- <unit bldFile="menucontentsrv/group"/>
- </component>
- </collection>
- <collection id="homescreensrv_info" name="Home Screen Services Info" level="specific">
- <component id="homescreensrv_plat" filter="s60" name="Home Screen Services Platform Interfaces" class="api">
- <unit bldFile="homescreensrv_plat/group"/>
- <!-- should the following be #included in the above? -->
- <!-- <unit bldFile="homescreensrv_plat/action_handler_plugin_api/tsrc/group"/> -->
- <!-- <unit bldFile="homescreensrv_plat/content_harvester_plugin_api/tsrc/group"/> -->
- <!-- <unit bldFile="homescreensrv_plat/hs_widget_publisher_api/tsrc/group"/> -->
- <!-- <unit bldFile="homescreensrv_plat/menu_content_service_api/tsrc/group"/> -->
- <!-- <unit bldFile="homescreensrv_plat/menu_sat_interface_api/tsrc/group"/> -->
- </component>
- </collection>
- </package>
-</SystemDefinition>
--- a/xcfw/src/xcfwlocalizer.cpp Wed Mar 03 15:38:34 2010 +0200
+++ b/xcfw/src/xcfwlocalizer.cpp Wed May 12 13:36:47 2010 +0300
@@ -159,9 +159,8 @@
do {
lcstring.Num( (TInt64)langs[current] );
codelen = lcstring.Length()>1?lcstring.Length():KMinLangCodeLen;
- locfile->Des().Copy( PathInfo::RomRootPath().Left( KPathStartLoc ) );
- locfile->Des().Append( filepath );
- locfile->Des().Format( locfile->Des(), codelen, langs[current] );
+ locfile->Des().Format( filepath, codelen, langs[current] );
+ locfile->Des().Insert( 0, PathInfo::RomRootPath().Left( KPathStartLoc ) );
current--;
} while ( current >= 0 &&
!BaflUtils::FileExists( aFileSystem, locfile->Des() ) );