1 /* |
1 /* |
2 * Copyright (c) 2008 - 2009 Nokia Corporation and/or its subsidiary(-ies). |
2 * Copyright (c) 2008 - 2010 Nokia Corporation and/or its subsidiary(-ies). |
3 * All rights reserved. |
3 * All rights reserved. |
4 * This component and the accompanying materials are made available |
4 * This component and the accompanying materials are made available |
5 * under the terms of "Eclipse Public License v1.0" |
5 * under the terms of "Eclipse Public License v1.0" |
6 * which accompanies this distribution, and is available |
6 * which accompanies this distribution, and is available |
7 * at the URL "http://www.eclipse.org/legal/epl-v10.html". |
7 * at the URL "http://www.eclipse.org/legal/epl-v10.html". |
21 #include <bautils.h> |
21 #include <bautils.h> |
22 #include <StringLoader.h> |
22 #include <StringLoader.h> |
23 #include <emailwidget.rsg> |
23 #include <emailwidget.rsg> |
24 |
24 |
25 #include "emailtrace.h" |
25 #include "emailtrace.h" |
26 #include "CFSMailClient.h" |
26 #include "cfsmailclient.h" |
27 #include "cmailcpsif.h" |
27 #include "cmailcpsif.h" |
28 #include "cmailcpsifconsts.h" |
28 #include "cmailcpsifconsts.h" |
29 #include "FreestyleEmailUiConstants.h" |
29 #include "FreestyleEmailUiConstants.h" |
30 #include "cmailwidgetcenrepkeysinternal.h" |
30 #include "cmailwidgetcenrepkeysinternal.h" |
31 |
31 |
72 |
72 |
73 AllocateResourcesL(); |
73 AllocateResourcesL(); |
74 iMsgInterface = GetMessagingInterfaceL(); |
74 iMsgInterface = GetMessagingInterfaceL(); |
75 RegisterForObserverL(); |
75 RegisterForObserverL(); |
76 PublisherRegisteryActionL(); |
76 PublisherRegisteryActionL(); |
|
77 |
|
78 ResetPublishedDataL( KCPAll ); |
77 } |
79 } |
78 |
80 |
79 // --------------------------------------------------------------------------- |
81 // --------------------------------------------------------------------------- |
80 // CMailCpsIf::~CMailCpsIf |
82 // CMailCpsIf::~CMailCpsIf |
81 // --------------------------------------------------------------------------- |
83 // --------------------------------------------------------------------------- |
230 textKey, KTriggerEmailUi8, aMailBoxCount, |
232 textKey, KTriggerEmailUi8, aMailBoxCount, |
231 aMailBoxId, aFolderId); |
233 aMailBoxId, aFolderId); |
232 } |
234 } |
233 |
235 |
234 // --------------------------------------------------------------------------- |
236 // --------------------------------------------------------------------------- |
|
237 // CMailCpsIf::PublishActiveMailboxNameL |
|
238 // --------------------------------------------------------------------------- |
|
239 // |
|
240 void CMailCpsIf::PublishMailboxNameL( |
|
241 const TInt aInstance, |
|
242 const TDesC& aMailboxName, |
|
243 const TDesC8& aAction ) |
|
244 { |
|
245 FUNC_LOG; |
|
246 |
|
247 TBuf<KMaxDescLen> contentType; |
|
248 contentType.Copy(KContTypeBodyText); |
|
249 contentType.Append(_L("1")); |
|
250 |
|
251 TBuf<KMaxDescLen> textKey; |
|
252 textKey.Copy(KKeyBodyText); |
|
253 textKey.Append(_L("1")); |
|
254 |
|
255 TFSMailMsgId dummy; |
|
256 |
|
257 PublishDescriptorL( KPubId, contentType, iInstIdList[aInstance]->Des(), |
|
258 aMailboxName, textKey, aAction, 0, dummy, dummy ); |
|
259 } |
|
260 |
|
261 // --------------------------------------------------------------------------- |
235 // CMailCpsIf::PublishIndicatorIconL |
262 // CMailCpsIf::PublishIndicatorIconL |
236 // --------------------------------------------------------------------------- |
263 // --------------------------------------------------------------------------- |
237 // |
264 // |
238 void CMailCpsIf::PublishIndicatorIconL( const TInt aInstance, |
265 void CMailCpsIf::PublishIndicatorIconL( const TInt aInstance, |
239 const TInt aRowNumber, |
266 const TInt aRowNumber, |
295 contentType, |
322 contentType, |
296 key, |
323 key, |
297 aIcon, |
324 aIcon, |
298 aIcon + 1, |
325 aIcon + 1, |
299 aMailBoxId); |
326 aMailBoxId); |
|
327 } |
|
328 |
|
329 // --------------------------------------------------------------------------- |
|
330 // CMailCpsIf::PublishMailboxIconL |
|
331 // --------------------------------------------------------------------------- |
|
332 // |
|
333 void CMailCpsIf::PublishMailboxIconL( const TInt aInstance, const TDesC& aIconPath ) |
|
334 { |
|
335 FUNC_LOG; |
|
336 |
|
337 TBuf<KMaxDescLen> contentType; |
|
338 contentType.Copy(KContTypeMailboxIcons); |
|
339 contentType.Append(_L("1")); |
|
340 |
|
341 TBuf8<KMaxDescLen> key; |
|
342 key.Copy(KKeyMailboxIcons); |
|
343 key.Append(_L8("1")); |
|
344 |
|
345 User::LeaveIfNull( iInstIdList[aInstance] ); |
|
346 PublishIconReferenceL( |
|
347 iInstIdList[aInstance]->Des(), |
|
348 contentType, |
|
349 key, |
|
350 aIconPath ); |
|
351 } |
|
352 |
|
353 // --------------------------------------------------------------------------- |
|
354 // CMailCpsIf::PublishIconReferenceL |
|
355 // --------------------------------------------------------------------------- |
|
356 // |
|
357 void CMailCpsIf::PublishIconReferenceL( |
|
358 const TDesC& aContentId, |
|
359 const TDesC& aContentType, |
|
360 const TDesC8& aKey, |
|
361 const TDesC& aIconPath ) |
|
362 { |
|
363 FUNC_LOG; |
|
364 CLiwGenericParamList* inparam = &(iServiceHandler->InParamListL()); |
|
365 CLiwGenericParamList* outparam = &(iServiceHandler->OutParamListL()); |
|
366 |
|
367 TLiwGenericParam type( KType, TLiwVariant( KCpData ) ); |
|
368 inparam->AppendL( type ); |
|
369 |
|
370 CLiwDefaultMap* pdatamap = CLiwDefaultMap::NewLC(); |
|
371 CLiwDefaultMap* datamap = CLiwDefaultMap::NewLC(); |
|
372 |
|
373 pdatamap->InsertL( KPublisherId, TLiwVariant( KPubId ) ); |
|
374 pdatamap->InsertL( KContentType, TLiwVariant( aContentType ) ); |
|
375 pdatamap->InsertL( KContentId, TLiwVariant( aContentId ) ); |
|
376 |
|
377 datamap->InsertL( aKey, TLiwVariant( aIconPath ) ); |
|
378 |
|
379 pdatamap->InsertL( KDataMap, TLiwVariant(datamap) ); |
|
380 TLiwGenericParam item( KItem, TLiwVariant( pdatamap ) ); |
|
381 inparam->AppendL( item ); |
|
382 |
|
383 iMsgInterface->ExecuteCmdL( KAdd, *inparam, *outparam ); |
|
384 |
|
385 CleanupStack::PopAndDestroy( datamap ); |
|
386 CleanupStack::PopAndDestroy( pdatamap ); |
|
387 |
|
388 item.Reset(); |
|
389 type.Reset(); |
|
390 outparam->Reset(); |
|
391 inparam->Reset(); |
300 } |
392 } |
301 |
393 |
302 // --------------------------------------------------------------------------- |
394 // --------------------------------------------------------------------------- |
303 // CMailCpsIf::PublishMailDetailL |
395 // CMailCpsIf::PublishMailDetailL |
304 // --------------------------------------------------------------------------- |
396 // --------------------------------------------------------------------------- |
490 id.Num( aBitmapId ); |
582 id.Num( aBitmapId ); |
491 iconIds.Append( id ); |
583 iconIds.Append( id ); |
492 iconIds.Append( KSpace ); |
584 iconIds.Append( KSpace ); |
493 id.Num( aBitmapMaskId ); |
585 id.Num( aBitmapMaskId ); |
494 iconIds.Append( id ); |
586 iconIds.Append( id ); |
|
587 iconIds.Append( _L(")") ); |
495 } |
588 } |
496 |
589 |
497 // The actual image publishing part starts here |
590 // The actual image publishing part starts here |
498 CLiwGenericParamList* inparam = &(iServiceHandler->InParamListL()); |
591 CLiwGenericParamList* inparam = &(iServiceHandler->InParamListL()); |
499 CLiwGenericParamList* outparam = &(iServiceHandler->OutParamListL()); |
592 CLiwGenericParamList* outparam = &(iServiceHandler->OutParamListL()); |
666 // --------------------------------------------------------------------------- |
759 // --------------------------------------------------------------------------- |
667 // Notification handling |
760 // Notification handling |
668 // --------------------------------------------------------------------------- |
761 // --------------------------------------------------------------------------- |
669 // |
762 // |
670 TInt CMailCpsIf::HandleNotifyL( |
763 TInt CMailCpsIf::HandleNotifyL( |
671 TInt aErrorCode, |
764 TInt /*aCmdId*/, |
672 TInt /*aEventId*/, |
765 TInt /*aEventId*/, |
673 CLiwGenericParamList& aEventParamList, |
766 CLiwGenericParamList& aEventParamList, |
674 const CLiwGenericParamList& /*aInParamList*/ ) |
767 const CLiwGenericParamList& /*aInParamList*/ ) |
675 { |
768 { |
676 FUNC_LOG; |
769 FUNC_LOG; |
677 PublisherStatusL ( aEventParamList); |
770 PublisherStatusL ( aEventParamList); |
678 return aErrorCode; |
771 return KErrNone; |
679 } |
772 } |
680 |
773 |
681 // --------------------------------------------------------------------------- |
774 // --------------------------------------------------------------------------- |
682 // Check if Publisher was activeated or deactivated |
775 // Check if Publisher was activeated or deactivated |
683 // --------------------------------------------------------------------------- |
776 // --------------------------------------------------------------------------- |
749 iInstIdList.AppendL( contentid.AllocL() ); |
842 iInstIdList.AppendL( contentid.AllocL() ); |
750 } |
843 } |
751 TInt widgetInstance = FindWidgetInstanceId(cid->Des()); |
844 TInt widgetInstance = FindWidgetInstanceId(cid->Des()); |
752 PublishSetupWizardL(widgetInstance); |
845 PublishSetupWizardL(widgetInstance); |
753 iMailCpsHandler->UpdateMailboxesL(widgetInstance, cid->Des()); |
846 iMailCpsHandler->UpdateMailboxesL(widgetInstance, cid->Des()); |
|
847 iMailCpsHandler->UpdateExtAccountL( cid->Des() ); |
754 // Widget visible on the homescreen. Publishing allowed. |
848 // Widget visible on the homescreen. Publishing allowed. |
755 iAllowedToPublish[widgetInstance] = ETrue; |
849 iAllowedToPublish[widgetInstance] = ETrue; |
756 iInactive[widgetInstance] = EFalse; |
850 iInactive[widgetInstance] = EFalse; |
757 CleanupStack::PopAndDestroy( cid ); |
851 CleanupStack::PopAndDestroy( cid ); |
758 } |
852 } |
774 } |
868 } |
775 else if (trigger.Compare(KDeActive16) == 0) |
869 else if (trigger.Compare(KDeActive16) == 0) |
776 { |
870 { |
777 // Widget removed from homescreen. |
871 // Widget removed from homescreen. |
778 HBufC* cid = contentid.AllocLC(); |
872 HBufC* cid = contentid.AllocLC(); |
|
873 ResetPublishedDataL( cid->Des() ); |
779 TInt widgetInstance = FindWidgetInstanceId(cid->Des()); |
874 TInt widgetInstance = FindWidgetInstanceId(cid->Des()); |
780 if (widgetInstance != KErrNotFound ) |
875 if (widgetInstance != KErrNotFound ) |
781 { |
876 { |
782 if (!iInactive[widgetInstance]) |
877 if (!iInactive[widgetInstance]) |
783 { |
878 { |
797 else if ((trigger.Compare(KTriggerWizard) == 0) || |
892 else if ((trigger.Compare(KTriggerWizard) == 0) || |
798 ( trigger.Compare(KSettings16) == 0)) |
893 ( trigger.Compare(KSettings16) == 0)) |
799 { |
894 { |
800 // If no accounts are created launch email wizard |
895 // If no accounts are created launch email wizard |
801 // otherwice launch widget settings app |
896 // otherwice launch widget settings app |
802 if (iMailCpsHandler->GetMailboxCount()) |
897 if ( iMailCpsHandler->TotalMailboxCountL() ) |
803 { |
898 { |
804 HBufC* cid = contentid.AllocLC(); |
899 HBufC* cid = contentid.AllocLC(); |
805 iMailCpsHandler->LaunchWidgetSettingsL(cid->Des()); |
900 iMailCpsHandler->LaunchWidgetSettingsL(cid->Des()); |
806 CleanupStack::PopAndDestroy( cid ); |
901 CleanupStack::PopAndDestroy( cid ); |
807 } |
902 } |
875 } |
970 } |
876 } |
971 } |
877 return instance; |
972 return instance; |
878 } |
973 } |
879 |
974 |
|
975 // --------------------------------------------------------------------------- |
|
976 // CMailCpsIf::ResetPublishedDataL |
|
977 // --------------------------------------------------------------------------- |
|
978 // |
|
979 void CMailCpsIf::ResetPublishedDataL( const TDesC& aContentId ) |
|
980 { |
|
981 FUNC_LOG; |
|
982 // Clean up all published data |
|
983 if( !iMsgInterface ) GetMessagingInterfaceL(); |
|
984 CLiwGenericParamList* inParam = &(iServiceHandler->InParamListL()); |
|
985 CLiwGenericParamList* outParam = &(iServiceHandler->OutParamListL()); |
|
986 |
|
987 // Fill input param |
|
988 TLiwGenericParam cptype( KType, TLiwVariant( KCpData )); |
|
989 inParam->AppendL( cptype ); |
|
990 |
|
991 CLiwDefaultMap* cpData = CLiwDefaultMap::NewLC(); |
|
992 cpData->InsertL( KPublisherId, TLiwVariant( KPubId ) ); |
|
993 cpData->InsertL( KContentType, TLiwVariant( KCPAll ) ); |
|
994 cpData->InsertL( KContentId, TLiwVariant( aContentId ) ); |
|
995 TLiwGenericParam item( KData8, TLiwVariant( cpData ) ); |
|
996 inParam->AppendL( item ); |
|
997 |
|
998 // Execute command |
|
999 iMsgInterface->ExecuteCmdL( KDelete , *inParam, *outParam ); |
|
1000 |
|
1001 CleanupStack::PopAndDestroy( cpData ); |
|
1002 item.Reset(); |
|
1003 cptype.Reset(); |
|
1004 outParam->Reset(); |
|
1005 inParam->Reset(); |
|
1006 } |