phonebookui/Phonebook2/ccapplication/ccamycardplugin/src/ccappmycardcontainer.cpp
branchRCL_3
changeset 6 e8e3147d53eb
parent 3 04ab22b956c2
child 7 b3431bff8c19
equal deleted inserted replaced
5:81f8547efd4f 6:e8e3147d53eb
    23 #include <eiktxlbm.h>
    23 #include <eiktxlbm.h>
    24 #include <barsread.h>
    24 #include <barsread.h>
    25 #include <AknsDrawUtils.h>
    25 #include <AknsDrawUtils.h>
    26 #include <AknsBasicBackgroundControlContext.h>
    26 #include <AknsBasicBackgroundControlContext.h>
    27 #include <AknUtils.h>
    27 #include <AknUtils.h>
       
    28 #include <s32mem.h>
    28 
    29 
    29 #include <MPbk2ContactNameFormatter.h>
    30 #include <MPbk2ContactNameFormatter.h>
    30 #include <MVPbkStoreContact.h>
    31 #include <MVPbkStoreContact.h>
    31 #include <CPbk2IconArray.h>
    32 #include <CPbk2IconArray.h>
    32 #include <Pbk2UIControls.rsg>
    33 #include <Pbk2UIControls.rsg>
    37 #include "ccappmycard.hrh"
    38 #include "ccappmycard.hrh"
    38 #include "ccappmycard.h"
    39 #include "ccappmycard.h"
    39 #include "ccappmycardcontainer.h"
    40 #include "ccappmycardcontainer.h"
    40 #include "ccappmycardcommon.h"
    41 #include "ccappmycardcommon.h"
    41 #include "ccappmycardheadercontrol.h"
    42 #include "ccappmycardheadercontrol.h"
    42 #include "ccappmycardlistboxmodel.h"
       
    43 #include "ccappmycardplugin.h"
    43 #include "ccappmycardplugin.h"
    44 #include "ccafactoryextensionnotifier.h"
    44 #include "ccafactoryextensionnotifier.h"
    45 #include "spbcontentprovider.h"
    45 
       
    46 #include <spbcontentprovider.h>
       
    47 #include <spbcontactdatamodel.h> 
    46 
    48 
    47 #include <MVPbkContactFieldTextData.h>
    49 #include <MVPbkContactFieldTextData.h>
    48 #include <ccaextensionfactory.hrh>
    50 #include <ccaextensionfactory.hrh>
       
    51 #include <mccaparameter.h>
    49 
    52 
    50 #include <aknlayoutscalable_avkon.cdl.h>
    53 #include <aknlayoutscalable_avkon.cdl.h>
    51 #include <layoutmetadata.cdl.h>
    54 #include <layoutmetadata.cdl.h>
    52 #include <AknsUtils.h>
    55 #include <AknsUtils.h>
    53 #include <ccappmycardpluginrsc.rsg>
    56 #include <ccappmycardpluginrsc.rsg>
    63 #include <RPbk2LocalizedResourceFile.h>
    66 #include <RPbk2LocalizedResourceFile.h>
    64 #include <Pbk2DataCaging.hrh>
    67 #include <Pbk2DataCaging.hrh>
    65 #include <pbk2nameordercenrep.h>
    68 #include <pbk2nameordercenrep.h>
    66 #include <centralrepository.h>
    69 #include <centralrepository.h>
    67 #include <Phonebook2PrivateCRKeys.h>
    70 #include <Phonebook2PrivateCRKeys.h>
       
    71 #include <CPbk2PresentationContact.h>
       
    72 #include <CPbk2PresentationContactFieldCollection.h>
    68 
    73 
    69 #include <CPbk2ApplicationServices.h>
    74 #include <CPbk2ApplicationServices.h>
    70 #include <CPbk2ServiceManager.h>
    75 #include <CPbk2ServiceManager.h>
    71 #include <TPbk2IconId.h>
    76 #include <TPbk2IconId.h>
    72 #include <CPbk2IconInfo.h>
    77 #include <CPbk2IconInfo.h>
    73 
    78 #include <csxhelp/phob.hlp.hrh>
       
    79 #include <Pbk2UID.h>
       
    80 
       
    81 #include <f32file.h>
    74 
    82 
    75 // unnamed namespace
    83 // unnamed namespace
    76 namespace
    84 namespace
    77 {
    85 {
    78 _LIT( KMyCardIconDefaultFileName, "\\resource\\apps\\phonebook2ece.mif" );
    86 _LIT( KMyCardIconDefaultFileName, "\\resource\\apps\\phonebook2ece.mif" );
    79 const TText KLineChange = '\n';
       
    80 const TInt KSubComponentCount = 2;
    87 const TInt KSubComponentCount = 2;
    81 const TInt KNumberOfContacts = 1;
    88 const TInt KNumberOfContacts = 1;
    82 const TInt KNoContacts = 0;
    89 const TInt KNoContacts = 0;
    83 const TInt KPbk2UiSpecNameOrderFirstNameLastName = 0;
    90 const TInt KPbk2UiSpecNameOrderFirstNameLastName = 0;
    84 const TInt KPbk2UiSpecNameOrderLastNameFirstName = 1;
    91 const TInt KPbk2UiSpecNameOrderLastNameFirstName = 1;
    91 // ----------------------------------------------------------------------------
    98 // ----------------------------------------------------------------------------
    92 //
    99 //
    93 CCCAppMyCardContainer::CCCAppMyCardContainer(
   100 CCCAppMyCardContainer::CCCAppMyCardContainer(
    94     CCCAppMyCardPlugin& aPlugin ) :
   101     CCCAppMyCardPlugin& aPlugin ) :
    95     iPlugin( aPlugin ),
   102     iPlugin( aPlugin ),
       
   103     iModel( aPlugin.Model() ),
    96     iNameOrder(KPbk2UiSpecNameOrderFirstNameLastName)
   104     iNameOrder(KPbk2UiSpecNameOrderFirstNameLastName)
    97     {
   105     {
    98     }
   106     }
    99 
   107 
   100 // ----------------------------------------------------------------------------
   108 // ----------------------------------------------------------------------------
   101 // CCCAppMyCardContainer::~CCCAppMyCardContainer()
   109 // CCCAppMyCardContainer::~CCCAppMyCardContainer()
   102 // ----------------------------------------------------------------------------
   110 // ----------------------------------------------------------------------------
   103 //
   111 //
   104 CCCAppMyCardContainer::~CCCAppMyCardContainer()
   112 CCCAppMyCardContainer::~CCCAppMyCardContainer()
   105     {
   113     {
       
   114     iModel.SetClipListBoxText( NULL );
   106 	iPlugin.MyCard().RemoveObserver( this );
   115 	iPlugin.MyCard().RemoveObserver( this );
   107 	delete iBackground;
   116 	delete iBackground;
   108     delete iHeaderCtrl;
   117     delete iHeaderCtrl;
   109     delete iListBox;
   118     delete iListBox;
   110     delete iImageLoader;
   119     delete iImageLoader;
   134 
   143 
   135     // Details list UI control
   144     // Details list UI control
   136     iListBox = new(ELeave) CAknFormDoubleGraphicStyleListBox;
   145     iListBox = new(ELeave) CAknFormDoubleGraphicStyleListBox;
   137     iListBox->ConstructL( this, EAknListBoxSelectionList );
   146     iListBox->ConstructL( this, EAknListBoxSelectionList );
   138     iListBox->SetContainerWindowL( *this );
   147     iListBox->SetContainerWindowL( *this );
   139 
   148     iListBox->EnableStretching( EFalse );
       
   149     
   140     // Setup listbox
   150     // Setup listbox
   141     iListBox->View()->SetListEmptyTextL( KNullDesC );
   151     iListBox->View()->SetListEmptyTextL( KNullDesC );
   142     iListBox->CreateScrollBarFrameL( ETrue );
   152     iListBox->CreateScrollBarFrameL( ETrue );
   143     iListBox->ScrollBarFrame()->SetScrollBarVisibilityL(
   153     iListBox->ScrollBarFrame()->SetScrollBarVisibilityL(
   144         CEikScrollBarFrame::EOff,
   154         CEikScrollBarFrame::EOff,
   145         CEikScrollBarFrame::EAuto );
   155         CEikScrollBarFrame::EAuto );
   146 
   156 
   147     // Create icons for listbox.
   157     // Create icons for listbox.
   148     TResourceReader reader;
   158     TResourceReader reader;
   149     iCoeEnv->CreateResourceReaderLC( reader, R_PBK2_FIELDTYPE_ICONS );
   159     iCoeEnv->CreateResourceReaderLC( reader, R_PBK2_FIELDTYPE_ICONS );
   150     CPbk2IconArray* iconArray = CPbk2IconArray::NewL( reader );
   160     iIconArray = CPbk2IconArray::NewL( reader );
   151   
   161   
   152     // Calculate preferred size for xsp service icons.
   162     // Calculate preferred size for xsp service icons.
   153     TRect mainPane;
   163     TRect mainPane;
   154     AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EMainPane, mainPane );
   164     AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EMainPane, mainPane );
   155     TAknLayoutRect listLayoutRect;
   165     TAknLayoutRect listLayoutRect;
   179                       service.iMask,
   189                       service.iMask,
   180                       size );
   190                       size );
   181             TPbk2IconId id = TPbk2IconId( uid, service.iBitmapId );
   191             TPbk2IconId id = TPbk2IconId( uid, service.iBitmapId );
   182             CPbk2IconInfo* info = CPbk2IconInfo::NewLC(
   192             CPbk2IconInfo* info = CPbk2IconInfo::NewLC(
   183                id, service.iBitmap, service.iMask, size );
   193                id, service.iBitmap, service.iMask, size );
   184             iconArray->AppendIconL( info );
   194             iIconArray->AppendIconL( info );
   185             CleanupStack::Pop( info );
   195             CleanupStack::Pop( info );
   186             }        
   196             }        
   187         }
   197         }
   188     
   198     
   189     Release( appServices );
   199     Release( appServices );
   190         
   200         
   191     iListBox->ItemDrawer()->ColumnData()->SetIconArray( iconArray );
   201     iListBox->ItemDrawer()->ColumnData()->SetIconArray( iIconArray );
   192     CleanupStack::PopAndDestroy(); // reader
   202     CleanupStack::PopAndDestroy(); // reader
   193 
   203 
   194     // Create listbox model
   204     // setup model
   195     iModel = CCCAppMyCardListBoxModel::NewL(
   205     iModel.SetClipListBoxText( this );
   196         iPlugin.MyCard(), *iCoeEnv, *iListBox, *iconArray );
   206     iModel.UpdateIconsL( *iIconArray );
   197     iListBox->Model()->SetItemTextArray( iModel );
   207     SetNameForHeaderControlL();
       
   208     
       
   209     iListBox->Model()->SetItemTextArray( &iModel.ListBoxModel() );
       
   210     iListBox->Model()->SetOwnershipType( ELbmDoesNotOwnItemArray );
   198 
   211 
   199     // Get the skin background for the view
   212     // Get the skin background for the view
   200     iBackground = CAknsBasicBackgroundControlContext::NewL(
   213     iBackground = CAknsBasicBackgroundControlContext::NewL(
   201         KAknsIIDQsnBgAreaMain, TRect(0, 0, 0, 0), EFalse );
   214         KAknsIIDQsnBgAreaMain, TRect(0, 0, 0, 0), EFalse );
   202 
   215 
   371 	iImageSelectionPopup = NULL;
   384 	iImageSelectionPopup = NULL;
   372 	
   385 	
   373 	delete iDetailsPopup;
   386 	delete iDetailsPopup;
   374 	iDetailsPopup = NULL;
   387 	iDetailsPopup = NULL;
   375 	
   388 	
   376 	if( iImageLoader )
   389 	if( !iImageLoader )
       
   390 	    {
       
   391         if( !iModel.IsEmpty() )
       
   392             {
       
   393             TPtrC8 data( iModel.Data( CSpbContactDataModel::EDataImageContent ) );
       
   394             TInt err = KErrNotFound;
       
   395             if( data.Length() )
       
   396                 {
       
   397                 // thumbnail image in model -> load it
       
   398                 TPtrC file( iModel.Text( CSpbContactDataModel::ETextImageFileName ) );
       
   399                 TRAP( err, 
       
   400                     iImageLoader = CCCAppMyCardImageLoader::NewL( *this );
       
   401                     iImageLoader->LoadImageL( data, file, iHeaderCtrl->ThumbnailSize() );
       
   402                     );
       
   403                 }
       
   404             
       
   405             if( err )
       
   406                 {
       
   407                 // no thumbnail image available -> load default
       
   408                 ThumbnailLoadError( KErrNotFound ); 
       
   409                 }
       
   410             }
       
   411 	    }
       
   412 	else
   377 	    {
   413 	    {
   378         TRAP_IGNORE( iImageLoader->ResizeImageL(iHeaderCtrl->ThumbnailSize()));
   414         TRAP_IGNORE( iImageLoader->ResizeImageL(iHeaderCtrl->ThumbnailSize()));
   379 	    }
   415 	    }
   380 	
   416 	
   381     DrawDeferred();
   417     DrawDeferred();
   487 // CCCAppMyCardContainer::MyCardEventL()
   523 // CCCAppMyCardContainer::MyCardEventL()
   488 // ----------------------------------------------------------------------------
   524 // ----------------------------------------------------------------------------
   489 //
   525 //
   490 void CCCAppMyCardContainer::MyCardEventL( MMyCardObserver::TEvent aEvent )
   526 void CCCAppMyCardContainer::MyCardEventL( MMyCardObserver::TEvent aEvent )
   491     {
   527     {
   492     if( aEvent == MMyCardObserver::EEventContactLoaded )
   528     if( aEvent == MMyCardObserver::EEventContactChanged ||
   493         {    
   529         ( aEvent == MMyCardObserver::EEventContactLoaded && iModel.IsEmpty() ) )
       
   530         {   
       
   531         CCCAppMyCard& mycard = iPlugin.MyCard();
       
   532 
       
   533         iModel.SetDataL( mycard.PresentationContactL(), iIconArray );
       
   534         if( iListBox )
       
   535             {
       
   536             iListBox->HandleItemAdditionL();
       
   537             }
       
   538           
   494         // Set own contact name
   539         // Set own contact name
   495         CCCAppMyCard& mycard = iPlugin.MyCard();
       
   496           
       
   497         SetNameForHeaderControlL();
   540         SetNameForHeaderControlL();
   498         
   541         
   499         // start loading image
   542         // start loading image
   500         if( !iImageLoader )
   543         if( !iImageLoader )
   501             {
   544             {
   524 //
   567 //
   525 void CCCAppMyCardContainer::ThumbnailReady( CFbsBitmap* aThumbnail )
   568 void CCCAppMyCardContainer::ThumbnailReady( CFbsBitmap* aThumbnail )
   526     {
   569     {
   527     // takes ownership
   570     // takes ownership
   528     TRAPD( err, iHeaderCtrl->SetPortraitBitmapL( aThumbnail ) );
   571     TRAPD( err, iHeaderCtrl->SetPortraitBitmapL( aThumbnail ) );
   529     if( err )
   572     if( err != KErrNone )
   530         {
   573         {
   531         // TODO: how to handle? ignore? show note?
   574         iPlugin.HandleError( err );
   532         }
   575         }
   533     // Contact Image set. Set the flag.
   576     // Contact Image set. Set the flag.
   534     iMyCardImageSet = ETrue;
   577     iMyCardImageSet = ETrue;
   535     }
   578     }
   536 
   579 
   722 // CCCAppMyCardContainer::FocusedFieldIndex
   765 // CCCAppMyCardContainer::FocusedFieldIndex
   723 // --------------------------------------------------------------------------
   766 // --------------------------------------------------------------------------
   724 //
   767 //
   725 TInt CCCAppMyCardContainer::FocusedFieldIndex() const
   768 TInt CCCAppMyCardContainer::FocusedFieldIndex() const
   726 	{
   769 	{
   727 	if( iModel )
   770     TInt index = KErrNotFound;
   728 		{
   771     TRAP_IGNORE( 
   729 		return iModel->FieldIndex( iListBox->CurrentItemIndex() );
   772         CPbk2PresentationContact& contact = iPlugin.MyCard().PresentationContactL();
   730 		}
   773         index = contact.PresentationFields().StoreIndexOfField( 
   731 	return KErrNotFound;
   774             iModel.PresentationFieldIndex( iListBox->CurrentItemIndex() ) );
       
   775         );
       
   776 	return index;
   732 	}
   777 	}
   733 
   778 
   734 // --------------------------------------------------------------------------
   779 // --------------------------------------------------------------------------
   735 // CCCAppMyCardContainer::SetFocusedFieldIndex
   780 // CCCAppMyCardContainer::SetFocusedFieldIndex
   736 // --------------------------------------------------------------------------
   781 // --------------------------------------------------------------------------
  1006 // void CCCAppMyCardContainer::SetNameForHeaderContorl()
  1051 // void CCCAppMyCardContainer::SetNameForHeaderContorl()
  1007 //------------------------------------------------------------------------------
  1052 //------------------------------------------------------------------------------
  1008 //
  1053 //
  1009 void CCCAppMyCardContainer::SetNameForHeaderControlL()
  1054 void CCCAppMyCardContainer::SetNameForHeaderControlL()
  1010 	{
  1055 	{
  1011     // Set own contact name
  1056     TPtrC fname( iModel.Text( CSpbContactDataModel::ETextFirstName ) );
  1012     CCCAppMyCard& mycard = iPlugin.MyCard();
  1057     TPtrC lname( iModel.Text( CSpbContactDataModel::ETextLastName ) );
  1013     // Get the myCard store and the field set 
       
  1014     MVPbkStoreContact& storeContact = mycard.StoreContact();
       
  1015     MVPbkStoreContactFieldCollection& fields = storeContact.Fields();
       
  1016                     
       
  1017     TInt fieldCount = fields.FieldCount();                           
       
  1018     
       
  1019     TPtrC firstName( KNullDesC );
       
  1020     TPtrC lastName( KNullDesC );
       
  1021     
       
  1022     // Check all the fields and store first and last name
       
  1023     for ( TInt i = 0; i < fieldCount;  ++i )
       
  1024     	{
       
  1025 		MVPbkStoreContactField& field = fields.FieldAt( i );	
       
  1026 		const MVPbkFieldType* fieldType = field.BestMatchingFieldType();
       
  1027 		
       
  1028 		if ( fieldType->FieldTypeResId() == R_VPBK_FIELD_TYPE_FIRSTNAME )
       
  1029 			{
       
  1030 			MVPbkContactFieldData& contactField = field.FieldData();            
       
  1031 			firstName.Set( MVPbkContactFieldTextData::Cast(contactField).Text());
       
  1032 			}
       
  1033 		
       
  1034 		if ( fieldType->FieldTypeResId() == R_VPBK_FIELD_TYPE_LASTNAME )
       
  1035 			{
       
  1036 			MVPbkContactFieldData& contactField = field.FieldData();			            
       
  1037 			lastName.Set( MVPbkContactFieldTextData::Cast(contactField).Text());
       
  1038 			}		
       
  1039     	}
       
  1040     
       
  1041     switch ( iNameOrder )
  1058     switch ( iNameOrder )
  1042         {
  1059         {
  1043         case KPbk2UiSpecNameOrderFirstNameLastName:
  1060         case KPbk2UiSpecNameOrderFirstNameLastName:
  1044             {
  1061             {
  1045             iHeaderCtrl->SetLabel1TextL( firstName );
  1062             iHeaderCtrl->SetLabel1TextL( fname );
  1046             iHeaderCtrl->SetLabel2TextL( lastName );
  1063             iHeaderCtrl->SetLabel2TextL( lname );
  1047             break;
  1064             break;
  1048             }
  1065             }
  1049         case KPbk2UiSpecNameOrderLastNameFirstName: // FALL THROUGH
  1066         case KPbk2UiSpecNameOrderLastNameFirstName: // FALL THROUGH
  1050         default:
  1067         default:
  1051             {
  1068             {
  1052             iHeaderCtrl->SetLabel2TextL( firstName );
  1069             iHeaderCtrl->SetLabel2TextL( fname );
  1053             iHeaderCtrl->SetLabel1TextL( lastName );
  1070             iHeaderCtrl->SetLabel1TextL( lname );
  1054             break;
  1071             break;
  1055             }
  1072             }
  1056         }    
  1073         }
  1057 	}
  1074 	}
  1058 
  1075 
  1059 //------------------------------------------------------------------------------
  1076 //------------------------------------------------------------------------------
  1060 // void CCCAppMyCardContainer::MyCardHeaderControlClickL()
  1077 // void CCCAppMyCardContainer::MyCardHeaderControlClickL()
  1061 //------------------------------------------------------------------------------
  1078 //------------------------------------------------------------------------------
  1070         iCoeEnv->CreateResourceReaderLC( reader , resourceReaderId );
  1087         iCoeEnv->CreateResourceReaderLC( reader , resourceReaderId );
  1071         iImageSelectionPopup->ConstructFromResourceL( reader );
  1088         iImageSelectionPopup->ConstructFromResourceL( reader );
  1072         CleanupStack::PopAndDestroy(); // reader
  1089         CleanupStack::PopAndDestroy(); // reader
  1073         }
  1090         }
  1074     
  1091     
  1075     // MyCard image has been set. Dim optiosn menu items accordingly
  1092     // MyCard image has been set. Dim option menu items accordingly
  1076     if( iMyCardImageSet )
  1093     if( iMyCardImageSet )
  1077         {
  1094         {        
  1078         iImageSelectionPopup->SetItemDimmed(ECCAppMyCardCmdStylusViewImageCmd, EFalse);
  1095         // If the image has been deleted in the memory, "view image" should be hidden.
       
  1096         TPtrC imageFileName( iModel.Text( CSpbContactDataModel::ETextImageFileName ) );                        
       
  1097         RFs& fs( iCoeEnv->FsSession() );
       
  1098         TEntry entry;
       
  1099         iImageSelectionPopup->SetItemDimmed( ECCAppMyCardCmdStylusViewImageCmd, 
       
  1100                 ( fs.Entry( imageFileName , entry ) == KErrNone ) ? EFalse : ETrue );                                                    
  1079         iImageSelectionPopup->SetItemDimmed(ECCAppMyCardCmdStylusChangeImageCmd, EFalse);
  1101         iImageSelectionPopup->SetItemDimmed(ECCAppMyCardCmdStylusChangeImageCmd, EFalse);
  1080         iImageSelectionPopup->SetItemDimmed(ECCAppMyCardCmdStylusRemoveImageCmd, EFalse);
  1102         iImageSelectionPopup->SetItemDimmed(ECCAppMyCardCmdStylusRemoveImageCmd, EFalse);
  1081         iImageSelectionPopup->SetItemDimmed(ECCAppMyCardCmdStylusAddImageCmd, ETrue);
  1103         iImageSelectionPopup->SetItemDimmed(ECCAppMyCardCmdStylusAddImageCmd, ETrue);
  1082         }
  1104         }
  1083     // MyCard image has not been set
  1105     // MyCard image has not been set
  1145     iDetailsPopup->SetPosition( pos );      
  1167     iDetailsPopup->SetPosition( pos );      
  1146    
  1168    
  1147     CCoeControl::HandlePointerEventL( aPointerEvent );              
  1169     CCoeControl::HandlePointerEventL( aPointerEvent );              
  1148     }
  1170     }
  1149 
  1171 
       
  1172 // --------------------------------------------------------------------------
       
  1173 // CCCAppMyCardContainer::ClipFromBeginning
       
  1174 // --------------------------------------------------------------------------
       
  1175 //
       
  1176 TBool CCCAppMyCardContainer::ClipFromBeginning(
       
  1177     TDes& aBuffer, TInt aItemIndex, TInt aSubCellNumber )
       
  1178     {
       
  1179     if( iListBox )
       
  1180         {   
       
  1181         return AknTextUtils::ClipToFit( aBuffer, AknTextUtils::EClipFromBeginning,
       
  1182             iListBox, aItemIndex, aSubCellNumber );
       
  1183         }
       
  1184     return EFalse;
       
  1185     }
       
  1186 
  1150 // ---------------------------------------------------------------------------
  1187 // ---------------------------------------------------------------------------
  1151 // CCCAppCommLauncherContainer::PosToScreenCoordinates
  1188 // CCCAppCommLauncherContainer::PosToScreenCoordinates
  1152 // ---------------------------------------------------------------------------
  1189 // ---------------------------------------------------------------------------
  1153 //
  1190 //
  1154 void CCCAppMyCardContainer::PosToScreenCoordinates( 
  1191 void CCCAppMyCardContainer::PosToScreenCoordinates( 
  1156      {
  1193      {
  1157      TPoint leftUpperPos = aControl->PositionRelativeToScreen();
  1194      TPoint leftUpperPos = aControl->PositionRelativeToScreen();
  1158      aPos += leftUpperPos;
  1195      aPos += leftUpperPos;
  1159      }
  1196      }
  1160 
  1197 
       
  1198 // ----------------------------------------------------------------------------
       
  1199 // CCCAppMyCardContainer::GetHelpContext()
       
  1200 // ----------------------------------------------------------------------------
       
  1201 //
       
  1202 void CCCAppMyCardContainer::GetHelpContext(TCoeHelpContext& aContext) const
       
  1203     {
       
  1204     aContext.iMajor.iUid = KPbk2UID3;
       
  1205     aContext.iContext = KHLP_CCA_MY_CARD;
       
  1206     }
       
  1207 
  1161 // End of File
  1208 // End of File