# HG changeset patch # User Dremov Kirill (Nokia-D-MSW/Tampere) # Date 1266613649 -7200 # Node ID d0529222e3f095ade9fc1499059b0ac39d7ed30e # Parent 1a2a00e7866593e713ff15666bc8b4ca304b2a8e Revision: 201003 Kit: 201007 diff -r 1a2a00e78665 -r d0529222e3f0 contentpublishingsrv/contentharvester/contentharvesterswiplugin/inc/chswiplugin.h --- a/contentpublishingsrv/contentharvester/contentharvesterswiplugin/inc/chswiplugin.h Tue Feb 02 00:23:10 2010 +0200 +++ b/contentpublishingsrv/contentharvester/contentharvesterswiplugin/inc/chswiplugin.h Fri Feb 19 23:07:29 2010 +0200 @@ -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: diff -r 1a2a00e78665 -r d0529222e3f0 contentpublishingsrv/contentharvester/contentharvesterswiplugin/src/chswiplugin.cpp --- a/contentpublishingsrv/contentharvester/contentharvesterswiplugin/src/chswiplugin.cpp Tue Feb 02 00:23:10 2010 +0200 +++ b/contentpublishingsrv/contentharvester/contentharvesterswiplugin/src/chswiplugin.cpp Fri Feb 19 23:07:29 2010 +0200 @@ -21,14 +21,13 @@ #include #include -#include +#include #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 ); diff -r 1a2a00e78665 -r d0529222e3f0 contentpublishingsrv/contentharvester/contentharvesterswiplugin/src/chswiusbhandler.cpp --- a/contentpublishingsrv/contentharvester/contentharvesterswiplugin/src/chswiusbhandler.cpp Tue Feb 02 00:23:10 2010 +0200 +++ b/contentpublishingsrv/contentharvester/contentharvesterswiplugin/src/chswiusbhandler.cpp Fri Feb 19 23:07:29 2010 +0200 @@ -21,7 +21,7 @@ #include "chswiusbhandler.h" #include "chswiplugin.h" #include "chswimassmodeobserver.h" -#include +#include // CONSTANTS const TInt KCallBackDelay = 5000000; diff -r 1a2a00e78665 -r d0529222e3f0 contentpublishingsrv/contentpublishingserver/cpsqlitestorage/src/cpstorageengine.cpp --- a/contentpublishingsrv/contentpublishingserver/cpsqlitestorage/src/cpstorageengine.cpp Tue Feb 02 00:23:10 2010 +0200 +++ b/contentpublishingsrv/contentpublishingserver/cpsqlitestorage/src/cpstorageengine.cpp Fri Feb 19 23:07:29 2010 +0200 @@ -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 diff -r 1a2a00e78665 -r d0529222e3f0 homescreenpluginsrv/hspsdom/bwins/hspsdomdocumentu.def --- a/homescreenpluginsrv/hspsdom/bwins/hspsdomdocumentu.def Tue Feb 02 00:23:10 2010 +0200 +++ b/homescreenpluginsrv/hspsdom/bwins/hspsdomdocumentu.def Fri Feb 19 23:07:29 2010 +0200 @@ -1,74 +1,73 @@ 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 + ?NextSibling@ChspsDomDepthIterator@@UAEPAVChspsDomNode@@AAV2@@Z @ 28 NONAME ; class ChspsDomNode * ChspsDomDepthIterator::NextSibling(class ChspsDomNode &) + ?ValueStringPoolIndex@ChspsDomAttribute@@QBEFXZ @ 29 NONAME ; short ChspsDomAttribute::ValueStringPoolIndex(void) const + ?CreateElementNSL@ChspsDomDocument@@QAEPAVChspsDomNode@@ABVTDesC8@@0@Z @ 30 NONAME ; class ChspsDomNode * ChspsDomDocument::CreateElementNSL(class TDesC8 const &, class TDesC8 const &) + ?DeleteChild@ChspsDomNode@@QAEXPAV1@@Z @ 31 NONAME ; void ChspsDomNode::DeleteChild(class ChspsDomNode *) + ?SetRootNode@ChspsDomDocument@@QAEXPAVChspsDomNode@@@Z @ 32 NONAME ; void ChspsDomDocument::SetRootNode(class ChspsDomNode *) + ?ContentType@ChspsDomNode@@QAEABW4TContentType@@XZ @ 33 NONAME ; enum TContentType const & ChspsDomNode::ContentType(void) + ?Namespace@ChspsDomNode@@QAEABVTDesC8@@XZ @ 34 NONAME ; class TDesC8 const & ChspsDomNode::Namespace(void) + ?CloneL@ChspsDomAttribute@@QAEPAV1@XZ @ 35 NONAME ; class ChspsDomAttribute * ChspsDomAttribute::CloneL(void) + ?AddChildL@ChspsDomNode@@QAEXPAV1@@Z @ 36 NONAME ; void ChspsDomNode::AddChildL(class ChspsDomNode *) + ?NewL@ChspsDomDocument@@SAPAV1@XZ @ 37 NONAME ; class ChspsDomDocument * ChspsDomDocument::NewL(void) + ?IsRefNode@ChspsDomNode@@QBEHXZ @ 38 NONAME ; int ChspsDomNode::IsRefNode(void) const + ?SetPCDataL@ChspsDomNode@@QAEXABVTDesC8@@@Z @ 39 NONAME ; void ChspsDomNode::SetPCDataL(class TDesC8 const &) + ?Value@ChspsDomAttribute@@QAEABVTDesC8@@XZ @ 40 NONAME ; class TDesC8 const & ChspsDomAttribute::Value(void) + ??1ChspsDomDepthIterator@@UAE@XZ @ 41 NONAME ; ChspsDomDepthIterator::~ChspsDomDepthIterator(void) + ?CreateRefNodeL@ChspsDomNode@@QAEPAV1@XZ @ 42 NONAME ; class ChspsDomNode * ChspsDomNode::CreateRefNodeL(void) + ?Reset@ChspsDomList@@QAEXXZ @ 43 NONAME ; void ChspsDomList::Reset(void) + ?StringPool@ChspsDomNode@@QBEAAVChspsDomStringPool@@XZ @ 44 NONAME ; class ChspsDomStringPool & ChspsDomNode::StringPool(void) const + ?AttributeValue@ChspsDomNode@@QBEABVTDesC8@@ABV2@@Z @ 45 NONAME ; class TDesC8 const & ChspsDomNode::AttributeValue(class TDesC8 const &) const + ?SetContentType@ChspsDomNode@@QAEXABW4TContentType@@@Z @ 46 NONAME ; void ChspsDomNode::SetContentType(enum TContentType const &) + ?NextL@ChspsDomDepthIterator@@UAEPAVChspsDomNode@@XZ @ 47 NONAME ; class ChspsDomNode * ChspsDomDepthIterator::NextL(void) + ?CloneL@ChspsDomDocument@@QAEPAV1@XZ @ 48 NONAME ; class ChspsDomDocument * ChspsDomDocument::CloneL(void) + ?AttributeList@ChspsDomNode@@QBEAAVChspsDomList@@XZ @ 49 NONAME ; class ChspsDomList & ChspsDomNode::AttributeList(void) const + ?LastNode@ChspsDomDocument@@QBEPAVChspsDomNode@@XZ @ 50 NONAME ; class ChspsDomNode * ChspsDomDocument::LastNode(void) const + ??1ChspsDomAttribute@@UAE@XZ @ 51 NONAME ; ChspsDomAttribute::~ChspsDomAttribute(void) + ?NewL@ChspsDomDocument@@SAPAV1@AAVRReadStream@@@Z @ 52 NONAME ; class ChspsDomDocument * ChspsDomDocument::NewL(class RReadStream &) + ?SetParent@ChspsDomNode@@QAEXPAV1@@Z @ 53 NONAME ; void ChspsDomNode::SetParent(class ChspsDomNode *) + ?RootNode@ChspsDomDocument@@QBEPAVChspsDomNode@@XZ @ 54 NONAME ; class ChspsDomNode * ChspsDomDocument::RootNode(void) const + ?Name@ChspsDomNode@@UAEABVTDesC8@@XZ @ 55 NONAME ; class TDesC8 const & ChspsDomNode::Name(void) + ?First@ChspsDomList@@QAEPAVMhspsDomListItem@@XZ @ 56 NONAME ; class MhspsDomListItem * ChspsDomList::First(void) + ?NameStringPoolIndex@ChspsDomAttribute@@QBEFXZ @ 57 NONAME ; short ChspsDomAttribute::NameStringPoolIndex(void) const + ?Name@ChspsDomAttribute@@UAEABVTDesC8@@XZ @ 58 NONAME ; class TDesC8 const & ChspsDomAttribute::Name(void) + ?NewL@ChspsDomDocument@@SAPAV1@PBVHBufC8@@@Z @ 59 NONAME ; class ChspsDomDocument * ChspsDomDocument::NewL(class HBufC8 const *) + ?ReplaceChildL@ChspsDomNode@@QAEXPAV1@0@Z @ 60 NONAME ; void ChspsDomNode::ReplaceChildL(class ChspsDomNode *, class ChspsDomNode *) + ?AddItemL@ChspsDomList@@QAEXPAVMhspsDomListItem@@@Z @ 61 NONAME ; void ChspsDomList::AddItemL(class MhspsDomListItem *) + ?AppendPCDataL@ChspsDomNode@@QAEXABVTDesC8@@@Z @ 62 NONAME ; void ChspsDomNode::AppendPCDataL(class TDesC8 const &) + ?SetRefNode@ChspsDomNode@@QAEXH@Z @ 63 NONAME ; void ChspsDomNode::SetRefNode(int) + ?AddItemL@ChspsDomList@@QAEXPAVMhspsDomListItem@@H@Z @ 64 NONAME ; void ChspsDomList::AddItemL(class MhspsDomListItem *, int) + ?Parent@ChspsDomNode@@QBEPAV1@XZ @ 65 NONAME ; class ChspsDomNode * ChspsDomNode::Parent(void) const + ?StringPool@ChspsDomDocument@@QBEAAVChspsDomStringPool@@XZ @ 66 NONAME ; class ChspsDomStringPool & ChspsDomDocument::StringPool(void) const + ??1ChspsDomDocument@@UAE@XZ @ 67 NONAME ; ChspsDomDocument::~ChspsDomDocument(void) + ?CloneL@ChspsDomNode@@QAEPAV1@AAVChspsDomStringPool@@@Z @ 68 NONAME ; class ChspsDomNode * ChspsDomNode::CloneL(class ChspsDomStringPool &) + ?DeleteItem@ChspsDomList@@QAEXH@Z @ 69 NONAME ; void ChspsDomList::DeleteItem(int) + ?DescendantCount@ChspsDomNode@@QBEHXZ @ 70 NONAME ; int ChspsDomNode::DescendantCount(void) const + ?DomNodeCount@ChspsDomDocument@@QBEHXZ @ 71 NONAME ; int ChspsDomDocument::DomNodeCount(void) const diff -r 1a2a00e78665 -r d0529222e3f0 homescreenpluginsrv/hspsdom/eabi/hspsdomdocumentu.def --- a/homescreenpluginsrv/hspsdom/eabi/hspsdomdocumentu.def Tue Feb 02 00:23:10 2010 +0200 +++ b/homescreenpluginsrv/hspsdom/eabi/hspsdomdocumentu.def Fri Feb 19 23:07:29 2010 +0200 @@ -21,81 +21,80 @@ _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 - _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 ; ## - _ZTI12ChspsDomNode @ 80 NONAME ; ## - _ZTI16ChspsDomDocument @ 81 NONAME ; ## - _ZTI17ChspsDomAttribute @ 82 NONAME ; ## - _ZTI18ChspsDomStringPool @ 83 NONAME ; ## - _ZTI21ChspsDomDepthIterator @ 84 NONAME ; ## - _ZTV12ChspsDomList @ 85 NONAME ; ## - _ZTV12ChspsDomNode @ 86 NONAME ; ## - _ZTV16ChspsDomDocument @ 87 NONAME ; ## - _ZTV17ChspsDomAttribute @ 88 NONAME ; ## - _ZTV18ChspsDomStringPool @ 89 NONAME ; ## - _ZTV21ChspsDomDepthIterator @ 90 NONAME ; ## - _ZThn4_N12ChspsDomNode4NameEv @ 91 NONAME ; ## - _ZThn4_N17ChspsDomAttribute4NameEv @ 92 NONAME ; ## - _ZThn4_N17ChspsDomAttributeD0Ev @ 93 NONAME ; ## - _ZThn4_N17ChspsDomAttributeD1Ev @ 94 NONAME ; ## - _ZThn4_N21ChspsDomDepthIterator11NextSiblingER12ChspsDomNode @ 95 NONAME ; ## - _ZThn4_N21ChspsDomDepthIterator5FirstEv @ 96 NONAME ; ## - _ZThn4_N21ChspsDomDepthIterator5NextLEv @ 97 NONAME ; ## - _ZThn4_N21ChspsDomDepthIteratorD0Ev @ 98 NONAME ; ## - _ZThn4_N21ChspsDomDepthIteratorD1Ev @ 99 NONAME ; ## + _ZN12ChspsDomNode4NameEv @ 23 NONAME + _ZN12ChspsDomNode6CloneLER18ChspsDomStringPool @ 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 + _ZN17ChspsDomAttribute5ValueEv @ 44 NONAME + _ZN17ChspsDomAttribute6CloneLEv @ 45 NONAME + _ZN17ChspsDomAttribute9SetValueLERK6TDesC8 @ 46 NONAME + _ZN17ChspsDomAttributeD0Ev @ 47 NONAME + _ZN17ChspsDomAttributeD1Ev @ 48 NONAME + _ZN17ChspsDomAttributeD2Ev @ 49 NONAME + _ZN18ChspsDomStringPool10AddStringLERK6TDesC8 @ 50 NONAME + _ZN21ChspsDomDepthIterator11NextSiblingER12ChspsDomNode @ 51 NONAME + _ZN21ChspsDomDepthIterator4NewLER12ChspsDomNode @ 52 NONAME + _ZN21ChspsDomDepthIterator5FirstEv @ 53 NONAME + _ZN21ChspsDomDepthIterator5NextLEv @ 54 NONAME + _ZN21ChspsDomDepthIteratorD0Ev @ 55 NONAME + _ZN21ChspsDomDepthIteratorD1Ev @ 56 NONAME + _ZN21ChspsDomDepthIteratorD2Ev @ 57 NONAME + _ZNK12ChspsDomList10StringPoolEv @ 58 NONAME + _ZNK12ChspsDomList4ItemEi @ 59 NONAME + _ZNK12ChspsDomList6LengthEv @ 60 NONAME + _ZNK12ChspsDomList9ItemIndexERK16MhspsDomListItem @ 61 NONAME + _ZNK12ChspsDomNode10StringPoolEv @ 62 NONAME + _ZNK12ChspsDomNode13AttributeListEv @ 63 NONAME + _ZNK12ChspsDomNode14AttributeValueERK6TDesC8 @ 64 NONAME + _ZNK12ChspsDomNode15DescendantCountEv @ 65 NONAME + _ZNK12ChspsDomNode6NodeIdEv @ 66 NONAME + _ZNK12ChspsDomNode6ParentEv @ 67 NONAME + _ZNK12ChspsDomNode9IsRefNodeEv @ 68 NONAME + _ZNK12ChspsDomNode9ItemIndexERK16MhspsDomListItem @ 69 NONAME + _ZNK16ChspsDomDocument10StringPoolEv @ 70 NONAME + _ZNK16ChspsDomDocument12DomNodeCountEv @ 71 NONAME + _ZNK16ChspsDomDocument12ExternalizeLER12RWriteStream @ 72 NONAME + _ZNK16ChspsDomDocument4SizeEv @ 73 NONAME + _ZNK16ChspsDomDocument8LastNodeEv @ 74 NONAME + _ZNK16ChspsDomDocument8RootNodeEv @ 75 NONAME + _ZNK17ChspsDomAttribute19NameStringPoolIndexEv @ 76 NONAME + _ZNK17ChspsDomAttribute20ValueStringPoolIndexEv @ 77 NONAME + _ZTI12ChspsDomList @ 78 NONAME + _ZTI12ChspsDomNode @ 79 NONAME + _ZTI16ChspsDomDocument @ 80 NONAME + _ZTI17ChspsDomAttribute @ 81 NONAME + _ZTI18ChspsDomStringPool @ 82 NONAME + _ZTI21ChspsDomDepthIterator @ 83 NONAME + _ZTV12ChspsDomList @ 84 NONAME + _ZTV12ChspsDomNode @ 85 NONAME + _ZTV16ChspsDomDocument @ 86 NONAME + _ZTV17ChspsDomAttribute @ 87 NONAME + _ZTV18ChspsDomStringPool @ 88 NONAME + _ZTV21ChspsDomDepthIterator @ 89 NONAME + _ZThn4_N12ChspsDomNode4NameEv @ 90 NONAME + _ZThn4_N17ChspsDomAttribute4NameEv @ 91 NONAME + _ZThn4_N17ChspsDomAttributeD0Ev @ 92 NONAME + _ZThn4_N17ChspsDomAttributeD1Ev @ 93 NONAME + _ZThn4_N21ChspsDomDepthIterator11NextSiblingER12ChspsDomNode @ 94 NONAME + _ZThn4_N21ChspsDomDepthIterator5FirstEv @ 95 NONAME + _ZThn4_N21ChspsDomDepthIterator5NextLEv @ 96 NONAME + _ZThn4_N21ChspsDomDepthIteratorD0Ev @ 97 NONAME + _ZThn4_N21ChspsDomDepthIteratorD1Ev @ 98 NONAME diff -r 1a2a00e78665 -r d0529222e3f0 homescreenpluginsrv/hspsdom/src/hspsdomnode.cpp --- a/homescreenpluginsrv/hspsdom/src/hspsdomnode.cpp Tue Feb 02 00:23:10 2010 +0200 +++ b/homescreenpluginsrv/hspsdom/src/hspsdomnode.cpp Fri Feb 19 23:07:29 2010 +0200 @@ -571,19 +571,6 @@ return count; } - - -// ----------------------------------------------------------------------------- -// ChspsDomNode::DeleteAttributeList -// Deletes the attribute list -// ----------------------------------------------------------------------------- -// -EXPORT_C void ChspsDomNode::DeleteAttributeList() - { - delete iAttributeList; - iAttributeList = NULL; - - } // ----------------------------------------------------------------------------- // ChspsDomNode::AttributeValue diff -r 1a2a00e78665 -r d0529222e3f0 homescreenpluginsrv/hspsmanager/inc/hspsinstallationhandler.h --- a/homescreenpluginsrv/hspsmanager/inc/hspsinstallationhandler.h Tue Feb 02 00:23:10 2010 +0200 +++ b/homescreenpluginsrv/hspsmanager/inc/hspsinstallationhandler.h Fri Feb 19 23:07:29 2010 +0200 @@ -641,6 +641,23 @@ const TDesC8& aTag, HBufC*& aResultString ); + /** + * Enabler for customization where the input is + * searched from all unremovable drives (eclipsing). + * 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 aPath Path to the resource file (input) + * @param aFilename Name and extension of the file (input) + * @param aDrivePathName Full path with a drive letter to the + * resource file (output) + */ + void FindFile( + const TDesC& aPath, + const TDesC& aFilename, + TFileName& aDrivePathName ); public: ChspsResult* iResult; diff -r 1a2a00e78665 -r d0529222e3f0 homescreenpluginsrv/hspsmanager/inc/hspsthemeserver.h --- a/homescreenpluginsrv/hspsmanager/inc/hspsthemeserver.h Tue Feb 02 00:23:10 2010 +0200 +++ b/homescreenpluginsrv/hspsmanager/inc/hspsthemeserver.h Fri Feb 19 23:07:29 2010 +0200 @@ -981,6 +981,12 @@ void RestoreConfigurationL( ChspsODT& aOdt ); + /** + * Install all widgets from uda + * @since S60 5.2 + */ + void InstallUDAWidgetsL(); + #if defined(WINSCW) || defined(__WINS__) /** diff -r 1a2a00e78665 -r d0529222e3f0 homescreenpluginsrv/hspsmanager/src/hspsclientrequesthandler.cpp --- a/homescreenpluginsrv/hspsmanager/src/hspsclientrequesthandler.cpp Tue Feb 02 00:23:10 2010 +0200 +++ b/homescreenpluginsrv/hspsmanager/src/hspsclientrequesthandler.cpp Fri Feb 19 23:07:29 2010 +0200 @@ -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(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(initial_settings_childList.FindByName( KSettingsElement )); + if( initialSettingsNode ) { - ChspsDomList& controlNode_childList = controlNode->ChildNodes(); - - ChspsDomNode* settingsNode = static_cast(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(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( 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(); diff -r 1a2a00e78665 -r d0529222e3f0 homescreenpluginsrv/hspsmanager/src/hspsinstallationhandler.cpp --- a/homescreenpluginsrv/hspsmanager/src/hspsinstallationhandler.cpp Tue Feb 02 00:23:10 2010 +0200 +++ b/homescreenpluginsrv/hspsmanager/src/hspsinstallationhandler.cpp Fri Feb 19 23:07:29 2010 +0200 @@ -1739,7 +1739,54 @@ iMultiInstance = KMultiInstanceDefaultValue; } } - + + // ----------------------------------------------------------------------------- + // ChspsInstallationHandler::FindFile + // Eclipsing support for customization + // ----------------------------------------------------------------------------- + // + void ChspsInstallationHandler::FindFile( + const TDesC& aPath, + const TDesC& aFilename, + TFileName& aDrivePathName ) + { + TParsePtrC parser( aPath ); + const TPath path = parser.Path(); + + // 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( iFsSession ); + fileFinder.SetFindMask( + KDriveAttExclude|KDriveAttRemovable|KDriveAttRemote|KDriveAttSubsted ); + iFsSession.SetSessionToPrivate( EDriveZ ); + TInt err = fileFinder.FindByDir( aFilename, path ); + iFsSession.SetSessionToPrivate( EDriveC ); + if( !err ) + { + // Return the path with a drive reference + aDrivePathName = fileFinder.File(); + TParsePtrC drvParser( aDrivePathName ); + if( !drvParser.DrivePresent() ) + { + err = KErrNotFound; + } + } + + if( err ) + { + // Not found from C nor Z drives +#ifdef HSPS_LOG_ACTIVE + if( iLogBus ) + { + iLogBus->LogText( + _L( "ChspsInstallationHandler::FindFile(): - couldnt' find file '%S'" ), + &aDrivePathName ); + } + #endif + } + } + // ----------------------------------------------------------------------------- // Parsing of the manifest elements. // ----------------------------------------------------------------------------- @@ -1934,28 +1981,27 @@ } 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; + FindFile( + 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 ) diff -r 1a2a00e78665 -r d0529222e3f0 homescreenpluginsrv/hspsmanager/src/hspsthemeserver.cpp --- a/homescreenpluginsrv/hspsmanager/src/hspsthemeserver.cpp Tue Feb 02 00:23:10 2010 +0200 +++ b/homescreenpluginsrv/hspsmanager/src/hspsthemeserver.cpp Fri Feb 19 23:07:29 2010 +0200 @@ -55,8 +55,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\\" ); @@ -2580,6 +2578,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 ) ); +#ifdef HSPS_LOG_ACTIVE + if ( err != KErrNone ) + { + iLogBus->LogText( _L( "ChspsThemeServer::InstallUDAWidgetsL(): - Installation failed" ) ); + } +#endif + CleanupStack::PopAndDestroy( manifestBuf ); + } + CleanupStack::PopAndDestroy( installer ); + } + CleanupStack::PopAndDestroy( importDir ); + } + +// ----------------------------------------------------------------------------- // ChspsThemeServer::HandleRomInstallationsL() // ----------------------------------------------------------------------------- // @@ -2615,6 +2654,9 @@ // Install manifest files from ROM InstallManifestsFromRomDriveL(); + // install widgets from 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 ); diff -r 1a2a00e78665 -r d0529222e3f0 homescreensrv_plat/ai_content_model_api/group/bld.inf --- a/homescreensrv_plat/ai_content_model_api/group/bld.inf Tue Feb 02 00:23:10 2010 +0200 +++ b/homescreensrv_plat/ai_content_model_api/group/bld.inf Fri Feb 19 23:07:29 2010 +0200 @@ -26,8 +26,10 @@ ../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) + +// Deprecated +../inc/aipropertyextension.h MW_LAYER_PLATFORM_EXPORT_PATH(aipropertyextension.h) +../inc/aipropertyextension.inl MW_LAYER_PLATFORM_EXPORT_PATH(aipropertyextension.inl) +../inc/aieventhandlerextension.h MW_LAYER_PLATFORM_EXPORT_PATH(aieventhandlerextension.h) diff -r 1a2a00e78665 -r d0529222e3f0 homescreensrv_plat/ai_content_model_api/inc/aicontentmodel.h --- a/homescreensrv_plat/ai_content_model_api/inc/aicontentmodel.h Tue Feb 02 00:23:10 2010 +0200 +++ b/homescreensrv_plat/ai_content_model_api/inc/aicontentmodel.h Fri Feb 19 23:07:29 2010 +0200 @@ -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. diff -r 1a2a00e78665 -r d0529222e3f0 homescreensrv_plat/ai_content_model_api/inc/aicontentobserver.h --- a/homescreensrv_plat/ai_content_model_api/inc/aicontentobserver.h Tue Feb 02 00:23:10 2010 +0200 +++ b/homescreensrv_plat/ai_content_model_api/inc/aicontentobserver.h Fri Feb 19 23:07:29 2010 +0200 @@ -19,13 +19,15 @@ #ifndef M_AICONTENTOBSERVER_H #define M_AICONTENTOBSERVER_H +// System includes #include -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, diff -r 1a2a00e78665 -r d0529222e3f0 homescreensrv_plat/ai_content_model_api/inc/aicontentobserver.inl --- a/homescreensrv_plat/ai_content_model_api/inc/aicontentobserver.inl Tue Feb 02 00:23:10 2010 +0200 +++ b/homescreensrv_plat/ai_content_model_api/inc/aicontentobserver.inl Fri Feb 19 23:07:29 2010 +0200 @@ -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(aPtr), aIndex); + return this->Publish( aPlugin, aContent, TPckgC( aPtr ), aIndex ); } -template 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(result).Copy(aBuf); // Effectively writes aBuf contents to result + // Effectively writes aBuf contents to result + TPckg< TAny* >( result ).Copy( aBuf ); } - return static_cast(result); + + return static_cast< PtrT* >( result ); } -// End of file \ No newline at end of file +#endif // _AICONTENTOBSERVER_INL + +// End of file diff -r 1a2a00e78665 -r d0529222e3f0 homescreensrv_plat/ai_content_model_api/inc/aicontentrequest.h --- a/homescreensrv_plat/ai_content_model_api/inc/aicontentrequest.h Tue Feb 02 00:23:10 2010 +0200 +++ b/homescreensrv_plat/ai_content_model_api/inc/aicontentrequest.h Fri Feb 19 23:07:29 2010 +0200 @@ -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: /** diff -r 1a2a00e78665 -r d0529222e3f0 homescreensrv_plat/ai_plugin_management_api/group/bld.inf --- a/homescreensrv_plat/ai_plugin_management_api/group/bld.inf Tue Feb 02 00:23:10 2010 +0200 +++ b/homescreensrv_plat/ai_plugin_management_api/group/bld.inf Fri Feb 19 23:07:29 2010 +0200 @@ -24,12 +24,16 @@ 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) + +// Deprecated +../inc/aicontentpublisheruid.hrh MW_LAYER_PLATFORM_EXPORT_PATH(aicontentpublisheruid.hrh) +../inc/aicontentpublisher.h MW_LAYER_PLATFORM_EXPORT_PATH(aicontentpublisher.h) diff -r 1a2a00e78665 -r d0529222e3f0 homescreensrv_plat/ai_plugin_management_api/inc/aiprofilepluginuids.hrh --- a/homescreensrv_plat/ai_plugin_management_api/inc/aiprofilepluginuids.hrh Tue Feb 02 00:23:10 2010 +0200 +++ b/homescreensrv_plat/ai_plugin_management_api/inc/aiprofilepluginuids.hrh Fri Feb 19 23:07:29 2010 +0200 @@ -19,8 +19,6 @@ #ifndef AIPROFILEPLUGINUIDS_HRH #define AIPROFILEPLUGINUIDS_HRH -#include - /** * Ecom dll uid for AI Profile plug-in. */ diff -r 1a2a00e78665 -r d0529222e3f0 homescreensrv_plat/ai_plugin_management_api/inc/aiscutappuids.hrh --- a/homescreensrv_plat/ai_plugin_management_api/inc/aiscutappuids.hrh Tue Feb 02 00:23:10 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. diff -r 1a2a00e78665 -r d0529222e3f0 homescreensrv_plat/ai_plugin_management_api/inc/aiscutcontentmodel.h --- a/homescreensrv_plat/ai_plugin_management_api/inc/aiscutcontentmodel.h Tue Feb 02 00:23:10 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 - -#include - -// 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. diff -r 1a2a00e78665 -r d0529222e3f0 homescreensrv_plat/ai_plugin_management_api/inc/aiscutdefs.h --- a/homescreensrv_plat/ai_plugin_management_api/inc/aiscutdefs.h Tue Feb 02 00:23:10 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 -#include -#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 RAiShortcutArray; -typedef RPointerArray 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. diff -r 1a2a00e78665 -r d0529222e3f0 homescreensrv_plat/ai_plugin_management_api/inc/aiscutuids.hrh --- a/homescreensrv_plat/ai_plugin_management_api/inc/aiscutuids.hrh Tue Feb 02 00:23:10 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 - -/** - * 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. diff -r 1a2a00e78665 -r d0529222e3f0 homescreensrv_plat/ai_plugin_management_api/inc/hscontentpublisher.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/homescreensrv_plat/ai_plugin_management_api/inc/hscontentpublisher.h Fri Feb 19 23:07:29 2010 +0200 @@ -0,0 +1,486 @@ +/* +* 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 +#include + +// User includes +#include +#include + +// 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 + }; + +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: (), + * where is mapped by the framework to unique + * identifier supplied in aEvent, 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: (), + * where mapping to unique identifier supplied by event + * is failed by the frame work then the and + * 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 + +#endif // _HSCONTENTPUBLISHER_H + +// End of file diff -r 1a2a00e78665 -r d0529222e3f0 homescreensrv_plat/ai_plugin_management_api/inc/hscontentpublisher.inl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/homescreensrv_plat/ai_plugin_management_api/inc/hscontentpublisher.inl Fri Feb 19 23:07:29 2010 +0200 @@ -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 diff -r 1a2a00e78665 -r d0529222e3f0 homescreensrv_plat/ai_plugin_management_api/inc/hscontentpublisheruid.hrh --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/homescreensrv_plat/ai_plugin_management_api/inc/hscontentpublisheruid.hrh Fri Feb 19 23:07:29 2010 +0200 @@ -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 + * #include + * + * #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 diff -r 1a2a00e78665 -r d0529222e3f0 homescreensrv_plat/ai_plugin_management_api/inc/hspublisherinfo.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/homescreensrv_plat/ai_plugin_management_api/inc/hspublisherinfo.h Fri Feb 19 23:07:29 2010 +0200 @@ -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 + +// 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 + +#endif // _HSPUBLISHERINFO_H + +// End of file diff -r 1a2a00e78665 -r d0529222e3f0 homescreensrv_plat/ai_plugin_management_api/inc/hspublisherinfo.inl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/homescreensrv_plat/ai_plugin_management_api/inc/hspublisherinfo.inl Fri Feb 19 23:07:29 2010 +0200 @@ -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 diff -r 1a2a00e78665 -r d0529222e3f0 homescreensrv_plat/ai_shortcut_command_api/ai_shortcut_command_api.metaxml --- a/homescreensrv_plat/ai_shortcut_command_api/ai_shortcut_command_api.metaxml Tue Feb 02 00:23:10 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,17 +0,0 @@ - - - AI Shortcut Command API - Gives possibility to execute shortcuts defined by localapp URL - c++ - activeidle - - - - - - - - yes - no - - diff -r 1a2a00e78665 -r d0529222e3f0 homescreensrv_plat/ai_shortcut_command_api/group/bld.inf --- a/homescreensrv_plat/ai_shortcut_command_api/group/bld.inf Tue Feb 02 00:23:10 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 - -PRJ_PLATFORMS -DEFAULT - -PRJ_EXPORTS - -../inc/aiscutplugindomaincrkeys.h MW_LAYER_PLATFORM_EXPORT_PATH(aiscutplugindomaincrkeys.h) diff -r 1a2a00e78665 -r d0529222e3f0 homescreensrv_plat/ai_shortcut_command_api/inc/aiscutplugindomaincrkeys.h --- a/homescreensrv_plat/ai_shortcut_command_api/inc/aiscutplugindomaincrkeys.h Tue Feb 02 00:23:10 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. diff -r 1a2a00e78665 -r d0529222e3f0 homescreensrv_plat/ai_utilities_api/inc/aiplugintool.h --- a/homescreensrv_plat/ai_utilities_api/inc/aiplugintool.h Tue Feb 02 00:23:10 2010 +0200 +++ b/homescreensrv_plat/ai_utilities_api/inc/aiplugintool.h Fri Feb 19 23:07:29 2010 +0200 @@ -19,14 +19,15 @@ #ifndef M_AIPLUGINTOOL_H #define M_AIPLUGINTOOL_H +// System includes #include -#include -class TAiPublisherInfo; -class CAiContentPublisher; +// User incldues +#include + +// 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 ) diff -r 1a2a00e78665 -r d0529222e3f0 homescreensrv_plat/group/bld.inf --- a/homescreensrv_plat/group/bld.inf Tue Feb 02 00:23:10 2010 +0200 +++ b/homescreensrv_plat/group/bld.inf Fri Feb 19 23:07:29 2010 +0200 @@ -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,7 +34,6 @@ #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" diff -r 1a2a00e78665 -r d0529222e3f0 homescreensrv_plat/hs_settings_api/inc/hspluginsettings.h --- a/homescreensrv_plat/hs_settings_api/inc/hspluginsettings.h Tue Feb 02 00:23:10 2010 +0200 +++ b/homescreensrv_plat/hs_settings_api/inc/hspluginsettings.h Fri Feb 19 23:07:29 2010 +0200 @@ -18,7 +18,7 @@ #define C_CHomeScreenSettingsIf_H #include -#include // for MLiwNotifyCallback +#include // for MLiwNotifyCallback #include #include diff -r 1a2a00e78665 -r d0529222e3f0 homescreensrv_plat/hs_widget_publisher_api/src/hswidgetpublisherimpl.cpp --- a/homescreensrv_plat/hs_widget_publisher_api/src/hswidgetpublisherimpl.cpp Tue Feb 02 00:23:10 2010 +0200 +++ b/homescreensrv_plat/hs_widget_publisher_api/src/hswidgetpublisherimpl.cpp Fri Feb 19 23:07:29 2010 +0200 @@ -809,6 +809,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() ) { diff -r 1a2a00e78665 -r d0529222e3f0 homescreensrv_plat/idlefw_api/group/bld.inf --- a/homescreensrv_plat/idlefw_api/group/bld.inf Tue Feb 02 00:23:10 2010 +0200 +++ b/homescreensrv_plat/idlefw_api/group/bld.inf Fri Feb 19 23:07:29 2010 +0200 @@ -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) diff -r 1a2a00e78665 -r d0529222e3f0 homescreensrv_plat/idlefw_api/inc/aifwdefs.h --- a/homescreensrv_plat/idlefw_api/inc/aifwdefs.h Tue Feb 02 00:23:10 2010 +0200 +++ b/homescreensrv_plat/idlefw_api/inc/aifwdefs.h Fri Feb 19 23:07:29 2010 +0200 @@ -16,25 +16,59 @@ */ -#ifndef AIFWDEFS_H -#define AIFWDEFS_H +#ifndef _AIFWDEFS_H +#define _AIFWDEFS_H +// System inclides -#include -#include +// User includes + +// Type definitions /** - * Array of publisher Content publisher info records. + * AiFw State definitions. + * + * @since S60 5.2 */ -typedef RArray 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 diff -r 1a2a00e78665 -r d0529222e3f0 homescreensrv_plat/idlefw_api/inc/aifweventhandler.h --- a/homescreensrv_plat/idlefw_api/inc/aifweventhandler.h Tue Feb 02 00:23:10 2010 +0200 +++ b/homescreensrv_plat/idlefw_api/inc/aifweventhandler.h Fri Feb 19 23:07:29 2010 +0200 @@ -19,11 +19,15 @@ #ifndef M_AIFWEVENTHANDLER_H #define M_AIFWEVENTHANDLER_H +// System includes #include -#include + +// 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 diff -r 1a2a00e78665 -r d0529222e3f0 homescreensrv_plat/idlefw_api/inc/aifwstatehandler.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/homescreensrv_plat/idlefw_api/inc/aifwstatehandler.h Fri Feb 19 23:07:29 2010 +0200 @@ -0,0 +1,83 @@ +/* +* 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 + +// 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; + + /** + * Queries whether online state is in use + * by any of the currently loaded plugin. + * + * @since S60 5.2 + * @return ETrue if online/offline state needed, EFalse otherwise + */ + virtual TBool OnlineStateInUse() const = 0; + }; + +#endif // M_AIFWSTATEHANDLER_H + +// End of file diff -r 1a2a00e78665 -r d0529222e3f0 homescreensrv_plat/idlefw_api/inc/aiuicontroller.h --- a/homescreensrv_plat/idlefw_api/inc/aiuicontroller.h Tue Feb 02 00:23:10 2010 +0200 +++ b/homescreensrv_plat/idlefw_api/inc/aiuicontroller.h Fri Feb 19 23:07:29 2010 +0200 @@ -16,22 +16,25 @@ */ -#ifndef C_AIUICONTROLLER_H -#define C_AIUICONTROLLER_H +#ifndef _AIUICONTROLLER_H +#define _AIUICONTROLLER_H +// System includes #include + +// 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 (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 (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. diff -r 1a2a00e78665 -r d0529222e3f0 homescreensrv_plat/idlefw_api/inc/aiuiframeworkobserver.h --- a/homescreensrv_plat/idlefw_api/inc/aiuiframeworkobserver.h Tue Feb 02 00:23:10 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 - -/** - * 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 diff -r 1a2a00e78665 -r d0529222e3f0 homescreensrv_plat/sapi_homescreenplugin/tsrc/group/Nokia_RnDCert_02.der Binary file homescreensrv_plat/sapi_homescreenplugin/tsrc/group/Nokia_RnDCert_02.der has changed diff -r 1a2a00e78665 -r d0529222e3f0 homescreensrv_plat/sapi_homescreenplugin/tsrc/group/Nokia_RnDCert_02.key --- a/homescreensrv_plat/sapi_homescreenplugin/tsrc/group/Nokia_RnDCert_02.key Tue Feb 02 00:23:10 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,15 +0,0 @@ ------BEGIN RSA PRIVATE KEY----- -MIICXQIBAAKBgQC/TDP7KKIaf5+uW4OD2iVZuUMC2a+SeQTjf6srlKcOm+CpPNXn -uLNm/8fdEnyOIuRXPRKmqhs1n0JkxEGHynELWMTuKXbQx9SRAGUXzyneGn+IJNnO -vOKHWgKCouX2hfI8rtkdqJpqmO460gGsMgw+lsbeyWyW9lnfLxq+ZC7sqQIDAQAB -AoGBALmUWZE8GBaQ3P4u9WUCSd3DJkkrmXIFSULSZeH/chlwCwDjbbhArHothVzo -REE3hEFFlERvHbplZ+mNouzy7boduvgUzbksGrbGMLJ2qO1GzWWVwV+GzOWKd3ss -/98Gwoy5R8pjnkqUE2wP1iJFw0FjvUTKcYv/z6t3LLJ0CsoBAkEA+c7ixvsviQ3J -s0INytCKU2bf8fqFQJi1VI82ukxNsujGTQ9upVSjuvqPvWyDvvTdrUBHqO+3qPut -sEh01Q8aiQJBAMQKDJPVRu4ud3mwUfEavzL5EjqwG1k9VCNGYsT4FwtrHcxu1oP/ -pk6M3rIZukqomoEEnHWPMwhrK3fhBqi0OSECQQDr40VXege4FnH5OI2Hj4afHMyp -VdQQXGMWFyopnzXblFz0lXb43cTCIiorR9XcMqNFHybLypkWE5o+lRzlt55pAkBQ -P/zeF5Sts//cpL0mgdh7OVKpC6ZmZaCnwAx2rUhhuDu+kDDoYCLoTOps5fNI1LRK -1GRoC3LMo3Jr5IYhUYWBAkBpCpN6k4JU/mszq98EojHerQNxk8sPqvQKUzTutohT -1gLX9yepGayB/TtT2EEJDkWOlnTy/dvN6W3vzbJYz97x ------END RSA PRIVATE KEY----- diff -r 1a2a00e78665 -r d0529222e3f0 homescreensrv_plat/sapi_homescreenplugin/tsrc/group/mt_sapi_homescreenplugin_armv5.pkg --- a/homescreensrv_plat/sapi_homescreenplugin/tsrc/group/mt_sapi_homescreenplugin_armv5.pkg Tue Feb 02 00:23:10 2010 +0200 +++ b/homescreensrv_plat/sapi_homescreenplugin/tsrc/group/mt_sapi_homescreenplugin_armv5.pkg Fri Feb 19 23:07:29 2010 +0200 @@ -117,6 +117,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" diff -r 1a2a00e78665 -r d0529222e3f0 homescreensrv_plat/sapi_homescreenplugin/tsrc/group/mt_sapi_homescreenplugin_winscw.pkg --- a/homescreensrv_plat/sapi_homescreenplugin/tsrc/group/mt_sapi_homescreenplugin_winscw.pkg Tue Feb 02 00:23:10 2010 +0200 +++ b/homescreensrv_plat/sapi_homescreenplugin/tsrc/group/mt_sapi_homescreenplugin_winscw.pkg Fri Feb 19 23:07:29 2010 +0200 @@ -117,6 +117,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" diff -r 1a2a00e78665 -r d0529222e3f0 homescreensrv_plat/sapi_homescreenplugin/tsrc/group/updatetests.cmd --- a/homescreensrv_plat/sapi_homescreenplugin/tsrc/group/updatetests.cmd Tue Feb 02 00:23:10 2010 +0200 +++ b/homescreensrv_plat/sapi_homescreenplugin/tsrc/group/updatetests.cmd Fri Feb 19 23:07:29 2010 +0200 @@ -20,4 +20,4 @@ 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 +copy \epoc32\release\winscw\udeb\mt_*.dll \epoc32\winscw\c\sys\bin \ No newline at end of file diff -r 1a2a00e78665 -r d0529222e3f0 homescreensrv_plat/sapi_homescreenplugin/tsrc/hspsconfigurationif/inc/mt_hsps_customization_1.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/homescreensrv_plat/sapi_homescreenplugin/tsrc/hspsconfigurationif/inc/mt_hsps_customization_1.h Fri Feb 19 23:07:29 2010 +0200 @@ -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_*/ diff -r 1a2a00e78665 -r d0529222e3f0 homescreensrv_plat/sapi_homescreenplugin/tsrc/hspsconfigurationif/inc/mt_hspsconfigurationif.h --- a/homescreensrv_plat/sapi_homescreenplugin/tsrc/hspsconfigurationif/inc/mt_hspsconfigurationif.h Tue Feb 02 00:23:10 2010 +0200 +++ b/homescreensrv_plat/sapi_homescreenplugin/tsrc/hspsconfigurationif/inc/mt_hspsconfigurationif.h Fri Feb 19 23:07:29 2010 +0200 @@ -448,6 +448,11 @@ * 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(); private: // Data diff -r 1a2a00e78665 -r d0529222e3f0 homescreensrv_plat/sapi_homescreenplugin/tsrc/hspsconfigurationif/src/mt_hspsconfigurationif.cpp --- a/homescreensrv_plat/sapi_homescreenplugin/tsrc/hspsconfigurationif/src/mt_hspsconfigurationif.cpp Tue Feb 02 00:23:10 2010 +0200 +++ b/homescreensrv_plat/sapi_homescreenplugin/tsrc/hspsconfigurationif/src/mt_hspsconfigurationif.cpp Fri Feb 19 23:07:29 2010 +0200 @@ -116,6 +116,8 @@ #include "mt_hsps_setactiveplugin_6.h" // restore configurations #include "mt_hsps_restoreconfigurations_1.h" +// customizations +#include "mt_hsps_customization_1.h" // ======== LOCAL CONSTANTS ==================================================== @@ -222,11 +224,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 @@ -2944,6 +2947,51 @@ } //------------------------------------------------------------------------------ +// 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 table //------------------------------------------------------------------------------ EUNIT_BEGIN_TEST_TABLE( @@ -3470,7 +3518,14 @@ "SetActivePlugin", "FUNCTIONALITY", SetupL, RestoreConfigurations_1_L, Teardown ) - + + EUNIT_TEST( + "Customization(1)", + "IConfiguration", + "SetActivePlugin", + "FUNCTIONALITY", + SetupL, Customization_1_L, Teardown ) + EUNIT_END_TEST_TABLE diff -r 1a2a00e78665 -r d0529222e3f0 homescreensrv_plat/sapi_homescreenplugin/tsrc/testthemes/installed_widget/widgetconfiguration_customized.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/homescreensrv_plat/sapi_homescreenplugin/tsrc/testthemes/installed_widget/widgetconfiguration_customized.xml Fri Feb 19 23:07:29 2010 +0200 @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff -r 1a2a00e78665 -r d0529222e3f0 homescreensrv_plat/sapi_homescreenplugin/tsrc/testthemes/installed_widget_v2/0/hs_logo.jpg Binary file homescreensrv_plat/sapi_homescreenplugin/tsrc/testthemes/installed_widget_v2/0/hs_logo.jpg has changed diff -r 1a2a00e78665 -r d0529222e3f0 homescreensrv_plat/sapi_homescreenplugin/tsrc/testthemes/installed_widget_v2/0/locale.dtd --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/homescreensrv_plat/sapi_homescreenplugin/tsrc/testthemes/installed_widget_v2/0/locale.dtd Fri Feb 19 23:07:29 2010 +0200 @@ -0,0 +1,30 @@ + + + + + + + + + + + diff -r 1a2a00e78665 -r d0529222e3f0 homescreensrv_plat/sapi_homescreenplugin/tsrc/testthemes/installed_widget_v2/0/widget.bmp Binary file homescreensrv_plat/sapi_homescreenplugin/tsrc/testthemes/installed_widget_v2/0/widget.bmp has changed diff -r 1a2a00e78665 -r d0529222e3f0 homescreensrv_plat/sapi_homescreenplugin/tsrc/testthemes/installed_widget_v2/1/hs_logo.jpg Binary file homescreensrv_plat/sapi_homescreenplugin/tsrc/testthemes/installed_widget_v2/1/hs_logo.jpg has changed diff -r 1a2a00e78665 -r d0529222e3f0 homescreensrv_plat/sapi_homescreenplugin/tsrc/testthemes/installed_widget_v2/1/locale.dtd --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/homescreensrv_plat/sapi_homescreenplugin/tsrc/testthemes/installed_widget_v2/1/locale.dtd Fri Feb 19 23:07:29 2010 +0200 @@ -0,0 +1,30 @@ + + + + + + + + + + + diff -r 1a2a00e78665 -r d0529222e3f0 homescreensrv_plat/sapi_homescreenplugin/tsrc/testthemes/installed_widget_v2/1/widget.bmp Binary file homescreensrv_plat/sapi_homescreenplugin/tsrc/testthemes/installed_widget_v2/1/widget.bmp has changed diff -r 1a2a00e78665 -r d0529222e3f0 homescreensrv_plat/sapi_homescreenplugin/tsrc/testthemes/installed_widget_v2/9/hs_logo.jpg Binary file homescreensrv_plat/sapi_homescreenplugin/tsrc/testthemes/installed_widget_v2/9/hs_logo.jpg has changed diff -r 1a2a00e78665 -r d0529222e3f0 homescreensrv_plat/sapi_homescreenplugin/tsrc/testthemes/installed_widget_v2/9/locale.dtd --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/homescreensrv_plat/sapi_homescreenplugin/tsrc/testthemes/installed_widget_v2/9/locale.dtd Fri Feb 19 23:07:29 2010 +0200 @@ -0,0 +1,28 @@ + + + + + + + + + diff -r 1a2a00e78665 -r d0529222e3f0 homescreensrv_plat/sapi_homescreenplugin/tsrc/testthemes/installed_widget_v2/9/widget.bmp Binary file homescreensrv_plat/sapi_homescreenplugin/tsrc/testthemes/installed_widget_v2/9/widget.bmp has changed diff -r 1a2a00e78665 -r d0529222e3f0 homescreensrv_plat/sapi_homescreenplugin/tsrc/testthemes/installed_widget_v2/manifest.dat --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/homescreensrv_plat/sapi_homescreenplugin/tsrc/testthemes/installed_widget_v2/manifest.dat Fri Feb 19 23:07:29 2010 +0200 @@ -0,0 +1,35 @@ + + + + + widget + + + 0998 + + + 101FB657 + + + 2000B133 + + + + + &qtn_2000B133_configuration_name; + InstallWidgetConf + 2.0 + + + widgetconfiguration.xml + + + locale.dtd + + + + hs_logo.jpg + widget.bmp + + + \ No newline at end of file diff -r 1a2a00e78665 -r d0529222e3f0 homescreensrv_plat/sapi_homescreenplugin/tsrc/testthemes/installed_widget_v2/plugin_0998_101FB657_2000B133_2.0.dat diff -r 1a2a00e78665 -r d0529222e3f0 homescreensrv_plat/sapi_homescreenplugin/tsrc/testthemes/installed_widget_v2/widgetconfiguration.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/homescreensrv_plat/sapi_homescreenplugin/tsrc/testthemes/installed_widget_v2/widgetconfiguration.xml Fri Feb 19 23:07:29 2010 +0200 @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff -r 1a2a00e78665 -r d0529222e3f0 homescreensrv_plat/shortcutplugin_extension_api/group/bld.inf --- a/homescreensrv_plat/shortcutplugin_extension_api/group/bld.inf Tue Feb 02 00:23:10 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 - -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) diff -r 1a2a00e78665 -r d0529222e3f0 homescreensrv_plat/shortcutplugin_extension_api/inc/aiscutextdefs.h --- a/homescreensrv_plat/shortcutplugin_extension_api/inc/aiscutextdefs.h Tue Feb 02 00:23:10 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. diff -r 1a2a00e78665 -r d0529222e3f0 homescreensrv_plat/shortcutplugin_extension_api/inc/aiscutextserv.h --- a/homescreensrv_plat/shortcutplugin_extension_api/inc/aiscutextserv.h Tue Feb 02 00:23:10 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 -#include - -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. diff -r 1a2a00e78665 -r d0529222e3f0 homescreensrv_plat/shortcutplugin_extension_api/shortcutplugin_extension_api.metaxml --- a/homescreensrv_plat/shortcutplugin_extension_api/shortcutplugin_extension_api.metaxml Tue Feb 02 00:23:10 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,18 +0,0 @@ - - - AI Shortcut xSP Extension API - Enables client applications to publish dynamic shortcut graphics and tooltips - c++ - activeidle - - - - - - - - - no - no - - diff -r 1a2a00e78665 -r d0529222e3f0 homescreensrv_plat/xcfw_api/inc/xcfwengine.h --- a/homescreensrv_plat/xcfw_api/inc/xcfwengine.h Tue Feb 02 00:23:10 2010 +0200 +++ b/homescreensrv_plat/xcfw_api/inc/xcfwengine.h Fri Feb 19 23:07:29 2010 +0200 @@ -22,7 +22,7 @@ // INCLUDES #include -#include +#include #include #include "gecodefaultobjectfactory.h" diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/group/aifw.mmp --- a/idlefw/group/aifw.mmp Tue Feb 02 00:23:10 2010 +0200 +++ b/idlefw/group/aifw.mmp Fri Feb 19 23:07:29 2010 +0200 @@ -28,23 +28,12 @@ // 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 // Active Idle Framework shared sources SOURCEPATH ../src/common @@ -71,17 +60,13 @@ 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 - diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/group/bld.inf --- a/idlefw/group/bld.inf Tue Feb 02 00:23:10 2010 +0200 +++ b/idlefw/group/bld.inf Fri Feb 19 23:07:29 2010 +0200 @@ -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 diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/inc/framework/aibackuprestorestatusobserver.h --- a/idlefw/inc/framework/aibackuprestorestatusobserver.h Tue Feb 02 00:23:10 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 -#include -#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. diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/inc/framework/aicallstatusobserver.h --- a/idlefw/inc/framework/aicallstatusobserver.h Tue Feb 02 00:23:10 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 -#include -#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. diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/inc/framework/aicontentpluginmanager.h --- a/idlefw/inc/framework/aicontentpluginmanager.h Tue Feb 02 00:23:10 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 -#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. diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/inc/framework/aidevicestatusobserver.h --- a/idlefw/inc/framework/aidevicestatusobserver.h Tue Feb 02 00:23:10 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. diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/inc/framework/aiecomobserver.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/idlefw/inc/framework/aiecomobserver.h Fri Feb 19 23:07:29 2010 +0200 @@ -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 +#include +#include + +// 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 diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/inc/framework/aienvironmentchangeobserver.h --- a/idlefw/inc/framework/aienvironmentchangeobserver.h Tue Feb 02 00:23:10 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 -#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 - diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/inc/framework/aieventhandler.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/idlefw/inc/framework/aieventhandler.h Fri Feb 19 23:07:29 2010 +0200 @@ -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 + +// User includes +#include + +// 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. diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/inc/framework/aifocusobserver.h --- a/idlefw/inc/framework/aifocusobserver.h Tue Feb 02 00:23:10 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 -#include -//++HV -#include -//--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. diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/inc/framework/aifw.h --- a/idlefw/inc/framework/aifw.h Tue Feb 02 00:23:10 2010 +0200 +++ b/idlefw/inc/framework/aifw.h Fri Feb 19 23:07:29 2010 +0200 @@ -16,38 +16,37 @@ */ -#ifndef C_AIFW_H -#define C_AIFW_H +#ifndef _AIFW_H +#define _AIFW_H +// System includes #include -#include -#include #include -#include "aifwdefs.h" -#include "aicontentmodel.h" -#include "aifweventhandler.h" +// User includes +#include +// 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 +58,9 @@ */ IMPORT_C static CAiFw* NewLC(); + /** + * Destructor + */ ~CAiFw(); public: // New functions @@ -72,11 +74,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 +109,7 @@ * @see MAiFwEventHandler */ void HandleUiShutdown( CAiUiController& aUiController ); - - /** - * @see MAiFwEventHandler - */ - void HandleLoadPluginL( const TAiPublisherInfo& aPublisherInfo ); - - /** - * @see MAiFwEventHandler - */ - void HandleDestroyPluginL( const TAiPublisherInfo& aPublisherInfo ); - + /** * @see MAiFwEventHandler */ @@ -116,76 +118,88 @@ /** * @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 ); +public: + // new functions + + /** + * Get repository + * + * @since S60 5.2 + * @return Repositury + */ + CRepository& Repository() const; + +private: + // new functions + static TInt HandleRestartEvent( TAny* aSelf ); void SwapUiControllerL( TBool aToExtHS ); -private: // Data +private: + // data - /** - * UI Controller manager, Owned. - */ + /** UI Controller manager, Owned. */ CAiUiControllerManager* iUiControllerManager; - - /** - * Content plugin manager, Owned. - */ - CAiContentPluginManager* iPluginManager; - - /** - * Window server plug-in manager, Owned. - */ + /** 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. - */ + /** Notify handler for cenrep, Owned. */ + CCenRepNotifyHandler* iNotifyHandler; + /** Notify handler for cenrep, Owned. */ CCenRepNotifyHandler* iNotifyHandlerESS; - - /** - * Idle repository, Owned. - */ - CRepository* iAIRepository; - - /** - * Idle restart PS observer, Owned. - */ + /** Idle repository, Owned. */ + CRepository* iRepository; + /** Idle restart PS observer, Owned. */ MAiPSPropertyObserver* iIdleRestartObserver; TBool iLibrariesLoaded; @@ -195,5 +209,5 @@ RLibrary iLibrary3; }; -#endif // C_AIFW_H +#endif // _AIFW_H diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/inc/framework/aifwstartupscheduler.h --- a/idlefw/inc/framework/aifwstartupscheduler.h Tue Feb 02 00:23:10 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 - -/** - * 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 - diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/inc/framework/aikeylockobserver.h --- a/idlefw/inc/framework/aikeylockobserver.h Tue Feb 02 00:23:10 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 -#include -#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. diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/inc/framework/ailightstatusobserver.h --- a/idlefw/inc/framework/ailightstatusobserver.h Tue Feb 02 00:23:10 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 -#include -#include -#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. diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/inc/framework/ainetworklistener.h --- a/idlefw/inc/framework/ainetworklistener.h Tue Feb 02 00:23:10 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 -#include -#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 diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/inc/framework/ainetworkobserver.h --- a/idlefw/inc/framework/ainetworkobserver.h Tue Feb 02 00:23:10 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 -#include - -/** - * @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 diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/inc/framework/ainwsdlgcontroller.h --- a/idlefw/inc/framework/ainwsdlgcontroller.h Tue Feb 02 00:23:10 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 -#include -#include - -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. diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/inc/framework/aipluginactivitypstool.h --- a/idlefw/inc/framework/aipluginactivitypstool.h Tue Feb 02 00:23:10 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 // TUid -#include // 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 - diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/inc/framework/aipluginfactory.h --- a/idlefw/inc/framework/aipluginfactory.h Tue Feb 02 00:23:10 2010 +0200 +++ b/idlefw/inc/framework/aipluginfactory.h Fri Feb 19 23:07:29 2010 +0200 @@ -11,134 +11,152 @@ * * 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 +#include -class MAiContentObserver; -class MAiEventHandlerExtension; -class MAiContentItemIterator; -class CAiContentPublisher; -class CAiUiController; -class CAiPluginActivityRegistry; -class CImplementationInformation; -class CAiContentPluginManager; -class MAiPluginTool; -class MAiPluginLifecycleObserver; +// User includes +// Forward declarations +class CAiUiControllerManager; +class CAiStateManager; +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& 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& aControllerArray ); - - /** - * Destroy plugin - * - * @since S60 5.0 - * @param aPublisherInfo plugin to destroy. - * @param aControllerArray array of active UI controllers. - */ - void DestroyPluginL( const TAiPublisherInfo& aPublisherInfo, - RPointerArray& aControllerArray ); - - /** - * Destroys all plugins - * - * @since S60 5.0 - */ - void DestroyPlugins(); - - - void AddLifecycleObserverL( MAiPluginLifecycleObserver& aObserver ); + /** + * 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 ); + + /** + * 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; + +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& 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& aControllerArray ); - - void ConfigurePluginL( RPointerArray& aControllerArray, - CAiContentPublisher& aContentPublisher, - const TAiPublisherInfo& aPubInfo ); - - private: // Data - // Array of loaded data plugins, Not owned - RPointerArray& 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 iLifecycleObservers; +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; + + void ResolvePluginsToUpgradeL( + RArray< THsPublisherInfo >& aArray ); + +private: + // data + + /** UI Controller Manager, Not owned */ + CAiUiControllerManager& iUiControllerManager; + /** 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. diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/inc/framework/aipluginlifecycleobserver.h --- a/idlefw/inc/framework/aipluginlifecycleobserver.h Tue Feb 02 00:23:10 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 - -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. diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/inc/framework/aipluginstate.h --- a/idlefw/inc/framework/aipluginstate.h Tue Feb 02 00:23:10 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 diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/inc/framework/aipluginstatemachine.h --- a/idlefw/inc/framework/aipluginstatemachine.h Tue Feb 02 00:23:10 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 - -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 diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/inc/framework/aipluginstatemachineimpl.h --- a/idlefw/inc/framework/aipluginstatemachineimpl.h Tue Feb 02 00:23:10 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 -#include -#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 diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/inc/framework/aipluginstatemanager.h --- a/idlefw/inc/framework/aipluginstatemanager.h Tue Feb 02 00:23:10 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 -#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 iStateMachines; - }; - -#endif // C_AIPLUGINSTATEMANAGER_H - -// End of File. diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/inc/framework/aipsstatusobserver.h --- a/idlefw/inc/framework/aipsstatusobserver.h Tue Feb 02 00:23:10 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 -#include -#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. diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/inc/framework/aissaverstatusobserver.h --- a/idlefw/inc/framework/aissaverstatusobserver.h Tue Feb 02 00:23:10 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 -#include -#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. diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/inc/framework/aistatealive.h --- a/idlefw/inc/framework/aistatealive.h Tue Feb 02 00:23:10 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 diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/inc/framework/aistateidle.h --- a/idlefw/inc/framework/aistateidle.h Tue Feb 02 00:23:10 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 diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/inc/framework/aistatemanager.h --- a/idlefw/inc/framework/aistatemanager.h Tue Feb 02 00:23:10 2010 +0200 +++ b/idlefw/inc/framework/aistatemanager.h Fri Feb 19 23:07:29 2010 +0200 @@ -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,204 @@ * * 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 +#include -#include "aipluginstatemachine.h" +// User includes +#include +#include "aistateobserver.h" + +// Forward declarations +class CAiPluginFactory; +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 NotifyUpdatePlugins(); - /** - * 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 + */ + TBool OnlineStateInUse() const; + +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(); + +private: + // data - ~MAiStateManager(){} + /** Plugin Factory, Not owned */ + CAiPluginFactory& iFactory; + /** Current state */ + TState iCurrentState; + /** Flags */ + TBitFlags32 iFlags; + /** Halted flag */ + TBool iHalt; +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 + diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/inc/framework/aistateobserver.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/idlefw/inc/framework/aistateobserver.h Fri Feb 19 23:07:29 2010 +0200 @@ -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 + +// 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 update content publishers after Ecom registry change. + * + * @since S60 5.2 + */ + virtual void NotifyUpdatePlugins() = 0; + + /** + * Queries whether online state is in use + * by any of the currently loaded plugin. + * + * @since S60 5.2 + * @return ETrue if online/offline state needed, EFalse otherwise + */ + virtual TBool OnlineStateInUse() const = 0; + }; + +#endif // _AISTATEOBSERVER_H + +// End of file diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/inc/framework/aistateprovider.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/idlefw/inc/framework/aistateprovider.h Fri Feb 19 23:07:29 2010 +0200 @@ -0,0 +1,189 @@ +/* +* 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 +#include +#include +#include + +// User includes +#include +#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, CCoeEnv& aCoeEnv ); + + /** + * Two-phased constructor. Leaving on stack + */ + static CAiStateProvider* NewLC( + MAiStateObserver& aObserver, CCoeEnv& aCoeEnv ); + + /** + * Destructor + */ + ~CAiStateProvider(); + +private: + // private constructors + + /** + * 2nd phase constructor + */ + void ConstructL(); + + /** + * C++ default constructor + */ + CAiStateProvider( + MAiStateObserver& aObserver, CCoeEnv& aCoeEnv ); + +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 ); + + /** + * @see MAiFwStateHandler + */ + TBool OnlineStateInUse() const; + +private: + // new functions + + static TInt BackupRestoreEvent( 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; + +private: + // friend classes + +#ifdef _AIFW_UNIT_TEST + friend class UT_AiStateProvider; +#endif + }; + +#endif // _AISTATEPROVIDER_H + +// End of file + diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/inc/framework/aistatesuspended.h --- a/idlefw/inc/framework/aistatesuspended.h Tue Feb 02 00:23:10 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 diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/inc/framework/aiuicontrollermanager.h --- a/idlefw/inc/framework/aiuicontrollermanager.h Tue Feb 02 00:23:10 2010 +0200 +++ b/idlefw/inc/framework/aiuicontrollermanager.h Fri Feb 19 23:07:29 2010 +0200 @@ -16,141 +16,160 @@ */ -#ifndef C_AIUICONTROLLERMANAGER_H -#define C_AIUICONTROLLERMANAGER_H +#ifndef _AIUICONTROLLERMANAGER_H +#define _AIUICONTROLLERMANAGER_H - +// System includes #include -#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 iUiControllerArray; - - /** - * Main UI controller for app session. Owned in above array. - */ - MAiMainUiController* iMainUiController; - - /** - * List of UI framework observers to delegate events - */ - RPointerArray iUiFrameworkObservers; - - /** - * List to check for duplicated creations. - */ - RArray 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 diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/inc/framework/aiuiframeworkobserverimpl.h --- a/idlefw/inc/framework/aiuiframeworkobserverimpl.h Tue Feb 02 00:23:10 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 -#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 diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/inc/utility/caiplugintool.h --- a/idlefw/inc/utility/caiplugintool.h Tue Feb 02 00:23:10 2010 +0200 +++ b/idlefw/inc/utility/caiplugintool.h Fri Feb 19 23:07:29 2010 +0200 @@ -15,18 +15,19 @@ * */ - #ifndef C_AIPLUGINTOOL_H #define C_AIPLUGINTOOL_H +// System includes #include + +// 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 - - diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/devicestatus/data/aidevstaplg.rss --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/idlefw/plugins/devicestatus/data/aidevstaplg.rss Fri Feb 19 23:07:29 2010 +0200 @@ -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 +#include + + +// 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. diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/devicestatus/data/aidevstaplgres.rss --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/idlefw/plugins/devicestatus/data/aidevstaplgres.rss Fri Feb 19 23:07:29 2010 +0200 @@ -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 +#include +#include +#include +#include + +#include + +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; + } diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/devicestatus/group/aidevstaplg.mmp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/idlefw/plugins/devicestatus/group/aidevstaplg.mmp Fri Feb 19 23:07:29 2010 +0200 @@ -0,0 +1,90 @@ +/* +* 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 +#include + +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 + +// End of file + + diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/devicestatus/group/bld.inf --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/idlefw/plugins/devicestatus/group/bld.inf Fri Feb 19 23:07:29 2010 +0200 @@ -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. diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/devicestatus/inc/aibtsappublisher.h --- a/idlefw/plugins/devicestatus/inc/aibtsappublisher.h Tue Feb 02 00:23:10 2010 +0200 +++ b/idlefw/plugins/devicestatus/inc/aibtsappublisher.h Fri Feb 19 23:07:29 2010 +0200 @@ -20,17 +20,20 @@ #ifndef C_AIBTSAPPUBLISHER_H #define C_AIBTSAPPUBLISHER_H - +// System includes #include #include #include #include #include + +// 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 diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/devicestatus/inc/aicontentobserveroptimizer.h --- a/idlefw/plugins/devicestatus/inc/aicontentobserveroptimizer.h Tue Feb 02 00:23:10 2010 +0200 +++ b/idlefw/plugins/devicestatus/inc/aicontentobserveroptimizer.h Fri Feb 19 23:07:29 2010 +0200 @@ -19,10 +19,15 @@ #ifndef C_AIMULTICONTENTOBSERVEROPTIMIZER_H #define C_AIMULTICONTENTOBSERVEROPTIMIZER_H - +// System includes #include + +// 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,34 +84,34 @@ /* * @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. diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/devicestatus/inc/aicugmcnpublisher.h --- a/idlefw/plugins/devicestatus/inc/aicugmcnpublisher.h Tue Feb 02 00:23:10 2010 +0200 +++ b/idlefw/plugins/devicestatus/inc/aicugmcnpublisher.h Fri Feb 19 23:07:29 2010 +0200 @@ -19,19 +19,23 @@ #ifndef C_AICUGMCNPUBLISHER_H #define C_AICUGMCNPUBLISHER_H - +// System includes #include #include #include + +// 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. diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/devicestatus/inc/aicugpublisher.h --- a/idlefw/plugins/devicestatus/inc/aicugpublisher.h Tue Feb 02 00:23:10 2010 +0200 +++ b/idlefw/plugins/devicestatus/inc/aicugpublisher.h Fri Feb 19 23:07:29 2010 +0200 @@ -19,15 +19,18 @@ #ifndef C_AICUGPUBLISHER_H #define C_AICUGPUBLISHER_H - +// System includes #include #include #include + +// 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. diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/devicestatus/inc/aidatepublisher.h --- a/idlefw/plugins/devicestatus/inc/aidatepublisher.h Tue Feb 02 00:23:10 2010 +0200 +++ b/idlefw/plugins/devicestatus/inc/aidatepublisher.h Fri Feb 19 23:07:29 2010 +0200 @@ -19,13 +19,17 @@ #ifndef C_AIDATEPUBLISHER_H #define C_AIDATEPUBLISHER_H +// System includes #include #include + +// User includes #include "aidevicestatuspublisher.h" #include "aidevicestatuscontentmodel.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. diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/devicestatus/inc/aidevicestatusplugin.h --- a/idlefw/plugins/devicestatus/inc/aidevicestatusplugin.h Tue Feb 02 00:23:10 2010 +0200 +++ b/idlefw/plugins/devicestatus/inc/aidevicestatusplugin.h Fri Feb 19 23:07:29 2010 +0200 @@ -19,11 +19,13 @@ #ifndef C_AIDEVICESTATUSPLUGIN_H #define C_AIDEVICESTATUSPLUGIN_H +// System includes -#include -#include +// User includes +#include #include +// 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 diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/devicestatus/inc/aidevicestatuspluginengine.h --- a/idlefw/plugins/devicestatus/inc/aidevicestatuspluginengine.h Tue Feb 02 00:23:10 2010 +0200 +++ b/idlefw/plugins/devicestatus/inc/aidevicestatuspluginengine.h Fri Feb 19 23:07:29 2010 +0200 @@ -19,19 +19,23 @@ #ifndef AIDEVICESTATUSPLUGINENGINE_H #define AIDEVICESTATUSPLUGINENGINE_H +// System includes #include + +// User includes #include - #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 diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/devicestatus/inc/aidevicestatuspublisher.h --- a/idlefw/plugins/devicestatus/inc/aidevicestatuspublisher.h Tue Feb 02 00:23:10 2010 +0200 +++ b/idlefw/plugins/devicestatus/inc/aidevicestatuspublisher.h Fri Feb 19 23:07:29 2010 +0200 @@ -19,9 +19,14 @@ #ifndef M_AIDEVICESTATUSPUBLISHER_H #define M_AIDEVICESTATUSPUBLISHER_H +// System includes #include -#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 diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/devicestatus/inc/aimcnpublisher.h --- a/idlefw/plugins/devicestatus/inc/aimcnpublisher.h Tue Feb 02 00:23:10 2010 +0200 +++ b/idlefw/plugins/devicestatus/inc/aimcnpublisher.h Fri Feb 19 23:07:29 2010 +0200 @@ -19,14 +19,17 @@ #ifndef C_AIMCNPUBLISHER_H #define C_AIMCNPUBLISHER_H +// System includes +#include -#include +// 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. diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/devicestatus/inc/aimulticontentobserver.h --- a/idlefw/plugins/devicestatus/inc/aimulticontentobserver.h Tue Feb 02 00:23:10 2010 +0200 +++ b/idlefw/plugins/devicestatus/inc/aimulticontentobserver.h Fri Feb 19 23:07:29 2010 +0200 @@ -19,13 +19,16 @@ #ifndef C_AIMULTICONTENTOBSERVER_H #define C_AIMULTICONTENTOBSERVER_H - +// System includes #include + +// 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,25 +53,25 @@ 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, diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/devicestatus/inc/ainetworkinfolistener.h --- a/idlefw/plugins/devicestatus/inc/ainetworkinfolistener.h Tue Feb 02 00:23:10 2010 +0200 +++ b/idlefw/plugins/devicestatus/inc/ainetworkinfolistener.h Fri Feb 19 23:07:29 2010 +0200 @@ -19,14 +19,17 @@ #ifndef C_AINETWORKINFOLISTENER_H #define C_AINETWORKINFOLISTENER_H - +// System includes #include #include +// 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: diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/devicestatus/inc/ainwspublisher.h --- a/idlefw/plugins/devicestatus/inc/ainwspublisher.h Tue Feb 02 00:23:10 2010 +0200 +++ b/idlefw/plugins/devicestatus/inc/ainwspublisher.h Fri Feb 19 23:07:29 2010 +0200 @@ -19,15 +19,17 @@ #ifndef C_AINWSPUBLISHER_H #define C_AINWSPUBLISHER_H +// System includes +#include -#include +// 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. diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/devicestatus/inc/aioperatorlogopublisher.h --- a/idlefw/plugins/devicestatus/inc/aioperatorlogopublisher.h Tue Feb 02 00:23:10 2010 +0200 +++ b/idlefw/plugins/devicestatus/inc/aioperatorlogopublisher.h Fri Feb 19 23:07:29 2010 +0200 @@ -19,20 +19,24 @@ #ifndef C_AIOPERATORLOGOPUBLISHER_H #define C_AIOPERATORLOGOPUBLISHER_H - +// System includes #include #include #include + +// User includes #include #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 diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/devicestatus/inc/aioperatornamepublisher.h --- a/idlefw/plugins/devicestatus/inc/aioperatornamepublisher.h Tue Feb 02 00:23:10 2010 +0200 +++ b/idlefw/plugins/devicestatus/inc/aioperatornamepublisher.h Fri Feb 19 23:07:29 2010 +0200 @@ -19,15 +19,19 @@ #ifndef C_AIOPERATORPROVIDERNAMEPUBLISHER_H #define C_AIOPERATORPROVIDERNAMEPUBLISHER_H - +// System includes #include #include + +// User includes #include "aidevicestatuspublisher.h" #include "ainetworkinfoobserver.h" +// Forward declarations class CAiNetworkInfoListener; class MAiDeviceStatusContentObserver; -class MAiPropertyExtension; +class CHsContentPublisher; + /** * @ingroup group_devicestatusplugin @@ -39,8 +43,9 @@ * * @since S60 3.2 */ -class CAiOperatorNamePublisher : public CBase, public MAiDeviceStatusPublisher, - public MAiNetworkInfoObserver +NONSHARABLE_CLASS( CAiOperatorNamePublisher ) : public CBase, + public MAiDeviceStatusPublisher, + public MAiNetworkInfoObserver { public: @@ -52,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 ); @@ -141,56 +147,28 @@ 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; }; +#endif // C_AIOPERATORPROVIDERNAMEPUBLISHER_H -#endif // C_AIOPERATORPROVIDERNAMEPUBLISHER_H +// End of file diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/devicestatus/inc/aipublisherfactory.h --- a/idlefw/plugins/devicestatus/inc/aipublisherfactory.h Tue Feb 02 00:23:10 2010 +0200 +++ b/idlefw/plugins/devicestatus/inc/aipublisherfactory.h Fri Feb 19 23:07:29 2010 +0200 @@ -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 diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/devicestatus/inc/aipublishprioritizer.h --- a/idlefw/plugins/devicestatus/inc/aipublishprioritizer.h Tue Feb 02 00:23:10 2010 +0200 +++ b/idlefw/plugins/devicestatus/inc/aipublishprioritizer.h Fri Feb 19 23:07:29 2010 +0200 @@ -19,10 +19,16 @@ #ifndef C_AIPUBLISHPRIORITIZER_H #define C_AIPUBLISHPRIORITIZER_H +// System includes #include + +// 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; diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/devicestatus/inc/aisimregpublisher.h --- a/idlefw/plugins/devicestatus/inc/aisimregpublisher.h Tue Feb 02 00:23:10 2010 +0200 +++ b/idlefw/plugins/devicestatus/inc/aisimregpublisher.h Fri Feb 19 23:07:29 2010 +0200 @@ -19,17 +19,20 @@ #ifndef C_AISIMREGFAILPUBLISHER_H #define C_AISIMREGFAILPUBLISHER_H +// System includes +#include -#include +// 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. diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/devicestatus/inc/aivhzpublisher.h --- a/idlefw/plugins/devicestatus/inc/aivhzpublisher.h Tue Feb 02 00:23:10 2010 +0200 +++ b/idlefw/plugins/devicestatus/inc/aivhzpublisher.h Fri Feb 19 23:07:29 2010 +0200 @@ -19,14 +19,17 @@ #ifndef C_AIVHZPUBLISHER_H #define C_AIVHZPUBLISHER_H +// System includes +#include -#include +// 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. diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/devicestatus/rom/aidevicestatusplugin.iby --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/idlefw/plugins/devicestatus/rom/aidevicestatusplugin.iby Fri Feb 19 23:07:29 2010 +0200 @@ -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 + +#ifdef RD_CUSTOMIZABLE_AI + +ECOM_PLUGIN( aidevstaplg.dll, aidevstaplg.rsc ) + +#endif // RD_CUSTOMIZABLE_AI + +#endif // AIDEVICESTATUSPLUGIN_IBY + diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/devicestatus/rom/aidevicestatusplugin_resources.iby --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/idlefw/plugins/devicestatus/rom/aidevicestatusplugin_resources.iby Fri Feb 19 23:07:29 2010 +0200 @@ -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 + +#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 diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/devicestatus/src/aibtsappublisher.cpp --- a/idlefw/plugins/devicestatus/src/aibtsappublisher.cpp Tue Feb 02 00:23:10 2010 +0200 +++ b/idlefw/plugins/devicestatus/src/aibtsappublisher.cpp Fri Feb 19 23:07:29 2010 +0200 @@ -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 ) diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/devicestatus/src/aicontentobserveroptimizer.cpp --- a/idlefw/plugins/devicestatus/src/aicontentobserveroptimizer.cpp Tue Feb 02 00:23:10 2010 +0200 +++ b/idlefw/plugins/devicestatus/src/aicontentobserveroptimizer.cpp Fri Feb 19 23:07:29 2010 +0200 @@ -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 ) { diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/devicestatus/src/aicugmcnpublisher.cpp --- a/idlefw/plugins/devicestatus/src/aicugmcnpublisher.cpp Tue Feb 02 00:23:10 2010 +0200 +++ b/idlefw/plugins/devicestatus/src/aicugmcnpublisher.cpp Fri Feb 19 23:07:29 2010 +0200 @@ -18,8 +18,8 @@ #include #include +#include #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*/ ) { diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/devicestatus/src/aicugpublisher.cpp --- a/idlefw/plugins/devicestatus/src/aicugpublisher.cpp Tue Feb 02 00:23:10 2010 +0200 +++ b/idlefw/plugins/devicestatus/src/aicugpublisher.cpp Fri Feb 19 23:07:29 2010 +0200 @@ -18,8 +18,8 @@ #include #include +#include #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*/ ) { diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/devicestatus/src/aidatepublisher.cpp --- a/idlefw/plugins/devicestatus/src/aidatepublisher.cpp Tue Feb 02 00:23:10 2010 +0200 +++ b/idlefw/plugins/devicestatus/src/aidatepublisher.cpp Fri Feb 19 23:07:29 2010 +0200 @@ -21,8 +21,9 @@ #include #include #include +#include + #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*/ ) { diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/devicestatus/src/aidevicestatusplugin.cpp --- a/idlefw/plugins/devicestatus/src/aidevicestatusplugin.cpp Tue Feb 02 00:23:10 2010 +0200 +++ b/idlefw/plugins/devicestatus/src/aidevicestatusplugin.cpp Fri Feb 19 23:07:29 2010 +0200 @@ -15,7 +15,7 @@ * */ - +// System includes #include #include #include @@ -23,6 +23,8 @@ #include #include #include + +// User includes #include "aidevicestatusplugin.h" #include "aidevicestatuspluginengine.h" #include "aipublishprioritizer.h" @@ -31,9 +33,11 @@ #include "aipluginsettings.h" #include "ainetworkinfolistener.h" +// Constants _LIT( KResourceDrive, "Z:" ); _LIT( KResourceFile, "aidevstaplgres.rsc" ); -#define KResourcePath KDC_APP_RESOURCE_DIR + +#define KResourcePath KDC_RESOURCE_FILES_DIR // ECOM implementation table const TImplementationProxy KImplementationTable[] = @@ -43,17 +47,23 @@ // ======== MEMBER FUNCTIONS ======== - -CAiDeviceStatusPlugin::CAiDeviceStatusPlugin() : - iResourceOffset( KErrNotFound ) +// ---------------------------------------------------------------------------- +// CAiDeviceStatusPlugin::CAiDeviceStatusPlugin +// +// ---------------------------------------------------------------------------- +// +CAiDeviceStatusPlugin::CAiDeviceStatusPlugin() + : iResourceOffset( KErrNotFound ) { } - +// ---------------------------------------------------------------------------- +// CAiDeviceStatusPlugin::ConstructL +// +// ---------------------------------------------------------------------------- +// void CAiDeviceStatusPlugin::ConstructL() - { - iInfo.iUid.iUid = AI_UID_ECOM_IMPLEMENTATION_CONTENTPUBLISHER_DEVSTAPLUGIN; - + { FeatureManager::InitializeLibL(); // Create master instance to prevent deletion on Stop() @@ -62,11 +72,17 @@ //Create content here since this is needed in optimization phase. iContent = AiUtility::CreateContentItemArrayIteratorL( KAiDeviceStatusContent ); iResources = AiUtility::CreateContentItemArrayIteratorL( KAiDeviceStatusResources ); + iContentObservers = CAiMultiContentObserver::NewL(); + iPrioritizer = CAiPublishPrioritizer::NewL( *iContentObservers, *this ); } - +// ---------------------------------------------------------------------------- +// CAiDeviceStatusPlugin::NewL +// +// ---------------------------------------------------------------------------- +// CAiDeviceStatusPlugin* CAiDeviceStatusPlugin::NewL() { CAiDeviceStatusPlugin* self = CAiDeviceStatusPlugin::NewLC(); @@ -74,7 +90,11 @@ return self; } - +// ---------------------------------------------------------------------------- +// CAiDeviceStatusPlugin::NewLC +// +// ---------------------------------------------------------------------------- +// CAiDeviceStatusPlugin* CAiDeviceStatusPlugin::NewLC() { CAiDeviceStatusPlugin* self = new( ELeave ) CAiDeviceStatusPlugin; @@ -83,57 +103,65 @@ return self; } - +// ---------------------------------------------------------------------------- +// CAiDeviceStatusPlugin::~CAiDeviceStatusPlugin +// +// ---------------------------------------------------------------------------- +// CAiDeviceStatusPlugin::~CAiDeviceStatusPlugin() { delete iPrioritizer; + FreeResources(); + delete iContentObservers; + Release( iResources ); Release( iContent ); + FeatureManager::UnInitializeLib(); + if( iListener ) { iListener->Release(); } } - -/** - * Allocates all resourcers required for plug-in operation. - */ +// ---------------------------------------------------------------------------- +// CAiDeviceStatusPlugin::AllocateResourcesL +// +// ---------------------------------------------------------------------------- +// void CAiDeviceStatusPlugin::AllocateResourcesL() { //create engine if( !iEngine ) { - iEngine = CAiDeviceStatusPluginEngine::NewL( *iContentObservers, - *this, - *iPrioritizer); + iEngine = CAiDeviceStatusPluginEngine::NewL( + *iContentObservers, *this, *iPrioritizer ); } if( iResourceOffset < 0 ) { - CCoeEnv* coe = CCoeEnv::Static(); - - if( !coe ) - { - User::Leave( KErrNotReady ); - } + CCoeEnv* coe( CCoeEnv::Static() ); - //Add resource file to cone - TFullName resourceFile( KResourceDrive ); - resourceFile.Append( KResourcePath ); - resourceFile.Append( KResourceFile ); - BaflUtils::NearestLanguageFile( CCoeEnv::Static()->FsSession(), resourceFile ); - iResourceOffset = coe->AddResourceFileL( resourceFile ); + if ( coe ) + { + //Add resource file to cone + TFullName resourceFile( KResourceDrive ); + resourceFile.Append( KResourcePath ); + resourceFile.Append( KResourceFile ); + BaflUtils::NearestLanguageFile( coe->FsSession(), resourceFile ); + iResourceOffset = coe->AddResourceFileL( resourceFile ); + } } } - -/** - * Frees all allocated resources. - */ +// ---------------------------------------------------------------------------- +// CAiDeviceStatusPlugin::FreeResources +// +// ---------------------------------------------------------------------------- +// void CAiDeviceStatusPlugin::FreeResources() { if( iResourceOffset >= 0 ) @@ -153,155 +181,151 @@ iEngine = NULL; } - -void CAiDeviceStatusPlugin::Resume(TAiTransitionReason aReason) - { - if( IgnoreReason( aReason ) ) - { - return; - } - // resume all publishers only in startup - if( iEngine ) +// ---------------------------------------------------------------------------- +// CAiDeviceStatusPlugin::Start +// +// ---------------------------------------------------------------------------- +// +void CAiDeviceStatusPlugin::Start( TStartReason aReason ) + { + if ( aReason == EPageStartup || aReason == ESystemStartup ) { - if ( aReason == EAiIdleForeground || aReason == EAiKeylockDisabled ) - { - // not much can be done if some publisher cannot be refreshed - TRAP_IGNORE( iEngine->RefreshPublishersL( - EAiDeviceStatusContentNetworkIdentity, ETrue ) ); - - TRAP_IGNORE( iEngine->RefreshPublishersL( - EAiDeviceStatusContentCUGMCNIndicator, ETrue ) ); - } - // if layout changed republish some information - else if ( aReason == EAiScreenLayoutChanged ) - { - TRAP_IGNORE( iEngine->RefreshPublishersL( EAiDeviceStatusContentDate, ETrue )); - TRAP_IGNORE( iEngine->RefreshPublishersL( EAiDeviceStatusContentCUGMCNIndicator, ETrue )); - TRAP_IGNORE( iEngine->RefreshPublishersL( EAiDeviceStatusContentVHZText, ETrue )); - TRAP_IGNORE( iEngine->RefreshPublishersL( EAiDeviceStatusContentNetworkIdentity, ETrue )); - } - return; - } - // If engine has been deleted. create it again. - else - { - iContentObservers->StartTransaction( KImplUidDevStaPlugin ); - - TRAPD( err, DoResumeL(aReason) ); - - if( err == KErrNone ) - { - iContentObservers->Commit( KImplUidDevStaPlugin ); - } - else - { - iContentObservers->CancelTransaction( KImplUidDevStaPlugin ); - } + iRequirePublish = ETrue; } } - -void CAiDeviceStatusPlugin::DoResumeL(TAiTransitionReason /*aReason*/) - { - AllocateResourcesL( ); - iEngine->ResumePublishersL(); - iEngine->RefreshPublishersL( EFalse ); - } - - -TBool CAiDeviceStatusPlugin::IgnoreReason( TAiTransitionReason aReason ) - { - switch( aReason ) - { - case EAiBacklightOff: - return ETrue; - } - return EFalse; +// ---------------------------------------------------------------------------- +// CAiDeviceStatusPlugin::Stop +// +// ---------------------------------------------------------------------------- +// +void CAiDeviceStatusPlugin::Stop( TStopReason /*aReason*/ ) + { } - -void CAiDeviceStatusPlugin::Stop(TAiTransitionReason /*aReason*/) - { - FreeResources(); +// ---------------------------------------------------------------------------- +// CAiDeviceStatusPlugin::Resume +// +// ---------------------------------------------------------------------------- +// +void CAiDeviceStatusPlugin::Resume( TResumeReason aReason ) + { + if ( aReason == EForeground ) + { + if ( iRequirePublish ) + { + TRAP_IGNORE( DoResumeL() ); + + iRequirePublish = EFalse; + } + } } - - -void CAiDeviceStatusPlugin::Suspend(TAiTransitionReason /*aReason*/) + +// ---------------------------------------------------------------------------- +// CAiDeviceStatusPlugin::Suspend +// +// ---------------------------------------------------------------------------- +// +void CAiDeviceStatusPlugin::Suspend( TSuspendReason /*aReason*/ ) { } - -void CAiDeviceStatusPlugin::SubscribeL(MAiContentObserver& aObserver) +// ---------------------------------------------------------------------------- +// CAiDeviceStatusPlugin::SubscribeL +// +// ---------------------------------------------------------------------------- +// +void CAiDeviceStatusPlugin::SubscribeL( MAiContentObserver& aObserver ) { iContentObservers->AddObserverL( aObserver ); } - -TAny* CAiDeviceStatusPlugin::Extension(TUid aUid) +// ---------------------------------------------------------------------------- +// CAiDeviceStatusPlugin::ConfigureL +// +// ---------------------------------------------------------------------------- +// +void CAiDeviceStatusPlugin::ConfigureL( RAiSettingsItemArray& aSettings ) { - //Access to extensions - if( aUid == KExtensionUidProperty ) + aSettings.ResetAndDestroy(); + + AllocateResourcesL(); + } + +// ---------------------------------------------------------------------------- +// CAiDeviceStatusPlugin::GetProperty +// +// ---------------------------------------------------------------------------- +// +TAny* CAiDeviceStatusPlugin::GetProperty( TProperty aProperty ) + { + if ( aProperty == EPublisherContent ) { - return static_cast(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(iContent); - - case EAiPublisherResources: - return static_cast(iResources); - - case EAiContentRequest: - return static_cast(this); - } - - return NULL; - } - -void CAiDeviceStatusPlugin::SetPropertyL(TInt aProperty, TAny* aValue) - { - if( aProperty == EAiPublisherInfo ) - { - ASSERT( aValue ); - - const TAiPublisherInfo* info( - static_cast( 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 diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/devicestatus/src/aidevicestatuspluginengine.cpp --- a/idlefw/plugins/devicestatus/src/aidevicestatuspluginengine.cpp Tue Feb 02 00:23:10 2010 +0200 +++ b/idlefw/plugins/devicestatus/src/aidevicestatuspluginengine.cpp Fri Feb 19 23:07:29 2010 +0200 @@ -15,31 +15,37 @@ * */ +// System includes +// User includes +#include #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 diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/devicestatus/src/aidevstaplg.rss --- a/idlefw/plugins/devicestatus/src/aidevstaplg.rss Tue Feb 02 00:23:10 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 - - -// 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. diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/devicestatus/src/aidevstaplgres.rss --- a/idlefw/plugins/devicestatus/src/aidevstaplgres.rss Tue Feb 02 00:23:10 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 -#include -#include -#include -#include - -#include - -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; - } diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/devicestatus/src/aimcnpublisher.cpp --- a/idlefw/plugins/devicestatus/src/aimcnpublisher.cpp Tue Feb 02 00:23:10 2010 +0200 +++ b/idlefw/plugins/devicestatus/src/aimcnpublisher.cpp Fri Feb 19 23:07:29 2010 +0200 @@ -15,9 +15,8 @@ * */ - +#include #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*/ ) { diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/devicestatus/src/aimulticontentobserver.cpp --- a/idlefw/plugins/devicestatus/src/aimulticontentobserver.cpp Tue Feb 02 00:23:10 2010 +0200 +++ b/idlefw/plugins/devicestatus/src/aimulticontentobserver.cpp Fri Feb 19 23:07:29 2010 +0200 @@ -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*/, diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/devicestatus/src/ainwspublisher.cpp --- a/idlefw/plugins/devicestatus/src/ainwspublisher.cpp Tue Feb 02 00:23:10 2010 +0200 +++ b/idlefw/plugins/devicestatus/src/ainwspublisher.cpp Fri Feb 19 23:07:29 2010 +0200 @@ -17,7 +17,7 @@ #include "ainwspublisher.h" -#include "aicontentobserver.h" +#include #include "ainetworkinfolistener.h" #include @@ -73,7 +73,7 @@ void CAiNwsPublisher::Subscribe( MAiContentObserver& aObserver, - MAiPropertyExtension& aExtension, + CHsContentPublisher& aExtension, MAiPublishPrioritizer& /*aPrioritizer*/, MAiPublisherBroadcaster& /*aBroadcaster*/ ) { diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/devicestatus/src/aioperatorlogopublisher.cpp --- a/idlefw/plugins/devicestatus/src/aioperatorlogopublisher.cpp Tue Feb 02 00:23:10 2010 +0200 +++ b/idlefw/plugins/devicestatus/src/aioperatorlogopublisher.cpp Fri Feb 19 23:07:29 2010 +0200 @@ -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 ) { diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/devicestatus/src/aioperatornamepublisher.cpp --- a/idlefw/plugins/devicestatus/src/aioperatornamepublisher.cpp Tue Feb 02 00:23:10 2010 +0200 +++ b/idlefw/plugins/devicestatus/src/aioperatornamepublisher.cpp Fri Feb 19 23:07:29 2010 +0200 @@ -20,6 +20,7 @@ #include #include #include + #include #include "aioperatornamepublisher.h" #include "ainetworkinfolistener.h" @@ -113,23 +114,27 @@ 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 + { + TRAP_IGNORE ( + iPrioritizer->TryToCleanL( *iBroadcaster, + EAiDeviceStatusContentNetworkIdentity, + iPriority )); + } } void CAiOperatorNamePublisher::Subscribe( MAiContentObserver& /*aObserver*/, - MAiPropertyExtension& aExtension, + CHsContentPublisher& aExtension, MAiPublishPrioritizer& aPrioritizer, MAiPublisherBroadcaster& aBroadcaster ) { @@ -143,6 +148,11 @@ { iSuccess = EFalse; + if ( iSuspended ) + { + return; + } + if( aClean ) { iPrioritizer->TryToCleanL( *iBroadcaster, @@ -610,10 +620,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 +635,17 @@ return EFalse; } +TBool CAiOperatorNamePublisher::SuspendL( TInt aContentId, TBool /*aClean*/ ) + { + if ( aContentId == EAiDeviceStatusContentNetworkIdentity ) + { + iSuspended = ETrue; + + return ETrue; + } + + return EFalse; + } TBool CAiOperatorNamePublisher::RefreshContentWithPriorityL( TInt aContentId, diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/devicestatus/src/aipublisherfactory.cpp --- a/idlefw/plugins/devicestatus/src/aipublisherfactory.cpp Tue Feb 02 00:23:10 2010 +0200 +++ b/idlefw/plugins/devicestatus/src/aipublisherfactory.cpp Fri Feb 19 23:07:29 2010 +0200 @@ -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 factory; - return factory.CreatePublisherL(); - } - - MAiDeviceStatusPublisher* AiPublisherFactory::CreateDatePublisherL() { TPublisherFactory factory; diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/devicestatus/src/aipublishprioritizer.cpp --- a/idlefw/plugins/devicestatus/src/aipublishprioritizer.cpp Tue Feb 02 00:23:10 2010 +0200 +++ b/idlefw/plugins/devicestatus/src/aipublishprioritizer.cpp Fri Feb 19 23:07:29 2010 +0200 @@ -20,14 +20,14 @@ #include "ainwidpriorities.h" #include "aidevicestatuscontentmodel.h" #include -#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 ); diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/devicestatus/src/aisimregpublisher.cpp --- a/idlefw/plugins/devicestatus/src/aisimregpublisher.cpp Tue Feb 02 00:23:10 2010 +0200 +++ b/idlefw/plugins/devicestatus/src/aisimregpublisher.cpp Fri Feb 19 23:07:29 2010 +0200 @@ -17,7 +17,7 @@ #include "aisimregpublisher.h" -#include "aicontentobserver.h" +#include #include "ainetworkinfolistener.h" #include #include @@ -80,7 +80,7 @@ void CAiSimRegPublisher::Subscribe( MAiContentObserver& aObserver, - MAiPropertyExtension& aExtension, + CHsContentPublisher& aExtension, MAiPublishPrioritizer& /*aPrioritizer*/, MAiPublisherBroadcaster& /*aBroadcaster*/ ) { diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/devicestatus/src/aivhzpublisher.cpp --- a/idlefw/plugins/devicestatus/src/aivhzpublisher.cpp Tue Feb 02 00:23:10 2010 +0200 +++ b/idlefw/plugins/devicestatus/src/aivhzpublisher.cpp Fri Feb 19 23:07:29 2010 +0200 @@ -19,7 +19,7 @@ #include #include "activeidle2domaincrkeys.h" #include "aivhzpublisher.h" -#include "aicontentobserver.h" +#include #include "ainetworkinfolistener.h" @@ -74,7 +74,7 @@ void CAiVHZPublisher::Subscribe( MAiContentObserver& aObserver, - MAiPropertyExtension& aExtension, + CHsContentPublisher& aExtension, MAiPublishPrioritizer& /*aPrioritizer*/, MAiPublisherBroadcaster& /*aBroadcaster*/ ) { diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/group/aidevstaplg.mmp --- a/idlefw/plugins/group/aidevstaplg.mmp Tue Feb 02 00:23:10 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 -#include - -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 - diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/group/aiwsplugin.mmp --- a/idlefw/plugins/group/aiwsplugin.mmp Tue Feb 02 00:23:10 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 - -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 diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/group/bld.inf --- a/idlefw/plugins/group/bld.inf Tue Feb 02 00:23:10 2010 +0200 +++ b/idlefw/plugins/group/bld.inf Fri Feb 19 23:07:29 2010 +0200 @@ -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 diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/mcsplugin/data/mcsplugin.rss --- a/idlefw/plugins/mcsplugin/data/mcsplugin.rss Tue Feb 02 00:23:10 2010 +0200 +++ b/idlefw/plugins/mcsplugin/data/mcsplugin.rss Fri Feb 19 23:07:29 2010 +0200 @@ -18,6 +18,7 @@ // INCLUDES #include +#include #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 = { diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/mcsplugin/data/mcspluginres.rss --- a/idlefw/plugins/mcsplugin/data/mcspluginres.rss Tue Feb 02 00:23:10 2010 +0200 +++ b/idlefw/plugins/mcsplugin/data/mcspluginres.rss Fri Feb 19 23:07:29 2010 +0200 @@ -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. //---------------------------------------------------- diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/mcsplugin/data/mcspluginuids.hrh --- a/idlefw/plugins/mcsplugin/data/mcspluginuids.hrh Tue Feb 02 00:23:10 2010 +0200 +++ b/idlefw/plugins/mcsplugin/data/mcspluginuids.hrh Fri Feb 19 23:07:29 2010 +0200 @@ -19,8 +19,6 @@ #ifndef MCSPLUGINUIDS_HRH #define MCSPLUGINUIDS_HRH -#include - /** * Ecom dll uid for MCS plug-in. */ diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/mcsplugin/group/mcsplugin.mmp --- a/idlefw/plugins/mcsplugin/group/mcsplugin.mmp Tue Feb 02 00:23:10 2010 +0200 +++ b/idlefw/plugins/mcsplugin/group/mcsplugin.mmp Fri Feb 19 23:07:29 2010 +0200 @@ -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 @@ -77,10 +77,7 @@ LIBRARY gslauncher.lib LIBRARY eikdlg.lib LIBRARY commonengine.lib -LIBRARY favouritesengine.lib LIBRARY gfxtrans.lib -LIBRARY centralrepository.lib - // End of File diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/mcsplugin/group/mcspluginhandler.mmp --- a/idlefw/plugins/mcsplugin/group/mcspluginhandler.mmp Tue Feb 02 00:23:10 2010 +0200 +++ b/idlefw/plugins/mcsplugin/group/mcspluginhandler.mmp Fri Feb 19 23:07:29 2010 +0200 @@ -45,6 +45,7 @@ LIBRARY viewcli.lib LIBRARY apparc.lib LIBRARY apgrfx.lib +LIBRARY msgs.lib SOURCEPATH ../data START RESOURCE mcspluginhandler.rss diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/mcsplugin/handler/inc/mcspluginhandler.h --- a/idlefw/plugins/mcsplugin/handler/inc/mcspluginhandler.h Tue Feb 02 00:23:10 2010 +0200 +++ b/idlefw/plugins/mcsplugin/handler/inc/mcspluginhandler.h Fri Feb 19 23:07:29 2010 +0200 @@ -20,8 +20,10 @@ #include + #include #include // For CVwsSessionWrapper +#include // For MMsvSessionObserver #ifdef SYMBIAN_ENABLE_SPLIT_HEADERS #include #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__ diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/mcsplugin/handler/src/mcspluginhandler.cpp --- a/idlefw/plugins/mcsplugin/handler/src/mcspluginhandler.cpp Tue Feb 02 00:23:10 2010 +0200 +++ b/idlefw/plugins/mcsplugin/handler/src/mcspluginhandler.cpp Fri Feb 19 23:07:29 2010 +0200 @@ -15,36 +15,38 @@ * */ +// System includes #include #include #include #include - -#include -#include - #include // For CVwsSessionWrapper #ifdef SYMBIAN_ENABLE_SPLIT_HEADERS #include #endif #include // For TVwsViewId +#include +#include #include #include +// 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 @@ -215,7 +241,7 @@ TLex16 lextmp( mailboxId ); lextmp.Val( number ); TUid uId = TUid::Uid( number ); - const TVwsViewId viewId( KScutMessagingUid, KScutRemoteMailboxViewId ); + const TVwsViewId viewId( TUid::Uid( KMCSCmailUidValue ), TUid::Uid( KMCSCmailMailboxViewIdValue ) ); iVwsSession->CreateActivateViewEvent( viewId, uId, KNullDesC8() ); } } @@ -226,6 +252,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 ) diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/mcsplugin/loc/mcsplugin.loc --- a/idlefw/plugins/mcsplugin/loc/mcsplugin.loc Tue Feb 02 00:23:10 2010 +0200 +++ b/idlefw/plugins/mcsplugin/loc/mcsplugin.loc Fri Feb 19 23:07:29 2010 +0200 @@ -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 diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/mcsplugin/publisher/inc/mcsplugin.h --- a/idlefw/plugins/mcsplugin/publisher/inc/mcsplugin.h Tue Feb 02 00:23:10 2010 +0200 +++ b/idlefw/plugins/mcsplugin/publisher/inc/mcsplugin.h Fri Feb 19 23:07:29 2010 +0200 @@ -19,277 +19,137 @@ #ifndef CMCSPLUGIN_H #define CMCSPLUGIN_H -#include -#include +// System includes + +// User includes +#include #include -#include -#include -#include "mcspluginwatcher.h" +// Forward declarations class MAiContentObserver; class MAiContentItemIterator; class CMCSPluginEngine; class TMCSData; -//class CMCSPluginData; - -//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: (), - * where is mapped by the framework to unique - * identifier supplied in aEvent, 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: (), - * where mapping to unique identifier supplied by event - * is failed by the frame work then the and - * 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 ); /** - * 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 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 diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/mcsplugin/publisher/inc/mcspluginengine.h --- a/idlefw/plugins/mcsplugin/publisher/inc/mcspluginengine.h Tue Feb 02 00:23:10 2010 +0200 +++ b/idlefw/plugins/mcsplugin/publisher/inc/mcspluginengine.h Fri Feb 19 23:07:29 2010 +0200 @@ -19,43 +19,35 @@ #ifndef CMCSPLUGINENGINE_H #define CMCSPLUGINENGINE_H -// INCLUDE FILES +// System includes #include #include #include -#include // For MFavouritesDbObserver -#include // For RFavouritesDb -#include // For MMsvSessionObserver +#include +#include +// User includes #include "mcspluginwatcher.h" +// Forward declarations class CGulIcon; class CMCSPluginData; class TMCSData; 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,6 +67,29 @@ */ ~CMCSPluginEngine(); +private: + // constructors + + /** + * C++ default constructor + */ + CMCSPluginEngine( CMCSPlugin& aPlugin, const TDesC8& aInstanceUid ); + + /* + * 2nd phase constructor + */ + void ConstructL(); + +public: + // new functions + + /** + * Called during plugin desctruction + * Decrements reference counters of all run-time generated items + * and deletes those which have reference counter == 0 + */ + void CleanMCSItemsL(); + /** * Gets the menu data. * @@ -130,64 +145,37 @@ 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 @@ -195,16 +183,14 @@ 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. */ 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,7 +201,8 @@ * @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 @@ -224,62 +211,39 @@ * @param aValueToAdd A constant to add * @return The actual value of updated reference count */ - TInt UpdateMenuItemsRefCountL( CMenuItem* aItem, const TInt aValueToAdd ); - -protected: - + TInt UpdateMenuItemsRefCountL( + CMenuItem* aItem, const TInt aValueToAdd ); + 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 diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/mcsplugin/publisher/src/mcsplugin.cpp --- a/idlefw/plugins/mcsplugin/publisher/src/mcsplugin.cpp Tue Feb 02 00:23:10 2010 +0200 +++ b/idlefw/plugins/mcsplugin/publisher/src/mcsplugin.cpp Fri Feb 19 23:07:29 2010 +0200 @@ -15,50 +15,48 @@ * */ - +// System includes #include #include #include +#include + +// User includes #include #include #include -#include - -#include // For working with settings API -#include // Headers Used for CRepository - #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,60 +64,28 @@ 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() { @@ -134,55 +100,41 @@ 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( this ); + TInt transactionId( reinterpret_cast( 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 +149,22 @@ } } -// --------------------------------------------------------------------------- +// ---------------------------------------------------------------------------- +// CMCSPlugin::PublishLItemL // Publishes one item to given index -// --------------------------------------------------------------------------- +// ---------------------------------------------------------------------------- // -void CMCSPlugin::PublishLItemL( MAiContentObserver& aObserver, TMCSData& aData, TInt aIndex ) +void CMCSPlugin::PublishLItemL( MAiContentObserver& aObserver, + TMCSData& aData, TInt aIndex ) { - if( !aData.IsDirty() ) { return; } - CMenuItem* item = iEngine->FetchMenuItemL( aData.MenuItem() ); + CMenuItem* item( iEngine->FetchMenuItemL( aData.MenuItem() ) ); CleanupStack::PushL( item ); + // One widget item has iDataCount number of elements for ( TInt i = 0; i < iDataCount; i++ ) { @@ -219,137 +173,140 @@ //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 ) - { - - if ( aReason == EAiBackupRestoreStarted ) - { - Suspend( aReason ); - } - +void CMCSPlugin::Start( TStartReason /*aReason*/ ) + { } -// --------------------------------------------------------------------------- -// From class CAiContentPublisher -// Plug-in is instructed that it is allowed to consume CPU resources -// --------------------------------------------------------------------------- +// ---------------------------------------------------------------------------- +// CMCSPlugin::Stop +// +// ---------------------------------------------------------------------------- // -void CMCSPlugin::Resume( TAiTransitionReason aReason ) +void CMCSPlugin::Stop( TStopReason /*aReason*/ ) { - if( aReason == EAiIdleBackground ) - { - return; - } - - if ( aReason == EAiBackupRestoreEnded ) - { - if ( iEngine ) - { - 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 -// --------------------------------------------------------------------------- +// ---------------------------------------------------------------------------- +// CMCSPlugin::Resume +// +// ---------------------------------------------------------------------------- // -void CMCSPlugin::Suspend( TAiTransitionReason aReason ) - { - if ( aReason == EAiBackupRestoreStarted && iEngine ) +void CMCSPlugin::Resume( TResumeReason aReason ) + { + if ( aReason == EForeground ) { - iEngine->Suspend(); + iEngine->SetBackupRestore( EFalse ); + + if ( PublishRequired() ) + { + 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(aFirst); - MAiPluginSettings& second = const_cast(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 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 +318,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( User::AllocL( sizeOfContentId ) ); - Mem::Copy((TAny*)iContentModel[i].cid, ptr.PtrZ(), sizeOfContentId); + + TInt sizeOfContentId( ptr.Size() + sizeof( wchar_t ) ); + + iContentModel[i].cid = + static_cast( 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(this); +TAny* CMCSPlugin::GetProperty( TProperty aProperty ) + { + if( aProperty == EPublisherContent ) + { + return static_cast< MAiContentItemIterator* >( iContent ); } - else if (aUid == KExtensionUidEventHandler) - { - return static_cast(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( &iInfo ); - break; - } - - case EAiPublisherContent: - { - property = static_cast( 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( 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(aFirst); + MAiPluginSettings& second = const_cast(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 +419,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 +452,5 @@ sizeof( TImplementationProxy ); return KImplementationTable; } + +// End of file diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/mcsplugin/publisher/src/mcsplugindata.cpp --- a/idlefw/plugins/mcsplugin/publisher/src/mcsplugindata.cpp Tue Feb 02 00:23:10 2010 +0200 +++ b/idlefw/plugins/mcsplugin/publisher/src/mcsplugindata.cpp Fri Feb 19 23:07:29 2010 +0200 @@ -123,22 +123,32 @@ CleanupStack::PushL( settingsCleanupItem ); 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& properties = itemMap->Properties(); TMenuItem item = CreateMenuItemL( properties ); TMCSData data; - TInt id = -1; - - if ( count == iData.Count() ) + + 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.SetMenuItem( item ); + data.SetDirty( ETrue ); + iData.AppendL( data ); } - - if ( id > 0 ) + else { + // 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 ( item.Id() != id ) { data.SetMenuItem( item ); @@ -146,18 +156,13 @@ iData.Remove( i ); iData.InsertL( data, i ); } - } - else - { - data.SetMenuItem( item ); - data.SetDirty( ETrue ); - iData.AppendL( data ); - } + } } - CleanupStack::PopAndDestroy(); // settingsCleanupItem + CleanupStack::PopAndDestroy(); // settingsCleanupItem } + // --------------------------------------------------------------------------- // // --------------------------------------------------------------------------- diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/mcsplugin/publisher/src/mcspluginengine.cpp --- a/idlefw/plugins/mcsplugin/publisher/src/mcspluginengine.cpp Tue Feb 02 00:23:10 2010 +0200 +++ b/idlefw/plugins/mcsplugin/publisher/src/mcspluginengine.cpp Fri Feb 19 23:07:29 2010 +0200 @@ -16,37 +16,36 @@ */ -// INCLUDE FILES -#include "mcspluginengine.h" - +// System includes #include #include #include -#include - #include #include #include #include #include #include - #include #include #include +#include #include #include +#include +#include +#include +#include +#include + +// User includes +#include +#include "mcspluginengine.h" #include "mcsplugin.h" #include "mcsplugindata.h" #include "mcspluginuids.hrh" -#include -#include -#include -#include // For Transition effect -#include - -#include +// Constants _LIT( KMyMenuData, "matrixmenudata" ); _LIT( KSkin, "skin" ); _LIT( KMif, "mif" ); @@ -65,37 +64,47 @@ const TUid KMMUid = { 0x101F4CD2 }; // ======== 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(); } // ============================ 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 +112,10 @@ return self; } -// --------------------------------------------------------- -// Symbian 2nd phase constructor can leave -// --------------------------------------------------------- +// ---------------------------------------------------------------------------- +// CMCSPluginEngine::ConstructL +// +// ---------------------------------------------------------------------------- // void CMCSPluginEngine::ConstructL() { @@ -119,12 +129,21 @@ 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 ); + filter = NULL; + iUndefinedItem = CMenuItem::OpenL( iMenu, iUndefinedItemHeader ); } - -// --------------------------------------------------------- -// Destructor. -// --------------------------------------------------------- +// ---------------------------------------------------------------------------- +// CMCSPluginEngine::~CMCSPluginEngine +// +// ---------------------------------------------------------------------------- // CMCSPluginEngine::~CMCSPluginEngine() { @@ -136,12 +155,19 @@ //iWatcher->Cancel(); delete iWatcher; delete iNotifyWatcher; + CCoeEnv::Static()->DeleteResourceFile( iResourceOffset ); + + if ( iUndefinedItem ) + { + delete iUndefinedItem; + iUndefinedItem = NULL; + } } - // --------------------------------------------------------------------------- -// +// CMCSPluginEngine::InitL +// // --------------------------------------------------------------------------- // void CMCSPluginEngine::InitL() @@ -149,60 +175,48 @@ 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, 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 ) @@ -211,7 +225,8 @@ } // --------------------------------------------------------------------------- -// +// CMCSPluginEngine::MenuItemCount +// // --------------------------------------------------------------------------- // TInt CMCSPluginEngine::MenuItemCount() @@ -220,27 +235,32 @@ } // --------------------------------------------------------------------------- +// 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 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. // --------------------------------------------------------------------------- // @@ -250,66 +270,123 @@ } // --------------------------------------------------------------------------- +// 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; + + TInt id = aMenuItem.Id(); + + // because the flags might have changed, we have + // to get a fresh copy of menu item from Menu Server + CMenuItem* mi = CMenuItem::OpenL( iMenu, id ); + TUint32 flags = mi->Flags(); + delete mi; + + TUint32 isHidden = flags & TMenuItem::EHidden; + TUint32 isMissing = flags & TMenuItem::EMissing; + + if ( iUndefinedItem && ( isHidden || isMissing ) ) + { + menuItem = iUndefinedItem; + } + else + { + menuItem = &aMenuItem; + } + 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 ) { + // if item is hidden or missing (mmc card removed) + // use "Undefined" text instead + CMenuItem* menuItem; + + TInt id = aMenuItem.Id(); + + // because the flags might have changed, we have + // to get a fresh copy of the menu item from Menu Server + CMenuItem* mi = CMenuItem::OpenL( iMenu, id ); + TUint32 flags = mi->Flags(); + delete mi; + + TUint32 isHidden = flags & TMenuItem::EHidden; + TUint32 isMissing = flags & TMenuItem::EMissing; + + if ( iUndefinedItem && ( isHidden || isMissing ) ) + { + menuItem = iUndefinedItem; + } + else + { + menuItem = &aMenuItem; + } + 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 ); @@ -318,36 +395,71 @@ CAknNoteDialog::ENoTimeout ); dialog->SetTextL( temp->Des() ); dialog->ExecuteDlgLD( R_MCS_DISABLE_OPEN_ITEM_DLG ); - CleanupStack::PopAndDestroy( temp ); + + CleanupStack::PopAndDestroy( temp ); return; } + if( iWatcher->IsActive()) { return; } + TMCSData& dataItem( iPluginData->DataItemL( aIndex ) ); + + CMenuItem* item( CMenuItem::OpenL( iMenu, dataItem.MenuItem().Id() ) ); + CleanupStack::PushL( item ); + - TMCSData& dataItem = iPluginData->DataItemL( aIndex ); - CMenuItem* item = CMenuItem::OpenL( iMenu, dataItem.MenuItem()); - CleanupStack::PushL( item ); - TPtrC type = item->Type(); + TBool attrExists = ETrue; + + TPtrC uid = item->GetAttributeL( KMenuAttrUid, attrExists ); + + // trying to run non-existing application ( that was replaced by "Undefined" app ) + // OR 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 ); + + HBufC* temp = StringLoader::LoadLC( R_MCS_DISABLE_OPEN_ITEM_MISSING ); + + CAknNoteDialog* dialog = new (ELeave) CAknNoteDialog( + CAknNoteDialog::EConfirmationTone, + CAknNoteDialog::ENoTimeout ); + dialog->SetTextL( temp->Des() ); + dialog->ExecuteDlgLD( R_MCS_DISABLE_OPEN_ITEM_DLG ); + CleanupStack::PopAndDestroy( temp ); + temp = NULL; + + return; + } + + // run item based on its type + TPtrC type( item->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 ); + TBool hasApplicationGroupName( EFalse ); + + TPtrC applicationGroupName( item->GetAttributeL( + KApplicationGroupName, hasApplicationGroupName ) ); + if ( !hasApplicationGroupName ) { CleanupStack::PopAndDestroy( item ); return; } + message = HBufC8::NewLC( KMMApplication().Length() + KSetFocusString().Length() + applicationGroupName.Length() + @@ -360,21 +472,25 @@ // find MM application TApaTaskList taskList( CCoeEnv::Static()->WsSession() ); - TApaTask task = taskList.FindApp( KMMUid ); + TApaTask task( taskList.FindApp( KMMUid ) ); if ( task.Exists() ) { // MM is already running in background - send APA Message - task.SendMessage( TUid::Uid( KUidApaMessageSwitchOpenFileValue ), *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 ); + TInt err( appArcSession.GetAppInfo( appInfo, KMMUid ) ); + if ( err == KErrNone ) { CApaCommandLine* cmdLine = CApaCommandLine::NewLC(); @@ -384,26 +500,31 @@ appArcSession.StartApp( *cmdLine ); CleanupStack::PopAndDestroy( cmdLine ); } + CleanupStack::PopAndDestroy( &appArcSession ); } + CleanupStack::PopAndDestroy( message ); } else { TBool exists( EFalse ); + TPtrC desc( item->GetAttributeL( KMenuAttrUid, exists ) ); - if( exists ) + if ( exists ) { _LIT( KPrefix, "0x" ); + const TInt pos( desc.FindF( KPrefix ) ); - if( pos != KErrNotFound ) + 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 ); + TUint32 value( 0 ); + const TInt parseResult( lex.Val( value, EHex ) ); if ( parseResult == KErrNone ) { @@ -411,173 +532,94 @@ TInt32 value32( value ); uid.iUid = value32; - if( uid != KNullUid ) + 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 )); + AknTransEffect::EApplicationStart, + TRect(), + AknTransEffect::EParameterType, + AknTransEffect::GfxTransParam( uid, + AknTransEffect::TParameter::EActivateExplicitContinue ) ); } } } } // run application/shortcut/bookmark - CMenuOperation* operation = item->HandleCommandL( - KMenuCmdOpen, KNullDesC8, iWatcher->iStatus ); + 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); + TMCSData& data( iPluginData->DataItemL(i) ); + data.SetDirty( ETrue ); + // 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 ) ) + CMenuItem* menuItem = NULL; + + TRAP_IGNORE ( + menuItem = CMenuItem::OpenL( iMenu, data.MenuItem().Id() ); + ) + + // item not found. Use "Undefined" item as a replacement + if ( !menuItem ) { - // 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::PushL( menuItem ); + iPluginData->ReplaceMenuItemL( i, iUndefinedItemHeader ); + iPluginData->SaveSettingsL( i, *iUndefinedItem ); + CleanupStack::Pop( menuItem ); } - CleanupStack::PopAndDestroy( menuItem ); + + delete menuItem; menuItem = NULL; } + // Notification must be activated again iNotifyWatcher->Cancel(); + iNotifier.Notify( 0, - RMenuNotifier::EItemsAddedRemoved | - RMenuNotifier::EItemsReordered | - RMenuNotifier::EItemAttributeChanged, - iNotifyWatcher->iStatus ); + RMenuNotifier::EItemsAddedRemoved | + RMenuNotifier::EItemsReordered | + RMenuNotifier::EItemAttributeChanged, + 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: + // fall-through intended here + case EMsvEntriesChanged: { - // 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++ ) - { - // 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 ); - } - CleanupStack::PopAndDestroy( favItems ); } break; default: @@ -586,91 +628,103 @@ } // --------------------------------------------------------------------------- -// 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 mif( aPath.Mid( pos + 1 ) ); + TInt mf( mif.FindF( KMif ) ); + //TPtrC temp1 = mif.Mid( mf+ KMif().Length()); - TLex input1( mif.Mid( mf+ KMif().Length()) ); + + 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; } // --------------------------------------------------------------------------- +// CMCSPluginEngine::CleanMCSItemsL // Called during plugin desctruction // Decrements reference counters of all run-time generated items // and deletes those which have reference counter == 0 @@ -679,26 +733,32 @@ void CMCSPluginEngine::CleanMCSItemsL() { const TInt count( iPluginData->DataCount() ); + for( TInt i = 0; i < count; i++ ) { - TMCSData& data = iPluginData->DataItemL(i); + TMCSData& data( iPluginData->DataItemL(i) ); CMenuItem* menuItem = CMenuItem::OpenL( iMenu, data.MenuItem().Id() ); - if( !menuItem ) + + if ( !menuItem ) { continue; - } + } + CleanupStack::PushL( menuItem ); // check if ref_count attribute exists - TBool exists = EFalse; - TPtrC param = menuItem->GetAttributeL( KMenuAttrRefcount, exists ); + TBool exists( EFalse ); + + TPtrC param( menuItem->GetAttributeL( KMenuAttrRefcount, exists ) ); + if( exists ) { - const TInt references = UpdateMenuItemsRefCountL( menuItem, -1 ); + const TInt references( UpdateMenuItemsRefCountL( menuItem, -1 ) ); // Create a nested loop inside CActiveScheduler. - CActiveSchedulerWait* wait = new (ELeave) CActiveSchedulerWait; + CActiveSchedulerWait* wait = + new ( ELeave ) CActiveSchedulerWait; CleanupStack::PushL( wait ); if( references > 0 ) @@ -716,7 +776,8 @@ // so remove it from MCS if( !iWatcher->IsActive() ) { - CMenuOperation* op = iMenu.RemoveL( menuItem->Id(), iWatcher->iStatus ); + CMenuOperation* op = + iMenu.RemoveL( menuItem->Id(), iWatcher->iStatus ); iWatcher->StopAndWatch( op, wait ); // Start the nested scheduler loop. @@ -735,16 +796,18 @@ // --------------------------------------------------------------------------- -// Helper method. Adds a given constant to a value of reference counter +// CMCSPluginEngine::UpdateMenuItemsRefCountL +// Adds a given constant to a value of reference counter // --------------------------------------------------------------------------- // TInt CMCSPluginEngine::UpdateMenuItemsRefCountL( CMenuItem* aItem, - const TInt aValueToAdd ) + const TInt aValueToAdd ) { - TBool exists = EFalse; + TBool exists( EFalse ); CleanupStack::PushL( aItem ); - TPtrC param = aItem->GetAttributeL( KMenuAttrRefcount, exists ); + TPtrC param( aItem->GetAttributeL( KMenuAttrRefcount, exists ) ); CleanupStack::Pop( aItem ); + if ( exists ) { TInt references; @@ -758,8 +821,13 @@ CleanupStack::PushL( aItem ); aItem->SetAttributeL( KMenuAttrRefcount, buf); CleanupStack::Pop( aItem ); + // return new ref_count return references; } + return -1; } + +// End of file + diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/mcsplugin/settings/inc/mcspluginsettingsapplist.h --- a/idlefw/plugins/mcsplugin/settings/inc/mcspluginsettingsapplist.h Tue Feb 02 00:23:10 2010 +0200 +++ b/idlefw/plugins/mcsplugin/settings/inc/mcspluginsettingsapplist.h Fri Feb 19 23:07:29 2010 +0200 @@ -277,6 +277,12 @@ * iMCSPluginFolderId */ TInt iMCSPluginFolderId; + +public: + /** + * Name of "Undefined" application + */ + HBufC* iUndefinedText; }; #endif // CMCSPLUGINSETTINGSAPPLIST_H diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/mcsplugin/settings/src/mcspluginsettingsapplist.cpp --- a/idlefw/plugins/mcsplugin/settings/src/mcspluginsettingsapplist.cpp Tue Feb 02 00:23:10 2010 +0200 +++ b/idlefw/plugins/mcsplugin/settings/src/mcspluginsettingsapplist.cpp Fri Feb 19 23:07:29 2010 +0200 @@ -43,6 +43,10 @@ _LIT( KMCSFolder, "mcsplugin_folder" ); _LIT8( KItemLocked, "locked"); _LIT8( KProperValueFolder, "folder" ); +_LIT( KMenuAttrUndefUid, "0x99999991" ); +_LIT( KMenuItemLongName, "long_name" ); + +#define KMCSCmailMtmUidValue 0x2001F406 // ======== MEMBER FUNCTIONS ======== @@ -67,6 +71,48 @@ 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 items; + CleanupClosePushL( items ); + iMenu.GetItemsL( items, root, filter, ETrue ); + TMenuItem undefItem; + + if ( items.Count() > 0 ) + { + undefItem = items[ 0 ]; + CMenuItem* undefinedItem = CMenuItem::OpenL( iMenu, undefItem ); + iUndefinedText = NULL; + + if ( undefinedItem ) + { + TBool exists( KErrNotFound ); + CleanupStack::PushL( undefinedItem ); + TPtrC undefined = undefinedItem->GetAttributeL( KMenuItemLongName, exists ); + + if ( exists ) + { + iUndefinedText = HBufC::NewMaxL( undefined.Length() ); + iUndefinedText->Des().Copy( undefined ); + } + else + { + iUndefinedText = KNullDesC().Alloc(); + } + CleanupStack::PopAndDestroy( undefinedItem ); + } + } + + CleanupStack::PopAndDestroy( &items ); + CleanupStack::PopAndDestroy( filter ); } // --------------------------------------------------------------------------- @@ -96,6 +142,11 @@ delete iUpdateWatcher; delete iRemoveWatcher; + if ( iUndefinedText ) + { + delete iUndefinedText; + iUndefinedText = NULL; + } } // --------------------------------------------------------------------------- @@ -115,14 +166,15 @@ // 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; TRAP_IGNORE( itm.Set( item->GetAttributeL( KMenuAttrLongName, attrExists ) ); ) @@ -366,15 +418,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 +451,7 @@ // CMsvEntry* CMCSPluginSettingsAppList::GetRootEntryL() { - return iMsvSession->GetEntryL(KMsvRootIndexEntryIdValue); + return iMsvSession->GetEntryL( KMsvRootIndexEntryIdValue ); } // --------------------------------------------------------------------------- @@ -413,14 +466,22 @@ 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); diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/mcsplugin/settings/src/mcspluginsettingscontainer.cpp --- a/idlefw/plugins/mcsplugin/settings/src/mcspluginsettingscontainer.cpp Tue Feb 02 00:23:10 2010 +0200 +++ b/idlefw/plugins/mcsplugin/settings/src/mcspluginsettingscontainer.cpp Fri Feb 19 23:07:29 2010 +0200 @@ -88,7 +88,9 @@ { iNotifyWatcher = CMCSPluginWatcher::NewL( CMCSPluginWatcher::ENotify ); iNotifier.Notify( 0, - RMenuNotifier::EItemsAddedRemoved | RMenuNotifier::EItemsReordered, + RMenuNotifier::EItemsAddedRemoved | + RMenuNotifier::EItemsReordered | + RMenuNotifier::EItemAttributeChanged, iNotifyWatcher->iStatus ); iNotifyWatcher->WatchNotify( this ); } @@ -496,7 +498,9 @@ // Notification must be activated again iNotifyWatcher->Cancel(); iNotifier.Notify( 0, - RMenuNotifier::EItemsAddedRemoved | RMenuNotifier::EItemsReordered, + RMenuNotifier::EItemsAddedRemoved | + RMenuNotifier::EItemsReordered | + RMenuNotifier::EItemAttributeChanged, iNotifyWatcher->iStatus ); iNotifyWatcher->WatchNotify( this ); } diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/mcsplugin/settings/src/mcspluginsettingsmodel.cpp --- a/idlefw/plugins/mcsplugin/settings/src/mcspluginsettingsmodel.cpp Tue Feb 02 00:23:10 2010 +0200 +++ b/idlefw/plugins/mcsplugin/settings/src/mcspluginsettingsmodel.cpp Fri Feb 19 23:07:29 2010 +0200 @@ -84,7 +84,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); @@ -198,11 +200,11 @@ TSettingItem setting = { KErrNotFound, EApplication , EFalse }; TSettingType type = SettingTypeL( aProperties ); - if( type == EApplication ) + if ( type == EApplication ) { setting = iAppList->FindItemL( aProperties ); } - else if( type == EBookmark ) + else if ( type == EBookmark ) { setting = iBkmList->FindItemL( aProperties ); } @@ -394,7 +396,7 @@ } } } - // ETrue tells that modified settings are stored also to plugin reference + // ETrue tells that modified settings are stored also to plugin reference iPluginSettings->SetSettingsL( *iPluginId, settingItems, ETrue ); CleanupStack::Pop( &settingItems ); settingItems.ResetAndDestroy(); @@ -459,10 +461,23 @@ } 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 unistaled or mmc card removed) + // If it is, we return "Undefined" application name instead + if ( iSettings[ aIndex ].id == KErrNotFound ) + { + const TDesC& caption = iAppList->iUndefinedText->Des(); + TPtrC line; + TRAP_IGNORE( line.Set( ListBoxLineL( caption, aIndex ) ) ) + return line; + } + else + { + const TDesC& caption = iAppList->MdcaPoint( iSettings[ aIndex ].id ); + TPtrC line; + TRAP_IGNORE( line.Set( ListBoxLineL( caption, aIndex ) ) ) + return line; + } } else { diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/profileplugin/data/aiprofileplugin.rss --- a/idlefw/plugins/profileplugin/data/aiprofileplugin.rss Tue Feb 02 00:23:10 2010 +0200 +++ b/idlefw/plugins/profileplugin/data/aiprofileplugin.rss Fri Feb 19 23:07:29 2010 +0200 @@ -19,6 +19,7 @@ // INCLUDES #include #include +#include // ----------------------------------------------------------------------------- @@ -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 = { diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/profileplugin/data/aiprofilepluginres.rss --- a/idlefw/plugins/profileplugin/data/aiprofilepluginres.rss Tue Feb 02 00:23:10 2010 +0200 +++ b/idlefw/plugins/profileplugin/data/aiprofilepluginres.rss Fri Feb 19 23:07:29 2010 +0200 @@ -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. diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/profileplugin/group/aiprofileplugin.mmp --- a/idlefw/plugins/profileplugin/group/aiprofileplugin.mmp Tue Feb 02 00:23:10 2010 +0200 +++ b/idlefw/plugins/profileplugin/group/aiprofileplugin.mmp Fri Feb 19 23:07:29 2010 +0200 @@ -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 diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/profileplugin/inc/caiprofileengine.h --- a/idlefw/plugins/profileplugin/inc/caiprofileengine.h Tue Feb 02 00:23:10 2010 +0200 +++ b/idlefw/plugins/profileplugin/inc/caiprofileengine.h Fri Feb 19 23:07:29 2010 +0200 @@ -19,17 +19,23 @@ #ifndef CAIPROFILEENGINE_H #define CAIPROFILEENGINE_H -// INCLUDE FILES +// System includes #include #include #include #include -#include +#include +#include +#include + +// 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 ); @@ -130,72 +130,62 @@ TBool ShowOfflineMessageL(); + 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 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; - -}; + }; #endif // CAIPROFILEENGINE_H - +// End of file diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/profileplugin/inc/caiprofileplugin.h --- a/idlefw/plugins/profileplugin/inc/caiprofileplugin.h Tue Feb 02 00:23:10 2010 +0200 +++ b/idlefw/plugins/profileplugin/inc/caiprofileplugin.h Fri Feb 19 23:07:29 2010 +0200 @@ -19,12 +19,14 @@ #ifndef CAIPROFILEPLUGIN_H #define CAIPROFILEPLUGIN_H -#include -#include +// System includes + +// User includes +#include #include -#include #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: (), - * where is mapped by the framework to unique - * identifier supplied in aEvent, 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,31 @@ */ 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 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 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; }; #endif // CAIPROFILEPLUGIN_H +// End of file + diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/profileplugin/inc/maiprofilepluginnotifier.h --- a/idlefw/plugins/profileplugin/inc/maiprofilepluginnotifier.h Tue Feb 02 00:23:10 2010 +0200 +++ b/idlefw/plugins/profileplugin/inc/maiprofilepluginnotifier.h Fri Feb 19 23:07:29 2010 +0200 @@ -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 diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/profileplugin/src/caiprofileengine.cpp --- a/idlefw/plugins/profileplugin/src/caiprofileengine.cpp Tue Feb 02 00:23:10 2010 +0200 +++ b/idlefw/plugins/profileplugin/src/caiprofileengine.cpp Fri Feb 19 23:07:29 2010 +0200 @@ -16,16 +16,15 @@ */ -// INCLUDE FILES -#include "caiprofileengine.h" -#include "maiprofilepluginnotifier.h" -#include "aiprofileplugincontentmodel.h" - +// System includes #include +#include #include -#include -#include -#include +#include +#include +#include +#include +#include #include #include #include @@ -36,12 +35,15 @@ #include #include #include - - -#include - #include +// User includes +#include +#include "caiprofileengine.h" +#include "maiprofilepluginnotifier.h" +#include "aiprofileplugincontentmodel.h" + +// Constants const TInt KMaxProfileNameLength( 64 ); const TInt KGeneralProfileId( 0 ); const TInt KSilentProfileId( 1 ); @@ -53,35 +55,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 +105,120 @@ 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 ); -// --------------------------------------------------------- -// Destructor. -// --------------------------------------------------------- + iProfileEngine = ProEngFactory::NewEngineL(); + + // Start to listen profile changes. + iProfileNotifier = ProEngFactory::NewNotifyHandlerL(); + + iProfileNotifier->RequestActiveProfileNotificationsL( *this ); + iProfileNotifier->RequestProfileNameArrayNotificationsL( *this ); + iProfileNotifier->RequestProfileActivationNotificationsL( *this ); + } + +// ---------------------------------------------------------------------------- +// 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(); } -// --------------------------------------------------------- -// Updates profiles -// --------------------------------------------------------- +// ---------------------------------------------------------------------------- +// 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 ) ); + + swapProfileName = + profileNamesArray->MdcaPoint( generalProfileIndex ).AllocLC() ; } else { - const MProfileName* silentProfileName = profileNamesArray->ProfileName( KSilentProfileId ); - swapProfileName = silentProfileName->Name().AllocLC(); + TInt silentProfileIndex( + profileNamesArray->FindById( KSilentProfileId ) ); + + swapProfileName = + profileNamesArray->MdcaPoint( silentProfileIndex ).AllocLC() ; } TPtrC swapProfileNamePtr( *swapProfileName ); - HBufC* activateProfileString = NULL; - activateProfileString = StringLoader::LoadLC( R_AI_PERS_PROF_TOGGLE, swapProfileNamePtr ); + + HBufC* activateProfileString( StringLoader::LoadLC( + R_AI_PERS_PROF_TOGGLE, swapProfileNamePtr ) ); SetSwapProfileNameL( *activateProfileString ); - CleanupStack::PopAndDestroy( 5 ); //profile, profileName, profileNamesArray, swapProfileName, activateProfileString + CleanupStack::PopAndDestroy( 5 ); //profile, profileName, // profileNamesArray, swapProfileName, activateProfileString } -// --------------------------------------------------------- -// Checks SIM card status -// --------------------------------------------------------- +// ---------------------------------------------------------------------------- +// CAiProfileEngine::ShowOfflineMessageL +// +// ---------------------------------------------------------------------------- // TBool CAiProfileEngine::ShowOfflineMessageL() { - TInt result = ETrue; + TInt result( ETrue ); TInt simCardStatus( ESimNotPresent ); @@ -186,42 +227,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 +283,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 +317,101 @@ 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 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(); + MProEngProfile* profile( iProfileEngine->ActiveProfileLC() ); + + TBool silent( profile->IsSilent() ); + CleanupStack::PopAndDestroy(); - return isSilent; + + return silent; } -// --------------------------------------------------------- +// ---------------------------------------------------------------------------- +// CAiProfileEngine::IsActiveProfileTimedL // -// --------------------------------------------------------- +// ---------------------------------------------------------------------------- // -TBool CAiProfileEngine::IsActiveProfileTimedL() - { - return iProfileEngine->IsActiveProfileTimedL(); +TBool CAiProfileEngine::IsActiveProfileTimedL() const + { + MProfileEngine* engine = CreateProfileEngineL(); + + TBool retval( EFalse ); + + TRAP_IGNORE( retval = engine->IsActiveProfileTimedL() ); + + engine->Release(); + + return retval; } -// --------------------------------------------------------- -// 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 +432,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 +534,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 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 +590,71 @@ 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() + { + NotifyContentUpdate(); + } -TBool CAiProfileEngine::IsOffline() - { - return iProfileEngine->ActiveProfileId() == KOfflineProfileId; - } +// ---------------------------------------------------------------------------- +// CAiProfileEngine::HandleProfileNameArrayModificationL +// +// ---------------------------------------------------------------------------- +// +void CAiProfileEngine::HandleProfileNameArrayModificationL() + { + NotifyContentUpdate(); + } +// ---------------------------------------------------------------------------- +// CAiProfileEngine::HandleProfileActivatedL +// +// ---------------------------------------------------------------------------- +// +void CAiProfileEngine::HandleProfileActivatedL( TInt /*aProfileId*/ ) + { + NotifyContentUpdate(); + } + +// ---------------------------------------------------------------------------- +// CAiProfileEngine::NotifyContentUpdate +// +// ---------------------------------------------------------------------------- +// +void CAiProfileEngine::NotifyContentUpdate() + { + TRAP_IGNORE( UpdateProfileNamesL() ); + + iProfilePluginNotifier->NotifyContentUpdate(); + } + +// End of file diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/profileplugin/src/caiprofileplugin.cpp --- a/idlefw/plugins/profileplugin/src/caiprofileplugin.cpp Tue Feb 02 00:23:10 2010 +0200 +++ b/idlefw/plugins/profileplugin/src/caiprofileplugin.cpp Fri Feb 19 23:07:29 2010 +0200 @@ -15,25 +15,28 @@ * */ - +// System includes #include #include -#include -#include #include #include +// User includes +#include +#include +#include + #include "aiprofileplugincontentmodel.h" -#include #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,39 @@ } // --------------------------------------------------------------------------- -// 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 ); - - iIsUpdated = ETrue; - iAlive = EFalse; + iResources = AiUtility::CreateContentItemArrayIteratorL( KAiProfileResources ); } // --------------------------------------------------------------------------- -// 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 +110,14 @@ { TInt err( KErrNone ); TInt observers( iObservers.Count() ); - TInt transactionId = reinterpret_cast( this ); + TInt transactionId ( reinterpret_cast( 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 +136,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 +152,8 @@ { profileNamePtr.Append( KAiTimedProfilePUA ); } - if( iEngine->IsActiveProfileSilentL() ) + + if ( iEngine->IsActiveProfileSilentL() ) { profileNamePtr.Append( KPuaCodeSilentSymbol ); } @@ -153,10 +161,12 @@ { profileNamePtr.Append( KPuaCodeAprofSound ); } - _LIT( KSpace, " " ); + + _LIT( KSpace, " " ); + profileNamePtr.Append( KSpace ); - if( AknLayoutUtils::LayoutMirrored() ) + if ( AknLayoutUtils::LayoutMirrored() ) { profileNamePtr.Append( KAiRTL ); } @@ -184,13 +194,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 +217,7 @@ { TBuf<1> silent; // one character silent.Append( KPuaCodeSilentSymbol ); + observer->Publish( *this, EAiProfileActiveProfileSilentChar, silent, EAiProfileActiveProfileSilentChar ); } else @@ -220,7 +232,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 +263,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,234 +276,145 @@ { 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*/ ) + { + } + +// --------------------------------------------------------------------------- +// CAiProfilePlugin::Stop +// +// --------------------------------------------------------------------------- +// +void CAiProfilePlugin::Stop( TStopReason /*aReason*/ ) + { } // --------------------------------------------------------------------------- -// 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(this); - } - else if (aUid == KExtensionUidEventHandler) - { - return static_cast(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( &iInfo ); - break; - } - - case EAiPublisherContent: + if ( aProperty == EPublisherContent ) { - property = static_cast( iContent ); - break; - } - - case EAiPublisherEvents: + return static_cast< MAiContentItemIterator* >( iContent ); + } + else if ( aProperty == EPublisherEvents ) { - property = static_cast( iEvents ); - break; + return static_cast< MAiContentItemIterator* >( iEvents ); } - - case EAiPublisherResources: - property = static_cast( 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( !iEngine ) { - ASSERT( aValue ); + iEngine = CAiProfileEngine::NewL( this ); - const TAiPublisherInfo* info( - static_cast( aValue ) ); + iEngine->UpdateProfileNamesL(); - 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 ) ); - } - } - -// --------------------------------------------------------- -// 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() ); } // --------------------------------------------------------------------------- -// 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 ); } @@ -505,5 +431,6 @@ { aTableCount = sizeof( KImplementationTable ) / sizeof( TImplementationProxy ); + return KImplementationTable; } diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/pslnactiveidleplugin/data/pslnactiveidleplugin.rss --- a/idlefw/plugins/pslnactiveidleplugin/data/pslnactiveidleplugin.rss Tue Feb 02 00:23:10 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 -#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. diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/pslnactiveidleplugin/data/pslnactiveidlepluginrsc.rss --- a/idlefw/plugins/pslnactiveidleplugin/data/pslnactiveidlepluginrsc.rss Tue Feb 02 00:23:10 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 localized strings -#include -#include -#include -#include -#include -#include -#include - -#include -#include - -// ========== 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. diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/pslnactiveidleplugin/group/bld.inf --- a/idlefw/plugins/pslnactiveidleplugin/group/bld.inf Tue Feb 02 00:23:10 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 -../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. diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/pslnactiveidleplugin/group/pslnactiveidleplugin.mmp --- a/idlefw/plugins/pslnactiveidleplugin/group/pslnactiveidleplugin.mmp Tue Feb 02 00:23:10 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 -#include // 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. diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/pslnactiveidleplugin/group/pslnactiveidlepluginicons.mk --- a/idlefw/plugins/pslnactiveidleplugin/group/pslnactiveidlepluginicons.mk Tue Feb 02 00:23:10 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 diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/pslnactiveidleplugin/inc/gsactiveidleplugin.h --- a/idlefw/plugins/pslnactiveidleplugin/inc/gsactiveidleplugin.h Tue Feb 02 00:23:10 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 -#include - -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. diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/pslnactiveidleplugin/inc/gsactiveidleplugincontainer.h --- a/idlefw/plugins/pslnactiveidleplugin/inc/gsactiveidleplugincontainer.h Tue Feb 02 00:23:10 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 - -/** - * 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. diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/pslnactiveidleplugin/inc/pslnactiveidleplugin.h --- a/idlefw/plugins/pslnactiveidleplugin/inc/pslnactiveidleplugin.h Tue Feb 02 00:23:10 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 -#include -#include -#include -#include - - -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. diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/pslnactiveidleplugin/inc/pslnactiveidleplugin.hrh --- a/idlefw/plugins/pslnactiveidleplugin/inc/pslnactiveidleplugin.hrh Tue Feb 02 00:23:10 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. diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/pslnactiveidleplugin/inc/pslnactiveidleplugincontainer.h --- a/idlefw/plugins/pslnactiveidleplugin/inc/pslnactiveidleplugincontainer.h Tue Feb 02 00:23:10 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 - -// 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 diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/pslnactiveidleplugin/inc/pslnactiveidlepluginengine.h --- a/idlefw/plugins/pslnactiveidleplugin/inc/pslnactiveidlepluginengine.h Tue Feb 02 00:23:10 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 -#include - -// 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& 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* 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. diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/pslnactiveidleplugin/inc/pslnactiveidlepluginuids.h --- a/idlefw/plugins/pslnactiveidleplugin/inc/pslnactiveidlepluginuids.h Tue Feb 02 00:23:10 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. diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/pslnactiveidleplugin/inc/pslnconst.h --- a/idlefw/plugins/pslnactiveidleplugin/inc/pslnconst.h Tue Feb 02 00:23:10 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 diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/pslnactiveidleplugin/loc/pslnactiveidle3plugin.loc --- a/idlefw/plugins/pslnactiveidleplugin/loc/pslnactiveidle3plugin.loc Tue Feb 02 00:23:10 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. diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/pslnactiveidleplugin/rom/pslnactiveidleplugin.iby --- a/idlefw/plugins/pslnactiveidleplugin/rom/pslnactiveidleplugin.iby Tue Feb 02 00:23:10 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 - -// 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 diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/pslnactiveidleplugin/rom/pslnactiveidleplugin_resources.iby --- a/idlefw/plugins/pslnactiveidleplugin/rom/pslnactiveidleplugin_resources.iby Tue Feb 02 00:23:10 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 - -// Psln ActiveIdle settings plugin localizable resources -data=DATAZ_\RESOURCE_FILES_DIR\pslnactiveidlepluginrsc.rsc RESOURCE_FILES_DIR\pslnactiveidlepluginrsc.rsc - -#endif // PSLNACTIVEIDLEPLUGIN_RESOURCES_IBY diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/pslnactiveidleplugin/src/gsactiveidleplugin.cpp --- a/idlefw/plugins/pslnactiveidleplugin/src/gsactiveidleplugin.cpp Tue Feb 02 00:23:10 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 -#include -#include -#include "pslnactiveidlepluginuids.h" - -#include -#include -#include -#include -#include -#include - -#include -#include - -// 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(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. diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/pslnactiveidleplugin/src/gsactiveidleplugincontainer.cpp --- a/idlefw/plugins/pslnactiveidleplugin/src/gsactiveidleplugincontainer.cpp Tue Feb 02 00:23:10 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. diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/pslnactiveidleplugin/src/pslnactiveidleplugin.cpp --- a/idlefw/plugins/pslnactiveidleplugin/src/pslnactiveidleplugin.cpp Tue Feb 02 00:23:10 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 -#include -#include "pslnactiveidleplugin.h" -#include "pslnactiveidleplugincontainer.h" -#include "pslnactiveidlepluginengine.h" -#include "pslnactiveidlepluginuids.h" - -// General services. -#include -#include -#include - -// Psln Framework specific. -#include -#include -#include -#include - - -// 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(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(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. diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/pslnactiveidleplugin/src/pslnactiveidleplugincontainer.cpp --- a/idlefw/plugins/pslnactiveidleplugin/src/pslnactiveidleplugincontainer.cpp Tue Feb 02 00:23:10 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 - -// From PSLN framework -#include -#include - -// Resources -#include -#include - -// General services -#include - -// XUIKON -#include - -// 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 - ( 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 diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/pslnactiveidleplugin/src/pslnactiveidlepluginengine.cpp --- a/idlefw/plugins/pslnactiveidleplugin/src/pslnactiveidlepluginengine.cpp Tue Feb 02 00:23:10 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 - -#include "pslnactiveidlepluginengine.h" -#include "pslnactiveidleplugincontainer.h" -#include "pslnactiveidleplugin.h" -#include "activeidle2domainpskeys.h" -#include "activeidle2internalpskeys.h" - -// from plugin side -#include // for KExtrStandbyScrFullScreenMode - -// From PSLN framework. -#include -#include - -// General services. -#include -#include -#include - -// Application specific skins. -#include - -// XUIKON. -#include - -// ECOM. -#include -#include - -#include -#include - -#include - -// 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 -void CleanupResetAndDestroy(TAny* aObj) -{ - if(aObj) - { - static_cast(aObj)->ResetAndDestroy(); - } -} - -template -void CleanupResetAndDestroyPushL(Array& aPointerArray) -{ - CleanupStack::PushL(TCleanupItem(&CleanupResetAndDestroy, &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(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& /*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(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(aSelf); - - if (self) - { - self->iUiRefreshTimer->Cancel(); - TRAP_IGNORE(self->AddThemesToContainerL()); - if( self->iPlugin->Container() ) - { - self->iPlugin->Container()->RefreshList(); - } - } - return 0; -} - -// End of File. diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/pslnactiveidleplugin/src/pslnactiveidlepluginimplementationtable.cpp --- a/idlefw/plugins/pslnactiveidleplugin/src/pslnactiveidlepluginimplementationtable.cpp Tue Feb 02 00:23:10 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 -#include - -#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. diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/sapidataplugin/data/sapidataplugin.rss --- a/idlefw/plugins/sapidataplugin/data/sapidataplugin.rss Tue Feb 02 00:23:10 2010 +0200 +++ b/idlefw/plugins/sapidataplugin/data/sapidataplugin.rss Fri Feb 19 23:07:29 2010 +0200 @@ -18,6 +18,7 @@ // INCLUDES #include +#include #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 = { diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/sapidataplugin/inc/sapidata.h --- a/idlefw/plugins/sapidataplugin/inc/sapidata.h Tue Feb 02 00:23:10 2010 +0200 +++ b/idlefw/plugins/sapidataplugin/inc/sapidata.h Fri Feb 19 23:07:29 2010 +0200 @@ -19,22 +19,31 @@ #ifndef SAPIDATA_H #define SAPIDATA_H -// INCLUDE FILES +// System includes #include #include -#include + +// User includes +#include #include "sapidatapluginconst.h" -#include "aicontentpublisher.h" +// Forward declarations class MLiwInterface; class CLiwServiceHandler; class CSapiDataObserver; class CSapiDataPlugin; - +class MAiContentObserver; -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 +52,18 @@ * @return none */ static CContentItem* NewL(); - /* * Destructor */ ~CContentItem(); - private : +private: /* * Constructor */ - CContentItem(); + CContentItem(); /** * Part of the two phased construction @@ -65,7 +73,7 @@ */ void ConstructL(); - public : +public: TInt iId; /* item id */ @@ -81,12 +89,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 +112,9 @@ */ ~CSapiData(); - private : - - +private: + // constructors + /** * Constructor * @@ -113,8 +122,7 @@ * @return none */ CSapiData(); - - + /** * Part of the two phased construction * @@ -122,15 +130,9 @@ * @return void */ void ConstructL(CSapiDataPlugin* aPlugin); - - /** - * Change the publisher status - * - * @param aStatus new status of the publisher - * @return void - */ - void ChangePublisherStatusL(const TDesC& aStatus); - + + // new functions + /** * Gets the menu item from the publisher * @@ -139,7 +141,16 @@ */ void GetMenuItemsL(); - public : +public: + // new functions + + /** + * Change the publisher status + * + * @param aStatus new status of the publisher + * @return void + */ + void ChangePublisherStatusL(const TDesC& aStatus); /** * 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 TDesC& aStartupReason); + + /** * Execute the command to get the data from CPS * * @param aRegistry type of registry (publisher/cp_data) @@ -278,62 +302,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 +334,41 @@ */ void SetUpdateNeeded(TBool aStatus); - private : - - // Subscriber interface - // own - MLiwInterface* iInterface; - - // Data Observer to CPS content registry - // Own // iConObserver; - CSapiDataObserver* iContentObserver; +private: + // data - // Data Observer to CPS publisher registry - // Own // iConObserver; + /** Subscriber interface, owned */ + MLiwInterface* iInterface; + /** Data Observer to CPS content registry, owned */ + CSapiDataObserver* iContentObserver; + /** Data Observer to CPS publisher registry, owned */ CSapiDataObserver* iPubObserver; - - // Service handler - // Own - CLiwServiceHandler* iServiceHandler; - - // Array of configurations - // Own + /** Service handler, owned */ + CLiwServiceHandler* iServiceHandler; + /** Array of configurations, owned */ RPointerArray iItemList; - - // Number of configurations - TInt iItemCount; - - // Command name in configuration Array + /** Number of configurations */ + TInt iItemCount; + /** Command name in configuration Array, owned */ HBufC8* iCommandName; - /* publisher id */ + /** publisher id, owned */ HBufC* iPublisher; - /* content type */ + /** content type, owned */ HBufC* iContentType; - /* content id */ + /** content id, owned */ HBufC* iContentId; - - // Reference of the sapi data plugin - // Not owned - CSapiDataPlugin* iPlugin; - - // Menu item names - // Own - RPointerArray iMenuItems; - - // Trigger names for the menu items - // Own - RPointerArray iMenuTriggers; - - // Store the status of update needed on resume + /** Startup reason, owned */ + HBufC* iStartupReason; + /** Reference of the sapi data plugin, not owned */ + CSapiDataPlugin* iPlugin; + /** Menu item names, owned */ + RPointerArray iMenuItems; + /** Trigger names for the menu items, owned */ + RPointerArray iMenuTriggers; + /** Store the status of update needed on resume */ TBool iUpdateNeeded; }; -#endif /*SAPIDATA_H*/ +#endif // SAPIDATA_H + +// End of file diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/sapidataplugin/inc/sapidataobserver.h --- a/idlefw/plugins/sapidataplugin/inc/sapidataobserver.h Tue Feb 02 00:23:10 2010 +0200 +++ b/idlefw/plugins/sapidataplugin/inc/sapidataobserver.h Fri Feb 19 23:07:29 2010 +0200 @@ -19,15 +19,27 @@ #ifndef SAPIDATAOBSERVER_H #define SAPIDATAOBSERVER_H -// INCLUDE FILES +// System includes #include +// 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: - + // constructor and destructor + /** * Part of the two phased constuction * @@ -45,7 +57,8 @@ */ ~CSapiDataObserver(); -private : +private: + // construtors /** * Constructor @@ -64,7 +77,8 @@ */ void ConstructL( MLiwInterface* aInterface, CSapiData* aData ); -public: //from MLiwNotifyCallbackc +public: + //from MLiwNotifyCallbackc /** * Handles notifications caused by an asynchronous Execute*CmdL call @@ -85,6 +99,7 @@ const CLiwGenericParamList& /*aInParamList*/); public: + // new functions /** * Registers to CPS for add, delete , update and execute notifications @@ -100,18 +115,17 @@ void ReleaseL(); private: - - // Reference of - // Not owned - MLiwInterface* iInterface; + // 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; + /** Call back error code */ + TInt iError; }; -#endif /*SAPIDATAOBSERVER_H*/ +#endif // SAPIDATAOBSERVER_H + +// End of file + diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/sapidataplugin/inc/sapidataplugin.h --- a/idlefw/plugins/sapidataplugin/inc/sapidataplugin.h Tue Feb 02 00:23:10 2010 +0200 +++ b/idlefw/plugins/sapidataplugin/inc/sapidataplugin.h Fri Feb 19 23:07:29 2010 +0200 @@ -11,7 +11,7 @@ * * Contributors: * -* Description: Plug-in main class +* Description: SAPI data plug-in main class * */ @@ -19,16 +19,16 @@ #ifndef SAPIDATAPLUGIN_H #define SAPIDATAPLUGIN_H -#include -#include +// System includes + +// User includes +#include #include -#include +// Forward declarations class MAiContentObserver; class MAiContentItemIterator; -class MAiPSPropertyObserver; class CSapiData; -class CDesC16Array; class CGulIcon; /** @@ -38,13 +38,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 +60,12 @@ { ENone, EResume, - ESuspend, - EInActive, + ESuspend }; + public: - + // constructor and destructor + /** * Part of the two phased constuction * @@ -84,6 +83,7 @@ ~CSapiDataPlugin(); private: + // constructors /** * Constructor @@ -100,148 +100,67 @@ * @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: (), - * where is mapped by the framework to unique - * identifier supplied in aEvent, 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: (), - * where mapping to unique identifier supplied by event - * is failed by the frame work then the and - * are provided to plug-in as-is in the descriptor. + void ConfigureL( RAiSettingsItemArray& aSettings ); + + /** + * @see CHsContentPublisher */ - void HandleEvent(const TDesC& aEventName, const TDesC& aParam); + TAny* GetProperty( TProperty aProperty ); /** - * 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 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 @@ -282,7 +201,7 @@ * @param void * @return boolean (ETrue/EFalse) */ - TBool IsActive(); + TBool IsActive() const; /** * Publish a specific text of the widget @@ -332,69 +251,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 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 iDataArray; - - // Service API Data Subscriber. - // Own - CSapiData* iData; - - // References array for published images - // Own - RArray iIconArray; - - // File Server - // Reference - RFs iRfs; - - // Plugin's network status - TPluginNetworkStatus iNetworkStatus; - - // Is Homescreen foreground. - TBool iHSForeGround; - - // Is KeyLockON. - TBool iKeyLockOn; +private: + // data - // Plugin state + /** Iterator for plugin content, owned */ + MAiContentItemIterator* iContent; + /** Array of content observers, owned */ + RPointerArray 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 diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/sapidataplugin/inc/sapidatapluginconst.h --- a/idlefw/plugins/sapidataplugin/inc/sapidatapluginconst.h Tue Feb 02 00:23:10 2010 +0200 +++ b/idlefw/plugins/sapidataplugin/inc/sapidatapluginconst.h Fri Feb 19 23:07:29 2010 +0200 @@ -36,6 +36,7 @@ _LIT(KPlugin, "plugin"); _LIT(KNewsTicker ,"newsticker"); +_LIT(KTextEditor, "texteditor"); // CPS Constants @@ -79,8 +80,14 @@ _LIT(KWidget, "hswidget"); _LIT( KDeActive, "deactive"); _LIT( KActive, "active"); +_LIT( KSystemStartup, "systemstartup"); +_LIT( KPageStartup, "pagestartup"); +_LIT( KPluginStartup, "pluginstartup"); _LIT( KSuspend , "suspend"); _LIT( KResume, "resume"); +_LIT( KSystemShutdown, "systemshutdown"); +_LIT( KPageShutdown, "pageshutdown"); +_LIT( KPluginShutdown, "pluginshutdown"); _LIT( KOnLine, "online"); _LIT( KOffLine, "offline"); _LIT( KInActive, "inactive"); diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/sapidataplugin/inc/sapidatapluginuids.hrh --- a/idlefw/plugins/sapidataplugin/inc/sapidatapluginuids.hrh Tue Feb 02 00:23:10 2010 +0200 +++ b/idlefw/plugins/sapidataplugin/inc/sapidatapluginuids.hrh Fri Feb 19 23:07:29 2010 +0200 @@ -19,8 +19,6 @@ #ifndef SAPIDATAPLUGINUIDS_HRH #define SAPIDATAPLUGINUIDS_HRH -#include - /** * Ecom dll uid for AI Data plug-in. */ diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/sapidataplugin/src/sapidata.cpp --- a/idlefw/plugins/sapidataplugin/src/sapidata.cpp Tue Feb 02 00:23:10 2010 +0200 +++ b/idlefw/plugins/sapidataplugin/src/sapidata.cpp Fri Feb 19 23:07:29 2010 +0200 @@ -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,18 @@ * */ +// System includes #include #include #include #include +// User includes #include "sapidata.h" #include "sapidatapluginconst.h" #include "sapidataobserver.h" #include "sapidataplugin.h" + // ======== MEMBER FUNCTIONS ======== // --------------------------------------------------------------------------- @@ -116,7 +119,7 @@ delete iPublisher; delete iContentType; delete iContentId; - + delete iStartupReason; if(iPubObserver) { @@ -249,10 +252,27 @@ iPubObserver = CSapiDataObserver::NewL( iInterface, this ); } +// --------------------------------------------------------------------------- +// SetContentIdL +// --------------------------------------------------------------------------- +// void CSapiData::SetContentIdL(const TDesC8& aId) { iContentId = CnvUtfConverter::ConvertToUnicodeFromUtf8L(aId); } + +// --------------------------------------------------------------------------- +// SetStartupReasonL +// --------------------------------------------------------------------------- +// +void CSapiData::SetStartupReasonL(const TDesC& aStartupReason) + { + delete iStartupReason; + iStartupReason = NULL; + iStartupReason = aStartupReason.AllocL(); + ChangePublisherStatusL( aStartupReason ); + } + // --------------------------------------------------------------------------- // GetMenuItemsL // --------------------------------------------------------------------------- @@ -702,6 +722,12 @@ // void CSapiData::ChangePublisherStatusL(const TDesC& aStatus) { + if ( aStatus == KResume && iUpdateNeeded ) + { + iPlugin->PublishL(); + iUpdateNeeded = EFalse; + } + CLiwGenericParamList* inParamList = &iServiceHandler->InParamListL(); CLiwGenericParamList* outParamList = &iServiceHandler->OutParamListL(); HBufC8* triggerName = CnvUtfConverter::ConvertFromUnicodeToUtf8L(aStatus); @@ -732,74 +758,6 @@ } // --------------------------------------------------------------------------- -// ResumeL -// --------------------------------------------------------------------------- -// -void CSapiData::ResumeL() - { - if ( iUpdateNeeded ) - { - iPlugin->PublishL(); - iUpdateNeeded = EFalse; - } - ChangePublisherStatusL( KResume ); - } - -// --------------------------------------------------------------------------- -// SuspendL -// --------------------------------------------------------------------------- -// -void CSapiData::SuspendL() - { - ChangePublisherStatusL( KSuspend ); - } - -// --------------------------------------------------------------------------- -// ActivateL -// --------------------------------------------------------------------------- -// -void CSapiData::ActivateL() - { - ChangePublisherStatusL( KActive ); - } - -// --------------------------------------------------------------------------- -// DeActivateL -// --------------------------------------------------------------------------- -// -void CSapiData::DeActivateL() - { - ChangePublisherStatusL( KDeActive ); - } - -// --------------------------------------------------------------------------- -// OnLineL -// --------------------------------------------------------------------------- -// -void CSapiData::OnLineL() - { - ChangePublisherStatusL( KOnLine ); - } - -// --------------------------------------------------------------------------- -// offLineL -// --------------------------------------------------------------------------- -// -void CSapiData::OffLineL() - { - ChangePublisherStatusL( KOffLine ); - } - -// --------------------------------------------------------------------------- -// InActiveL -// --------------------------------------------------------------------------- -// -void CSapiData::InActiveL() - { - ChangePublisherStatusL( KInActive ); - } - -// --------------------------------------------------------------------------- // UpdatePublisherStatusL // --------------------------------------------------------------------------- // @@ -808,23 +766,28 @@ if ( aPublisher == iPublisher ) { // Resend the plugin status to publisher - ActivateL(); + ChangePublisherStatusL( KActive ); + if( iStartupReason->Length() != 0 ) + { + ChangePublisherStatusL( *iStartupReason ); + } + if ( iPlugin->IsActive() ) { - ResumeL(); + ChangePublisherStatusL( KResume ); } else { - SuspendL(); + ChangePublisherStatusL( KSuspend ); } // forward the network status if it uses. if ( iPlugin->NetworkStatus() == CSapiDataPlugin::EOnline ) { - OnLineL(); + ChangePublisherStatusL( KOnLine ); } else if ( iPlugin->NetworkStatus() == CSapiDataPlugin::EOffline ) { - OffLineL(); + ChangePublisherStatusL( KOffLine ); } } } diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/sapidataplugin/src/sapidataplugin.cpp --- a/idlefw/plugins/sapidataplugin/src/sapidataplugin.cpp Tue Feb 02 00:23:10 2010 +0200 +++ b/idlefw/plugins/sapidataplugin/src/sapidataplugin.cpp Fri Feb 19 23:07:29 2010 +0200 @@ -11,18 +11,14 @@ * * Contributors: * -* Description: Profile plug-in publisher +* Description: SAPI data plug-in publisher * */ - +// System includes #include #include -#include -#include -#include #include -#include #include #include #include @@ -30,6 +26,13 @@ #include #include #include + +// User includes +#include +#include +#include +#include +#include #include #include "sapidatapluginconst.h" @@ -37,7 +40,7 @@ #include "sapidataplugin.h" #include "sapidata.h" -// CONST CLASS VARIABLES +// Constants const TImplementationProxy KImplementationTable[] = { IMPLEMENTATION_PROXY_ENTRY( KImplUidDataPlugin, CSapiDataPlugin::NewL ) @@ -75,6 +78,7 @@ // --------------------------------------------------------------------------- // CSapiDataPlugin::CSapiDataPlugin() + : iNetworkStatus( EUnknown ), iPluginState( ENone ) { } @@ -83,14 +87,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 +101,44 @@ CSapiDataPlugin::~CSapiDataPlugin() { // deactivate the publishers - if( iData ) + if ( iData ) { - TRAP_IGNORE(iData->DeActivateL()); + TRAP_IGNORE( iData->ChangePublisherStatusL( KDeActive )); + 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; + iIconArray.Reset(); - 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( 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 + iRfs.Close(); } + // --------------------------------------------------------------------------- // Publishes widget's texts and images // --------------------------------------------------------------------------- // void CSapiDataPlugin::PublishL() - { - User::LeaveIfError( iRfs.Connect() ); - + { TInt observers( iObservers.Count() ); TInt transactionId = reinterpret_cast( this ); - for ( int i = 0; i < observers; i++ ) + for ( TInt i = 0; i < observers; i++ ) { MAiContentObserver* observer = iObservers[i]; @@ -233,8 +154,7 @@ // Release memory of the published icons iIconArray.Reset(); - } - iRfs.Close(); + } } // --------------------------------------------------------------------------- @@ -340,19 +260,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(); } } } @@ -442,8 +363,7 @@ // --------------------------------------------------------------------------- // void CSapiDataPlugin::RefreshL(TDesC& aContentType, TDesC& aOperation) - { - User::LeaveIfError( iRfs.Connect() ); + { TInt observers( iObservers.Count() ); TInt transactionId = reinterpret_cast( this ); @@ -468,8 +388,7 @@ // Relese memory of the published text iDataArray.ResetAndDestroy(); iIconArray.Reset(); - } - iRfs.Close(); + } } // --------------------------------------------------------------------------- @@ -483,269 +402,287 @@ { 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( iData->SetStartupReasonL( KSystemStartup )); + } + else if( aReason == EPageStartup ) + { + TRAP_IGNORE( iData->SetStartupReasonL( KPageStartup )); + } + else if( aReason == EPluginStartup ) + { + TRAP_IGNORE( iData->SetStartupReasonL( KPluginStartup)); + } + } + +// ---------------------------------------------------------------------------- +// CSapiDataPlugin::Stop +// +// ---------------------------------------------------------------------------- +// +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 )); + } + } + +// ---------------------------------------------------------------------------- +// CSapiDataPlugin::Resume +// +// ---------------------------------------------------------------------------- // -void CSapiDataPlugin::Stop( TAiTransitionReason aReason ) +void CSapiDataPlugin::Resume( TResumeReason aReason ) + { + if ( aReason == EForeground ) + { + iPluginState = EResume; + TRAP_IGNORE( iData->ChangePublisherStatusL( KResume )); + } + } + +// ---------------------------------------------------------------------------- +// CSapiDataPlugin::Suspend +// +// ---------------------------------------------------------------------------- +// +void CSapiDataPlugin::Suspend( TSuspendReason aReason ) { - if( iPluginState == EResume ) + if ( aReason == EBackground ) + { + iPluginState = ESuspend; + TRAP_IGNORE( iData->ChangePublisherStatusL( KSuspend )); + } + } + +// ---------------------------------------------------------------------------- +// CSapiDataPlugin::SetOnline +// +// ---------------------------------------------------------------------------- +// +void CSapiDataPlugin::SetOnline() + { + if ( iNetworkStatus != EOnline ) { - Suspend( aReason ); + 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( this ); - } - else if (aUid == KExtensionUidEventHandler) - { - return static_cast( 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 ); + + // Activate the publisher + iData->ChangePublisherStatusL( KActive ); + + // Register for notifications + iData->RegisterPublisherObserverL(); + + PublishL(); + + iPluginState = ESuspend; + + iData->RegisterContentObserverL(); + } + + contentItemsArr.Reset(); + configurationItemsArr.Reset(); + + // We own the array so destroy it + aSettings.ResetAndDestroy(); } -// --------------------------------------------------------------------------- -// From class MAiPropertyExtension -// Read property of publisher plug-in. -// --------------------------------------------------------------------------- +// ---------------------------------------------------------------------------- +// CSapiDataPlugin::GetProperty // -TAny* CSapiDataPlugin::GetPropertyL( TInt aProperty ) - { - TAny* property = NULL; - - switch ( aProperty ) - { - case EAiPublisherInfo: +// ---------------------------------------------------------------------------- +// +TAny* CSapiDataPlugin::GetProperty( TProperty aProperty ) + { + if ( aProperty == EPublisherContent ) { - property = static_cast( &iInfo ); - break; - } - - case EAiPublisherContent: - { - property = static_cast( 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( 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 diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/shortcutplugin/BWINS/aiscutextservu.def --- a/idlefw/plugins/shortcutplugin/BWINS/aiscutextservu.def Tue Feb 02 00:23:10 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 &) - diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/shortcutplugin/EABI/aiscutextservu.def --- a/idlefw/plugins/shortcutplugin/EABI/aiscutextservu.def Tue Feb 02 00:23:10 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 - diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/shortcutplugin/cenrep/keys_scutplugin.xls Binary file idlefw/plugins/shortcutplugin/cenrep/keys_scutplugin.xls has changed diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/shortcutplugin/conf/scutplugin.confml Binary file idlefw/plugins/shortcutplugin/conf/scutplugin.confml has changed diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/shortcutplugin/conf/scutplugin_10275104.crml Binary file idlefw/plugins/shortcutplugin/conf/scutplugin_10275104.crml has changed diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/shortcutplugin/group/aiscutextserv.mmp --- a/idlefw/plugins/shortcutplugin/group/aiscutextserv.mmp Tue Feb 02 00:23:10 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 - -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. diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/shortcutplugin/group/aiscutplugin.mmp --- a/idlefw/plugins/shortcutplugin/group/aiscutplugin.mmp Tue Feb 02 00:23:10 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 -#include -#include - -//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. diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/shortcutplugin/group/aiscutsettings.mmp --- a/idlefw/plugins/shortcutplugin/group/aiscutsettings.mmp Tue Feb 02 00:23:10 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 - -#include - -#include - -//#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. diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/shortcutplugin/group/backup_registration.xml --- a/idlefw/plugins/shortcutplugin/group/backup_registration.xml Tue Feb 02 00:23:10 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,6 +0,0 @@ - - - - - - diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/shortcutplugin/group/bld.inf --- a/idlefw/plugins/shortcutplugin/group/bld.inf Tue Feb 02 00:23:10 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 - -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. diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/shortcutplugin/inc/aidefaultshortcut.h --- a/idlefw/plugins/shortcutplugin/inc/aidefaultshortcut.h Tue Feb 02 00:23:10 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 // for TInt -#include // 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 diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/shortcutplugin/inc/aiscutapptitle.rh --- a/idlefw/plugins/shortcutplugin/inc/aiscutapptitle.rh Tue Feb 02 00:23:10 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. diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/shortcutplugin/inc/aiscutappuidparser.h --- a/idlefw/plugins/shortcutplugin/inc/aiscutappuidparser.h Tue Feb 02 00:23:10 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 - -// 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& 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& iUidArray; - - /// Lexer for data - TLex iLex; - - /// Is the data that has been read so far valid. - TBool iLexIsValid; -}; - -#endif // AISCUTAPPUIDPARSER_H - -// End of File diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/shortcutplugin/inc/aiscutfactory.h --- a/idlefw/plugins/shortcutplugin/inc/aiscutfactory.h Tue Feb 02 00:23:10 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 - -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. diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/shortcutplugin/inc/aiscutpluginprivatecrkeys.h --- a/idlefw/plugins/shortcutplugin/inc/aiscutpluginprivatecrkeys.h Tue Feb 02 00:23:10 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 - -#endif // AISCUTPLUGINPRIVATECRKEYS_H - -// End of File. diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/shortcutplugin/inc/aiscutrepositorywatcher.h --- a/idlefw/plugins/shortcutplugin/inc/aiscutrepositorywatcher.h Tue Feb 02 00:23:10 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 -#include // 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 diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/shortcutplugin/inc/aiscutsettings.hrh --- a/idlefw/plugins/shortcutplugin/inc/aiscutsettings.hrh Tue Feb 02 00:23:10 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. diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/shortcutplugin/inc/aiscuttargetshutter.h --- a/idlefw/plugins/shortcutplugin/inc/aiscuttargetshutter.h Tue Feb 02 00:23:10 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 -#include - -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. diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/shortcutplugin/inc/caiscutengine.h --- a/idlefw/plugins/shortcutplugin/inc/caiscutengine.h Tue Feb 02 00:23:10 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 // For MApaAppListServObserver -#include // For MMsvSessionObserver -#include // For RFavouritesDb -#include // For MFavouritesDbObserver -#include -#ifdef __WEB_WIDGETS -#include -#endif - -#include - -#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 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 iHiddenApps; - - /** - * Central repository object for Hidden Apps - * Own - */ - CRepository* iHiddenAppsRepository; - - /** - * Central repository change handler for Hidden Apps - * Own - */ - CAiScutRepositoryWatcher* iHiddenAppsNotifier; - - /** - * Application titles list - */ - RArray 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 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. diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/shortcutplugin/inc/caiscutengine.inl --- a/idlefw/plugins/shortcutplugin/inc/caiscutengine.inl Tue Feb 02 00:23:10 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. diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/shortcutplugin/inc/caiscutengineext.h --- a/idlefw/plugins/shortcutplugin/inc/caiscutengineext.h Tue Feb 02 00:23:10 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 - -#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. diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/shortcutplugin/inc/caiscutextdata.h --- a/idlefw/plugins/shortcutplugin/inc/caiscutextdata.h Tue Feb 02 00:23:10 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 -#include - -#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. diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/shortcutplugin/inc/caiscutextdatamodel.h --- a/idlefw/plugins/shortcutplugin/inc/caiscutextdatamodel.h Tue Feb 02 00:23:10 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 -#include - -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 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 iAiScutExtDataArray; - }; - -#endif // CAISCUTEXTDATAMODEL_H - -// End of File. diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/shortcutplugin/inc/caiscutextserver.h --- a/idlefw/plugins/shortcutplugin/inc/caiscutextserver.h Tue Feb 02 00:23:10 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 -#include - -#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 iUids; - - /** - * List of applications to show the dialog. - * - * Own. - */ - RArray 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. diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/shortcutplugin/inc/caiscutextsession.h --- a/idlefw/plugins/shortcutplugin/inc/caiscutextsession.h Tue Feb 02 00:23:10 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 - -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. diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/shortcutplugin/inc/caiscutplugin.h --- a/idlefw/plugins/shortcutplugin/inc/caiscutplugin.h Tue Feb 02 00:23:10 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 -#include -#include -#include - -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: (), - * where is mapped by the framework to unique - * identifier supplied in aEvent, 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 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. diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/shortcutplugin/inc/caiscutsettings.h --- a/idlefw/plugins/shortcutplugin/inc/caiscutsettings.h Tue Feb 02 00:23:10 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 - -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. diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/shortcutplugin/inc/caiscutsettingsapplist.h --- a/idlefw/plugins/shortcutplugin/inc/caiscutsettingsapplist.h Tue Feb 02 00:23:10 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 -#include // For MDesCArray -#include // For RApaLsSession -#include // For MMsvSessionObserver -#include // 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 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 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. diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/shortcutplugin/inc/caiscutsettingsbkmlist.h --- a/idlefw/plugins/shortcutplugin/inc/caiscutsettingsbkmlist.h Tue Feb 02 00:23:10 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 -#include // For MDesCArray -#include // 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 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. diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/shortcutplugin/inc/caiscutsettingscontainer.h --- a/idlefw/plugins/shortcutplugin/inc/caiscutsettingscontainer.h Tue Feb 02 00:23:10 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 - -#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. diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/shortcutplugin/inc/caiscutsettingsitem.h --- a/idlefw/plugins/shortcutplugin/inc/caiscutsettingsitem.h Tue Feb 02 00:23:10 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 -#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. diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/shortcutplugin/inc/caiscutsettingsitem.inl --- a/idlefw/plugins/shortcutplugin/inc/caiscutsettingsitem.inl Tue Feb 02 00:23:10 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. diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/shortcutplugin/inc/caiscutsettingsmodel.h --- a/idlefw/plugins/shortcutplugin/inc/caiscutsettingsmodel.h Tue Feb 02 00:23:10 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 -#include // For MDesCArray -#include // For RApaLsSession -#include // For RFavouritesDb -#include // 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& aKeys); - - /** - * - */ - void UpdateSettingsL(); - - /** - * - */ - void UpdateSettingsContainerL(); - -private: - - /** - * - */ - CAiScutSettingsModel(CAiScutSettings& aPlugin, CCoeEnv* aEnv); - - /** - * - */ - void ConstructL(); - - - /** - * - */ - void GetHiddenAppsL(); - -private: // data - - /** - * Array of setting items. - * Own. - */ - RPointerArray iSettings; - - /** - * Array of keys for settings items - * Own. - */ - RArray 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 iHiddenApps; - - // Central repository object for Hidden Apps - CRepository* iHiddenAppsRepository; - - // Central repository change handler for Hidden Apps - CAiScutRepositoryWatcher* iHiddenAppsNotifier; - -}; - -#endif // CAISCUTSETTINGSMODEL_H - -// End of File. diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/shortcutplugin/inc/caiscutshortcut.h --- a/idlefw/plugins/shortcutplugin/inc/caiscutshortcut.h Tue Feb 02 00:23:10 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 - -#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. diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/shortcutplugin/inc/caiscutshortcutext.h --- a/idlefw/plugins/shortcutplugin/inc/caiscutshortcutext.h Tue Feb 02 00:23:10 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 -#include -#include - -#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. diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/shortcutplugin/inc/caiscutshortcutinfo.h --- a/idlefw/plugins/shortcutplugin/inc/caiscutshortcutinfo.h Tue Feb 02 00:23:10 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 - -/** - * 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. diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/shortcutplugin/inc/caiscuttarget.h --- a/idlefw/plugins/shortcutplugin/inc/caiscuttarget.h Tue Feb 02 00:23:10 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 - -#include "taiscutparser.h" -#include "aiscutdefs.h" -#include - -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. diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/shortcutplugin/inc/caiscuttargetapp.h --- a/idlefw/plugins/shortcutplugin/inc/caiscuttargetapp.h Tue Feb 02 00:23:10 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. diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/shortcutplugin/inc/caiscuttargetbkm.h --- a/idlefw/plugins/shortcutplugin/inc/caiscuttargetbkm.h Tue Feb 02 00:23:10 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. diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/shortcutplugin/inc/caiscuttargetempty.h --- a/idlefw/plugins/shortcutplugin/inc/caiscuttargetempty.h Tue Feb 02 00:23:10 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. diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/shortcutplugin/inc/caiscuttargethttp.h --- a/idlefw/plugins/shortcutplugin/inc/caiscuttargethttp.h Tue Feb 02 00:23:10 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. diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/shortcutplugin/inc/caiscuttargetkeylock.h --- a/idlefw/plugins/shortcutplugin/inc/caiscuttargetkeylock.h Tue Feb 02 00:23:10 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 -#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. diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/shortcutplugin/inc/caiscuttargetmessagingview.h --- a/idlefw/plugins/shortcutplugin/inc/caiscuttargetmessagingview.h Tue Feb 02 00:23:10 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 - -#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. diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/shortcutplugin/inc/caiscuttargetnewmsg.h --- a/idlefw/plugins/shortcutplugin/inc/caiscuttargetnewmsg.h Tue Feb 02 00:23:10 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 - -#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. diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/shortcutplugin/inc/cpopupeventhandler.h --- a/idlefw/plugins/shortcutplugin/inc/cpopupeventhandler.h Tue Feb 02 00:23:10 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 -#include - -#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. diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/shortcutplugin/inc/maiscutextdata.h --- a/idlefw/plugins/shortcutplugin/inc/maiscutextdata.h Tue Feb 02 00:23:10 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 - -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. diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/shortcutplugin/inc/maiscutextmessagehandler.h --- a/idlefw/plugins/shortcutplugin/inc/maiscutextmessagehandler.h Tue Feb 02 00:23:10 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 - -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. diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/shortcutplugin/inc/mpopupeventhandleractions.h --- a/idlefw/plugins/shortcutplugin/inc/mpopupeventhandleractions.h Tue Feb 02 00:23:10 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 - -// CLASS DEFINITION -/** - * MPopupEventHandlerActions. - */ -class MPopupEventHandlerActions - { - public: // Abstract methods - /** - * Publishes the shortcut - */ - virtual void IssuePublishShortcut() = 0; - }; - -#endif // MPOPUPEVENTHANDLERACTIONS_H - -// End of file diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/shortcutplugin/inc/taiscutparser.h --- a/idlefw/plugins/shortcutplugin/inc/taiscutparser.h Tue Feb 02 00:23:10 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 // For TUriParser16 -#include - -// ============================================================================= -// ========================= 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 diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/shortcutplugin/loc/ai3scutplugin.loc --- a/idlefw/plugins/shortcutplugin/loc/ai3scutplugin.loc Tue Feb 02 00:23:10 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 Options - Change shortcut settings" - -// End of File. diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/shortcutplugin/loc/ai3scutsettings.loc --- a/idlefw/plugins/shortcutplugin/loc/ai3scutsettings.loc Tue Feb 02 00:23:10 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. diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/shortcutplugin/rom/aiscutplugin.iby --- a/idlefw/plugins/shortcutplugin/rom/aiscutplugin.iby Tue Feb 02 00:23:10 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 - -// 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. diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/shortcutplugin/rom/aiscutplugin_resources.iby --- a/idlefw/plugins/shortcutplugin/rom/aiscutplugin_resources.iby Tue Feb 02 00:23:10 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 - -// 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. diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/shortcutplugin/src/GenPopupFSM.py --- a/idlefw/plugins/shortcutplugin/src/GenPopupFSM.py Tue Feb 02 00:23:10 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 " ) - 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 ' ) - 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() diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/shortcutplugin/src/MPopupFSMActions.h --- a/idlefw/plugins/shortcutplugin/src/MPopupFSMActions.h Tue Feb 02 00:23:10 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 - -// 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 diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/shortcutplugin/src/PopupFSM.cpp --- a/idlefw/plugins/shortcutplugin/src/PopupFSM.cpp Tue Feb 02 00:23:10 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 diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/shortcutplugin/src/PopupFSM.h --- a/idlefw/plugins/shortcutplugin/src/PopupFSM.h Tue Feb 02 00:23:10 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 - -// 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 diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/shortcutplugin/src/PopupTrace.h --- a/idlefw/plugins/shortcutplugin/src/PopupTrace.h Tue Feb 02 00:23:10 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 diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/shortcutplugin/src/aidefaultshortcut.cpp --- a/idlefw/plugins/shortcutplugin/src/aidefaultshortcut.cpp Tue Feb 02 00:23:10 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 -#include -#include -#include // 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. diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/shortcutplugin/src/aiscutappuidparser.cpp --- a/idlefw/plugins/shortcutplugin/src/aiscutappuidparser.cpp Tue Feb 02 00:23:10 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& 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 diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/shortcutplugin/src/aiscutextserv.cpp --- a/idlefw/plugins/shortcutplugin/src/aiscutextserv.cpp Tue Feb 02 00:23:10 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 -#include -#include -#include - -#include -#include - -// ======== 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. diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/shortcutplugin/src/aiscutfactory.cpp --- a/idlefw/plugins/shortcutplugin/src/aiscutfactory.cpp Tue Feb 02 00:23:10 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. diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/shortcutplugin/src/aiscutfactoryext.cpp --- a/idlefw/plugins/shortcutplugin/src/aiscutfactoryext.cpp Tue Feb 02 00:23:10 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. diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/shortcutplugin/src/aiscutplugin.rss --- a/idlefw/plugins/shortcutplugin/src/aiscutplugin.rss Tue Feb 02 00:23:10 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 - -#include - -// --------------------------------------------------------------------------- -// 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. diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/shortcutplugin/src/aiscutpluginres.rss --- a/idlefw/plugins/shortcutplugin/src/aiscutpluginres.rss Tue Feb 02 00:23:10 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 -#include -#include - -#include - -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. diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/shortcutplugin/src/aiscutrepositorywatcher.cpp --- a/idlefw/plugins/shortcutplugin/src/aiscutrepositorywatcher.cpp Tue Feb 02 00:23:10 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 // 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 diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/shortcutplugin/src/aiscutsettings.rss --- a/idlefw/plugins/shortcutplugin/src/aiscutsettings.rss Tue Feb 02 00:23:10 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 - -#include - -// --------------------------------------------------------------------------- -// 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. diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/shortcutplugin/src/aiscutsettingsres.rss --- a/idlefw/plugins/shortcutplugin/src/aiscutsettingsres.rss Tue Feb 02 00:23:10 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 -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include - -#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. diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/shortcutplugin/src/aiscuttargetshutter.cpp --- a/idlefw/plugins/shortcutplugin/src/aiscuttargetshutter.cpp Tue Feb 02 00:23:10 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 //TApaTask -#include //RApaLsSession - -#include "aiscuttargetshutter.h" -#include "aiscutdefs.h" -#include "debug.h" - -#include - -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(aPtr); - - if (self) - { - self->Run(); - } - - return KErrNone; -} - -// --------------------------------------------------------------------------- -// -// --------------------------------------------------------------------------- -// -TInt CAiScutTargetShutter::TaskNotExistsCallback(TAny* aPtr) -{ - CAiScutTargetShutter* self = static_cast(aPtr); - - if (self) - { - self->Run(); - } - - return KErrNone; -} - -// End of File. diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/shortcutplugin/src/aiscuttexts.rss --- a/idlefw/plugins/shortcutplugin/src/aiscuttexts.rss Tue Feb 02 00:23:10 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 -#include -#include -#include -#include -#include -//#include -//#include -//#include -//#include -//#include - -#include - -#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. diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/shortcutplugin/src/caiscutengine.cpp --- a/idlefw/plugins/shortcutplugin/src/caiscutengine.cpp Tue Feb 02 00:23:10 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 // For CCoeEnv -#include // For CRepository -#include // For RWsSession -#include // For TApaTaskList -#include // For CVwsSessionWrapper -#include // For TVwsViewId -#include // For RProperty -#include // For CnvUtfConverter -#include -#include -#include // For CActiveFavouritesDbNotifier -#include -#include -#include // for fast swap -#ifdef SYMBIAN_ENABLE_SPLIT_HEADERS -#include -#endif - - -#include -#include -#include -#include -#include -#include -#include - -#include -#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 -#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(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(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(aPtr); - - if (self) - { - self->MergeShortcuts(EScutAnyType, ETrue); - self->CheckAccessAndPublish(EScutCheckAll, EFalse); - } - - return KErrNone; -} - -// --------------------------------------------------------------------------- -// -// --------------------------------------------------------------------------- -// -TInt CAiScutEngine::HandleHiddenAppsChanged(TAny* aPtr) -{ - CAiScutEngine* self = static_cast(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 keys; - CleanupClosePushL(keys); - // Find the keys that define theme-default shortcut settings. - iRepository->FindL(KScutCenRepKeyThemeDefault, KScutCenRepKeyMask, keys); - - - TLinearOrder 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 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 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. diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/shortcutplugin/src/caiscutengineext.cpp --- a/idlefw/plugins/shortcutplugin/src/caiscutengineext.cpp Tue Feb 02 00:23:10 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 -#include -#include -#include - -#include - -#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 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. diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/shortcutplugin/src/caiscutextdata.cpp --- a/idlefw/plugins/shortcutplugin/src/caiscutextdata.cpp Tue Feb 02 00:23:10 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 -#include - -// ======== 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. diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/shortcutplugin/src/caiscutextdatamodel.cpp --- a/idlefw/plugins/shortcutplugin/src/caiscutextdatamodel.cpp Tue Feb 02 00:23:10 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 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. diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/shortcutplugin/src/caiscutextserver.cpp --- a/idlefw/plugins/shortcutplugin/src/caiscutextserver.cpp Tue Feb 02 00:23:10 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 -#include -#include -#include -#include -#include - -#include -#include - -#include -#include -#include - -#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 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. diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/shortcutplugin/src/caiscutextsession.cpp --- a/idlefw/plugins/shortcutplugin/src/caiscutextsession.cpp Tue Feb 02 00:23:10 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 -#include -#include -#include - -#include - -#include "caiscutextsession.h" -#include "maiscutextmessagehandler.h" - -#include "caiscutextserver.h" - - -// ======== MEMBER FUNCTIONS ======== - - -// --------------------------------------------------------------------------- -// -// --------------------------------------------------------------------------- -// -CAiScutExtSession::CAiScutExtSession( MAiScutExtMessageHandler& aObserver ) - : iObserver( aObserver ) - { - } - -// --------------------------------------------------------------------------- -// -// --------------------------------------------------------------------------- -// -CAiScutExtSession::~CAiScutExtSession() - { - CAiScutExtServer* server = const_cast( - dynamic_cast( Server() ) ); - - if( iTargetDefinition && server ) - { - TRAP_IGNORE( - iObserver.HandleResetPopupLineArrayL( *iTargetDefinition ); - iObserver.HandleResetIconL( *iTargetDefinition ); - ); - } - - delete iTargetDefinition; - } - -// --------------------------------------------------------------------------- -// -// --------------------------------------------------------------------------- -// -void CAiScutExtSession::ServiceL( const RMessage2& aMessage ) - { - CAiScutExtServer* server = const_cast( - dynamic_cast( 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. diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/shortcutplugin/src/caiscutplugin.cpp --- a/idlefw/plugins/shortcutplugin/src/caiscutplugin.cpp Tue Feb 02 00:23:10 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 -#include - -#include -#include - -#include -#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(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(this); - } - else if (aUid == KExtensionUidEventHandler) - { - return static_cast(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(&iInfo); - - case EAiPublisherContent: - return static_cast(iContent); - - case EAiPublisherResources: - return static_cast(iResources); - - case EAiPublisherEvents: - return static_cast(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( 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. diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/shortcutplugin/src/caiscutsettings.cpp --- a/idlefw/plugins/shortcutplugin/src/caiscutsettings.cpp Tue Feb 02 00:23:10 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 -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include // For RProperty -#include // For KPSUidActiveIdle2 - -#include -#include -#include - -#include "aiscutsettings.hrh" -#include "caiscutsettings.h" -#include "caiscutsettingsitem.h" -#include "caiscutsettingscontainer.h" -#include "caiscutsettingsmodel.h" -#include -#include "aiscutdefs.h" -#include - -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& 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* array = - new (ELeave) CArrayFixFlat(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 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(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(aAny); - if(self) - { - self->iListBoxTimer->Cancel(); - self->HandleListBoxSelectionL(); - } - return KErrNone; - } - - -// End of File. diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/shortcutplugin/src/caiscutsettingsapplist.cpp --- a/idlefw/plugins/shortcutplugin/src/caiscutsettingsapplist.cpp Tue Feb 02 00:23:10 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 // For KMsvRootIndexEntryIdValue -#include -#include - -#include -#include - -#include -#include -#include -#include -#include -#include - -#include "caiscutsettingsapplist.h" -#include "taiscutparser.h" -#include "caiscutsettingsitem.h" -#include "aiscutdefs.h" -#include - -#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 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 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 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 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 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 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 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. diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/shortcutplugin/src/caiscutsettingsbkmlist.cpp --- a/idlefw/plugins/shortcutplugin/src/caiscutsettingsbkmlist.cpp Tue Feb 02 00:23:10 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 -#include // For CActiveFavouritesDbNotifier - -#include -#include - -#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 buf; - buf.Format( KText, aUid.iUid ); - - listItem->SetParamsL(buf); - TLinearOrder 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. diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/shortcutplugin/src/caiscutsettingscontainer.cpp --- a/idlefw/plugins/shortcutplugin/src/caiscutsettingscontainer.cpp Tue Feb 02 00:23:10 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 -#include -#include -#include -#include -#include -//#include -#include -#include -#include -#include - -#include -#include - -#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(iAppListDialog); - } - else if (iBkmListDialog) - { - dialog = static_cast(iBkmListDialog); - } - else if (iEditDialog) - { - dialog = static_cast(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 (&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. diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/shortcutplugin/src/caiscutsettingsimplementationtable.cpp --- a/idlefw/plugins/shortcutplugin/src/caiscutsettingsimplementationtable.cpp Tue Feb 02 00:23:10 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 -#include - -#include "caiscutsettings.h" -#include - -/** 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. diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/shortcutplugin/src/caiscutsettingsitem.cpp --- a/idlefw/plugins/shortcutplugin/src/caiscutsettingsitem.cpp Tue Feb 02 00:23:10 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 -#include -#include // For KMsvRootIndexEntryIdValue -#include -#include // For TUriParser16 -#include -#include -#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. diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/shortcutplugin/src/caiscutsettingsmodel.cpp --- a/idlefw/plugins/shortcutplugin/src/caiscutsettingsmodel.cpp Tue Feb 02 00:23:10 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 -#include -#include - -#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& 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 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 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(aPtr); - TRAP_IGNORE(self->UpdateSettingsContainerL()); - } - - return KErrNone; -} - -// --------------------------------------------------------------------------- -// -// --------------------------------------------------------------------------- -// -TInt CAiScutSettingsModel::HandleHiddenAppsChanged(TAny* aPtr) -{ - __PRINTS("XAI: CAiScutSettingsModel::HandleHiddenAppsChanged"); - - if (aPtr) - { - CAiScutSettingsModel* self = static_cast(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. diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/shortcutplugin/src/caiscutshortcut.cpp --- a/idlefw/plugins/shortcutplugin/src/caiscutshortcut.cpp Tue Feb 02 00:23:10 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 -#include // For CGulIcon -#include // For CFbsBitmap -#include // For RProperty - -#include -#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(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. diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/shortcutplugin/src/caiscutshortcutext.cpp --- a/idlefw/plugins/shortcutplugin/src/caiscutshortcutext.cpp Tue Feb 02 00:23:10 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 -#include -#include -#include - -#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. diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/shortcutplugin/src/caiscutshortcutinfo.cpp --- a/idlefw/plugins/shortcutplugin/src/caiscutshortcutinfo.cpp Tue Feb 02 00:23:10 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 diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/shortcutplugin/src/caiscuttarget.cpp --- a/idlefw/plugins/shortcutplugin/src/caiscuttarget.cpp Tue Feb 02 00:23:10 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 -#include // For AknsUtils -#include -#include -#include -#include // For CAknTaskList -#include // For CApaWindowGroupName -#include // For Transition effect -#include -#include - -// ======== 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. diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/shortcutplugin/src/caiscuttargetapp.cpp --- a/idlefw/plugins/shortcutplugin/src/caiscuttargetapp.cpp Tue Feb 02 00:23:10 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 // For CCoeEnv -#include // For RWsSession -#include -#include -#include // For CApaCommandLine -#include // For TApaTaskList -#include // For CApaWindowGroupName -#include // For CGulIcon -#include // For AknsUtils -#include // For CAknTaskList -#include // For Transition effect -#include -#include // For CVwsSessionWrapper -#include -#ifdef SYMBIAN_ENABLE_SPLIT_HEADERS -#include -#endif - -#include -#include -#include -#include -#include - -#include -//#include -#include - -#include - -#include "aiscutcontentmodel.h" -#include "caiscuttargetapp.h" -#include "caiscutengine.h" - -#include -#include "debug.h" - -#include - -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* sizesArray = new (ELeave) CArrayFixFlat(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. diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/shortcutplugin/src/caiscuttargetbkm.cpp --- a/idlefw/plugins/shortcutplugin/src/caiscuttargetbkm.cpp Tue Feb 02 00:23:10 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 // For CCoeEnv -#include // For RWsSession -#include // For TApaTaskList -#include // For CGulIcon -#include // For AknsUtils -#include - -#include "aiscutcontentmodel.h" -#include "caiscuttargetbkm.h" -#include "caiscutengine.h" -#include - -#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 = -2. Start/Continue the browser specifying a Bookmark Parameter = "1"+""+"" -3. Start/Continue the browser specifying a Saved deck Parameter = "2"+""+"" -4. Start/Continue the browser specifying a URL Parameter = "4"+""+"" -5. Start/Continue the browser specifying a URL and an Access Point Parameter = "4"+""+""+""+"" -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"+""+"" -*/ - - TApaTaskList taskList(iEngine.Env()->WsSession()); - TApaTask task = taskList.FindApp(KScutBrowserUid); - - - TBuf 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. diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/shortcutplugin/src/caiscuttargetempty.cpp --- a/idlefw/plugins/shortcutplugin/src/caiscuttargetempty.cpp Tue Feb 02 00:23:10 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. diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/shortcutplugin/src/caiscuttargethttp.cpp --- a/idlefw/plugins/shortcutplugin/src/caiscuttargethttp.cpp Tue Feb 02 00:23:10 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 // For CCoeEnv -#include // For RWsSession -#include // For TApaTaskList -#include // For CGulIcon -#include // For AknsUtils -#include - -#include "caiscuttargethttp.h" -#include "caiscutengine.h" -#include - -#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. diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/shortcutplugin/src/caiscuttargetkeylock.cpp --- a/idlefw/plugins/shortcutplugin/src/caiscuttargetkeylock.cpp Tue Feb 02 00:23:10 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 - -// 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. diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/shortcutplugin/src/caiscuttargetmessagingview.cpp --- a/idlefw/plugins/shortcutplugin/src/caiscuttargetmessagingview.cpp Tue Feb 02 00:23:10 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 // For KMsvRootIndexEntryIdValue -#include // For CGulIcon -#include -#include // For CVwsSessionWrapper -#include // For AknsUtils -#include -#ifdef SYMBIAN_ENABLE_SPLIT_HEADERS -#include -#endif - -#include "caiscuttargetmessagingview.h" -#include "caiscutengine.h" -#include - -#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. diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/shortcutplugin/src/caiscuttargetnewmsg.cpp --- a/idlefw/plugins/shortcutplugin/src/caiscuttargetnewmsg.cpp Tue Feb 02 00:23:10 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 // For CSendUi -#include // For settings not ok - error dialog -#include // For CGulIcon -#include -#include // For finding out available email account counts -#include // For AknsUtils - -#include - -#include -#include // For error note -#include -#include - -#include "aiscutcontentmodel.h" -#include "caiscuttargetnewmsg.h" -#include "caiscutengine.h" -#include -#include -#include -#include -#include - -#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 popAccounts; - RArray imapAccounts; - RArray 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. diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/shortcutplugin/src/cpopupeventhandler.cpp --- a/idlefw/plugins/shortcutplugin/src/cpopupeventhandler.cpp Tue Feb 02 00:23:10 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. diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/shortcutplugin/src/taiscutparser.cpp --- a/idlefw/plugins/shortcutplugin/src/taiscutparser.cpp Tue Feb 02 00:23:10 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. diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/wrtdataplugin/data/wrtdataplugin.rss --- a/idlefw/plugins/wrtdataplugin/data/wrtdataplugin.rss Tue Feb 02 00:23:10 2010 +0200 +++ b/idlefw/plugins/wrtdataplugin/data/wrtdataplugin.rss Fri Feb 19 23:07:29 2010 +0200 @@ -18,9 +18,9 @@ // INCLUDES #include +#include #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 = { diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/wrtdataplugin/inc/wrtdata.h --- a/idlefw/plugins/wrtdataplugin/inc/wrtdata.h Tue Feb 02 00:23:10 2010 +0200 +++ b/idlefw/plugins/wrtdataplugin/inc/wrtdata.h Fri Feb 19 23:07:29 2010 +0200 @@ -19,46 +19,35 @@ #ifndef WRTDATA_H #define WRTDATA_H -// INCLUDE FILES +// System includes #include #include + +// User includes +#include #include "wrtdatapluginconst.h" -#include "aicontentpublisher.h" -// FORWARD DECLARATIONS +// Forward declarations class MLiwInterface; class CLiwServiceHandler; class CWrtDataObserver; class CWrtDataPlugin; -// 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: + // constructor and destructor + + static CWrtData* NewL( CWrtDataPlugin* aPlugin ); - 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(); + ~CWrtData(); public : @@ -169,15 +158,7 @@ * @param None * @return void */ - void DeActivateL(); - - /** - * InActiveL - * - * @param None - * @return void - */ - void InActiveL(); + void DeActivateL(); /** * OnLineL @@ -275,38 +256,24 @@ 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; + // data - // Command name in configuration Array - HBufC8* iCommandName; - - // Reference of the wrt data plugin - // Not owned - CWrtDataPlugin* iPlugin; - - // Menu item names - // Own - RPointerArray iMenuItems; - - // Trigger names for the menu items - // Own - RPointerArray iMenuTriggers; - - // Widgets content id. - // Own - HBufC* iContentId; - + /** Subscriber interface, owned */ + MLiwInterface* iInterface; + /** Data Observer to CPS, owned */ + CWrtDataObserver* iObserver; + /** Service handler, owned */ + CLiwServiceHandler* iServiceHandler; + /** Command name in configuration Array, owned */ + HBufC8* iCommandName; + /** Reference of the wrt data plugin, not owned */ + CWrtDataPlugin* iPlugin; + /** Menu item names, owned */ + RPointerArray iMenuItems; + /** Trigger names for the menu items, owned */ + RPointerArray iMenuTriggers; + /** Content id, owned */ + HBufC* iContentId; }; #endif /*WRTDATA_H*/ diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/wrtdataplugin/inc/wrtdataobserver.h --- a/idlefw/plugins/wrtdataplugin/inc/wrtdataobserver.h Tue Feb 02 00:23:10 2010 +0200 +++ b/idlefw/plugins/wrtdataplugin/inc/wrtdataobserver.h Fri Feb 19 23:07:29 2010 +0200 @@ -19,108 +19,112 @@ #ifndef WRTDATAOBSERVER_H #define WRTDATAOBSERVER_H -// INCLUDE FILES +// System includes #include -// 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 diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/wrtdataplugin/inc/wrtdataplugin.h --- a/idlefw/plugins/wrtdataplugin/inc/wrtdataplugin.h Tue Feb 02 00:23:10 2010 +0200 +++ b/idlefw/plugins/wrtdataplugin/inc/wrtdataplugin.h Fri Feb 19 23:07:29 2010 +0200 @@ -19,22 +19,19 @@ #ifndef WRTDATAPLUGIN_H #define WRTDATAPLUGIN_H -#include -#include +// System includes + +// User includes +#include #include -#include -// 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,276 @@ * * @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(); - /** - * 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 ); +public: + // from CHsContentPublisher - /** - * 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 Start( TStartReason aReason ); + + /** + * @see CHsContentPublisher + */ + void Stop( TStopReason aReason ); + + /** + * @see CHsContentPublisher + */ + void Resume( TResumeReason aReason ); - // from base class MAiPropertyExtension + /** + * @see CHsContentPublisher + */ + void Suspend( TSuspendReason aReason ); + + /** + * @see CHsContentPublisher + */ + void SetOnline(); + + /** + * @see CHsContentPublisher + */ + void SetOffline(); + + /** + * @see CHsContentPublisher + */ + void SubscribeL( MAiContentObserver& aObserver ); - /** - * 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 ConfigureL( RAiSettingsItemArray& aSettings ); + + /** + * @see CHsContentPublisher + */ + TAny* GetProperty( TProperty aProperty ); + + /** + * @see CHsContentPublisher + */ + void HandleEvent( const TDesC& aEventName, const TDesC& aParam ); - /** - * 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: (), - * where is mapped by the framework to unique - * identifier supplied in aEvent, 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: (), - * where mapping to unique identifier supplied by event - * is failed by the frame work then the and - * are provided to plug-in as-is in the descriptor. - */ - void HandleEvent(const TDesC& aEventName, const TDesC& aParam); + /** + * @see CHsContentPublisher + */ + TBool HasMenuItem( const TDesC& aMenuItem ); + +public: + + /** + * Gets the id of a content + * + * @param aObjectId image or text id + * @return id of the content + */ + TInt GetIdL( TDesC16& aObjectId ); - /** - * 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 + /** + * Gets the type of a specific content + * + * @param aObjectId image or text id + * @param aType type + * @return void + */ + void GetTypeL( TDesC16& aObjectId, TDes16& aType ); - /** - * 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); + /** + * 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; - /** - * 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 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 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); + /** + * Cleans a data from the widget + * + * @param aObserver observer + * @param aContentId content model id + * @return void + */ + void Clean( MAiContentObserver* aObserver, + TInt aContentId ); - /** - * Hides the loading icon animation - * - * @param aObserver observer - * @return void - */ - void HideLoadingIcon(MAiContentObserver* aObserver); + /** + * Shows the loading icon animation + * + * @param aObserver observer + * @return void + */ + void ShowLoadingIcon( MAiContentObserver* aObserver ); - /** - * 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; - } + /** + * 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; - 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); +private: + // new functions + + /** + * Publishes widget's texts and images + * + * @param void + * @return void + */ + void PublishL(); - /** - * Resolves skin item id and Mif id from pattern - * skin( () - * mif( ) - * - * @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 iObservers; - - // Information about the content publisher (this plug-in) - TAiPublisherInfo iInfo; + /** + * Resolves skin item id and Mif id from pattern + * skin( () + * mif( ) + * + * @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 ); - // Number of data in the content model. - TInt iDataCount; - - // Dynamic content model - // Own - TAiContentItem* iContentModel; - - // Reference array for Published text - // Own - RPointerArray iDataArray; - - // Service API Data Subscriber. - // Own - CWrtData* iData; - - // References array for published images - // Own - RArray iIconArray; - - // Plugin's network status - TPluginNetworkStatus iNetworkStatus; - - // Is Homescreen foreground. - TBool iHSForeGround; - - // Is KeyLockON. - TBool iKeyLockOn; - - // Plugin state - TPluginStates iPluginState; +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; }; #endif // WRTDATAPLUGIN_H diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/wrtdataplugin/inc/wrtdatapluginuids.hrh --- a/idlefw/plugins/wrtdataplugin/inc/wrtdatapluginuids.hrh Tue Feb 02 00:23:10 2010 +0200 +++ b/idlefw/plugins/wrtdataplugin/inc/wrtdatapluginuids.hrh Fri Feb 19 23:07:29 2010 +0200 @@ -20,8 +20,6 @@ #ifndef WRTDATAPLUGINUIDS_HRH #define WRTDATAPLUGINUIDS_HRH -#include - /** * Ecom dll uid for AI Data plug-in. */ diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/wrtdataplugin/src/wrtdata.cpp --- a/idlefw/plugins/wrtdataplugin/src/wrtdata.cpp Tue Feb 02 00:23:10 2010 +0200 +++ b/idlefw/plugins/wrtdataplugin/src/wrtdata.cpp Fri Feb 19 23:07:29 2010 +0200 @@ -23,7 +23,7 @@ #include #include #include -#include +#include #include "wrtdata.h" #include "wrtdatapluginconst.h" @@ -490,15 +490,6 @@ } // --------------------------------------------------------------------------- -// CWrtData::InActiveL -// --------------------------------------------------------------------------- -// -void CWrtData::InActiveL() - { - ChangePublisherStatusL( KInActive ); - } - -// --------------------------------------------------------------------------- // CWrtData::OnLineL // --------------------------------------------------------------------------- // diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/wrtdataplugin/src/wrtdataplugin.cpp --- a/idlefw/plugins/wrtdataplugin/src/wrtdataplugin.cpp Tue Feb 02 00:23:10 2010 +0200 +++ b/idlefw/plugins/wrtdataplugin/src/wrtdataplugin.cpp Fri Feb 19 23:07:29 2010 +0200 @@ -11,21 +11,14 @@ * * Contributors: * -* Description: -* Profile plug-in publisher -* +* Description: WRT data plug-in publisher +* */ - - -// INCLUDE FILES +// System includes #include #include -#include -#include -#include #include -#include #include #include #include @@ -33,6 +26,13 @@ #include #include #include + +// User includes +#include +#include +#include +#include +#include #include #include "wrtdatapluginconst.h" @@ -40,7 +40,7 @@ #include "wrtdataplugin.h" #include "wrtdata.h" -// CONST CLASS VARIABLES +// Constants const TImplementationProxy KImplementationTable[] = { IMPLEMENTATION_PROXY_ENTRY( KImplUidDataPlugin, CWrtDataPlugin::NewL ) @@ -48,10 +48,12 @@ // ======== 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 +61,10 @@ } // ======== MEMBER FUNCTIONS ======== - -// --------------------------------------------------------------------------- -// Symbian 2nd phase constructor can leave -// --------------------------------------------------------------------------- +// ---------------------------------------------------------------------------- +// CWrtDataPlugin::NewL() +// +// ---------------------------------------------------------------------------- // CWrtDataPlugin* CWrtDataPlugin::NewL() { @@ -73,27 +75,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 +104,7 @@ // CWrtDataPlugin::~CWrtDataPlugin() { - // deactivate the publishers - if( iData ) - { - if ( iPluginState != EInActive ) - { - TRAP_IGNORE(iData->DeActivateL()); - } - delete iData; - } + delete iData; iObservers.Close(); Release( iContent ); iDataArray.ResetAndDestroy(); @@ -125,71 +118,113 @@ 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( PublishL()); + } + } + +// ---------------------------------------------------------------------------- +// CWrtDataPlugin::Stop +// +// ---------------------------------------------------------------------------- +// +void CWrtDataPlugin::Stop( TStopReason aReason ) + { + if( aReason == EPluginShutdown || + aReason == ESystemShutdown ) + { + TRAP_IGNORE(iData->DeActivateL()); } } -// --------------------------------------------------------------------------- -// 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->ResumeL() ); + } + } + +// ---------------------------------------------------------------------------- +// CWrtDataPlugin::Suspend +// +// ---------------------------------------------------------------------------- +// +void CWrtDataPlugin::Suspend( TSuspendReason aReason ) + { + if ( aReason == EBackground ) + { + 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 -// --------------------------------------------------------------------------- +// ---------------------------------------------------------------------------- +// CWrtDataPlugin::SetOnline +// +// ---------------------------------------------------------------------------- +// +void CWrtDataPlugin::SetOnline() + { + if ( iNetworkStatus != EOnline ) + { + iNetworkStatus = EOnline; + + TRAP_IGNORE( iData->OnLineL() ); + } + } + +// ---------------------------------------------------------------------------- +// CWrtDataPlugin::SetOffline +// +// ---------------------------------------------------------------------------- +// +void CWrtDataPlugin::SetOffline() + { + if ( iNetworkStatus != EOffline ) + { + iNetworkStatus = EOffline; + + TRAP_IGNORE( iData->OffLineL() ); + } + } + +// ---------------------------------------------------------------------------- +// 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 ) { @@ -204,33 +239,41 @@ RAiSettingsItemArray configurationItemsArr; RAiSettingsItemArray settingItemsArr; - TInt count = aSettings.Count(); - for(TInt i = 0; i < count; i++ ) + 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 ) { - contentItemsArr.Append(pluginSetting); + contentItemsArr.Append( setting ); } - else if( pluginSetting->AiPluginItemType() == EAiPluginConfigurationItem ) + else if( setting->AiPluginItemType() == EAiPluginConfigurationItem ) { - configurationItemsArr.Append(pluginSetting); + configurationItemsArr.Append( setting ); } else { - settingItemsArr.Append(pluginSetting); + settingItemsArr.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,28 +281,36 @@ 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( 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(); @@ -270,119 +321,79 @@ settingItemsArr.Reset(); contentItemsArr.Reset(); configurationItemsArr.Reset(); + // We own the array so destroy it aSettings.ResetAndDestroy(); - // publish the initial data - PublishL(); + } + +// ---------------------------------------------------------------------------- +// CWrtDataPlugin::GetProperty +// +// ---------------------------------------------------------------------------- +// +TAny* CWrtDataPlugin::GetProperty( TProperty aProperty ) + { + if ( aProperty == EPublisherContent ) + { + return static_cast< MAiContentItemIterator* >( iContent ); + } + + return NULL; + } + +// ---------------------------------------------------------------------------- +// CWrtDataPlugin::HandleEvent +// +// ---------------------------------------------------------------------------- +// +void CWrtDataPlugin::HandleEvent( const TDesC& aEventName, + const TDesC& aParam ) + { + TRAP_IGNORE( iData->ExecuteActionL( aEventName , aParam ) ); } -// --------------------------------------------------------------------------- -// From class CAiContentPublisher -// Returns the extension interface. Actual type depends on the passed -// aUid argument. -// --------------------------------------------------------------------------- +// ---------------------------------------------------------------------------- +// CWrtDataPlugin::HasMenuItem +// +// ---------------------------------------------------------------------------- +// +TBool CWrtDataPlugin::HasMenuItem( const TDesC& aMenuItem ) + { + return iData->HasMenuItem ( aMenuItem ); + } + +// ---------------------------------------------------------------------------- +// CWrtDataPlugin::IsActive +// +// ---------------------------------------------------------------------------- // -TAny* CWrtDataPlugin::Extension( TUid aUid ) - { - if ( aUid == KExtensionUidProperty ) - { - return static_cast( this ); - } - else if (aUid == KExtensionUidEventHandler) - { - return static_cast( 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( &iInfo ); - break; - } - - case EAiPublisherContent: - { - property = static_cast( 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( 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 +416,7 @@ // --------------------------------------------------------------------------- +// CWrtDataPlugin::GetTypeL // Gets type of a content // --------------------------------------------------------------------------- // @@ -467,15 +479,6 @@ } // --------------------------------------------------------------------------- -// Is plugin active to publish the data -// --------------------------------------------------------------------------- -// -TBool CWrtDataPlugin::IsActive() - { - return (iPluginState == EResume ); - } - -// --------------------------------------------------------------------------- // Publish a specific text of the widget // --------------------------------------------------------------------------- // @@ -577,23 +580,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(); } } } @@ -695,100 +696,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 +773,5 @@ } return (error == KErrNone ); } + +// End of file diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/wsplugin/group/aiwsplugin.mmp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/idlefw/plugins/wsplugin/group/aiwsplugin.mmp Fri Feb 19 23:07:29 2010 +0200 @@ -0,0 +1,60 @@ +/* +* 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 + +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 + +// End of File diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/wsplugin/group/bld.inf --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/idlefw/plugins/wsplugin/group/bld.inf Fri Feb 19 23:07:29 2010 +0200 @@ -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. diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/wsplugin/inc/keyhandlertimer.h --- a/idlefw/plugins/wsplugin/inc/keyhandlertimer.h Tue Feb 02 00:23:10 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 - -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 diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/wsplugin/inc/keylockcontrol.h --- a/idlefw/plugins/wsplugin/inc/keylockcontrol.h Tue Feb 02 00:23:10 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 -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 diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/wsplugin/inc/keylockhandler.h --- a/idlefw/plugins/wsplugin/inc/keylockhandler.h Tue Feb 02 00:23:10 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 diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/wsplugin/inc/keylockstates.h --- a/idlefw/plugins/wsplugin/inc/keylockstates.h Tue Feb 02 00:23:10 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 -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 - diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/wsplugin/inc/keypadsettings.h --- a/idlefw/plugins/wsplugin/inc/keypadsettings.h Tue Feb 02 00:23:10 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 -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 diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/wsplugin/inc/logslaunchhandler.h --- a/idlefw/plugins/wsplugin/inc/logslaunchhandler.h Tue Feb 02 00:23:10 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 diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/wsplugin/inc/numerickeyhandler.h --- a/idlefw/plugins/wsplugin/inc/numerickeyhandler.h Tue Feb 02 00:23:10 2010 +0200 +++ b/idlefw/plugins/wsplugin/inc/numerickeyhandler.h Fri Feb 19 23:07:29 2010 +0200 @@ -44,7 +44,8 @@ public CEventHandler, private MCenRepNotifyHandlerCallback { -public: +public: + /** * Creates a new instance of this class. * @@ -118,6 +119,13 @@ /// Input language indicator. TInt iInputLanguage; + +private: + // friend classes + +#ifdef _AIWSPLUGIN_UNIT_TEST + friend class UT_NumericKeyHandler; +#endif }; } // namespace AiWsPlugin diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/wsplugin/inc/sindlaunchhandler.h --- a/idlefw/plugins/wsplugin/inc/sindlaunchhandler.h Tue Feb 02 00:23:10 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 - -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 diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/wsplugin/src/aiwspluginanim.cpp --- a/idlefw/plugins/wsplugin/src/aiwspluginanim.cpp Tue Feb 02 00:23:10 2010 +0200 +++ b/idlefw/plugins/wsplugin/src/aiwspluginanim.cpp Fri Feb 19 23:07:29 2010 +0200 @@ -16,47 +16,81 @@ */ +// System includes +#include + +// User includes #include "aiwspluginanim.h" #include "aiwspluginanimdef.h" -#include "keylockhandler.h" #include "numerickeyhandler.h" -#include "logslaunchhandler.h" -#include "sindlaunchhandler.h" -#include 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(aArgs) ); + + FeatureManager::InitializeLibL(); - AddEventHandlerAndPopL( CKeyLockHandler::NewLC() ); - - MAnimGeneralFunctionsWindowExtension* ext = reinterpret_cast - ( 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 + ( 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 diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/wsplugin/src/keyhandlertimer.cpp --- a/idlefw/plugins/wsplugin/src/keyhandlertimer.cpp Tue Feb 02 00:23:10 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 - -#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 diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/wsplugin/src/keylockhandler.cpp --- a/idlefw/plugins/wsplugin/src/keylockhandler.cpp Tue Feb 02 00:23:10 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 -#include -#include - -#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(aSelf); - if( self ) - { - self->iCurrentState->TimerElapsed( *self ); - } - return KErrNone; - } - -void CKeyLockHandler::TimerDone() - { - - } - -} // namespace AiWsPlugin diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/wsplugin/src/keylockstates.cpp --- a/idlefw/plugins/wsplugin/src/keylockstates.cpp Tue Feb 02 00:23:10 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 -#include - -#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 diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/wsplugin/src/keypadsettings.cpp --- a/idlefw/plugins/wsplugin/src/keypadsettings.cpp Tue Feb 02 00:23:10 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 -#include -#include - -#include - -#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 diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/wsplugin/src/logslaunchhandler.cpp --- a/idlefw/plugins/wsplugin/src/logslaunchhandler.cpp Tue Feb 02 00:23:10 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 -#include -#include -#include -#include - -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 diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/plugins/wsplugin/src/sindlaunchhandler.cpp --- a/idlefw/plugins/wsplugin/src/sindlaunchhandler.cpp Tue Feb 02 00:23:10 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 -#include -#include -#include - -//#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 diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/rom/idlefw.iby --- a/idlefw/rom/idlefw.iby Tue Feb 02 00:23:10 2010 +0200 +++ b/idlefw/rom/idlefw.iby Fri Feb 19 23:07:29 2010 +0200 @@ -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 diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/rom/idlefw_resources.iby --- a/idlefw/rom/idlefw_resources.iby Tue Feb 02 00:23:10 2010 +0200 +++ b/idlefw/rom/idlefw_resources.iby Fri Feb 19 23:07:29 2010 +0200 @@ -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 diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/src/framework/aibackuprestorestatusobserver.cpp --- a/idlefw/src/framework/aibackuprestorestatusobserver.cpp Tue Feb 02 00:23:10 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 -#include -#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( 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; - } - diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/src/framework/aicallstatusobserver.cpp --- a/idlefw/src/framework/aicallstatusobserver.cpp Tue Feb 02 00:23:10 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 -#include -#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; - } - diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/src/framework/aicontentpluginmanager.cpp --- a/idlefw/src/framework/aicontentpluginmanager.cpp Tue Feb 02 00:23:10 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 -#include -#include -#include - -#include -#include - -#include "aicontentpluginmanager.h" -#include "aipluginstatemanager.h" -#include "aifweventhandler.h" -#include "aicontentpublisher.h" -#include "aipropertyextension.h" -#include -#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. diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/src/framework/aiecomobserver.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/idlefw/src/framework/aiecomobserver.cpp Fri Feb 19 23:07:29 2010 +0200 @@ -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 diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/src/framework/aienvironmentchangeobserver.cpp --- a/idlefw/src/framework/aienvironmentchangeobserver.cpp Tue Feb 02 00:23:10 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 // for CEnvironmentChangeNotifier -#include -#include // 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( 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; - } - diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/src/framework/aieventhandler.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/idlefw/src/framework/aieventhandler.cpp Fri Feb 19 23:07:29 2010 +0200 @@ -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 +#include +#include + +#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. diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/src/framework/aifocusobserver.cpp --- a/idlefw/src/framework/aifocusobserver.cpp Tue Feb 02 00:23:10 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 -#include -#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( 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 diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/src/framework/aifw.cpp --- a/idlefw/src/framework/aifw.cpp Tue Feb 02 00:23:10 2010 +0200 +++ b/idlefw/src/framework/aifw.cpp Fri Feb 19 23:07:29 2010 +0200 @@ -15,49 +15,42 @@ * */ +// System includes +#include +#include +#include -#include -#include -#include -#include -#include +// 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 #include #include -#include #include #include -#include -#include -#include - - -#include -#include +#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 -#include -#include "ainetworklistener.h" +// Constants -#include - // ======== MEMBER FUNCTIONS ======== // ---------------------------------------------------------------------------- -// CAiFw::NewL() +// CAiFw::CAiFw() +// // ---------------------------------------------------------------------------- // CAiFw::CAiFw() @@ -66,6 +59,7 @@ // ---------------------------------------------------------------------------- // CAiFw::ConstructL() +// // ---------------------------------------------------------------------------- // void CAiFw::ConstructL() @@ -78,47 +72,50 @@ 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 ); + + iEventHandler = CAiEventHandler::NewL( *iFactory ); } // ---------------------------------------------------------------------------- // CAiFw::NewLC() +// // ---------------------------------------------------------------------------- // EXPORT_C CAiFw* CAiFw::NewLC() { CAiFw* self = new ( ELeave ) CAiFw; CleanupStack::PushL( self ); + self->ConstructL(); __TICK( "FW: Core FW constructed" ); @@ -129,54 +126,51 @@ // ---------------------------------------------------------------------------- // 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; + + Release( iIdleRestartObserver ); + iIdleRestartObserver = 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,6 +178,7 @@ // ---------------------------------------------------------------------------- // CAiFw::RunL() +// // ---------------------------------------------------------------------------- // EXPORT_C void CAiFw::RunL() @@ -200,6 +195,7 @@ // ---------------------------------------------------------------------------- // CAiFw::AppEnvReadyL() +// // ---------------------------------------------------------------------------- // void CAiFw::AppEnvReadyL() @@ -207,71 +203,56 @@ // 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 ); + + iStateProvider = CAiStateProvider::NewL( *iStateManager, env ); + + iUiControllerManager->SetStateHandler( *iStateProvider ); + + // 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 ); + TCallBack( HandleRestartEvent, this ), + KPSUidAiInformation, KActiveIdleRestartAI2 ); } // ---------------------------------------------------------------------------- // CAiFw::HandleUiReadyEventL() +// // ---------------------------------------------------------------------------- // void CAiFw::HandleUiReadyEventL( CAiUiController& aUiController ) { - if( iUiControllerManager->IsMainUiController( aUiController ) ) - { - iUiControllerManager->LoadUIDefinition(); - + if ( iUiControllerManager->IsMainUiController( aUiController ) ) + { TInt value( EIdlePhase1Ok ); RProperty::Get( KPSUidStartup, KPSIdlePhase1Ok, value ); - if( value == EIdlePhase1NOK ) + if ( value == EIdlePhase1NOK ) { RProperty::Set( KPSUidStartup, KPSIdlePhase1Ok, EIdlePhase1Ok ); } - if( !iLibrariesLoaded ) + if ( !iLibrariesLoaded ) { _LIT( KAIVoiceUIDialer, "VoiceUiNameDialer.dll" ); _LIT( KAIVoiceUIRecog, "VoiceUiRecognition.dll" ); @@ -284,11 +265,13 @@ iLibrariesLoaded = ETrue; } + iUiControllerManager->LoadUIDefinition(); } } // --------------------------------------------------------------------------- // CAiFw::HandleActivateUI() +// // ---------------------------------------------------------------------------- // void CAiFw::HandleActivateUI() @@ -298,138 +281,109 @@ // --------------------------------------------------------------------------- // 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; - } + Release( iIdleRestartObserver ); + iIdleRestartObserver = NULL; - if( iIdleRestartObserver ) - { - Release( iIdleRestartObserver ); - iIdleRestartObserver = NULL; - } + delete iStateProvider; + iStateProvider = NULL; } } // ---------------------------------------------------------------------------- -// CAiFw::HandleLoadPluginL() -// ---------------------------------------------------------------------------- -// -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 +393,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 +410,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,41 +433,41 @@ // ---------------------------------------------------------------------------- // 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() +// // ---------------------------------------------------------------------------- // TInt CAiFw::HandleRestartEvent( TAny* aSelf ) @@ -524,13 +476,11 @@ TInt value( 0 ); - if( self->iIdleRestartObserver ) + 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 ) + if ( err == KErrNone && value == KActiveIdleRestartCode ) { self->iUiControllerManager->ExitMainController(); } @@ -539,4 +489,14 @@ return KErrNone; } +// ---------------------------------------------------------------------------- +// CAiFw::Repository() +// +// ---------------------------------------------------------------------------- +// +CRepository& CAiFw::Repository() const + { + return *iRepository; + } + // End of file diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/src/framework/aifwstartupscheduler.cpp --- a/idlefw/src/framework/aifwstartupscheduler.cpp Tue Feb 02 00:23:10 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(); - } - diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/src/framework/aikeylockobserver.cpp --- a/idlefw/src/framework/aikeylockobserver.cpp Tue Feb 02 00:23:10 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 -#include -#include // 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( aPtr ); - - __ASSERT_DEBUG( self, - AiFwPanic::Panic( AiFwPanic::EAiFwPanic_NullPointerReference ) ); - - TAiStateChanges stateChange = self->Status(); - self->iStateManager->ReportStateChange( stateChange ); - return KErrNone; - } - diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/src/framework/ailightstatusobserver.cpp --- a/idlefw/src/framework/ailightstatusobserver.cpp Tue Feb 02 00:23:10 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 -#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 ); - } - } - } - diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/src/framework/ainetworklistener.cpp --- a/idlefw/src/framework/ainetworklistener.cpp Tue Feb 02 00:23:10 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 -#include -#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; - } - diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/src/framework/ainwsdlgcontroller.cpp --- a/idlefw/src/framework/ainwsdlgcontroller.cpp Tue Feb 02 00:23:10 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 -#include -#include -#include - -#include -#include - -#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. diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/src/framework/aipluginactivitypstool.cpp --- a/idlefw/src/framework/aipluginactivitypstool.cpp Tue Feb 02 00:23:10 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 -#include // for User -#include // for RProperty -#include - -// 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 ); - } - } diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/src/framework/aipluginfactory.cpp --- a/idlefw/src/framework/aipluginfactory.cpp Tue Feb 02 00:23:10 2010 +0200 +++ b/idlefw/src/framework/aipluginfactory.cpp Fri Feb 19 23:07:29 2010 +0200 @@ -18,86 +18,96 @@ // System includes #include #include -#include -#include -#include // For RProperty // User includes +#include +#include +#include #include -#include -#include -#include // PubSub category -#include // PubSub category key and values +#include +#include "aiuicontrollermanager.h" #include "aipluginfactory.h" -#include "aicontentpluginmanager.h" -#include "aipluginlifecycleobserver.h" +#include "debug.h" -#include "aiuicontroller.h" -#include "aifwpanic.h" -#include "debug.h" +// Constants +const TUid KDeviceStatusPluginUid = + { AI_UID_ECOM_IMPLEMENTATION_CONTENTPUBLISHER_DEVSTAPLUGIN }; + +_LIT( KDeviceStatusPluginName, "DeviceStatus" ); // ======== LOCAL FUNCTIONS ======== // ---------------------------------------------------------------------------- -// CleanupResetAndDestroy() +// IsDeviceStatus() +// // ---------------------------------------------------------------------------- // -template -static void CleanupResetAndDestroy( TAny* aObj ) +TBool IsDeviceStatus( const THsPublisherInfo& aInfo ) { - if( aObj ) - { - static_cast( aObj )->ResetAndDestroy(); - } + return ( aInfo.Name() == KDeviceStatusPluginName && + aInfo.Uid() == KDeviceStatusPluginUid ); + } + +// ---------------------------------------------------------------------------- +// CleanupResetAndDestroy() +// +// ---------------------------------------------------------------------------- +// +template< class T > +static void CleanupResetAndDestroy( TAny* aObj ) + { + static_cast< T* >( aObj )->ResetAndDestroy(); } // ---------------------------------------------------------------------------- // CleanupResetAndDestroyPushL() +// // ---------------------------------------------------------------------------- // -template -static void CleanupResetAndDestroyPushL(T& aArray) +template< class T > +static void CleanupResetAndDestroyPushL( T& aArray ) { - CleanupStack::PushL( TCleanupItem( &CleanupResetAndDestroy, &aArray ) ); + CleanupStack::PushL( + TCleanupItem( &CleanupResetAndDestroy< T >, &aArray ) ); } // ======== MEMBER FUNCTIONS ======== // ---------------------------------------------------------------------------- // CAiPluginFactory::CAiPluginFactory() +// // ---------------------------------------------------------------------------- // -CAiPluginFactory::CAiPluginFactory( - RPointerArray& 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& 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 +117,158 @@ // ---------------------------------------------------------------------------- // 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& 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 ( IsDeviceStatus( aPublisherInfo ) ) + { + CHsContentPublisher* plugin( PluginByUid( aPublisherInfo.Uid() ) ); + + if ( plugin ) + { + // Devicestatus plugin already exists, update its namespace + THsPublisherInfo& info( + const_cast< THsPublisherInfo& >( plugin->PublisherInfo() ) ); + + info.iNamespace.Copy( aPublisherInfo.Namespace() ); + + __PRINTS( "*** CAiPluginFactory::CreatePlugin: Done - DeviceStatus plugin updated ***" ); + + 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 ); + // No namespace available or no ecom implementation available + __PRINTS( "*** CAiPluginFactory::CreatePlugin: Done - Failed to Load Plug-in: KErrNotSupported ***" ); + + return KErrNotSupported; } - CAiContentPublisher* plugin( PluginByInfoL( aPublisherInfo ) ); + CHsContentPublisher* plugin( PluginByInfo( aPublisherInfo ) ); if( plugin ) { - User::Leave( KErrAlreadyExists ); + __PRINTS( "*** CAiPluginFactory::CreatePlugin: Done - Failed to Load Plug-in: KErrAlreadyExists ***" ); + + return KErrAlreadyExists; } - - __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 ***" ); + + TInt err( KErrNone ); - // 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 ); + TRAP( err, CreatePluginL( aPublisherInfo ) ); - 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 ( IsDeviceStatus( aPublisherInfo ) ) { + // Don't destroy device status plugin + __PRINTS( "*** CAiPluginFactory::DestroyPlugin: Done - Keepind DeviceStatus 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; - } - - if( iPlugins.Count() == 0 ) - { - for( TInt i = 0; i < iLifecycleObservers.Count(); i++ ) - { - iLifecycleObservers[i]->AllPluginsDestroyed(); - } + plugin = NULL; } - } - -// ---------------------------------------------------------------------------- -// CAiPluginFactory::DestroyPlugins() -// ---------------------------------------------------------------------------- -// -void CAiPluginFactory::DestroyPlugins() - { - for( TInt i = 0; i < iPlugins.Count(); i++ ) - { - CAiContentPublisher* plugin( iPlugins[i] ); - - for( TInt i = 0; i < iLifecycleObservers.Count(); i++ ) - { - iLifecycleObservers[i]->PluginDestroyed( *plugin ); - } - } - - iPlugins.ResetAndDestroy(); - for( TInt i = 0; i < iLifecycleObservers.Count(); i++ ) - { - iLifecycleObservers[i]->AllPluginsDestroyed(); - } + __PRINTS( "*** CAiPluginFactory::DestroyPlugin: Done ***" ); } // ---------------------------------------------------------------------------- -// 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() ) ); + + __TIME( "FW: Create plug-in:", + + iPublishers.ReserveL( iPublishers.Count() + 1 ); + + CHsContentPublisher* plugin = + CHsContentPublisher::NewL( aPublisherInfo ) ); CleanupStack::PushL( plugin ); - - MAiPropertyExtension* ext( iPluginTool->PropertyExt( *plugin ) ); - if( !ext ) - { - User::Leave( KErrNotFound ); - } - - ext->SetPropertyL( EAiPublisherInfo, (TAny*)&aPluginInfo ); + __TIME( "FW: Subscribe content observers", + SubscribeContentObserversL( *plugin, aPublisherInfo ) ); + + __TIME( "FW: Configure Plugin", + ConfigurePluginL( *plugin, aPublisherInfo ) ); - const TAiPublisherInfo* info( ext->PublisherInfoL() ); - - 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& 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 +280,46 @@ // ---------------------------------------------------------------------------- // CAiPluginFactory::ConfigurePluginL() +// // ---------------------------------------------------------------------------- // -void CAiPluginFactory::ConfigurePluginL( - RPointerArray& 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 +327,109 @@ } // ---------------------------------------------------------------------------- -// 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::ResolvePluginsToUpgradeL() +// +// ---------------------------------------------------------------------------- +// +void CAiPluginFactory::ResolvePluginsToUpgradeL( + RArray< THsPublisherInfo >& aArray ) + { + RImplInfoPtrArray ecomPlugins; + CleanupResetAndDestroyPushL( ecomPlugins ); + + REComSession::ListImplementationsL( + KInterfaceUidHsContentPlugin, ecomPlugins ); + + for ( TInt i = 0; i < ecomPlugins.Count(); i++ ) + { + CImplementationInformation* newInformation( ecomPlugins[i] ); + + for( TInt j = 0; j < iEComPlugins.Count(); j++ ) + { + CImplementationInformation* oldInformation( iEComPlugins[j] ); + + if( newInformation->ImplementationUid() == oldInformation->ImplementationUid() ) + { + if( newInformation->Version() != oldInformation->Version() ) + { + for ( TInt k = 0; k < iPublishers.Count(); k++ ) + { + const THsPublisherInfo& info( + iPublishers[k]->PublisherInfo() ); + + if ( info.Uid() == newInformation->ImplementationUid() ) + { + __PRINT( __DBG_FORMAT( "\t[I]\t Plug-in to update uid=%x name=%S namespace=%S, version update %d to %d"), + info.Uid(), &(info.Name()), &(info.Namespace()), oldInformation->Version(), newInformation->Version() ); + + aArray.Append( info ); + } + } + + break; + } + } + } + } + + CleanupStack::PopAndDestroy( &ecomPlugins ); + + // Update ecom plugin array + iEComPlugins.ResetAndDestroy(); + + REComSession::ListImplementationsL( + KInterfaceUidHsContentPlugin, iEComPlugins ); + } + // End of file diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/src/framework/aipluginstatemachineimpl.cpp --- a/idlefw/src/framework/aipluginstatemachineimpl.cpp Tue Feb 02 00:23:10 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. diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/src/framework/aipluginstatemanager.cpp --- a/idlefw/src/framework/aipluginstatemanager.cpp Tue Feb 02 00:23:10 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 -#include -#include // for KSettingsScreenSaverPeriod -#include -#include -#include -#include -#include -#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 // 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 - diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/src/framework/aipsstatusobserver.cpp --- a/idlefw/src/framework/aipsstatusobserver.cpp Tue Feb 02 00:23:10 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 -#include -#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. diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/src/framework/aissaverstatusobserver.cpp --- a/idlefw/src/framework/aissaverstatusobserver.cpp Tue Feb 02 00:23:10 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 -#include "aissaverstatusobserver.h" -#include // 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( 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; - } - diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/src/framework/aistatealive.cpp --- a/idlefw/src/framework/aistatealive.cpp Tue Feb 02 00:23:10 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 diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/src/framework/aistateidle.cpp --- a/idlefw/src/framework/aistateidle.cpp Tue Feb 02 00:23:10 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 diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/src/framework/aistatemanager.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/idlefw/src/framework/aistatemanager.cpp Fri Feb 19 23:07:29 2010 +0200 @@ -0,0 +1,581 @@ +/* +* 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 +#include + +#include "aipluginfactory.h" + +#include "aistatemanager.h" + +#include "debug.h" + +// Constants +_LIT( KOnlineOffline, "online_offline" ); + +// ======== 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() + { + } + +// ---------------------------------------------------------------------------- +// CAiStateManager::CAiStateManager() +// C++ default constructor. +// ---------------------------------------------------------------------------- +// +CAiStateManager::CAiStateManager( CAiPluginFactory& aFactory ) + : iFactory( aFactory ) + { + } + +// ---------------------------------------------------------------------------- +// CAiStateManager::ConstructL() +// 2nd phase constructor +// ---------------------------------------------------------------------------- +// +void CAiStateManager::ConstructL() + { + } + +// ---------------------------------------------------------------------------- +// 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 ) ); + + // 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::NotifyUpdatePlugins() +// +// ---------------------------------------------------------------------------- +// +void CAiStateManager::NotifyUpdatePlugins() + { + __PRINTS( "CAiStateManager::NotifyUpdatePlugins" ); + + RArray< THsPublisherInfo > publishers; + + // Get plugins which has upgrade available + TRAP_IGNORE( iFactory.ResolvePluginsToUpgradeL( publishers ) ); + + for ( TInt i = 0; i < publishers.Count(); i++ ) + { + THsPublisherInfo info( publishers[i] ); + + // Update by destroy - load sequence + NotifyDestroyPlugin( info, EAiFwSystemShutdown ); + NotifyLoadPlugin( info, EAiFwSystemStartup ); + } + + publishers.Reset(); + + __PRINTS( "CAiStateManager::NotifyUpdatePlugins, done" ); + } + +// ---------------------------------------------------------------------------- +// CAiStateManager::OnlineStateInUse() +// +// ---------------------------------------------------------------------------- +// +TBool CAiStateManager::OnlineStateInUse() const + { + __PRINTS( "CAiStateManager::OnlineStateInUse" ); + + RPointerArray< CHsContentPublisher >& plugins( iFactory.Publishers() ); + + for( TInt i = 0; i < plugins.Count(); i++ ) + { + CHsContentPublisher* plugin( plugins[i] ); + + if ( plugin->HasMenuItem( KOnlineOffline() ) ) + { + return ETrue; + } + } + + return EFalse; + } + +// ---------------------------------------------------------------------------- +// 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 ) ); + } + } + } + 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 ); + } + } + + __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 ); + } + } + } + + __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(); + } + } + } + +// ---------------------------------------------------------------------------- +// CAiStateManager::StartPlugin() +// +// ---------------------------------------------------------------------------- +// +void CAiStateManager::StartPlugin( CHsContentPublisher& aPlugin, + CHsContentPublisher::TStartReason aReason ) + { + __PRINTS( "CAiStateManager::StartPlugin" ); + + aPlugin.Start( aReason ); + + if ( iCurrentState == EAlive ) + { + aPlugin.Resume( CHsContentPublisher::EForeground ); + } + else if ( iCurrentState == ESuspended ) + { + aPlugin.Suspend( CHsContentPublisher::EBackground ); + } + + if ( iFlags.IsSet( EIsOnline ) ) + { + aPlugin.SetOnline(); + } + else + { + aPlugin.SetOffline(); + } + } + +// ---------------------------------------------------------------------------- +// CAiStateManager::StopPlugin() +// +// ---------------------------------------------------------------------------- +// +void CAiStateManager::StopPlugin( CHsContentPublisher& aPlugin, + CHsContentPublisher::TStopReason aReason ) + { + __PRINTS( "CAiStateManager::StopPlugin" ); + + if ( iCurrentState == EAlive ) + { + aPlugin.Suspend( CHsContentPublisher::EBackground ); + } + + aPlugin.Stop( aReason ); + } + +// ---------------------------------------------------------------------------- +// 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 ); + } + + // Finally get rid of all plugins + plugins.ResetAndDestroy(); + + __TIME_ENDMARK( "CAiStateManager::DestroyPlugins, done", time ); + } + +// End of file diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/src/framework/aistateprovider.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/idlefw/src/framework/aistateprovider.cpp Fri Feb 19 23:07:29 2010 +0200 @@ -0,0 +1,282 @@ +/* +* 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 +#include +#include + +// User includes +#include +#include +#include +#include "aiecomobserver.h" +#include "aistateobserver.h" + +#include "aistateprovider.h" + +// Constants + +// ======== LOCAL FUNCTIONS ======== + +// ======== MEMBER FUNCTIONS ======== + +// ---------------------------------------------------------------------------- +// CAiStateProvider::NewL() +// Two-phased constructor. +// ---------------------------------------------------------------------------- +// +CAiStateProvider* CAiStateProvider::NewL( + MAiStateObserver& aObserver, CCoeEnv& aCoeEnv ) + { + CAiStateProvider* self = + CAiStateProvider::NewLC( aObserver, aCoeEnv ); + + CleanupStack::Pop( self ); + + return self; + } + +// ---------------------------------------------------------------------------- +// CAiStateProvider::NewLC() +// Two-phased constructor. +// ---------------------------------------------------------------------------- +// +CAiStateProvider* CAiStateProvider::NewLC( + MAiStateObserver& aObserver, CCoeEnv& aCoeEnv ) + { + CAiStateProvider* self = + new ( ELeave ) CAiStateProvider( aObserver, aCoeEnv ); + + CleanupStack::PushL( self ); + self->ConstructL(); + + return self; + } + +// ---------------------------------------------------------------------------- +// CAiStateProvider::~CAiStateProvider() +// C++ default destructor. +// ---------------------------------------------------------------------------- +// +CAiStateProvider::~CAiStateProvider() + { + iObserver.NotifyStateChange( EAiFwUiShutdown ); + + iCoeEnv.RemoveMessageMonitorObserver( *this ); + + delete iEcomObserver; + + iSkinSrv.Close(); + + Release( iBackupRestoreObserver ); + + delete iLightObserver; + } + +// ---------------------------------------------------------------------------- +// CAiStateProvider::CAiStateProvider() +// C++ default constructor. +// ---------------------------------------------------------------------------- +// +CAiStateProvider::CAiStateProvider( MAiStateObserver& aObserver, + CCoeEnv& aCoeEnv ) + : iObserver( aObserver ), iCoeEnv( aCoeEnv ) + { + iObserver.NotifyStateChange( EAiFwUiStartup ); + } + +// ---------------------------------------------------------------------------- +// CAiStateProvider::ConstructL() +// 2nd phase constructor +// ---------------------------------------------------------------------------- +// +void CAiStateProvider::ConstructL() + { + iLightObserver = CHWRMLight::NewL( this ); + + iBackupRestoreObserver = AiUtility::CreatePSPropertyObserverL( + TCallBack( BackupRestoreEvent, this ), + KUidSystemCategory, conn::KUidBackupRestoreKey ); + + User::LeaveIfError( iSkinSrv.Connect( this ) ); + + iEcomObserver = CAiEcomObserver::NewL(); + iEcomObserver->AddObserverL( this ); + + iCoeEnv.AddMessageMonitorObserverL( *this ); + } + +// ---------------------------------------------------------------------------- +// 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() + { + iObserver.NotifyUpdatePlugins(); + } + +// ---------------------------------------------------------------------------- +// 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::OnlineStateInUse() +// +// ---------------------------------------------------------------------------- +// +TBool CAiStateProvider::OnlineStateInUse() const + { + return iObserver.OnlineStateInUse(); + } + +// ---------------------------------------------------------------------------- +// 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; + } + +// End of file + diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/src/framework/aistatesuspended.cpp --- a/idlefw/src/framework/aistatesuspended.cpp Tue Feb 02 00:23:10 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" ); - } - diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/src/framework/aiuicontrollermanager.cpp --- a/idlefw/src/framework/aiuicontrollermanager.cpp Tue Feb 02 00:23:10 2010 +0200 +++ b/idlefw/src/framework/aiuicontrollermanager.cpp Fri Feb 19 23:07:29 2010 +0200 @@ -15,18 +15,19 @@ * */ +// System includes +#include -#include "aiuicontrollermanager.h" +// User includes +#include #include "aiuicontroller.h" -#include "aicontentpublisher.h" #include "aicontentobserver.h" #include "activeidle2domaincrkeys.h" +#include "aifw.h" + +#include "aiuicontrollermanager.h" + #include "aifwpanic.h" -#include -#include -#include - -#include #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 diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/src/framework/aiuiframeworkobserverimpl.cpp --- a/idlefw/src/framework/aiuiframeworkobserverimpl.cpp Tue Feb 02 00:23:10 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 // 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; - } diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/src/idleint/aiuiidleintegration.cpp --- a/idlefw/src/idleint/aiuiidleintegration.cpp Tue Feb 02 00:23:10 2010 +0200 +++ b/idlefw/src/idleint/aiuiidleintegration.cpp Fri Feb 19 23:07:29 2010 +0200 @@ -106,16 +106,10 @@ ->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(); CApaWindowGroupName::FindByAppUid( KAknCapServerUid, iEikEnv.WsSession(), diff -r 1a2a00e78665 -r d0529222e3f0 idlefw/src/utility/caiplugintool.cpp --- a/idlefw/src/utility/caiplugintool.cpp Tue Feb 02 00:23:10 2010 +0200 +++ b/idlefw/src/utility/caiplugintool.cpp Fri Feb 19 23:07:29 2010 +0200 @@ -15,14 +15,29 @@ * */ +// System includes -#include +// User includes +#include + #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( prop ); - } - } - return result; - } - -MAiPropertyExtension* CAiPluginTool::PropertyExt( - CAiContentPublisher& aContentPublisher ) - { - return static_cast( - aContentPublisher.Extension( KExtensionUidProperty ) ); - } - -MAiEventHandlerExtension* CAiPluginTool::EventHandlerExt( - CAiContentPublisher& aContentPublisher ) - { - return static_cast( - aContentPublisher.Extension( KExtensionUidEventHandler ) ); - } - // End of File. - diff -r 1a2a00e78665 -r d0529222e3f0 menucontentsrv/srvsrc/mcsrunningappswgmonitor.cpp --- a/menucontentsrv/srvsrc/mcsrunningappswgmonitor.cpp Tue Feb 02 00:23:10 2010 +0200 +++ b/menucontentsrv/srvsrc/mcsrunningappswgmonitor.cpp Fri Feb 19 23:07:29 2010 +0200 @@ -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 );