taskswitcher/testapplications/generator/generator/pattern/src/helloworldbasicappui.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/taskswitcher/testapplications/generator/generator/pattern/src/helloworldbasicappui.cpp Thu Sep 16 12:11:40 2010 +0100
@@ -0,0 +1,226 @@
+/*
+* 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 FILES
+#include <avkon.hrh>
+#include <aknnotewrappers.h>
+#include <stringloader.h>
+#include <HelloWorldBasic1.rsg>
+#include <f32file.h>
+#include <s32file.h>
+
+#include "HelloWorldBasic.pan"
+#include "HelloWorldBasicAppUi.h"
+#include "HelloWorldBasicAppView.h"
+#include "HelloWorldBasic.hrh"
+#include "HelloWorldBasicQueryDialog.h"
+
+_LIT( KHelloFileName, "Hello.txt" );
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+
+// -----------------------------------------------------------------------------
+// CHelloWorldBasicAppUi::ConstructL()
+// Symbian 2nd phase constructor can leave.
+// -----------------------------------------------------------------------------
+//
+void CHelloWorldBasicAppUi::ConstructL()
+ {
+ // Initialise app UI with standard value.
+ BaseConstructL(CAknAppUi::EAknEnableSkin);
+
+ // Here the Hello.txt file is created. Because HelloWorld application is
+ // localized to various languages, the Hello.txt-file is created every time
+ // with current localization language
+ //
+ RFs fsSession;
+ User::LeaveIfError(fsSession.Connect());
+ CleanupClosePushL( fsSession );
+ TInt objectsInStack = 1;
+
+ #if defined(__WINS__) || defined(__WINSCW__)
+ // create private folder, when testing in emulator.
+ // ignore the return value; if this fails, then file.Replace() will fail
+ // and a warning note will be printed.
+ //
+ fsSession.CreatePrivatePath(EDriveC);
+ #endif
+
+ RFile file;
+
+ // Create a file to write the text to
+ TInt err = file.Replace(fsSession, KHelloFileName, EFileWrite );
+ if (KErrNone == err)
+ {
+ CleanupClosePushL( file );
+
+ RFileWriteStream outputFileStream( file );
+ CleanupClosePushL( outputFileStream );
+
+ // Load a string from the resource file and stream it to file
+ HBufC* textResource = StringLoader::LoadLC( R_HEWB_FILE_TEXT );
+ objectsInStack += 3; // file, outputFileStream, testResource
+
+ outputFileStream << *textResource;
+ }
+ else
+ {
+ _LIT(KFileWriteFailed,"Writing file %S failed: error %d");
+ CAknWarningNote* note = new ( ELeave ) CAknWarningNote(ETrue);
+
+ TBuf<64> text;
+ text.Format(KFileWriteFailed, &KHelloFileName, err);
+ note->ExecuteLD( text );
+ }
+
+ CleanupStack::PopAndDestroy(objectsInStack, &fsSession);
+
+ // Create view object
+ iAppView = CHelloWorldBasicAppView::NewL( ClientRect() );
+ RProcess::Rendezvous(KErrNone);
+
+ }
+// -----------------------------------------------------------------------------
+// CHelloWorldBasicAppUi::CHelloWorldBasicAppUi()
+// C++ default constructor can NOT contain any code, that might leave.
+// -----------------------------------------------------------------------------
+//
+CHelloWorldBasicAppUi::CHelloWorldBasicAppUi()
+ {
+ // No implementation required
+ }
+
+// -----------------------------------------------------------------------------
+// CHelloWorldBasicAppUi::~CHelloWorldBasicAppUi()
+// Destructor.
+// -----------------------------------------------------------------------------
+//
+CHelloWorldBasicAppUi::~CHelloWorldBasicAppUi()
+ {
+ if ( iAppView )
+ {
+ delete iAppView;
+ iAppView = NULL;
+ }
+ }
+
+// -----------------------------------------------------------------------------
+// CHelloWorldBasicAppUi::HandleCommandL()
+// Takes care of command handling.
+// -----------------------------------------------------------------------------
+//
+void CHelloWorldBasicAppUi::HandleCommandL( TInt aCommand )
+ {
+ // clear possible old user-given text
+ if (iAppView->GetText().Size() > 0)
+ {
+ iAppView->GetText().Zero();
+ iAppView->DrawNow();
+ }
+
+ switch( aCommand )
+ {
+ case EEikCmdExit:
+ case EAknSoftkeyExit:
+ Exit();
+ break;
+
+ case EHelloWorldBasicCommand1:
+ {
+ // Load a string from the resource file and display it
+ HBufC* textResource = StringLoader::LoadLC( R_HEWB_COMMAND1_TEXT );
+ CAknInformationNote* note = new ( ELeave ) CAknInformationNote;
+
+ // Show the information Note with
+ // textResource loaded with StringLoader.
+ note->ExecuteLD( *textResource );
+
+ // Pop HBuf from CleanUpStack and Destroy it.
+ CleanupStack::PopAndDestroy( textResource );
+ }
+ break;
+
+ case EHelloWorldBasicCommand2:
+ {
+ RFs fsSession;
+ RFile rFile;
+
+ // Connects a client process to the fileserver
+ User::LeaveIfError(fsSession.Connect());
+ CleanupClosePushL(fsSession);
+
+ //Open file where the stream text is
+ User::LeaveIfError(rFile.Open(fsSession,KHelloFileName, EFileStreamText));
+ CleanupClosePushL(rFile);
+
+ // copy stream from file to RFileStream object
+ RFileReadStream inputFileStream(rFile);
+ CleanupClosePushL(inputFileStream);
+
+ // HBufC descriptor is created from the RFileStream object.
+ HBufC* fileData = HBufC::NewLC(inputFileStream, 32);
+
+ CAknInformationNote* note = new ( ELeave ) CAknInformationNote;
+
+ // Show the information Note
+ note->ExecuteLD( *fileData );
+
+ // Pop loaded resources from the cleanup stack:
+ // filedata, inputFileStream, rFile, fsSession
+ CleanupStack::PopAndDestroy(4, &fsSession);
+ }
+ break;
+
+ case EHelloWorldBasicCommand3:
+ {
+ // Load a string from the resources and use it as a default value
+ HBufC* defaultText = StringLoader::LoadLC( R_HEWB_FILE_TEXT );
+
+ CHelloWorldQueryDialog *dlg = new (ELeave)
+ CHelloWorldQueryDialog( iAppView->GetText(), defaultText );
+
+ dlg->ExecuteLD( R_DIALOG_TEXT_EDIT_QUERY );
+ iAppView->DrawNow();
+
+ // Pop HBuf from CleanUpStack and Destroy it.
+ CleanupStack::PopAndDestroy( defaultText );
+ }
+ break;
+
+ default:
+ break;
+ }
+ }
+// -----------------------------------------------------------------------------
+// Called by framework when layout is changed.
+// Passes the new client rectangle to the AppView
+// -----------------------------------------------------------------------------
+//
+void CHelloWorldBasicAppUi::HandleResourceChangeL( TInt aType )
+{
+ // base-class call also
+ CAknAppUi::HandleResourceChangeL(aType);
+ if (aType == KEikDynamicLayoutVariantSwitch)
+ {
+ if (iAppView)
+ iAppView->SetRect( ClientRect() );
+ }
+}
+
+// End of File
+