diff -r e7aa27f58ae1 -r e1b6206813b4 emailservices/emailserver/cmailhandlerplugin/src/cmailcpsif.cpp --- a/emailservices/emailserver/cmailhandlerplugin/src/cmailcpsif.cpp Tue Feb 02 00:02:40 2010 +0200 +++ b/emailservices/emailserver/cmailhandlerplugin/src/cmailcpsif.cpp Fri Feb 19 22:37:30 2010 +0200 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2008 - 2009 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" @@ -23,7 +23,7 @@ #include #include "emailtrace.h" -#include "CFSMailClient.h" +#include "cfsmailclient.h" #include "cmailcpsif.h" #include "cmailcpsifconsts.h" #include "FreestyleEmailUiConstants.h" @@ -74,6 +74,8 @@ iMsgInterface = GetMessagingInterfaceL(); RegisterForObserverL(); PublisherRegisteryActionL(); + + ResetPublishedDataL( KCPAll ); } // --------------------------------------------------------------------------- @@ -232,6 +234,31 @@ } // --------------------------------------------------------------------------- +// CMailCpsIf::PublishActiveMailboxNameL +// --------------------------------------------------------------------------- +// +void CMailCpsIf::PublishMailboxNameL( + const TInt aInstance, + const TDesC& aMailboxName, + const TDesC8& aAction ) + { + FUNC_LOG; + + TBuf contentType; + contentType.Copy(KContTypeBodyText); + contentType.Append(_L("1")); + + TBuf textKey; + textKey.Copy(KKeyBodyText); + textKey.Append(_L("1")); + + TFSMailMsgId dummy; + + PublishDescriptorL( KPubId, contentType, iInstIdList[aInstance]->Des(), + aMailboxName, textKey, aAction, 0, dummy, dummy ); + } + +// --------------------------------------------------------------------------- // CMailCpsIf::PublishIndicatorIconL // --------------------------------------------------------------------------- // @@ -300,6 +327,71 @@ } // --------------------------------------------------------------------------- +// CMailCpsIf::PublishMailboxIconL +// --------------------------------------------------------------------------- +// +void CMailCpsIf::PublishMailboxIconL( const TInt aInstance, const TDesC& aIconPath ) + { + FUNC_LOG; + + TBuf contentType; + contentType.Copy(KContTypeMailboxIcons); + contentType.Append(_L("1")); + + TBuf8 key; + key.Copy(KKeyMailboxIcons); + key.Append(_L8("1")); + + User::LeaveIfNull( iInstIdList[aInstance] ); + PublishIconReferenceL( + iInstIdList[aInstance]->Des(), + contentType, + key, + aIconPath ); + } + +// --------------------------------------------------------------------------- +// CMailCpsIf::PublishIconReferenceL +// --------------------------------------------------------------------------- +// +void CMailCpsIf::PublishIconReferenceL( + const TDesC& aContentId, + const TDesC& aContentType, + const TDesC8& aKey, + const TDesC& aIconPath ) + { + FUNC_LOG; + CLiwGenericParamList* inparam = &(iServiceHandler->InParamListL()); + CLiwGenericParamList* outparam = &(iServiceHandler->OutParamListL()); + + TLiwGenericParam type( KType, TLiwVariant( KCpData ) ); + inparam->AppendL( type ); + + CLiwDefaultMap* pdatamap = CLiwDefaultMap::NewLC(); + CLiwDefaultMap* datamap = CLiwDefaultMap::NewLC(); + + pdatamap->InsertL( KPublisherId, TLiwVariant( KPubId ) ); + pdatamap->InsertL( KContentType, TLiwVariant( aContentType ) ); + pdatamap->InsertL( KContentId, TLiwVariant( aContentId ) ); + + datamap->InsertL( aKey, TLiwVariant( aIconPath ) ); + + pdatamap->InsertL( KDataMap, TLiwVariant(datamap) ); + TLiwGenericParam item( KItem, TLiwVariant( pdatamap ) ); + inparam->AppendL( item ); + + iMsgInterface->ExecuteCmdL( KAdd, *inparam, *outparam ); + + CleanupStack::PopAndDestroy( datamap ); + CleanupStack::PopAndDestroy( pdatamap ); + + item.Reset(); + type.Reset(); + outparam->Reset(); + inparam->Reset(); + } + +// --------------------------------------------------------------------------- // CMailCpsIf::PublishMailDetailL // --------------------------------------------------------------------------- // @@ -492,6 +584,7 @@ iconIds.Append( KSpace ); id.Num( aBitmapMaskId ); iconIds.Append( id ); + iconIds.Append( _L(")") ); } // The actual image publishing part starts here @@ -668,14 +761,14 @@ // --------------------------------------------------------------------------- // TInt CMailCpsIf::HandleNotifyL( - TInt aErrorCode, + TInt /*aCmdId*/, TInt /*aEventId*/, CLiwGenericParamList& aEventParamList, const CLiwGenericParamList& /*aInParamList*/ ) { FUNC_LOG; PublisherStatusL ( aEventParamList); - return aErrorCode; + return KErrNone; } // --------------------------------------------------------------------------- @@ -751,6 +844,7 @@ TInt widgetInstance = FindWidgetInstanceId(cid->Des()); PublishSetupWizardL(widgetInstance); iMailCpsHandler->UpdateMailboxesL(widgetInstance, cid->Des()); + iMailCpsHandler->UpdateExtAccountL( cid->Des() ); // Widget visible on the homescreen. Publishing allowed. iAllowedToPublish[widgetInstance] = ETrue; iInactive[widgetInstance] = EFalse; @@ -776,6 +870,7 @@ { // Widget removed from homescreen. HBufC* cid = contentid.AllocLC(); + ResetPublishedDataL( cid->Des() ); TInt widgetInstance = FindWidgetInstanceId(cid->Des()); if (widgetInstance != KErrNotFound ) { @@ -799,7 +894,7 @@ { // If no accounts are created launch email wizard // otherwice launch widget settings app - if (iMailCpsHandler->GetMailboxCount()) + if ( iMailCpsHandler->TotalMailboxCountL() ) { HBufC* cid = contentid.AllocLC(); iMailCpsHandler->LaunchWidgetSettingsL(cid->Des()); @@ -877,3 +972,35 @@ return instance; } +// --------------------------------------------------------------------------- +// CMailCpsIf::ResetPublishedDataL +// --------------------------------------------------------------------------- +// +void CMailCpsIf::ResetPublishedDataL( const TDesC& aContentId ) + { + FUNC_LOG; + // Clean up all published data + if( !iMsgInterface ) GetMessagingInterfaceL(); + CLiwGenericParamList* inParam = &(iServiceHandler->InParamListL()); + CLiwGenericParamList* outParam = &(iServiceHandler->OutParamListL()); + + // Fill input param + TLiwGenericParam cptype( KType, TLiwVariant( KCpData )); + inParam->AppendL( cptype ); + + CLiwDefaultMap* cpData = CLiwDefaultMap::NewLC(); + cpData->InsertL( KPublisherId, TLiwVariant( KPubId ) ); + cpData->InsertL( KContentType, TLiwVariant( KCPAll ) ); + cpData->InsertL( KContentId, TLiwVariant( aContentId ) ); + TLiwGenericParam item( KData8, TLiwVariant( cpData ) ); + inParam->AppendL( item ); + + // Execute command + iMsgInterface->ExecuteCmdL( KDelete , *inParam, *outParam ); + + CleanupStack::PopAndDestroy( cpData ); + item.Reset(); + cptype.Reset(); + outParam->Reset(); + inParam->Reset(); + }