emailservices/emailserver/cmailhandlerplugin/src/cmailcpsif.cpp
branchRCL_3
changeset 8 e1b6206813b4
parent 4 e7aa27f58ae1
child 10 f5907b1a1053
equal deleted inserted replaced
4:e7aa27f58ae1 8:e1b6206813b4
     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     }