uifw/AvKon/aknconf/src/aknconfappui.cpp
changeset 0 2f259fa3e83a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/uifw/AvKon/aknconf/src/aknconfappui.cpp	Tue Feb 02 01:00:49 2010 +0200
@@ -0,0 +1,216 @@
+/*
+* 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:  CAknConfAppUi implementation
+ *
+*/
+
+
+// INCLUDE FILES
+#include <avkon.hrh>
+#include <aknmessagequerydialog.h>
+#include <aknnotewrappers.h>
+#include <aknnavide.h>
+#include <akntabgrp.h>
+#include <StringLoader.h>
+
+#include <aknconf.rsg>
+
+#include "aknconf.hrh"
+#include "aknconf.pan"
+#include "aknconfapplication.h"
+#include "aknconfappui.h"
+#include "aknconfview.h"
+
+const TInt KPhysicsTabIndex( 0 );
+const TInt KGestureTabIndex( 1 );
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CAknConfAppUi::ConstructL()
+// Symbian 2nd phase constructor can leave.
+// -----------------------------------------------------------------------------
+//
+void CAknConfAppUi::ConstructL()
+    {
+    // Initialise app UI with standard value.
+    BaseConstructL( CAknAppUi::EAknEnableSkin );
+
+    CEikStatusPane* statusPane = StatusPane();
+    if ( statusPane )
+        {
+        CAknNavigationControlContainer* naviPane =
+            static_cast<CAknNavigationControlContainer*>(
+                statusPane->ControlL( TUid::Uid( EEikStatusPaneUidNavi ) ) );
+        if ( naviPane )
+            {
+            iDecorator = naviPane->ResourceDecorator();
+            static_cast<CAknTabGroup*>(
+                    iDecorator->DecoratedControl() )->SetObserver( this ); 
+            }
+        }
+
+    CAknConfView* physicsView = 
+        new( ELeave ) CAknConfView( KPhysicsViewUid );
+    CleanupStack::PushL( physicsView );
+    physicsView->ConstructL( R_PHYSICS_VIEW );
+    CleanupStack::Pop( physicsView );
+    AddViewL( physicsView );  // transfer ownership to CAknViewAppUi
+    
+    CAknConfView* gestureView = 
+        new( ELeave ) CAknConfView( KGestureViewUid );
+    CleanupStack::PushL( gestureView );
+    gestureView->ConstructL( R_GESTURE_VIEW );
+    CleanupStack::Pop( gestureView );
+    AddViewL( gestureView );  // transfer ownership to CAknViewAppUi
+
+    iCurrentViewId = physicsView->Id().iUid;
+
+    }
+// -----------------------------------------------------------------------------
+// CAknConfAppUi::CAknConfAppUi()
+// C++ default constructor can NOT contain any code, that might leave.
+// -----------------------------------------------------------------------------
+//
+CAknConfAppUi::CAknConfAppUi()
+    {
+    // No implementation required
+    }
+
+// -----------------------------------------------------------------------------
+// CAknConfAppUi::~CAknConfAppUi()
+// Destructor.
+// -----------------------------------------------------------------------------
+//
+CAknConfAppUi::~CAknConfAppUi()
+    {
+    delete iDecorator;
+    }
+
+
+// -----------------------------------------------------------------------------
+// CAknConfAppUi::SetTabIndex
+// -----------------------------------------------------------------------------
+//
+void CAknConfAppUi::SetTabIndex( TInt aViewId )
+    {
+    TInt tabIndex( 0 );
+    if ( aViewId == KPhysicsViewUid )
+        {
+        tabIndex = KPhysicsTabIndex;
+        }
+    else
+        {
+        tabIndex = KGestureTabIndex;
+        }
+    static_cast<CAknTabGroup*>(
+            iDecorator->DecoratedControl() )->SetActiveTabByIndex(
+                    tabIndex );
+
+    }
+
+
+// -----------------------------------------------------------------------------
+// CAknConfAppUi::TabChangedL
+// -----------------------------------------------------------------------------
+//
+void CAknConfAppUi::TabChangedL( TInt aIndex )
+    {
+    if ( iCurrentViewId != KPhysicsViewUid && aIndex == KPhysicsTabIndex )
+        {
+        ActivateLocalViewL( TUid::Uid( KPhysicsViewUid ) );
+        iCurrentViewId = KPhysicsViewUid;
+        }
+    else if ( iCurrentViewId != KGestureViewUid
+            && aIndex == KGestureTabIndex )
+        {
+        ActivateLocalViewL( TUid::Uid( KGestureViewUid ) );
+        iCurrentViewId = KGestureViewUid;
+        } 
+    }
+
+
+// -----------------------------------------------------------------------------
+// CAknConfAppUi::ActivateViewL
+// -----------------------------------------------------------------------------
+//
+void CAknConfAppUi::ActivateViewL( TUid aViewId )
+    {
+    CAknViewAppUi::ActivateLocalViewL( aViewId );
+    iCurrentViewId = aViewId.iUid;
+    SetTabIndex( aViewId.iUid );
+    }
+
+
+// -----------------------------------------------------------------------------
+// CAknConfAppUi::ActivateNextViewL
+// -----------------------------------------------------------------------------
+//
+CAknConfView* CAknConfAppUi::CurrentView()
+    {
+    return static_cast<CAknConfView*>( 
+            View( TUid::Uid( iCurrentViewId ) ) );
+    }
+
+
+// -----------------------------------------------------------------------------
+// CAknConfAppUi::HandleCommandL()
+// Takes care of command handling.
+// -----------------------------------------------------------------------------
+//
+void CAknConfAppUi::HandleCommandL(TInt aCommand)
+    {
+    switch (aCommand)
+        {
+        case EEikCmdExit:
+        case EAknSoftkeyExit:
+            Exit();
+            break;
+        case EAbout:
+            {
+            CAknMessageQueryDialog* dlg = new ( ELeave ) CAknMessageQueryDialog();
+            dlg->PrepareLC( R_ABOUT_QUERY_DIALOG );
+            HBufC* title = iEikonEnv->AllocReadResourceLC( R_ABOUT_DIALOG_TITLE );
+            dlg->QueryHeading()->SetTextL( *title );
+            CleanupStack::PopAndDestroy(); //title
+            HBufC* msg = iEikonEnv->AllocReadResourceLC( R_ABOUT_DIALOG_TEXT );
+            dlg->SetMessageTextL( *msg );
+            CleanupStack::PopAndDestroy(); //msg
+            dlg->RunLD();
+            }
+            break;
+        case EAknConfView:
+            ActivateViewL( TUid::Uid( KPhysicsViewUid ) );
+            break;
+        case EGestureConfView:
+            ActivateViewL( TUid::Uid( KGestureViewUid ) );
+            break;
+        default:
+            Panic(EAknConfUi);
+            break;
+        }
+    }
+
+
+// -----------------------------------------------------------------------------
+//  Called by the framework when the application status pane
+//  size is changed.  Passes the new client rectangle to the
+//  AppView
+// -----------------------------------------------------------------------------
+//
+void CAknConfAppUi::HandleStatusPaneSizeChange()
+    {
+    }
+
+// End of File