diff -r 1fc85118c3ae -r 870918037e16 landmarksui/engine/inc/CLmkLmItemListProvider.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/landmarksui/engine/inc/CLmkLmItemListProvider.h Wed Sep 01 12:31:27 2010 +0100 @@ -0,0 +1,259 @@ +/* +* Copyright (c) 2004 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 - Abstract base class for landmark and category providers. +* +*/ + + + + + + + + +#ifndef CLMKLMITEMLISTPROVIDER_H +#define CLMKLMITEMLISTPROVIDER_H + +// INCLUDES +#include "CLmkListProviderBase.h" +#include "MLmkAOOperationObserver.h" +#include "MLmkDbObserver.h" +#include "landmarks.hrh" +#include // Lm typedefs, constants etc. +#include + +// FORWARD DECLARATIONS +class CPosLandmarkDatabase; +class CLmkDbUtils; +class CLmkDbInitializer; +class CLmkAOOperation; +class CAknWaitDialog; + +// CLASS DECLARATION + +/** +* Abstract base class for landmark and category providers. +* Each concrete provider is responsible of notifying observer about all +* provider events. +*/ +class CLmkLmItemListProvider +: public CLmkListProviderBase, + public MLmkAOOperationObserver, + public MLmkDbObserver + { + public: // Constructors and destructor + /** + * Destructor. + */ + ~CLmkLmItemListProvider(); + + public: // New methods + /** + * Any item which is not found is ignored. + * @param aSelectedItems database ids for selected items + * @return array containing selected items, ownership is transferred + */ + IMPORT_C CArrayFix* SelectedIndexesL( + const RArray& aSelectedItems ) const; + + /** + * Any item which is not found is ignored. + * @param aSelectedIndexes will be set by this method + * @param aSelectedItems database ids for selected items + */ + IMPORT_C void GetSelectedIndexesL( CArrayFix& aSelectedIndexes, + const RArray& aSelectedItems ) const; + + /** + * Leaves if appending an item to aSelectedItems fails. + * Panics if any index is out of bounds. + * @param aSelectedItems + * @param aSelectedIndexes + */ + IMPORT_C void GetSelectedItemIdsL( + RArray& aSelectedItems, + const CArrayFix& aSelectedIndexes ) const; + + IMPORT_C void GetAllItemIdsL( + RArray& aSelectedItems ) const; + + /** + * Returns KErrNotFound if item is not found. + * @param aSelectedItem + * @return error code + */ + IMPORT_C TInt SelectedIndex( TPosLmItemId aSelectedItem ) const; + + /** + * Panics if index is out of bounds. + * @param aSelected + * @param aIndex + */ + IMPORT_C void GetSelectedItemId( TPosLmItemId& aSelected, + TInt aIndex ) const; + + /** + * Any item which is not found is ignored. + * @param aSelectedItemsCount will set iSelectedItemsCount class variable by this method + */ + IMPORT_C void SetSelectedItemsCount( TInt aSelectedItemsCount ); + + /** + * Any item which is not found is ignored. + * @param aItemId will be removed from the iIdArray + */ + IMPORT_C void RemoveItem( TPosLmItemId aItemId ); + + /** + * Any item which is not found is ignored. + * @param aOperationCmd will set the Database Operation Command + */ + IMPORT_C void SetOperationCmd( TLmkAppCmdId aOperationCmd ); + + /** + * Any item which is not found is ignored. + * The Function must be used if no of selected items is greater than 10 + * @param aSelectedItems, the item count should be greater than 10 + * @param aType is a operation type + * @param aCategoryId will set the category id to filter for deletion + */ + IMPORT_C void RemoveItemsL( const RArray& aSelectedItems, + MLmkAOOperationObserver::TOperationTypes aType, + TPosLmItemId aCategoryId ); + + public: // From CLmkListProviderBase + void InitializeL(); + TInt ItemCount() const; + TBool StartSearchingLandmarksL( + const TDesC& aSearchPattern, + TBool aSearchOnlyInPreviousMatches); + + protected: // From MLmkAOOperationObserver + void HandleOperationL( TOperationTypes aType, + TReal32 aProgress, + TInt aStatus ); + + protected: // From MLmkDbObserver + void HandleDatabaseEvent( TPosLmEvent& aEvent ); + + protected: // New functions + /** + * "Template method" implemented by subclasses. + * List preparation cannot be done in construction phase, but + * only after database initialization is complete. + */ + virtual void PrepareListL() = 0; + virtual TBool PrepareListL(const TDesC& aSearchPattern, + TBool aSearchOnlyInPreviousMatches) = 0; + + virtual void RemoveLandmarksL(const RArray& aSelectedItems ) = 0; + + /** + * Internal helper method for performing steps after + * database initialization. + */ + void HandleDatabaseInitializedL(); + + /** + * Internal helper method which handles provider errors. It + * resets iIdArray and notifies observers. + * @param aError error code + */ + void HandleError( TInt aError ); + + protected: // Constructors and destructor + /** + * C++ constructor. + * @param aDb + * @return newly instantiated object + */ + CLmkLmItemListProvider( CPosLandmarkDatabase& aDb ); + + /** + * By default Symbian 2nd phase constructor is private. + */ + void BaseConstructL(); + + /** + * This function gets the landmark from the database & + * update its icon with the category icon, if it is associated + * with one category. + */ + CPosLandmark* GetLandmarkLC(TInt aIndex); + + protected: // Data + + ///Ref: landmark database + CPosLandmarkDatabase& iDb; + + /// Provide all db items or only the ones in the array? + TBool iListAllItemsInDb; + + /// TPosLmItemId list + RArray iIdArray; + + ///Own: + CLmkDbUtils* iDbUtils; + + ///Own: helper for initialization + CLmkDbInitializer* iInitializer; + + //own: stores only those CPosLandmark objects, for which user has not set the icons + // explicitly + RPointerArray* iIconChangeLmkArray; + + ///Own: + //CLmkAOOperation* iSearchAO; + + ///Own + TInt iSelectedItemsCount; + + ///Own : stores the search result count + TInt iCount; + + //Own + TBool iRequestFromFindBox; + + //Own : set the progress note flag to start CAOOperation + // to get asynchronous search result + TBool iOperationNotInUse; + + //Own : sets the operation given from the ui + TLmkAppCmdId iOperationCmd; + + //Own : Operation type assign for operation + MLmkAOOperationObserver::TOperationTypes iType; + + //Own : to store the + RArray iSelectedForDelete; + + //Own : no of landmarks to be deleted + TInt iItemsToDelete; + + //Own : no of landmarks deleted while in the operation + TInt iItemsDeleted; + + //Own is removelandmars operation going on. + TBool iIsRemoveLandmarks; + + //Own : Waitnot for operations + CAknWaitDialog* iWaitNote; + + //Own : CategoryId to remove landmarks from category operation + TPosLmItemId iCategoryId; + }; + +#endif // CLMKLMITEMLISTPROVIDER_H + +// End of File