taskswitcher/testapplications/generator/generator/pattern/src/helloworldbasicappui.cpp
changeset 117 c63ee96dbe5f
--- /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
+