accesspointcontrol/apcontrollistplugin/src/apcontrollistplugincontainer.cpp
branchRCL_3
changeset 57 05bc53fe583b
parent 55 fc7b30ed2058
child 58 83ca720e2b9a
equal deleted inserted replaced
55:fc7b30ed2058 57:05bc53fe583b
     1 /*
       
     2 * Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies). 
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description:  APControl list Plugin container
       
    15 *
       
    16 */
       
    17 
       
    18 
       
    19 // INCLUDE FILES
       
    20 #include <hlplch.h>          //for help
       
    21 #include <csxhelp/cp.hlp.hrh>
       
    22 
       
    23 
       
    24 #include <akntitle.h>        //for CAknTitlePane
       
    25 #include <barsread.h>        //for TResourceReader
       
    26 #include <aknlists.h>        //for CListBox
       
    27 #include <aknnavi.h>         //for CNaviPane
       
    28 #include <aknnavide.h>       //for CAknNavigationDecorator
       
    29 #include <apcontrollistpluginrsc.rsg>
       
    30 #include <etelmm.h>
       
    31 
       
    32 #include "apcontrollistplugincontainer.h"
       
    33 #include "apcontrollistplugin.h"
       
    34 #include "apcontrollistplugin.hrh"
       
    35 #include "apcontrollistbox.h"
       
    36 #include "apcontrollistboxmodel.h"
       
    37 #include "apcontrollistpluginlogger.h"
       
    38 
       
    39 // CONSTANTS
       
    40 _LIT( KEmpty, "");
       
    41 
       
    42 // ================= MEMBER FUNCTIONS =======================
       
    43 // ---------------------------------------------------------
       
    44 
       
    45 // ---------------------------------------------------------
       
    46 // CAPControlListPluginContainer::ConstructL
       
    47 // ---------------------------------------------------------
       
    48 //
       
    49 void CAPControlListPluginContainer::ConstructL( const TRect& aRect, 
       
    50                                               MEikListBoxObserver* aListObserver )
       
    51     {       
       
    52     CLOG( ( ESelector, 0, _L( "-> CAPControlListPluginContainer::ConstructL" ) ) );
       
    53     if ( !iListBox )
       
    54         {
       
    55 
       
    56         TResourceReader rr;
       
    57 
       
    58         //creates resource reader. reader is pushed to cleaup stack
       
    59         ControlEnv()->CreateResourceReaderLC( rr, R_APCONTROL_LISTBOX );
       
    60 
       
    61         CreateWindowL();
       
    62 
       
    63         iListBox = new( ELeave ) CApControlListbox;
       
    64         iListBox->SetContainerWindowL( *this );
       
    65 
       
    66         iListBox->CreateScrollBarFrameL( ETrue );
       
    67         iListBox->ScrollBarFrame()->SetScrollBarVisibilityL( 
       
    68                                         CEikScrollBarFrame::EOff, 
       
    69                                         CEikScrollBarFrame::EAuto );
       
    70 
       
    71         iListBox->ConstructFromResourceL( rr );
       
    72 	    
       
    73 	    //Put in empty text thing
       
    74 	    iListBox->SetListEmptyTextL();
       
    75         iListBox->SetListBoxObserver( aListObserver );
       
    76 
       
    77     	iModel = new( ELeave )CApControlListboxModel;
       
    78     	iModel->ConstructL();
       
    79     	iListBox->Model()->SetItemTextArray( iModel );//give ownership of
       
    80     	// iModel to iListBox
       
    81         
       
    82         CleanupStack::PopAndDestroy(); //resource reader
       
    83         
       
    84         SetRect( aRect );
       
    85                                                            
       
    86         HandleResourceChange( KEikDynamicLayoutVariantSwitch );
       
    87         }      
       
    88         
       
    89 
       
    90     TitlePaneTextsL( R_APCLPLUGIN_TITLE );
       
    91     ActivateL();
       
    92     CLOG( ( ESelector, 0, _L( "<- CAPControlListPluginContainer::ConstructL" ) ) );
       
    93     }
       
    94     
       
    95 // ---------------------------------------------------------
       
    96 // CAPControlListPluginContainer::AddToListBoxL
       
    97 // ---------------------------------------------------------
       
    98 //
       
    99 void CAPControlListPluginContainer::AddToListBoxL(TPtrC& newItem)
       
   100     {
       
   101     CLOG( ( ESelector, 0, _L( 
       
   102         "-> CAPControlListPluginContainer::AddToListBoxL" ) ) );
       
   103 	MDesCArray* textArray = iModel->ItemTextArray();
       
   104 	CDesCArray* listBoxItems = static_cast<CDesCArray*>(textArray);
       
   105 
       
   106 	TBuf<RMobilePhone::KMaxApnName> item;
       
   107 	// RMobilePhone::KMaxApnName - label length + TAB = 
       
   108 	// RMobilePhone::KMaxApnName 
       
   109 	item.Format(_L("\t%S"), &newItem); 
       
   110 	listBoxItems->AppendL(item);
       
   111 
       
   112 	iListBox->HandleItemAdditionL(); // Update listbox
       
   113 	iListBox->SetCurrentItemIndexAndDraw(
       
   114 	    listBoxItems->Count() - 1); // select new item
       
   115     CLOG( ( ESelector, 0, _L( 
       
   116         "<- CAPControlListPluginContainer::AddToListBoxL" ) ) );
       
   117     }
       
   118 // ---------------------------------------------------------
       
   119 // CAPControlListPluginContainer::CurrentItemIndex
       
   120 // ---------------------------------------------------------
       
   121 //
       
   122 TInt CAPControlListPluginContainer::CurrentItemIndex()
       
   123     {
       
   124     CLOG( ( ESelector, 0, _L( 
       
   125         "-> CAPControlListPluginContainer::CurrentItemIndex" ) ) );
       
   126     CLOG( ( ESelector, 0, _L( 
       
   127         "<- CAPControlListPluginContainer::CurrentItemIndex" ) ) );
       
   128 	return iListBox->CurrentItemIndex(); 
       
   129     }
       
   130     
       
   131 // ---------------------------------------------------------
       
   132 // CAPControlListPluginContainer::SetCurrentItemIndex
       
   133 // ---------------------------------------------------------
       
   134 //
       
   135 void CAPControlListPluginContainer::SetCurrentItemIndex(TInt index)
       
   136     {
       
   137     CLOG( ( ESelector, 0, _L( "-> CAPControlListPluginContainer::SetCurrentItemIndex" ) ) );
       
   138 	iListBox->SetCurrentItemIndexAndDraw(index); 
       
   139     CLOG( ( ESelector, 0, _L( "<- CAPControlListPluginContainer::SetCurrentItemIndex" ) ) );
       
   140     }
       
   141     
       
   142 // ---------------------------------------------------------
       
   143 // CAPControlListPluginContainer::RemoveFromListBoxL
       
   144 // ---------------------------------------------------------
       
   145 //
       
   146 void CAPControlListPluginContainer::RemoveFromListBoxL()
       
   147     {
       
   148     CLOG( ( ESelector, 0, _L( "-> CAPControlListPluginContainer::RemoveFromListBoxL" ) ) );
       
   149 	TInt currentItem = iListBox->CurrentItemIndex();
       
   150 
       
   151 	MDesCArray* textArray = iModel->ItemTextArray();
       
   152 	CDesCArray* listBoxItems = static_cast<CDesCArray*>(textArray);
       
   153 	listBoxItems->Delete(currentItem, 1); // 1 = how many items to delete
       
   154 	AknListBoxUtils::HandleItemRemovalAndPositionHighlightL(iListBox, currentItem, ETrue);
       
   155 	iListBox->DrawNow(); // Update listbox    
       
   156     CLOG( ( ESelector, 0, _L( "<- CAPControlListPluginContainer::RemoveFromListBoxL" ) ) );
       
   157 	}
       
   158 
       
   159 // ---------------------------------------------------------
       
   160 // CAPControlListPluginContainer::~CAPControlListPluginContainer
       
   161 // ---------------------------------------------------------
       
   162 //
       
   163 CAPControlListPluginContainer::~CAPControlListPluginContainer()
       
   164     {
       
   165     CLOG( ( ESelector, 0, _L( "-> CAPControlListPluginContainer::~CAPControlListPluginContainer" ) ) );
       
   166     delete iListBox;
       
   167     if (iNaviPane)
       
   168         {
       
   169         iNaviPane->Pop(iNaviDecorator);        
       
   170         }
       
   171     delete iNaviDecorator;    
       
   172     CLOG( ( ESelector, 0, _L( "<- CAPControlListPluginContainer::~CAPControlListPluginContainer" ) ) );
       
   173     }
       
   174 
       
   175 // ---------------------------------------------------------
       
   176 // CAPControlListPluginContainer::CountComponentControls
       
   177 // ---------------------------------------------------------
       
   178 //
       
   179 TInt CAPControlListPluginContainer::CountComponentControls() const
       
   180     {
       
   181     CLOG( ( ESelector, 0, _L( "-> CAPControlListPluginContainer::CountComponentControls" ) ) );
       
   182     CLOG( ( ESelector, 0, _L( "<- CAPControlListPluginContainer::CountComponentControls" ) ) );
       
   183     return 1;
       
   184     }
       
   185 
       
   186 // ---------------------------------------------------------
       
   187 // CAPControlListPluginContainer::ComponentControl
       
   188 // ---------------------------------------------------------
       
   189 //
       
   190 CCoeControl* CAPControlListPluginContainer::ComponentControl( TInt aIndex ) const
       
   191     {
       
   192     CLOG( ( ESelector, 0, _L( "-> CAPControlListPluginContainer::ComponentControl" ) ) );
       
   193     switch( aIndex )
       
   194         {
       
   195         case 0 :
       
   196             {
       
   197     		CLOG( ( ESelector, 0, _L( "<- CAPControlListPluginContainer::ComponentControl 1" ) ) );
       
   198             return iListBox;
       
   199             }
       
   200         default:
       
   201             {
       
   202     		CLOG( ( ESelector, 0, _L( "<- CAPControlListPluginContainer::ComponentControl 2" ) ) );
       
   203             return 0;
       
   204             } 
       
   205         }
       
   206     }
       
   207 
       
   208 // ---------------------------------------------------------
       
   209 // CAPControlListPluginContainer::OfferKeyEventL
       
   210 // ---------------------------------------------------------
       
   211 //
       
   212 TKeyResponse CAPControlListPluginContainer::OfferKeyEventL( 
       
   213                                             const TKeyEvent& aKeyEvent, 
       
   214                                             TEventCode aType )
       
   215     {
       
   216     CLOG( ( ESelector, 0, _L( "-> CAPControlListPluginContainer::OfferKeyEventL" ) ) );
       
   217     TKeyResponse response = EKeyWasNotConsumed;
       
   218     if ( aType == EEventKey )
       
   219         {
       
   220         response = iListBox->OfferKeyEventL( aKeyEvent, aType );
       
   221         }
       
   222     CLOG( ( ESelector, 0, _L( "<- CAPControlListPluginContainer::OfferKeyEventL" ) ) );
       
   223     return response;
       
   224     }
       
   225 
       
   226 // ---------------------------------------------------------
       
   227 // CAPControlListPluginContainer::SizeChanged
       
   228 // ---------------------------------------------------------
       
   229 //
       
   230 void CAPControlListPluginContainer::SizeChanged()
       
   231     {
       
   232     CLOG( ( ESelector, 0, _L( "-> CAPControlListPluginContainer::SizeChanged" ) ) );
       
   233     iListBox->SetRect( Rect() );
       
   234     CLOG( ( ESelector, 0, _L( "<- CAPControlListPluginContainer::SizeChanged" ) ) );
       
   235     }
       
   236 
       
   237 // ---------------------------------------------------------
       
   238 // CAPControlListPluginContainer::GetHelpContext()
       
   239 // ---------------------------------------------------------
       
   240 //
       
   241 void CAPControlListPluginContainer::GetHelpContext( TCoeHelpContext& aContext) const
       
   242     {
       
   243     CLOG( ( ESelector, 0, _L( "-> CAPControlListPluginContainer::GetHelpContext" ) ) );
       
   244     aContext.iMajor = KHelpUidAPControlList;
       
   245     aContext.iContext = KACL_HLP_MAIN;
       
   246     CLOG( ( ESelector, 0, _L( "<- CAPControlListPluginContainer::GetHelpContext" ) ) );
       
   247     }
       
   248 
       
   249 // ---------------------------------------------------------
       
   250 // CAPControlListPluginContainer::TitlePaneTextsL
       
   251 // ---------------------------------------------------------
       
   252 //
       
   253 void CAPControlListPluginContainer::TitlePaneTextsL( TInt aResourceId )
       
   254     {
       
   255     CLOG( ( ESelector, 0, _L( "-> CAPControlListPluginContainer::TitlePaneTextsL" ) ) );
       
   256     CEikStatusPane* statusPane = iEikonEnv->AppUiFactory()->StatusPane();
       
   257     CAknTitlePane* titlePane =
       
   258         ( CAknTitlePane* )statusPane->ControlL(
       
   259                             TUid::Uid( EEikStatusPaneUidTitle ) );
       
   260 
       
   261     //creates and sets title. title is pushed to cleanup stack
       
   262     HBufC* title = iEikonEnv->AllocReadResourceLC( aResourceId );
       
   263     titlePane->SetTextL( *title );
       
   264 
       
   265     iNaviPane = STATIC_CAST( CAknNavigationControlContainer*, 
       
   266                  statusPane->ControlL( TUid::Uid( EEikStatusPaneUidNavi ) ) );
       
   267     
       
   268     iNaviDecorator = iNaviPane->CreateNavigationLabelL( KEmpty );
       
   269     iNaviPane->PushL( *iNaviDecorator );
       
   270 
       
   271     CleanupStack::PopAndDestroy(title);
       
   272     CLOG( ( ESelector, 0, _L( "<- CAPControlListPluginContainer::TitlePaneTextsL" ) ) );
       
   273     }
       
   274 
       
   275 
       
   276 // ---------------------------------------------------------
       
   277 // CAPControlListPluginContainer::HandleResourceChange
       
   278 // ---------------------------------------------------------
       
   279 //
       
   280 void CAPControlListPluginContainer::HandleResourceChange( TInt aType )
       
   281     {
       
   282     CLOG( ( ESelector, 0, _L( "-> CAPControlListPluginContainer::HandleResourceChange" ) ) );
       
   283     CCoeControl::HandleResourceChange( aType );
       
   284     if( aType == KEikDynamicLayoutVariantSwitch )
       
   285         {
       
   286         TRect mainPaneRect;
       
   287         AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EMainPane, 
       
   288                                            mainPaneRect );
       
   289         SetRect( mainPaneRect );
       
   290         DrawNow();
       
   291         }
       
   292     CLOG( ( ESelector, 0, _L( "<- CAPControlListPluginContainer::HandleResourceChange" ) ) );
       
   293     }
       
   294     
       
   295 // ---------------------------------------------------------
       
   296 // CAPControlListPluginContainer::FocusChanged
       
   297 // ---------------------------------------------------------
       
   298 //
       
   299 void CAPControlListPluginContainer::FocusChanged( TDrawNow aDrawNow )
       
   300     {
       
   301     CLOG( ( ESelector, 0, _L( "-> CAPControlListPluginContainer::FocusChanged" ) ) );
       
   302     CCoeControl::FocusChanged( aDrawNow );
       
   303     if( iListBox )
       
   304         {
       
   305         iListBox->SetFocus( IsFocused() );
       
   306         }        
       
   307     CLOG( ( ESelector, 0, _L( "<- CAPControlListPluginContainer::FocusChanged" ) ) );
       
   308     }
       
   309            
       
   310 // ---------------------------------------------------------
       
   311 // CAPControlListPluginContainer::CurrentItemNameL
       
   312 // ---------------------------------------------------------
       
   313 //
       
   314 TInt CAPControlListPluginContainer::NumberOfItems()  const
       
   315     {
       
   316     CLOG( ( ESelector, 0, _L( "-> CAPControlListPluginContainer::NumberOfItems" ) ) );
       
   317     CLOG( ( ESelector, 0, _L( "<- CAPControlListPluginContainer::NumberOfItems" ) ) );
       
   318     return iListBox->Model()->ItemTextArray()->MdcaCount();
       
   319     }
       
   320     
       
   321 // ---------------------------------------------------------
       
   322 // CAPControlListPluginContainer::WriteToNaviPaneL
       
   323 // ---------------------------------------------------------
       
   324 //
       
   325 void CAPControlListPluginContainer::WriteToNaviPaneL( TInt aResourceId )
       
   326     {
       
   327     CLOG( ( ESelector, 0, 
       
   328         _L( "-> CAPControlListPluginContainer::WriteToNaviPaneL" ) ) );
       
   329     HBufC* text = iCoeEnv->AllocReadResourceLC( aResourceId );
       
   330     if ( iNaviDecorator )
       
   331         {
       
   332         iNaviPane->Pop(iNaviDecorator);
       
   333         delete iNaviDecorator;
       
   334         iNaviDecorator = NULL;// CodeScanner needs this line
       
   335         }
       
   336     iNaviDecorator = iNaviPane->CreateNavigationLabelL( *text );
       
   337     iNaviPane->PushL( *iNaviDecorator );
       
   338     
       
   339     CleanupStack::PopAndDestroy( text );
       
   340     CLOG( ( ESelector, 0, 
       
   341         _L( "<- CAPControlListPluginContainer::WriteToNaviPaneL" ) ) );
       
   342     }
       
   343     
       
   344 // End of File