--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/testapps/rschandler/Common/src/ResourceHandler_ResourceView.cpp Tue Jan 26 15:16:33 2010 +0200
@@ -0,0 +1,186 @@
+// Copyright (c) 2004-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:
+// Source file for the implementation of the
+// application view class - CResourceView
+//
+//
+
+#include "ResourceHandler.h"
+
+CResourceView::CResourceView()
+ {
+ }
+
+CResourceView* CResourceView::NewL(const TRect& aRect, CResourceAppUi *aAppUi)
+ {
+ CResourceView* self = new(ELeave) CResourceView();
+ CleanupStack::PushL(self);
+ self->ConstructL(aRect, aAppUi);
+ CleanupStack::Pop();
+ return self;
+ }
+
+CResourceView::~CResourceView()
+ {
+ delete iCommandButton;
+ }
+
+void CResourceView::ConstructL(const TRect& aRect, CResourceAppUi* aAppUi)
+ {
+ // Initialisation
+ iAppUi = aAppUi;
+ iObjectsViewed = EObjectProcess;
+
+ CreateWindowL();
+
+ // Whole extent of view
+ SetRect(aRect);
+
+ // Border around components in pixels
+ iBorder = 1;
+
+ // Place the refresh button
+ iCommandButton = new(ELeave) CEikCommandButton;
+ iCommandButton->SetTextL(_L("Refresh"));
+ iCommandButton->SetSize(iCommandButton->MinimumSize());
+ iCommandButton->SetPosition(TPoint(Rect().Width() - iCommandButton->Size().iWidth - iBorder, iBorder));
+ iCommandButton->SetContainerWindowL(*this);
+ iCommandButton->SetObserver(this);
+ TInt buttonHeight = iCommandButton->Size().iHeight;
+
+ // Get the title font height
+ TInt titleHeight = iEikonEnv->TitleFont()->HeightInPixels();
+ TInt tablePosition = 0;
+ if (titleHeight>=buttonHeight)
+ tablePosition=titleHeight;
+ else
+ tablePosition=buttonHeight;
+
+ CResourceList::ConstructL(tablePosition);
+// Activate the main window control - this will also activate the contained controls
+
+ ActivateL();
+ DrawNow();
+ }
+
+
+void CResourceView::Draw(const TRect& /*aRect*/) const
+ {
+ CWindowGc& gc = SystemGc();
+
+ gc.Clear();
+
+ // Put title on view
+ const CFont* fontUsed = iEikonEnv->TitleFont();
+ gc.UseFont(fontUsed);
+ gc.SetPenColor(KRgbBlack);
+ TPoint pos(iBorder,fontUsed->AscentInPixels()+iBorder);
+ gc.DrawText(iTitle, pos);
+
+ gc.DiscardFont();
+ }
+
+
+
+TInt CResourceView::CountComponentControls() const
+ {
+ return 2;
+ }
+
+
+CCoeControl* CResourceView::ComponentControl(TInt aIndex) const
+ {
+ if (aIndex == 0)
+ return iCommandButton;
+ else
+ return CResourceList::GetListBox();
+ }
+
+
+// for use by refresh button control
+void CResourceView::HandleControlEventL(CCoeControl* aControl,TCoeEvent /*aEventType*/)
+ {
+ if (aControl == iCommandButton)
+ {
+ UpdateView();
+ }
+ }
+
+void CResourceView::InvalidateView(void) const
+ {
+ Window().Invalidate(Rect()); //calls Draw()
+ }
+
+void CResourceView::UpdateView(void)
+ {
+ CResourceList::UpdateListData();
+ UpdateTitle();
+ InvalidateView();
+ }
+
+void CResourceView::UpdateTitle(void)
+ {
+ // assume the table data, iResourceCount and iObjectViewed data are up to date
+ TBufC<20> title;
+
+ // Set the title appropriately
+ switch (iObjectsViewed)
+ {
+ case EObjectProcess:
+ title = _L("Processes");
+ break;
+ case EObjectThread:
+ title = _L("Threads");
+ break;
+ case EObjectChunk:
+ title = _L("Chunks");
+ break;
+ case EObjectLibrary:
+ title = _L("Libraries");
+ break;
+ case EObjectServer:
+ title = _L("Servers");
+ break;
+ case EObjectSemaphore:
+ title = _L("Semaphores");
+ break;
+ case EObjectMutex:
+ title = _L("Mutexes");
+ break;
+ case EObjectLogicalDevice:
+ title = _L("Log. Devices");
+ break;
+ case EObjectPhysicalDevice:
+ title = _L("Phy. Devices");
+ break;
+ case EObjectLogicalChannel:
+ title = _L("Log. Channels");
+ break;
+ case EObjectWindow:
+ title = _L("Window Grps");
+ break;
+ case EObjectDrive:
+ title = _L("Drives");
+ break;
+ case EObjectHal:
+ title = _L("HALs");
+ break;
+ default: break;
+ }
+
+ //set title and resource count
+ TBuf<2> openingBracket(_L(" ("));
+ TBuf<1> closingBracket(_L(")"));
+ iTitle.Format(_L("%S%S%u%S"), &title, &openingBracket, iResourceCount, &closingBracket);
+ }