diff -r e8c1ea2c6496 -r 8758140453c0 localisation/apparchitecture/tef/ChildIII_Main.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/localisation/apparchitecture/tef/ChildIII_Main.cpp Thu Jan 21 12:53:44 2010 +0000 @@ -0,0 +1,350 @@ +// 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 the License "Symbian Foundation License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// A simple application containing a single view with the text "Child III !" drawn on it. +// +// + + + +/** + @file + @internalComponent - Internal Symbian test code +*/ + +#include + +#include +#include +#include +#include +#include + +#include +#include + +#include +#include "ChildIII.hrh" + + +#include +_LIT(KFilePath,"c:\\logs\\TestExecute\\Proc.txt"); +_LIT8(KTPass, "PASS"); +_LIT8(KTFail, "FAIL"); + +//////////////////////////////////////////////////////////////////////// +// +// CExampleAppView +// +//////////////////////////////////////////////////////////////////////// + +class CExampleAppView : public CCoeControl + { +public: + static CExampleAppView* NewL(const TRect& aRect); + CExampleAppView(); + ~CExampleAppView(); + void ConstructL(const TRect& aRect); + +private: + // Inherited from CCoeControl + void Draw(const TRect& /*aRect*/) const; + +private: + HBufC* iExampleText; + }; + +// +// Constructor for the view. +// +CExampleAppView::CExampleAppView() + { + } + +// Static NewL() function to start the standard two +// phase construction. +// +CExampleAppView* CExampleAppView::NewL(const TRect& aRect) + { + CExampleAppView* self = new(ELeave) CExampleAppView(); + CleanupStack::PushL(self); + self->ConstructL(aRect); + CleanupStack::Pop(); + return self; + } + +// +// Destructor for the view. +// +CExampleAppView::~CExampleAppView() + { + delete iExampleText; + } + +// Second phase construction. +// +void CExampleAppView::ConstructL(const TRect& aRect) + { + // Fetch the text from the resource file. + iExampleText = iEikonEnv->AllocReadResourceL(R_EXAMPLE_TEXT_CHILDIII); + // Control is a window owning control + CreateWindowL(); + // Extent of the control. This is + // the whole rectangle available to application. + // The rectangle is passed to us from the application UI. + SetRect(aRect); + // At this stage, the control is ready to draw so + // we tell the UI framework by activating it. + ActivateL(); + } + + +// Drawing the view - in this example, +// consists of drawing a simple outline rectangle +// and then drawing the text in the middle. +// We use the Normal font supplied by the UI. +// +// In this example, we don't use the redraw +// region because it's easier to redraw to +// the whole client area. +// +void CExampleAppView::Draw(const TRect& /*aRect*/) const + { + // Window graphics context + CWindowGc& gc = SystemGc(); + // Area in which we shall draw + TRect drawRect = Rect(); + // Font used for drawing text + const CFont* fontUsed; + + // Start with a clear screen + gc.Clear(); + // Draw an outline rectangle (the default pen + // and brush styles ensure this) slightly + // smaller than the drawing area. + drawRect.Shrink(10,10); + gc.DrawRect(drawRect); + // Use the title font supplied by the UI + fontUsed = iEikonEnv->TitleFont(); + gc.UseFont(fontUsed); + // Draw the text in the middle of the rectangle. + TInt baselineOffset=(drawRect.Height() - fontUsed->HeightInPixels())/2; + gc.DrawText(*iExampleText,drawRect,baselineOffset,CGraphicsContext::ECenter, 0); + // Finished using the font + gc.DiscardFont(); + } + +//////////////////////////////////////////////////////////////////////// +// +// CExampleAppUi +// +//////////////////////////////////////////////////////////////////////// + +class CExampleAppUi : public CEikAppUi + { +public: + void ConstructL(); + TBool ProcessCommandParametersL(CApaCommandLine& aCommandLine); + //void PrepareToExit(); + void CompParentPidL(void); + ~CExampleAppUi(); + +private: + // Inherirted from class CEikAppUi + void HandleCommandL(TInt aCommand); + +private: + CCoeControl* iAppView; + TProcessId iParentProcessId; + RFile iFile; + RFs iFs; + }; + +// The second phase constructor of the application UI class. +// The application UI creates and owns the one and only view. +// +void CExampleAppUi::ConstructL() + { + // BaseConstructL() completes the UI framework's + // construction of the App UI. + BaseConstructL(); + // Create the single application view in which to + // draw the text "Child III", passing into it + // the rectangle available to it. + iAppView = CExampleAppView::NewL(ClientRect()); + } + +// The app Ui owns the two views and is. +// therefore, responsible for destroying them +// +CExampleAppUi::~CExampleAppUi() + { + delete iAppView; + } + +// Called by the UI framework when a command has been issued. +// In this example, a command can originate through a +// hot-key press or by selection of a menu item. +// The command Ids are defined in the .hrh file +// and are 'connected' to the hot-key and menu item in the +// resource file. +// Note that the EEikCmdExit is defined by the UI +// framework and is pulled in by including eikon.hrh +// +void CExampleAppUi::HandleCommandL(TInt aCommand) + { + switch (aCommand) + { + // Just issue simple info messages to show that + // the menu items have been selected + case EExampleItem0: + iEikonEnv->InfoMsg(R_EXAMPLE_TEXT_ITEM0); + break; + + + case EExampleItem1: + iEikonEnv->InfoMsg(R_EXAMPLE_TEXT_ITEM1); + break; + + case EExampleItem2: + iEikonEnv->InfoMsg(R_EXAMPLE_TEXT_ITEM2); + break; + // Exit the application. The call is + // implemented by the UI framework. + + case EEikCmdExit: + Exit(); + break; + } + } + +TBool CExampleAppUi::ProcessCommandParametersL(CApaCommandLine& aCommandLine) + { + iParentProcessId=aCommandLine.ParentProcessId(); + CompParentPidL(); + return CEikAppUi::ProcessCommandParametersL(aCommandLine); + } + + +void CExampleAppUi::CompParentPidL() + { + TInt val; + TInt ret; + ret = User::GetTIntParameter(12, val); + if(ret == KErrNone) + { + User::LeaveIfError(iFs.Connect()); + TInt err = iFile.Create(iFs,KFilePath,EFileWrite | EFileShareAny); + if(err == KErrAlreadyExists) + { + iFile.Open(iFs,KFilePath,EFileWrite | EFileShareAny); + } + + if(val == iParentProcessId.Id()) + { + iFile.Write(KTPass); + } + else + { + iFile.Write(KTFail); + } + iFile.Close(); + iFs.Close(); + } + } + +//////////////////////////////////////////////////////////////////////// +// +// CExampleDocument +// +//////////////////////////////////////////////////////////////////////// +class CExampleDocument : public CEikDocument + { +public: + static CExampleDocument* NewL(CEikApplication& aApp); + CExampleDocument(CEikApplication& aApp); + void ConstructL(); +private: + // Inherited from CEikDocument + CEikAppUi* CreateAppUiL(); + }; + +// The constructor of the document class just passes the +// supplied reference to the constructor initialisation list. +// The document has no real work to do in this application. +// +CExampleDocument::CExampleDocument(CEikApplication& aApp) + : CEikDocument(aApp) + { + } + + +// This is called by the UI framework as soon as the +// document has been created. It creates an instance +// of the ApplicationUI. The Application UI class is +// an instance of a CEikAppUi derived class. +// +CEikAppUi* CExampleDocument::CreateAppUiL() + { + return new(ELeave) CExampleAppUi; + } + +//////////////////////////////////////////////////////////////////////// +// +// CExampleApplication +// +//////////////////////////////////////////////////////////////////////// + +class CExampleApplication : public CEikApplication + { +private: + // Inherited from class CApaApplication + CApaDocument* CreateDocumentL(); + TUid AppDllUid() const; + }; + +const TUid KUidChildIII = { 0x10207f86 }; + +// The function is called by the UI framework to ask for the +// application's UID. The returned value is defined by the +// constant KUidChildIIIe and must match the second value +// defined in the project definition file. +// +TUid CExampleApplication::AppDllUid() const + { + return KUidChildIII; + } + +// This function is called by the UI framework at +// application start-up. It creates an instance of the +// document class. +// + +CApaDocument* CExampleApplication::CreateDocumentL() + { + return new (ELeave) CExampleDocument(*this); + } +// The entry point for the application code. It creates +// an instance of the CApaApplication derived +// class, CExampleApplication. +// + +LOCAL_C CApaApplication* NewApplication() + { + return new CExampleApplication; + } + +GLDEF_C TInt E32Main() + { + return EikStart::RunApplication(NewApplication); + }