--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/simpsyconfigurator/src/simpsyuiappui.cpp Tue Feb 02 00:16:03 2010 +0200
@@ -0,0 +1,222 @@
+/*
+* Copyright (c) 2005-2006 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: Simulation PSY Configuration UI server application class.
+*
+*/
+
+
+// SYSTEM INCLUDES
+#include <eikenv.h>
+#include <eikapp.h>
+#include <aknenv.h>
+#include <AknForm.h>
+#include <AknWaitDialog.h>
+#include <StringLoader.h> // StringLoader
+#include <CAknFileSelectionDialog.h>
+#include <centralrepository.h>
+#include <lbspositioninfo.h>
+#include <simpsyui.rsg>
+#include <aknPopup.h>
+
+// USER INCLUDES
+#include "simpsyuiappui.h"
+#include "simpsyui.hrh"
+#include "simpsyuicontainer.h"
+#include "simpsyuiao.h"
+#include "simpsyfileselector.h"
+#include "SimulationPSYInternalCRKeys.h"
+
+
+// CONSTANT DEFINTIONS
+_LIT(KSelectDialogTitle, "Select file");
+
+// ---------------------------------------------------------
+// CSimPsyUiAppUi::CSimPsyUiAppUi
+// ---------------------------------------------------------
+//
+CSimPsyUiAppUi::CSimPsyUiAppUi()
+ {
+ }
+
+// ---------------------------------------------------------
+// CSimPsyUiAppUi::~CSimPsyUiAppUi
+// ---------------------------------------------------------
+//
+CSimPsyUiAppUi::~CSimPsyUiAppUi()
+ {
+ if (iAppContainer)
+ {
+ RemoveFromStack(iAppContainer);
+ delete iAppContainer;
+ }
+
+ if ( iWaitDialog )
+ {
+ TRAPD( err, iWaitDialog->ProcessFinishedL() );
+ if (err != KErrNone)
+ {
+ delete iWaitDialog;
+ iWaitDialog = NULL;
+ }
+ }
+
+ delete iLocationRequestor;
+ iLocationRequestor = NULL;
+ }
+
+// ---------------------------------------------------------
+// void CSimPsyUiAppUi::ConstructL
+// ---------------------------------------------------------
+//
+void CSimPsyUiAppUi::ConstructL()
+ {
+ BaseConstructL( EAknEnableSkin | EAknEnableMSK );
+ iAppContainer = new (ELeave) CSimPsyUiContainer ;
+ iAppContainer->ConstructL( ClientRect() , this) ;
+ AddToStackL( iAppContainer );
+
+ iLocationRequestor = CSimPsyUiAO::NewL( *this );
+ }
+
+// ---------------------------------------------------------
+// void CSimPsyUiAppUi::DynInitMenuPaneL
+// ---------------------------------------------------------
+//
+void CSimPsyUiAppUi::DynInitMenuPaneL(
+ TInt /*aResourceId*/,CEikMenuPane* /*aMenuPane*/)
+ {
+ }
+
+// ---------------------------------------------------------
+// TKeyResponse CSimPsyUiAppUi::HandleKeyEventL
+// ---------------------------------------------------------
+//
+TKeyResponse CSimPsyUiAppUi::HandleKeyEventL(
+ const TKeyEvent& /*aKeyEvent*/,TEventCode /*aType*/)
+ {
+ return EKeyWasNotConsumed;
+ }
+
+// ---------------------------------------------------------
+// void CSimPsyUiAppUi::HandleCommandL
+// ---------------------------------------------------------
+//
+void CSimPsyUiAppUi::HandleCommandL( TInt aCommand )
+ {
+ switch ( aCommand )
+ {
+ case EAknSoftkeyExit:
+ case EAknSoftkeyBack:
+ case EEikCmdExit:
+ {
+ PrepareToExit();
+ Exit();
+ break;
+ }
+ case EAknSoftkeySelect:
+ case ESimCmdConfigFile:
+ {
+ // Code for launching new SimPSY file selector
+ CSimPsyFileSelector* fileSelector = new ( ELeave ) CSimPsyFileSelector();
+ CleanupStack::PushL( fileSelector );
+
+ // Construct the popup with the list
+ CAknPopupList* popup = CAknPopupList::NewL( fileSelector,
+ R_AVKON_SOFTKEYS_SELECT_CANCEL__SELECT,
+ AknPopupLayouts::EMenuGraphicWindow );
+ CleanupStack::PushL( popup );
+ fileSelector->ConstructL( popup );
+ popup->SetTitleL( KSelectDialogTitle );
+ CleanupStack::Pop( popup );
+
+ // Display the pop-up and let user selection.
+ TInt popupOk = popup->ExecuteLD();
+ if ( popupOk )
+ {
+ HBufC* fileName = NULL;
+ TRAPD( error, fileName = fileSelector->SimulationFileNameL().AllocL());
+ if ( !error )
+ {
+ CleanupStack::PushL( fileName );
+
+ // The full filename with path is stored in the cenrep file.
+ RDebug::Print(_L("SimPsyConfigurator: Setting Cenrep Key\n"));
+ CRepository* repository = CRepository::NewLC( KCRUidSimulationPSY );
+ repository->Set( KCRKeySimPSYSimulationFile, *fileName );
+ CleanupStack::PopAndDestroy( repository );
+
+ // Update the SimPsyConfigurator listbox
+ iAppContainer->UpdateListBox();
+
+ CleanupStack::PopAndDestroy( fileName );
+ }
+ }
+ CleanupStack::PopAndDestroy( fileSelector );
+ break;
+ }
+ case ESimCmdGetCurrentLocation:
+ {
+
+ // Obtain the Location information asynchrnously
+ TRAPD( err, iLocationRequestor->GetCurrentLocationL());
+ if( !err )
+ {
+ iWaitDialog = new(ELeave) CAknWaitDialog( NULL, ETrue );
+ iWaitDialog->SetCallback( this );
+ if ( !iWaitDialog->ExecuteLD( R_SIMPSYUI_REQUEST_LOCATION ) )
+ {
+ //Set iWaitDialog to NULL on pressing Cancel
+ iWaitDialog = NULL;
+ iLocationRequestor->CancelLocationRequest();
+ }
+ }
+ break;
+ }
+ default:
+ break;
+ }
+ }
+
+// ---------------------------------------------------------------------------
+// void CSimPsyUiAppUi::NotifyLocationRequestCompletedL
+// ---------------------------------------------------------------------------
+//
+void CSimPsyUiAppUi::NotifyLocationRequestCompletedL()
+ {
+ // Dismiss the wait note.
+ if ( iWaitDialog )
+ {
+ TRAPD( err, iWaitDialog->ProcessFinishedL() );
+ if (err != KErrNone)
+ {
+ delete iWaitDialog;
+ iWaitDialog = NULL;
+ }
+ }
+ }
+
+// ---------------------------------------------------------------------------
+// void CSimPsyUiAppUi::DialogDismissedL
+// ---------------------------------------------------------------------------
+//
+void CSimPsyUiAppUi::DialogDismissedL( TInt aButtonId )
+ {
+ if( EEikBidCancel != aButtonId )
+ {
+ // Display the current Location information to the user
+ iLocationRequestor->DisplayCurrentLocationL();
+ }
+ }
+
+