commonuisupport/uikon/test/tviews/tvw/tvwappui.CPP
changeset 0 2f259fa3e83a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/commonuisupport/uikon/test/tviews/tvw/tvwappui.CPP	Tue Feb 02 01:00:49 2010 +0200
@@ -0,0 +1,144 @@
+// Copyright (c) 2005-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:
+//
+
+/**
+ @file
+ @internalComponent - Internal Symbian test code 
+*/
+
+#include <bautils.h>
+#include <eikenv.h>
+#include <eikapp.h>
+#include <eikdoc.h>
+
+#include "tvwappui.H"
+
+//
+// Constants.
+//
+
+const TInt KAppViewArrayGranularity=5;
+
+
+//
+// CTestVwAppUi.
+//
+
+CTestVwAppUi::CTestVwAppUi()
+	:iAppViewArray(KAppViewArrayGranularity)
+	{
+	}
+
+CTestVwAppUi::~CTestVwAppUi()
+	{
+	const TInt numViews=iAppViewArray.Count();
+	for (TInt ii=numViews-1;ii>=0;--ii)
+		{
+		CTestVwAppView* thisView=iAppViewArray[ii];
+		DeregisterViewAndRemoveStack(*thisView);
+		iAppViewArray.Delete(ii);
+		delete thisView;
+		}
+	}
+
+void CTestVwAppUi::ConstructL()
+	{
+	CEikAppUi::ConstructL();
+	}
+
+void CTestVwAppUi::ActivateViewL(const TVwsViewId& aViewId,TUid aCustomMessageId,const TDesC16& aCustomMessage)
+	{
+	HBufC8* narrowMessage=HBufC8::NewLC(aCustomMessage.Size());
+	TPtr8 ptr=narrowMessage->Des();
+	ptr.Copy((TUint8*)aCustomMessage.Ptr(),aCustomMessage.Size());
+
+	CCoeAppUi::ActivateViewL(aViewId,aCustomMessageId,*narrowMessage);
+	CleanupStack::PopAndDestroy(); // narrowMessage.
+	}
+
+void CTestVwAppUi::AddViewL(CTestVwAppView* aView)
+	{
+	ASSERT(aView);
+	iAppViewArray.AppendL(aView);
+	TRAPD(err,RegisterViewAndAddStackL(*aView));
+	if (err)
+		{
+		iAppViewArray.Delete(AppViewIndex(aView));
+		User::Leave(err);
+		}
+	}
+
+void CTestVwAppUi::DeleteView(const TVwsViewId& aViewId)
+	{
+	const TInt viewIndex=AppViewIndex(aViewId);
+	ASSERT(viewIndex!=KErrNotFound);
+	CTestVwAppView* view=iAppViewArray[viewIndex];
+	DeregisterViewAndRemoveStack(*view);
+	delete view;
+	iAppViewArray.Delete(viewIndex);
+	}
+
+CTestVwAppView* CTestVwAppUi::View(const TVwsViewId& aViewId) const
+	{
+	ASSERT(AppViewIndex(aViewId)!=KErrNotFound);
+	return iAppViewArray[AppViewIndex(aViewId)];
+	}
+
+CTestVwAppView* CTestVwAppUi::ActiveView() const
+	{
+	TVwsViewId activeViewId;
+	if (GetActiveViewId(activeViewId)==KErrNone)
+		{
+		return iAppViewArray[AppViewIndex(activeViewId)];
+		}
+
+	return NULL;
+	}
+
+void CTestVwAppUi::HandleModelChangeL()
+	{
+	CTestVwAppView* activeView=ActiveView();
+	if (activeView)
+		{
+		activeView->HandleModelChangeL();
+		}
+	}
+
+TInt CTestVwAppUi::AppViewIndex(const TVwsViewId& aViewId) const
+	{
+	const TInt numAppViews=iAppViewArray.Count();
+
+	for (TInt ii=0;ii<numAppViews;ii++)
+		{
+		if (iAppViewArray[ii]->ViewId()==aViewId)
+			return ii;
+		}
+
+	return KErrNotFound;
+	}
+
+TInt CTestVwAppUi::AppViewIndex(CTestVwAppView* aView) const
+	{
+	TInt pos;
+	TKeyArrayFix key(0,ECmpTInt);
+	
+	if (iAppViewArray.Find(aView,key,pos)==KErrNone)
+		{
+		return pos;
+		}
+
+	return KErrNotFound;
+	}
+