creator/src/creator_container.cpp
branchRCL_3
changeset 20 fad26422216a
parent 0 d6fe6244b863
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/creator/src/creator_container.cpp	Wed Sep 01 12:30:35 2010 +0100
@@ -0,0 +1,244 @@
+/*
+* Copyright (c) 2008 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 <coemain.h>
+#include <aknnotewrappers.h>
+#include <creator.rsg>
+#include <AknDef.h>
+#include "creator_container.h"
+
+
+
+// Standard construction sequence
+CCreatorAppView* CCreatorAppView::NewL(const TRect& aRect)
+    {
+    CCreatorAppView* self = CCreatorAppView::NewLC(aRect);
+    CleanupStack::Pop(self);
+    return self;
+    }
+
+CCreatorAppView* CCreatorAppView::NewLC(const TRect& aRect)
+    {
+    CCreatorAppView* self = new (ELeave) CCreatorAppView;
+    CleanupStack::PushL(self);
+    self->ConstructL(aRect);
+    return self;
+    }
+
+void CCreatorAppView::ConstructL(const TRect& aRect)
+    {
+    // Create a window for this application view
+    CreateWindowL();
+
+    // Set the windows size
+    SetRect(aRect);
+
+    // Activate the window, which makes it ready to be drawn
+    ActivateL();
+
+    }
+
+CCreatorAppView::CCreatorAppView()
+    {
+    // Add any construction code that can not leave here
+    }
+
+
+CCreatorAppView::~CCreatorAppView()
+    {
+    // Add any destruction code here
+    }
+
+
+// Draw this application's view to the screen
+void CCreatorAppView::Draw(const TRect& /*aRect*/) const
+    {
+
+    // Get the standard graphics context 
+    CWindowGc& gc = SystemGc();
+
+    // Gets the control's extent
+    TRect rect = Rect();
+
+    // Clears the screen
+    gc.Clear(rect);
+
+    // variables for memory and disk handling
+    TDriveNumber cDrive=EDriveC;
+    TDriveNumber dDrive=EDriveD;
+    TDriveNumber eDrive=EDriveE;
+    TVolumeInfo vinfo;
+    TBuf<16> cFree;
+    TBuf<16> dFree;
+    TBuf<16> eFree;
+    TBuf<16> cSize;
+    TBuf<16> dSize;
+    TBuf<16> eSize;
+    TBuf<64> cText;
+    TBuf<64> dText;
+    TBuf<64> eText;
+    TBuf<64> hText;
+
+    // get an access to file server
+    RFs& fsSession = ControlEnv()->FsSession();
+
+    // check the C-drive
+    fsSession.Volume(vinfo, cDrive);
+    cFree.Num(TInt64(vinfo.iFree/1024));
+    cSize.Num(TInt64(vinfo.iSize/1024));
+
+    // format the information about the C-drive
+    cText.Copy(_L("C: "));
+    cText.Append(cFree);
+    cText.Append(_L("kB of "));
+    cText.Append(cSize);
+    cText.Append(_L("kB"));
+
+
+    // the same thing for D-drive
+    fsSession.Volume(vinfo, dDrive);
+    dFree.Num(TInt64(vinfo.iFree/1024));
+    dSize.Num(TInt64(vinfo.iSize/1024));
+
+    dText.Copy(_L("D: "));
+    dText.Append(dFree);
+    dText.Append(_L("kB of "));
+    dText.Append(dSize);
+    dText.Append(_L("kB"));
+
+
+    // the same thing for E-drive (MMC), if it exists 
+    if (MMC_OK())
+        {
+        fsSession.Volume(vinfo, eDrive);
+        eFree.Num(TInt64(vinfo.iFree/1024));
+        eSize.Num(TInt64(vinfo.iSize/1024));
+
+        eText.Copy(_L("E: "));
+        eText.Append(eFree);
+        eText.Append(_L("kB of "));
+        eText.Append(eSize);
+        eText.Append(_L("kB"));
+        }	
+
+
+    // available work memory
+    TMemoryInfoV1Buf memory;
+    UserHal::MemoryInfo(memory);
+    TInt64 freeMemBytes=(TInt64)(memory().iFreeRamInBytes);
+    TInt64 sizeMemBytes=(TInt64)(memory().iTotalRamInBytes);
+
+    /// ...
+    TInt64 sizeWorkMemBytes = sizeMemBytes; 
+
+
+    TBuf<16> freeMem;
+    TBuf<16> sizeWorkMem;
+
+    freeMem.Num(TInt64(freeMemBytes/1024));
+    sizeWorkMem.Num(TInt64(sizeWorkMemBytes/1024));
+
+    hText.Copy(freeMem);
+    hText.Append(_L("kB of "));
+    hText.Append(sizeWorkMem);
+    hText.Append(_L("kB"));
+
+
+    // draw all the texts to the screen
+    gc.UseFont(AknLayoutUtils::FontFromId(EAknLogicalFontSecondaryFont));
+   
+    TSize mainPaneSize;
+    AknLayoutUtils::LayoutMetricsSize(AknLayoutUtils::EMainPane, mainPaneSize);
+    
+    TReal X_factor = TReal(mainPaneSize.iWidth) / 176;
+    TReal Y_factor = TReal(mainPaneSize.iHeight) / 144;
+
+    gc.SetPenColor(KRgbDarkBlue);
+    gc.DrawText(_L("Free RAM memory:"), TPoint(TInt(4*X_factor), TInt(15*Y_factor)));
+    gc.SetPenColor(KRgbBlack);
+    gc.DrawText(hText, TPoint(TInt(4*X_factor), TInt(30*Y_factor)));
+
+    gc.SetPenColor(KRgbDarkBlue);
+    gc.DrawText(_L("Free disk memory:"), TPoint(TInt(4*X_factor), TInt(55*Y_factor)));
+    gc.SetPenColor(KRgbBlack);
+    gc.DrawText(cText, TPoint(TInt(4*X_factor), TInt(70*Y_factor)));
+    gc.DrawText(dText, TPoint(TInt(4*X_factor), TInt(85*Y_factor)));
+
+    if (MMC_OK())
+        {
+        gc.DrawText(eText, TPoint(TInt(4*X_factor), TInt(100*Y_factor)));
+        }
+
+    }
+
+TKeyResponse CCreatorAppView::OfferKeyEventL(
+		const TKeyEvent& aKeyEvent,TEventCode aType)
+	{
+	// return the default functionality
+	return CCoeControl::OfferKeyEventL(aKeyEvent, aType);
+	}
+
+
+TCoeInputCapabilities CCreatorAppView::InputCapabilities() const
+	{
+	// this class does not implement any 'unusual' input capabilities
+	return TCoeInputCapabilities::ENone;
+	}
+
+
+void CCreatorAppView::UserDraw() const
+	{
+	ActivateGc();
+	Draw(Rect());
+	DeactivateGc();
+	}
+
+
+
+TBool CCreatorAppView::MMC_OK() const
+	{
+	TBool MMCstatus = EFalse;
+
+	TDriveNumber eDrive=EDriveE;
+    TVolumeInfo vinfo;
+
+	// check if we can access the E-drive:
+	if ( iEikonEnv->FsSession().Volume(vinfo, eDrive) == KErrNone)
+		{
+		MMCstatus = ETrue;
+		}
+	else
+		{
+		MMCstatus = EFalse;
+		}
+
+	// returns ETrue if MMC working properly
+	return MMCstatus;
+	}
+
+
+void CCreatorAppView::HandleResourceChange(TInt aType)
+    {
+    if ( aType == KEikDynamicLayoutVariantSwitch )
+        {
+        TRect mainPaneRect;
+        AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::EMainPane, mainPaneRect);
+        SetRect(mainPaneRect);
+        }
+    }
+