/*
* Copyright (c) 2009 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:
*
*/
#include "tsmodel.h"
// -----------------------------------------------------------------------------
/**
* Constructor
* @param model - data owner
* @param offset - data index
*/
TTsModelItem::TTsModelItem(const MTsModel& model, TInt offset)
:
mModel(model),
mIndex(offset)
{}
// -----------------------------------------------------------------------------
/**
* Copy constructor
* @param item - template item
*/
TTsModelItem::TTsModelItem(const TTsModelItem& item)
:
mModel(item.mModel),
mIndex(item.mIndex)
{}
// -----------------------------------------------------------------------------
/**
* Validate item instance and retrieve display name data
* @return item display name
*/
const TDesC& TTsModelItem::displayNameL() const
{
validateL();
return mModel.displayNameL(mIndex);
}
// -----------------------------------------------------------------------------
/**
* Validate item instance and retrieve icon handle ( CFbsBitmap handle )
* @return item icon handle
*/
TInt TTsModelItem::iconHandleL() const
{
validateL();
return mModel.iconHandleL(mIndex);
}
// -----------------------------------------------------------------------------
/**
* Validate item instance and retrieve entry key
* @return item key
*/
TTsModelItemKey TTsModelItem::keyL() const
{
validateL();
return mModel.keyL(mIndex);
}
// -----------------------------------------------------------------------------
/**
* Validate item instance and retrieve entry timestamp
* @return item timestamp
*/
TTime TTsModelItem::timestampL() const
{
validateL();
return mModel.timestampL(mIndex);
}
// -----------------------------------------------------------------------------
/**
* Validate item instance and retrieve activity status
* @return activity status
*/
TBool TTsModelItem::isActiveL() const
{
validateL();
return mModel.isActiveL(mIndex);
}
// -----------------------------------------------------------------------------
/**
* Validate item instance and retrieve closable status
* @return closable status
*/
TBool TTsModelItem::isClosableL() const
{
validateL();
return mModel.isClosableL(mIndex);
}
// -----------------------------------------------------------------------------
/**
* Validate item instance and forward close request to its owner
* @return EFalse on failure
*/
TBool TTsModelItem::closeL() const
{
validateL();
return mModel.closeL(keyL());
}
// -----------------------------------------------------------------------------
/**
* Validate item instance and forward launch request to its owner
* @return EFalse on failure
*/
TBool TTsModelItem::launchL() const
{
validateL();
return mModel.launchL(keyL());
}
// -----------------------------------------------------------------------------
/**
* Validate item instance
*/
void TTsModelItem::validateL() const
{
if (mModel.count() <= mIndex) {
User::Leave(KErrOverflow);
}
}
// -----------------------------------------------------------------------------
/**
* Serialize item into destination stream
* @param stream - output stream
*/
void TTsModelItem::ExternalizeL(RWriteStream& stream) const
{
stream.WriteInt32L(displayNameL().Length());
if (0 < displayNameL().Length()) {
stream << displayNameL();
}
stream.WriteInt32L(iconHandleL());
stream.WriteInt32L(TTsModelItemKey::size());
stream << keyL();
stream.WriteInt32L(isActiveL());
stream.WriteInt32L(isClosableL());
}