landmarksui/uicontrols/inc/CLmkAppSelectorImplBase.h
author Pat Downey <patd@symbian.org>
Wed, 01 Sep 2010 12:31:27 +0100
branchRCL_3
changeset 18 870918037e16
parent 0 522cd55cc3d7
permissions -rw-r--r--
Revert incorrect RCL_3 drop: Revision: 201033 Kit: 201035

/*
* Copyright (c) 2002-2006 Nokia Corporation and/or its subsidiary(-ies).
* All rights reserved.
* This component and the accompanying materials are made available
* under the terms of "Eclipse Public License v1.0"
* which accompanies this distribution, and is available
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
*
* Initial Contributors:
* Nokia Corporation - initial contribution.
*
* Contributors:
*
* Description:    LandmarksUi Content File -
*				Base class for application's (view-based) selectors.
*
*/







#ifndef CLMKAPPSELECTORIMPLBASE_H
#define CLMKAPPSELECTORIMPLBASE_H

//  INCLUDES
#include "CLmkSelectorImplBase.h"
#include <eikcmobs.h>
#include <eikmenup.h>
#include "landmarks.hrh"
#include "MLmkMapAndNavigationObServer.h"

#include <coecobs.h>

// FORWARD DECLARATIONS
class CEikTextListBox;
class CCoeControl;
class CAknSearchField;
class MLmkMskObserver;
#ifdef RD_SCALABLE_UI_V2
class CAknListBoxFilterItems;
#endif //RD_SCALABLE_UI_V2
// CLASS DECLARATION

/**
*  Base class for application's (view-based) selectors.
*
*/
class CLmkAppSelectorImplBase
: public CLmkSelectorImplBase,
  public MEikCommandObserver,
  public MLmkMapAndNavigationObserver
  #ifdef RD_SCALABLE_UI_V2
  ,public MCoeControlObserver
  #endif //RD_SCALABLE_UI_V2
  {
    public:  // Constructors and destructor
        /**
        * Destructor.
        */
        ~CLmkAppSelectorImplBase();

    public: // New functions
        /**
        * Stores status to memento.
        * Can be used after memento has been set.
        */
        IMPORT_C void StoreMemento();

        /**
        * Restores status of a memento. If list is not ready yet then
        * restoration is postponed a while.
        * Can be used after memento has been set.
        */
        IMPORT_C void RestoreMemento();

        /**
        * Creates a list box.
        * Leaves with KErrNotSupported if wrong control type is given.
        * @param aParent parent for listbox control (usually container)
        * @param aControlType listbox type, i.e. EAknCt???ListBox
        * @param aFlags construction flags, e.g. EAknListBoxMarkableList
        * @param aEmptyLBResource empty listbox text
        * @return newly instantiated object
        */
        virtual CEikTextListBox& CreateListBoxL( CCoeControl* aParent,
                                                 TInt aControlType,
                                                 TInt aFlags,
                                                 TInt aEmptyLBPrimResource ,TInt aEmptyLBSecResource );

		/**
		* When the screen size changes the event needs to be propagated
		* to UI components in the selector classes. This will be triggered
		* from the UI Container classes
		*/
		virtual void HandleScreenSizeChange();

        IMPORT_C CAknSearchField* CreateFindBoxL(const CCoeControl &aParent);
        /**
		* IT returns an array of items marked.
		* @return Array of marked item Id's.
		*/
        IMPORT_C const CArrayFix<TInt>* MarkedIndexes();

        /**
		* @return Returns the current item index
		*/
        IMPORT_C TInt CurrentItemIndex();

         /**
        * Sets the observer, to be called , when MSK update is
        * required
        * @param aMskObserver reference
        */
        IMPORT_C void SetMskObserver(MLmkMskObserver* aMskObserver);
    public: // From CLmkSelectorImpleBase
        TInt ListVisibleItemCount();
        TInt ListMarkedItemCountL();

    public: // From MLmkListProviderObserver
        void HandleListProviderEvent( TLmkListProviderEventType aEvent );
        void HandleListProviderError( TInt aError );

    public: //from MLmkMapAndNavigationObserver
        void HandleLmCreated(TPosLmItemId /*aNewLmkItemId*/){}

    public :// New Method
    	CAknSearchField* FindBox();

    protected: // New functions
        /**
        * Helper function for making empty title
        * @param aListbox, listbox instance
        * @param aResourceText, resourse id
        */
         void MakeEmptyTextListBoxL( CEikTextListBox& aListBox,
                                    TInt aResourcePrimText, TInt aResourceSecText,
                                    TBool aRequestFromFindBox = EFalse ) const;


        /**
        * Helper function for creating and setting a listbox model
        * @param aListbox, listbox instance
        * @param aControlType, listbox control type
        * @param aProvider, engine for listbox model
        */
        virtual void CreateListBoxModelL( CEikTextListBox& aListBox,
                                          TInt aControlType,
                            CLmkListProviderBase& aProvider ) const;

        /**
        * Helper function which allows subclasses to handle ELmkEventListReady
        * in specific manner. By default list is reseted and redrawn.
        * @return ETrue if subclass handled the event, EFalse otherwise
        */
        virtual TBool HandleEventListReadyL();

        //Helper function to enable or disable find box
        void ShowFindBoxL( TBool aVisible );

        public: // New functions
        /**
        * Following are the helper wrapper functions which allow
        * the Landmarks UI control libary clients to setup AIW services
        * for invoking phone call. This will be used by Landmarks App or
        * Landmarks Message Viewer app
        *
        */

        virtual void AttachToAIWMenuL( TInt aMenuResourceId,
        					   TInt aInterestResourceId);

        virtual void InitializeMenuPaneL( CEikMenuPane& aMenuPane,
                                  TInt aMenuResourceId);

        virtual void ExecuteAIWCallCmdL( TInt aCommandId );

        virtual TBool IsLmWithThisFieldExistL ( TLmkAppCmdId  aFieldId);

        virtual void AttachInterestL ( TInt aInterestResourceId );

        /**
        * This acts as a wrapper interface, but the actual
        * derive class implements the functionality to call
        * proper call service handler.
        */
        virtual TInt ServiceCmdByMenuCmd( TInt aMenuCmd );

    #ifdef RD_SCALABLE_UI_V2
    protected: // from MCoeControlObserver
        void HandleControlEventL( CCoeControl* aControl,TCoeEvent aEventType );
	#endif //RD_SCALABLE_UI_V2

    protected: // Constructors and destructor
        /**
        * C++ default constructor.
        * @param aDb reference
        * @param aFindBox
        * @return newly instantiated object
        */
        CLmkAppSelectorImplBase( CPosLandmarkDatabase& aDb,
                                 TBool aFindBox );

        /**
        * By default Symbian 2nd phase constructor is private.
        */
        void BaseConstructL();

    protected: // Data
        ///Own:
        CEikTextListBox* iListBox;

        TBool iFindBox;

        CAknSearchField* iSearchBox;
       // TInt iEmptyLBResource;
        TInt iEmptyLBPrimResource;
         TInt iEmptyLBSecResource;
        //ref
        MLmkMskObserver* iMskObserver;

	#ifdef RD_SCALABLE_UI_V2
        CAknListBoxFilterItems* iFilter;
    #endif //RD_SCALABLE_UI_V2

        TPosLmItemId iNewLmkItemId;
    };

#endif      // CLMKAPPSELECTORIMPLBASE_H

// End of File