--- a/emailservices/emailserver/cmailhandlerplugin/src/cmailcpsif.cpp Wed Apr 14 15:42:15 2010 +0300
+++ b/emailservices/emailserver/cmailhandlerplugin/src/cmailcpsif.cpp Tue Apr 27 16:20:14 2010 +0300
@@ -95,7 +95,10 @@
iMsgInterface = NULL;
}
delete iServiceHandler;
- iInstIdList.ResetAndDestroy();
+ for ( TInt i = 0; i < iInstIdList.Count(); i++ )
+ {
+ iInstIdList.Remove(i);
+ }
CCoeEnv::Static()->DeleteResourceFile( iResourceFileOffset );
if ( iContentControlClient )
{
@@ -180,22 +183,24 @@
// CMailCpsIf::PublishSetupWizardL
// ---------------------------------------------------------------------------
//
-void CMailCpsIf::PublishSetupWizardL(TInt instance)
+void CMailCpsIf::PublishSetupWizardL(TInt aInstance)
{
FUNC_LOG;
- TFSMailMsgId mailBoxId;
- TFSMailMsgId folderId;
-
- HBufC* setupEmail = StringLoader::LoadLC(R_EMAILWIDGET_TEXT_SETUP_EMAIL);
+ if (!iInstIdList[aInstance].iWizardPublished)
+ {
+ TFSMailMsgId mailBoxId;
+ TFSMailMsgId folderId;
- iSetupUid = PublishDescriptorL(
+ HBufC* setupEmail = StringLoader::LoadLC(R_EMAILWIDGET_TEXT_SETUP_EMAIL);
+
+ iSetupUid = PublishDescriptorL(
KPubId, KContTypeSetupText,
- iInstIdList[instance]->Des(),
+ iInstIdList[aInstance].iCid,
*setupEmail,
- KKeySetupText, KTriggerWizard8);
+ KKeySetupText, KTriggerWizard8);
- PublishImageL(
- iInstIdList[instance]->Des(),
+ PublishImageL(
+ iInstIdList[aInstance].iCid,
KContTypeSetupIcon,
KKeySetupIcon,
EMbmCmailhandlerpluginQgn_prop_cmail_new_mailbox,
@@ -203,8 +208,8 @@
mailBoxId,
KNullDes);
- PublishImageL(
- iInstIdList[instance]->Des(),
+ PublishImageL(
+ iInstIdList[aInstance].iCid,
KContTypeSetupBrandIcon1,
KKeySetupBrandIcon1,
EMbmCmailhandlerpluginQgn_indi_cmail_drop_email_account,
@@ -212,8 +217,8 @@
mailBoxId,
KSetupBrand1);
- PublishImageL(
- iInstIdList[instance]->Des(),
+ PublishImageL(
+ iInstIdList[aInstance].iCid,
KContTypeSetupBrandIcon2,
KKeySetupBrandIcon2,
EMbmCmailhandlerpluginQgn_indi_cmail_drop_email_account,
@@ -221,8 +226,8 @@
mailBoxId,
KSetupBrand2);
- PublishImageL(
- iInstIdList[instance]->Des(),
+ PublishImageL(
+ iInstIdList[aInstance].iCid,
KContTypeSetupBrandIcon3,
KKeySetupBrandIcon3,
EMbmCmailhandlerpluginQgn_indi_cmail_drop_email_account,
@@ -230,16 +235,17 @@
mailBoxId,
KSetupBrand3);
- PublishImageL(
- iInstIdList[instance]->Des(),
+ PublishImageL(
+ iInstIdList[aInstance].iCid,
KContTypeSetupBrandIcon4,
KKeySetupBrandIcon4,
EMbmCmailhandlerpluginQgn_indi_cmail_drop_email_account,
EMbmCmailhandlerpluginQgn_indi_cmail_drop_email_account_mask,
mailBoxId,
- KSetupBrand4);
-
- CleanupStack::PopAndDestroy(setupEmail);
+ KSetupBrand4);
+ iInstIdList[aInstance].iWizardPublished = ETrue;
+ CleanupStack::PopAndDestroy(setupEmail);
+ }
}
// ---------------------------------------------------------------------------
@@ -266,7 +272,7 @@
iMailboxNameUid = PublishDescriptorL(
KPubId, contentType,
- iInstIdList[aInstance]->Des(),
+ iInstIdList[aInstance].iCid,
aMailboxName,
textKey, KTriggerEmailUi8);
}
@@ -292,8 +298,8 @@
TFSMailMsgId dummy;
- PublishDescriptorL( KPubId, contentType, iInstIdList[aInstance]->Des(),
- aMailboxName, textKey, aAction);
+ PublishDescriptorL( KPubId, contentType, iInstIdList[aInstance].iCid,
+ aMailboxName, textKey, aAction);
}
// ---------------------------------------------------------------------------
@@ -322,7 +328,7 @@
key.Append(row8);
PublishImageL(
- iInstIdList[aInstance]->Des(),
+ iInstIdList[aInstance].iCid,
contentType,
key,
aIcon,
@@ -357,7 +363,7 @@
key.Append(row8);
PublishImageL(
- iInstIdList[aInstance]->Des(),
+ iInstIdList[aInstance].iCid,
contentType,
key,
aIcon,
@@ -382,9 +388,10 @@
key.Copy(KKeyMailboxIcons);
key.Append(_L8("1"));
- User::LeaveIfNull( iInstIdList[aInstance] );
+ if ( GetWidgetInstanceCount() <= aInstance ) User::LeaveIfError( KErrNotFound );
+
PublishIconReferenceL(
- iInstIdList[aInstance]->Des(),
+ iInstIdList[aInstance].iCid,
contentType,
key,
aIconPath );
@@ -480,7 +487,7 @@
iMailboxNameUid = PublishDescriptorL(
KPubId, contentType,
- iInstIdList[aInstance]->Des(),
+ iInstIdList[aInstance].iCid,
aText,
textKey, KNullDes8);
}
@@ -895,7 +902,7 @@
{
// Publishing to homescreen suspended.
HBufC* cid = contentid.AllocLC();
- TInt widgetInstance = FindWidgetInstanceId(cid->Des());
+ TInt widgetInstance = GetWidgetInstanceId(cid->Des());
if(widgetInstance>=0)
iAllowedToPublish[widgetInstance] = EFalse;
CleanupStack::PopAndDestroy( cid );
@@ -903,15 +910,19 @@
else if (trigger.Compare(KResume16) == 0)
{
HBufC* cid = contentid.AllocLC();
- if ( FindWidgetInstanceId(cid->Des()) < 0 )
+ if ( GetWidgetInstanceId(cid->Des()) < 0 )
{
- iInstIdList.AppendL( contentid.AllocL() );
+ TInstIdInfo instIdInfo;
+ instIdInfo.iCid.Copy(cid->Des());
+ instIdInfo.iUpdateNeeded = ETrue;
+ instIdInfo.iWizardPublished = EFalse;
+ iInstIdList.AppendL(instIdInfo);
}
- TInt widgetInstance = FindWidgetInstanceId(cid->Des());
+ TInt widgetInstance = GetWidgetInstanceId(cid->Des());
if(widgetInstance>=0)// coverity fix, index can be negativ, allowed 0, since it is valid index
{
- PublishSetupWizardL(widgetInstance);
iMailCpsHandler->UpdateMailboxesL(widgetInstance, cid->Des());
+ PublishSetupWizardL(widgetInstance);
// Widget visible on the homescreen. Publishing allowed.
iAllowedToPublish[widgetInstance] = ETrue;
}
@@ -923,7 +934,11 @@
HBufC* cid = contentid.AllocLC();
if ( cid->Length() > 0 )
{
- iInstIdList.AppendL( contentid.AllocL() );
+ TInstIdInfo instIdInfo;
+ instIdInfo.iCid.Copy(cid->Des());
+ instIdInfo.iUpdateNeeded = ETrue;
+ instIdInfo.iWizardPublished = EFalse;
+ iInstIdList.AppendL(instIdInfo);
TFSMailMsgId mailBox( iMailCpsHandler->WaitingForNewWidget() );
if ( mailBox.Id() > 0 )
{
@@ -950,7 +965,7 @@
HBufC* cid = contentid.AllocLC();
ResetPublishedDataL( cid->Des() );
iMailCpsHandler->DissociateWidgetFromSettingL( cid->Des() );
- TInt widgetInstance = FindWidgetInstanceId( cid->Des() );
+ TInt widgetInstance = GetWidgetInstanceId( cid->Des() );
if (widgetInstance != KErrNotFound )
{
iInstIdList.Remove(widgetInstance);
@@ -1027,16 +1042,16 @@
// ---------------------------------------------------------------------------
-// CMailCpsIf::FindWidgetInstanceId
+// CMailCpsIf::GetWidgetInstanceId
// ---------------------------------------------------------------------------
//
-TInt CMailCpsIf::FindWidgetInstanceId( const TDesC& aContentId )
+TInt CMailCpsIf::GetWidgetInstanceId( const TDesC& aContentId )
{
FUNC_LOG;
TInt instance(KErrNotFound);
- for (TInt i = 0; i < iInstIdList.Count(); i++)
+ for (TInt i = 0; i < iInstIdList.Count(); i++)
{
- TInt val = aContentId.Compare(iInstIdList[i]->Des());
+ TInt val = aContentId.Compare(iInstIdList[i].iCid);
if (!val)
{
instance = i;
@@ -1092,11 +1107,11 @@
for ( TInt i = 0; i < iInstIdList.Count(); i++ )
{
- if ( !iMailCpsHandler->Associated(iInstIdList[i]->Des()) )
+ if ( !iMailCpsHandler->Associated(iInstIdList[i].iCid) )
{
// Empty e-mail widget found. Associate new account to it.
iMailCpsHandler->AssociateWidgetToSetting(
- iInstIdList[i]->Des(),
+ iInstIdList[i].iCid,
aMailbox );
return;
}
@@ -1157,3 +1172,23 @@
FUNC_LOG;
}
+// ---------------------------------------------------------------------------
+// CMailCpsIf::SetUpdateNeeded
+// ---------------------------------------------------------------------------
+//
+void CMailCpsIf::SetUpdateNeeded( const TInt aInstance, const TBool aValue )
+ {
+ FUNC_LOG;
+ iInstIdList[aInstance].iUpdateNeeded = aValue;
+ }
+
+// ---------------------------------------------------------------------------
+// CMailCpsIf::UpdateNeeded
+// ---------------------------------------------------------------------------
+//
+TBool CMailCpsIf::UpdateNeeded( const TInt aInstance )
+ {
+ FUNC_LOG;
+ return iInstIdList[aInstance].iUpdateNeeded;
+ }
+