diff -r 514d98f21c43 -r 4ea6f81c838a mulwidgets/muldatamodel/inc/mulmodelimpl.h --- a/mulwidgets/muldatamodel/inc/mulmodelimpl.h Mon Jun 21 16:15:51 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,258 +0,0 @@ -/* -* Copyright (c) 2007-2008 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: Implementation of model interface - * -*/ - - -#ifndef MULMODELIMPL_H -#define MULMODELIMPL_H - -//Includes -#include - -#include -#include -#include - -#include "mul/imulmodelaccessor.h" -#include "imulmodelobserver.h" - -namespace osncore - { - class UString; - } - -using namespace osncore; - -namespace Alf - { - -//Forward Declaration - -class MulDataWindow; -class MulPushMode; -class MulPageDataWindow; - -/** - * Implementation class for Data model. - * @lib - */ -class MulModelImpl : public IMulModel, - public IMulModelAccessor - { - -public: - - /** - * C++ constructor. - */ - OSN_IMPORT MulModelImpl(); - - /** - * Destructor. - */ - OSN_IMPORT virtual ~MulModelImpl(); - -public: //from IMulModel - - void Insert(int aIndex, int aCount, - const MulDataPath& aPath = MulDataPath()); - - void Remove( int aIndex, int aCount, - const MulDataPath& aPath = MulDataPath() ); - - void Update( int aIndex, int aCount, - const MulDataPath& aPath = MulDataPath() ); - - void Refresh( int aCount, const MulDataPath& aPath = MulDataPath() ); - - void SetData( int aIndex, std::auto_ptr aVisualItem, - const MulDataPath& aPath = MulDataPath() ); - - const MulVisualItem* Data( int aIndex, - const MulDataPath& aPath = MulDataPath() ) const; - - int Count( const MulDataPath& aPath = MulDataPath() ) const; - - void SetDataProvider( const IMulModelProvider& aDataProvider ); - - void SetTemplate( mulwidget::TLogicalTemplate aTemplateId ); - - void SetTemplate( int aItemIndex, mulwidget::TLogicalTemplate aTemplateId, - const MulDataPath& aPath = MulDataPath() ); - - void SetDataWindow( int aSize ); - - int DataWindow( ) const; - - void SetHighlight( int aItemIndex, const MulDataPath& aPath = MulDataPath() ); - - int Highlight() ; - - int Highlight( MulDataPath& aPath ); - - void SetMarkedIndices( MulWidgetDef::TMulWidgetMarkingType aType , - const std::vector& aItemsIndex, - const MulDataPath& aPath = MulDataPath() ); - - void SetMarkedIndices( - MulWidgetDef::TMulWidgetMarkingType aType = MulWidgetDef::EMulMarkAll ); - - const std::vector& MarkedIndices( const MulDataPath& aPath = MulDataPath() ); - -public: //from IMulModelBase - - IMulModelAccessor* Accessor(); - -public: //from IMulModelAccessor - - void SetHighlight( int aItemIndex ); - - void ScrollWindow( int aItemIndex ); - - int CurrentItemCount(); - - void SetVisibleWindow( int aWindowSize, int aPageTopIndex = -1 ); - - int RelativeIndex( int aAbsoluteIndex ) const; - - int TopWindowOffset() const; - - int BottomWindowOffset() const; - - int TopOffset() const; - - int BottomOffset() const; - - int RearTopOffset() const; - - int RearBottomOffset() const; - - bool IsItemMarked( int aIndex ); - - const MulVisualItem& Item( int aAbsoluteIndex ); - - int AbsoluteIndex( int aRelativeIndex ); - - void SetMarkedIndex( MulWidgetDef::TMulWidgetMarkingType aType, int aIndex ); - - bool IsLoopingOn(); - - void AddModelObserver( IMulModelObserver* aObserver ); - - void RemoveModelObserver( IMulModelObserver* aObserver ); - - mulwidget::TLogicalTemplate Template(); - -private: //from IAlfModel - - void addModelChangeObserver( IAlfModelChangeObserver& aObserver ); - - void removeModelChangeObserver( IAlfModelChangeObserver& aObserver ); - - void setData( IAlfVariantType* aData ); - - void updateData(int aNumContainerIndices,int* aContainerIndices, IAlfVariantType* aData ); - - void addData(int aNumContainerIndices,int* aContainerIndices, IAlfVariantType* aData ); - - void removeData(int aNumContainerIndices,int* aContainerIndices ); - - void executeOperations(AlfPtrVector& aOperationsArray); - - void executeOperation(AlfModelOperation* aOperation); - - void clearModel(); - - IAlfVariantType* data() const; - -private: // from base class MAlfInterfaceBase - - /** - * Getter for interfaces provided by the list model. - * - * @param aType A descriptor to identify the type of the queried interface. - * @return The queried interface, or NULL if the interface is not - * supported or available. - */ - virtual IAlfInterfaceBase* makeInterface( const IfId& aType ); - -public: //new method - - /** - * When ever data window update data window, it will use this method to notify - * Data model to update data window and update alf model - */ - void DataWindowUpdated(); - -private: //New method - - /** - * Create Update event for selection change to notify Widget - * for selection change. Widget need to use IsItemMarked API for checking - * whether item is marked or unmarked. - * - * @param aAbsoluteIndex Absolute index - */ - void CreateMarkingEvent(int aAbsoluteIndex); - - /** - * Notify observer about state changed - * - * @param aState Highlight or making changed - * @param aData Index of new highlight or Index of marked or unmarked item. - * ( Item is marked or not should be checked using IMulModelAccessor interface) - */ - void NotifyStateChange( IMulModelObserver::TMulChangedState aState, std::auto_ptr aData); - - /** - * Notify observer about data change event - * - * @param aState Event to notify - * @param aStartIndex Start index of. - * @param aCount No of item affected - */ - void NotifyDataChange( IMulModelObserver::TMulChangedState aState, int aStartIndex, int aCount ); - - /** - * Notify observer about data change event - * - * @param aState Event to notify - * @param aIndex Start index of. - */ - void NotifyDataChange( IMulModelObserver::TMulChangedState aState, int aIndex ); - - /** - * Notify observer about template change - * - * @param aIndex index of item. - * @param aTamplateId changed template - */ - void NotifyTemplateChange( int aIndex, mulwidget::TLogicalTemplate aTamplateId ); - -private: //data - - //std::auto_ptr mDataWindow; //own - std::auto_ptr mDataWindow; //own - std::auto_ptr mModelHelper; //own - std::vector mObserverArray; - }; - - } // namespace Alf - -#endif //MULMODELIMPL_H - -//End of file -