taskswitcher/server/src/tsmodelitem.cpp
changeset 117 c63ee96dbe5f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/server/src/tsmodelitem.cpp	Thu Sep 16 12:11:40 2010 +0100
@@ -0,0 +1,157 @@
+/*
+* 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());
+}