locationtriggering/lbtmgmtui/src/lbtmgmtplugincontainer.cpp
branchRCL_3
changeset 44 2b4ea9893b66
parent 42 02ba3f1733c6
child 45 6b6920c56e2f
equal deleted inserted replaced
42:02ba3f1733c6 44:2b4ea9893b66
     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:  Location Triggering Management Plugin View's container
       
    15 *
       
    16 */
       
    17 
       
    18 
       
    19 // System Includes
       
    20 #include <eikspane.h>       // Status pane
       
    21 #include <akntitle.h>       // CAknTitlePane
       
    22 #include <StringLoader.h>   // String Loader
       
    23 #include <lbtmgmtpluginview.rsg>
       
    24 #include <aknlists.h>       // Settings Style list box
       
    25 #include <csxhelp/lbt.hlp.hrh> // LBT Help
       
    26 
       
    27 // User Includes
       
    28 #include "lbtmgmtplugincontainer.h"
       
    29 #include "lbtmgmtplugincmdhdlr.h"
       
    30 #include "lbtmgmtplugin.hrh"
       
    31 #include "lbtmgmtpluginuid.hrh"
       
    32 #include "lbtmgmtpluginview.h"
       
    33 #include "lbtmgmtpluginengine.h"
       
    34 
       
    35 // Constant defintions
       
    36 const TInt KNoofComponentControls = 1;
       
    37 
       
    38 
       
    39 // ========================= MEMBER FUNCTIONS ================================
       
    40 
       
    41 // ---------------------------------------------------------------------------
       
    42 // CLbtMgmtPluginContainer::CLbtMgmtPluginContainer
       
    43 // Overloaded Constructor
       
    44 //
       
    45 // ---------------------------------------------------------------------------
       
    46 //  
       
    47 CLbtMgmtPluginContainer::CLbtMgmtPluginContainer(MDesCArray& aListBoxModel,
       
    48         MLbtMgmtPluginCmdHdlr& aCmdHandler, CLbtMgmtPluginView* aView) :
       
    49     iListBoxModel(aListBoxModel), iCmdHandler(aCmdHandler), iView(aView)
       
    50     {
       
    51     }
       
    52     
       
    53 // ---------------------------------------------------------------------------
       
    54 // CLbtMgmtPluginContainer::~CLbtMgmtPluginContainer
       
    55 // Destructor
       
    56 //
       
    57 // ---------------------------------------------------------------------------
       
    58 //
       
    59 CLbtMgmtPluginContainer::~CLbtMgmtPluginContainer()
       
    60     {
       
    61     // Delete the List box model only after deleting the list box
       
    62     delete iListBox;    
       
    63     }
       
    64     
       
    65 // ---------------------------------------------------------------------------
       
    66 // CLbtMgmtPluginContainer* CLbtMgmtPluginContainer::NewL
       
    67 // Static Two phase contructor that instantiates the CLbtMgmtPluginContainer
       
    68 //
       
    69 // @param aRect                         Client rectangle
       
    70 // @param aListBoxModel                 Model for the container's list box
       
    71 // @param aCmdHandler                   List box command handler 
       
    72 // @return CLbtMgmtPluginContainer*  Reference to the object created
       
    73 // --------------------------------------------------------------------------- 
       
    74 //   
       
    75 CLbtMgmtPluginContainer* CLbtMgmtPluginContainer::NewL(const TRect& aRect,
       
    76         MDesCArray& aListBoxModel, MLbtMgmtPluginCmdHdlr& aCmdHandler,
       
    77         CLbtMgmtPluginView* aView)
       
    78     {
       
    79     CLbtMgmtPluginContainer* self = NewLC(aRect, aListBoxModel, aCmdHandler,
       
    80             aView);
       
    81     CleanupStack::Pop(self);
       
    82     return self;
       
    83     }
       
    84 
       
    85 // ---------------------------------------------------------------------------
       
    86 // CLbtMgmtPluginContainer* CLbtMgmtPluginContainer::NewLC
       
    87 // Static Two phase contructor that instantiates the CLbtMgmtPluginContainer
       
    88 //
       
    89 // @param aRect                         Client rectangle
       
    90 // @param aListBoxModel                 Model for the container's list box
       
    91 // @param aCmdHandler                   List box command handler 
       
    92 // @return CLbtMgmtPluginContainer*  Reference to the object created
       
    93 // --------------------------------------------------------------------------- 
       
    94 //  
       
    95 CLbtMgmtPluginContainer* CLbtMgmtPluginContainer::NewLC(const TRect& aRect,
       
    96         MDesCArray& aListBoxModel, MLbtMgmtPluginCmdHdlr& aCmdHandler,
       
    97         CLbtMgmtPluginView* aView)
       
    98     {
       
    99     CLbtMgmtPluginContainer* self = new (ELeave) CLbtMgmtPluginContainer(
       
   100             aListBoxModel, aCmdHandler, aView);
       
   101     CleanupStack::PushL(self);
       
   102     self->ConstructL(aRect);
       
   103     return self;
       
   104     }
       
   105 
       
   106 // --------------------------------------------------------------------------- 
       
   107 // void CLbtMgmtPluginContainer::ConstructL
       
   108 // Second phase of the two phase Construction process
       
   109 //
       
   110 // @param aRect              Client rectangle
       
   111 // ---------------------------------------------------------------------------
       
   112 //
       
   113 void CLbtMgmtPluginContainer::ConstructL( const TRect&   aRect )
       
   114     {
       
   115     //Make this control a window-owning control
       
   116     CreateWindowL(); 
       
   117     
       
   118     // Create a New Title for the View
       
   119     MakeTitleL( R_LOCTR_TITLE_TEXT_LT );
       
   120     
       
   121     CreateListboxL();
       
   122     
       
   123     // Get the Help context
       
   124     iContextName = KLOC_HLP_LBT_SETTINGS();
       
   125         
       
   126     SetRect( aRect );
       
   127     ActivateL();
       
   128     }
       
   129  
       
   130 // ---------------------------------------------------------------------------
       
   131 // CLbtMgmtPluginContainer::GetFocussedItem
       
   132 // Returns the currentlt focussed element.
       
   133 //
       
   134  // @return TInt Index of the item selected
       
   135 // ---------------------------------------------------------------------------
       
   136 //
       
   137 TInt CLbtMgmtPluginContainer::GetFocussedItem()
       
   138     {
       
   139     return iListBox->CurrentItemIndex();
       
   140     }
       
   141         
       
   142 // ---------------------------------------------------------------------------
       
   143 // void CLbtMgmtPluginContainer::HandleResourceChange
       
   144 //
       
   145 // ---------------------------------------------------------------------------
       
   146 //  
       
   147 void CLbtMgmtPluginContainer::HandleResourceChange(TInt aType)
       
   148     {
       
   149     // Pass the event to the base class
       
   150     CCoeControl::HandleResourceChange( aType );
       
   151     switch( aType )
       
   152         {
       
   153         // Dynamic Layout switch
       
   154         case KEikDynamicLayoutVariantSwitch:
       
   155             {
       
   156             // Handle the screen change event
       
   157             // Trap and Ignore the error
       
   158             TRAP_IGNORE(
       
   159                 iCmdHandler.HandleCmdL( MLbtMgmtPluginCmdHdlr::EScreenSizeChanged ));
       
   160             break;
       
   161             }
       
   162         default:
       
   163             {
       
   164             break;
       
   165             }
       
   166         }
       
   167     }
       
   168 
       
   169 // ---------------------------------------------------------------------------
       
   170 // TInt CLbtMgmtPluginContainer::CountComponentControls
       
   171 //
       
   172 // ---------------------------------------------------------------------------
       
   173 //
       
   174 TInt CLbtMgmtPluginContainer::CountComponentControls() const
       
   175     {
       
   176     return KNoofComponentControls;
       
   177     }
       
   178 
       
   179 // ---------------------------------------------------------------------------
       
   180 // CCoeControl* CLbtMgmtPluginContainer::ComponentControl
       
   181 //
       
   182 // ---------------------------------------------------------------------------
       
   183 //
       
   184 CCoeControl* CLbtMgmtPluginContainer::ComponentControl(TInt /*aIndex*/) const
       
   185     {
       
   186     return iListBox;    
       
   187     }
       
   188 
       
   189 // ---------------------------------------------------------------------------
       
   190 // void CLbtMgmtPluginContainer::OfferKeyEventL
       
   191 //
       
   192 // ---------------------------------------------------------------------------  
       
   193 //
       
   194 TKeyResponse CLbtMgmtPluginContainer::OfferKeyEventL( const TKeyEvent& aKeyEvent,
       
   195                                                                TEventCode aType )
       
   196     {
       
   197     TKeyResponse keyresponse;
       
   198     switch ( aKeyEvent.iCode )
       
   199         {
       
   200         case EKeyLeftArrow:
       
   201         case EKeyRightArrow:
       
   202             {
       
   203             // Listbox takes all event even if it doesn't use them
       
   204             return EKeyWasNotConsumed;  
       
   205             }
       
   206         case EKeyUpArrow:
       
   207         case EKeyDownArrow:
       
   208 	        {
       
   209 	        keyresponse = iListBox->OfferKeyEventL( aKeyEvent, aType );
       
   210         	iCmdHandler.HandleCmdL( MLbtMgmtPluginCmdHdlr::EListBoxItemFocused );    
       
   211         	return keyresponse;        	
       
   212 	        }
       
   213         default:
       
   214             {
       
   215             break;  
       
   216             }
       
   217         }
       
   218     // now it's iListBox's job to process the key event
       
   219     return iListBox->OfferKeyEventL( aKeyEvent, aType ); 
       
   220     }
       
   221         
       
   222 // ---------------------------------------------------------------------------
       
   223 // void CLbtMgmtPluginContainer::HandleListBoxEventL
       
   224 //
       
   225 // ---------------------------------------------------------------------------
       
   226 //
       
   227 void CLbtMgmtPluginContainer::HandleListBoxEventL(
       
   228         CEikListBox* /* aListBox */,
       
   229         MEikListBoxObserver::TListBoxEvent aEventType)
       
   230     {
       
   231     switch (aEventType)
       
   232         {
       
   233         // List box Item Selection
       
   234         case EEventEnterKeyPressed:
       
   235         case EEventItemSingleClicked:
       
   236             {
       
   237             if (iView->GetLbtMgmtPluginEngine()->ActiveTriggers())
       
   238                 {
       
   239                 iView->HandleCommandL(ELbtMgmtShowCSMenu);
       
   240                 }
       
   241             // Settings element has been selected. Command has to be issued to
       
   242             // change the settings configuration
       
   243             iCmdHandler.HandleCmdL(
       
   244                     MLbtMgmtPluginCmdHdlr::EListBoxItemSelected);
       
   245             break;
       
   246             }  
       
   247         default:
       
   248            break;
       
   249         }
       
   250     }
       
   251 
       
   252 // -----------------------------------------------------------------------------
       
   253 // CLocNotPrefPluginContainer::GetHelpContext
       
   254 //
       
   255 // -----------------------------------------------------------------------------
       
   256 //
       
   257 void CLbtMgmtPluginContainer::GetHelpContext( TCoeHelpContext& aContext ) const
       
   258     {
       
   259     aContext.iContext = iContextName;
       
   260     aContext.iMajor = TUid::Uid( KLbtMgmtPluginUID3 );
       
   261     }
       
   262     
       
   263 // ---------------------------------------------------------------------------
       
   264 // void CLbtMgmtPluginContainer::HandlePointerEventL
       
   265 //
       
   266 // ---------------------------------------------------------------------------
       
   267 //       
       
   268    void CLbtMgmtPluginContainer::HandlePointerEventL(const TPointerEvent &aPointerEvent)
       
   269      {
       
   270     // Check if touch is enabled or not
       
   271     if( !AknLayoutUtils::PenEnabled() || !iListBox )
       
   272         {
       
   273         return;
       
   274         }
       
   275     iListBox->HandlePointerEventL( aPointerEvent );      
       
   276    }                  
       
   277 // ---------------------------------------------------------------------------
       
   278 // void CLbtMgmtPluginContainer::FocusChanged
       
   279 //
       
   280 // ---------------------------------------------------------------------------
       
   281 //
       
   282 void CLbtMgmtPluginContainer::FocusChanged( TDrawNow aDrawNow )
       
   283     {
       
   284     CCoeControl::FocusChanged( aDrawNow );
       
   285     // The focus event has to be explicitly handed over to all the compound
       
   286     // controls since CCoeControl does not do that implicitly
       
   287     iListBox->SetFocus( IsFocused(), aDrawNow );
       
   288     }
       
   289         
       
   290 // ---------------------------------------------------------------------------
       
   291 // CLbtMgmtPluginContainer::SizeChanged
       
   292 // 
       
   293 // ---------------------------------------------------------------------------
       
   294 //
       
   295 void CLbtMgmtPluginContainer::SizeChanged()
       
   296     {
       
   297     iListBox->SetRect( Rect() ); 
       
   298     }
       
   299     
       
   300 // ---------------------------------------------------------------------------
       
   301 // void CLbtMgmtPluginContainer::CreateListboxL
       
   302 // Creates the List box and the Listbox model. Associates the list box model 
       
   303 // with the list box
       
   304 //
       
   305 // ---------------------------------------------------------------------------  
       
   306 //
       
   307 void CLbtMgmtPluginContainer::CreateListboxL()
       
   308     {
       
   309     
       
   310     // Create the List box
       
   311     iListBox = new ( ELeave ) CAknSettingStyleListBox;
       
   312     iListBox->ConstructL( this, EAknListBoxSelectionList );
       
   313     iListBox->SetContainerWindowL( *this ); 
       
   314     iListBox->SetListBoxObserver( this );
       
   315     iListBox->CreateScrollBarFrameL( ETrue );
       
   316     iListBox->ScrollBarFrame()->SetScrollBarVisibilityL( CEikScrollBarFrame::EOff,
       
   317                                                          CEikScrollBarFrame::EAuto ); 
       
   318                                                          
       
   319     // The ownership of the list box model is retained with the Container.
       
   320     // This is because the model contains the additional functionality of
       
   321     // changing the settings values in addition to retreiving it.                                                        
       
   322     iListBox->Model()->SetItemTextArray( &iListBoxModel );  
       
   323     iListBox->Model()->SetOwnershipType( ELbmDoesNotOwnItemArray );  
       
   324     iListBox->ItemDrawer()->ColumnData()->EnableMarqueeL( ETrue );                    
       
   325     iListBox->ActivateL();
       
   326     }
       
   327     
       
   328 // ---------------------------------------------------------------------------
       
   329 // void CLbtMgmtPluginContainer::MakeTitleL
       
   330 // Sets the Title text
       
   331 //
       
   332 // @param aResourceText Resource to create title
       
   333 // ---------------------------------------------------------------------------
       
   334 //
       
   335 void CLbtMgmtPluginContainer::MakeTitleL( TInt aResourceText )
       
   336     {
       
   337     // Obtain the title from the Status Pane
       
   338     CAknTitlePane* title = static_cast<CAknTitlePane*>( StatusPane()->
       
   339         ControlL( TUid::Uid( EEikStatusPaneUidTitle )));
       
   340        
       
   341     // Set the Title's buffer    
       
   342     HBufC* buf = StringLoader::LoadL( aResourceText );
       
   343     title->SetText( buf ); // Takes ownership of buf
       
   344     }
       
   345 
       
   346 // ---------------------------------------------------------------------------
       
   347 // void CLbtMgmtPluginContainer::StatusPane
       
   348 // Returns the Appui's status pane
       
   349 //
       
   350 // @return CEikStatusPane* Statuspane pointer
       
   351 // ---------------------------------------------------------------------------
       
   352 //
       
   353 CEikStatusPane* CLbtMgmtPluginContainer::StatusPane()
       
   354     {
       
   355     return iEikonEnv->AppUiFactory()->StatusPane(); 
       
   356     }
       
   357 
       
   358 // ---------------------------------------------------------------------------
       
   359 // void CLbtMgmtPluginContainer::Update
       
   360 // It will updates listbox model
       
   361 // ---------------------------------------------------------------------------
       
   362 //
       
   363 void CLbtMgmtPluginContainer::Update()
       
   364     {
       
   365     if(iListBox)
       
   366         {
       
   367         iListBox->DrawDeferred(); 
       
   368         }
       
   369 	}
       
   370 
       
   371 // ---------------------------------------------------------------------------
       
   372 // void CLbtMgmtPluginContainer::ShowContextMenuL
       
   373 // Shows context specific menu items
       
   374 // ---------------------------------------------------------------------------
       
   375 //
       
   376 void CLbtMgmtPluginContainer::ShowContextMenuL()
       
   377     {
       
   378     // Switch to Context specific options menu,
       
   379     // Show it and switch back to main options menu.
       
   380     CEikMenuBar* menuBar = iView->MenuBar();
       
   381     // TRAP displaying of menu bar.
       
   382     // If it fails, the correct resource is set back before leave.
       
   383     TRAPD( err, menuBar->TryDisplayContextMenuBarL() );
       
   384     User::LeaveIfError(err);
       
   385 
       
   386     }
       
   387