diff -r 000000000000 -r eb1f2e154e89 textinput/peninputcommonctrls/src/peninputdropdownlist/peninputpages.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/textinput/peninputcommonctrls/src/peninputdropdownlist/peninputpages.cpp Tue Feb 02 01:02:04 2010 +0200 @@ -0,0 +1,161 @@ +/* +* Copyright (c) 2002-2005 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: page manager,which is used by drop down list +* +*/ + + +#include "peninputpages.h" + +// ======== MEMBER FUNCTIONS ======== + +// Implementation of Class CPages + +// ----------------------------------------------------------------------------- +// CPages::NewL +// factory function +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +CPages* CPages::NewL() + { + CPages* self = new (ELeave) CPages(); + CleanupStack::PushL( self ); + self->ConstructL(); + CleanupStack::Pop(); + return self; + } + +// ----------------------------------------------------------------------------- +// CPages::~CPages +// factory function +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +CPages::~CPages() + { + iFirstIndexList.Close(); + iLastIndexList.Close(); + } + +// ----------------------------------------------------------------------------- +// CPages::NewL +// 2nd construct function +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +void CPages::ConstructL() + { + Reset(); + } + +// ----------------------------------------------------------------------------- +// CPages::Reset +// reset page in the page list +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +void CPages::Reset() + { + iFirstIndexList.Reset(); + iLastIndexList.Reset(); + } + +// ----------------------------------------------------------------------------- +// CPages::PageCount +// get page count +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +TInt CPages::PageCount() const + { + return iLastIndexList.Count(); + } + +// ----------------------------------------------------------------------------- +// CPages::AddPage +// add one page into the page list +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +void CPages::AddPage(const TInt aFirstIndex, const TInt aLastIndex) + { + if ( aFirstIndex == aLastIndex ) + { + return; + } + + const TInt index = iLastIndexList.Find(aLastIndex); + + if ( index == KErrNotFound) + { + iLastIndexList.Append(aLastIndex); + iFirstIndexList.Append(aFirstIndex); + } + } + +// ----------------------------------------------------------------------------- +// CPages::GetPreviousIndex +// get the previous page +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +TBool CPages::GetPreviousIndex(const TInt aLastIndex, + TInt& aFirstIndexOfPrevious, + TInt& aLastIndexOfPrevious) const + { + const TInt index = iLastIndexList.Find( aLastIndex ); + + if ( index != KErrNotFound ) // If found it + { + if ( index > 0 ) // If not the first page + { + aFirstIndexOfPrevious = iFirstIndexList[index-1]; + aLastIndexOfPrevious = iLastIndexList[index-1]; + } + else // If is the first page + { + aFirstIndexOfPrevious = iFirstIndexList[0]; + aLastIndexOfPrevious = iLastIndexList[0]; + } + return ETrue; + } + else + { + return EFalse; + } + } + +// ----------------------------------------------------------------------------- +// CPages::GetPageIndexByPos +// get the page of assigned position +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +TBool CPages::GetPageIndexByPos(const TInt aPos, + TInt& aFirstIndex, + TInt& aLastIndex) const + { + if ( ( aPos < 0 ) || ( aPos >= iLastIndexList.Count() ) ) + { + return EFalse; + } + + aLastIndex = iLastIndexList[aPos]; + aFirstIndex = iFirstIndexList[aPos]; + + return ETrue; + } + +// End Of File