systemsettings/gssensorplugin/src/gssenturnctrlview.cpp
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Thu, 19 Aug 2010 10:05:08 +0300
branchRCL_3
changeset 18 0818dd463d41
parent 0 2e3d3ce01487
child 19 924385140d98
permissions -rw-r--r--
Revision: 201031 Kit: 201033

/*
* Copyright (c) 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:  Sensors turn control view
*
*/


// INCLUDE FILES
#include "gssenturnctrlview.h"
#include "gssenturnctrlcontainer.h"
#include "gssensorplugin.hrh"
#include "gssensorpluginlocalviewids.h"
#include "gssenturnctrlcontainer.h"
#include "gssensorpluginmodel.h"
#include "gssensorplugin_debug.h"

#include <aknViewAppUi.h>
#include <gssensorpluginrsc.rsg>
#include <gscommon.hrh>
#include <eikbtgpc.h>
#include <featmgr.h>
#include <hlplch.h>


// ========================= MEMBER FUNCTIONS ================================

// ---------------------------------------------------------------------------
// CGSSenTurnCtrlView::CGSSenTurnCtrlView
// Default constructor
// ---------------------------------------------------------------------------
//
CGSSenTurnCtrlView::CGSSenTurnCtrlView( CGSSensorPluginModel* aModel ) :
    iModel( aModel )
    {
    TRACE_( "[GSSensorPlugin] CGSSenTurnCtrlView::CGSSenTurnCtrlView()" );
    }

// ---------------------------------------------------------------------------
// CGSSenTurnCtrlView::NewL
// Symbian OS two-phased constructor
// ---------------------------------------------------------------------------
CGSSenTurnCtrlView* CGSSenTurnCtrlView::NewL( CGSSensorPluginModel* aModel )
    {
    TRACE_( "[GSSensorPlugin] CGSSenTurnCtrlView::NewL()" );
    CGSSenTurnCtrlView* self = NewLC( aModel );
    CleanupStack::Pop( self );
    TRACE_( "[GSSensorPlugin] CGSSenTurnCtrlView::NewL() - return" );
    return self;
    }

// ---------------------------------------------------------------------------
// CGSSenTurnCtrlView::NewLC
// Symbian OS two-phased constructor
// ---------------------------------------------------------------------------
CGSSenTurnCtrlView* CGSSenTurnCtrlView::NewLC( CGSSensorPluginModel* aModel )
    {
    TRACE_( "[GSSensorPlugin] CGSSenTurnCtrlView::NewLC()" );
    CGSSenTurnCtrlView* self = new( ELeave ) CGSSenTurnCtrlView( aModel );
    CleanupStack::PushL( self );
    self->ConstructL();
    TRACE_( "[GSSensorPlugin] CGSSenTurnCtrlView::NewLC() - return" );
    return self;
    }

// ---------------------------------------------------------------------------
// CGSSenTurnCtrlView::~CGSSenTurnCtrlView()
// Destructor
// ---------------------------------------------------------------------------
CGSSenTurnCtrlView::~CGSSenTurnCtrlView()
    {
    TRACE_( "[GSSensorPlugin] CGSSenTurnCtrlView::~CGSSenTurnCtrlView()" );
    iModel = NULL;
    }

// ---------------------------------------------------------------------------
// CGSSenTurnCtrlView::ConstructL()
// Symbian OS two-phased constructor
// ---------------------------------------------------------------------------
void CGSSenTurnCtrlView::ConstructL()
    {
    TRACE_( "[GSSensorPlugin] CGSSenTurnCtrlView::ConstructL()" );
    BaseConstructL( R_GS_CHECKBOX_VIEW );
    TRACE_( "[GSSensorPlugin] CGSSenTurnCtrlView::ConstructL() - return" );
    }

// ---------------------------------------------------------------------------
// TUid CGSSenTurnCtrlView::Id()
// ---------------------------------------------------------------------------
TUid CGSSenTurnCtrlView::Id() const
    {
    TRACE_1( "[GSSensorPlugin] CGSSenTurnCtrlView::Id() - ID: %i", KSenTurnCtrlViewId );
    return KSenTurnCtrlViewId;
    }

// ---------------------------------------------------------------------------
// CGSSenTurnCtrlView::HandleCommandL()
// Command handling for sensor activation status view
// ---------------------------------------------------------------------------
void CGSSenTurnCtrlView::HandleCommandL( TInt aCommand )
    {   
    TRACE_1( "[GSSensorPlugin] CGSSenTurnCtrlView::HandleCommandL() - command: %i",
        aCommand );

    switch ( aCommand )
        {
        case EGSSenMskGeneral:
            {
            // Update checkbox and selections
            HandleListBoxSelectionL();
            // Update MSK label
            CheckMiddleSoftkeyLabelL();
            break;
            }
        case EGSCmdOk:
        case EAknSoftkeyBack:
            {
				 // Check selections
            Container()->CheckSelections();
            // Store changes and show previous view
            Container()->StoreSelectionsL();
            // cont. to next case
            // activate previous view
            iAppUi->ActivateLocalViewL( KGSSensorPluginUid );
            break;
            }
		case EAknCmdHelp:
            {   
            if ( FeatureManager::FeatureSupported( KFeatureIdHelp ) )
                 {
                 HlpLauncher::LaunchHelpApplicationL(
                 iEikonEnv->WsSession(), iAppUi->AppHelpContextL() );
                 }
            break;
            }  
        case EGSSenMenuExit:
            {
         aCommand=EAknCmdExit;
         iAppUi->HandleCommandL( aCommand );
          break;
            }

        default:
            iAppUi->HandleCommandL( aCommand );
            break;
        }
    TRACE_( "[GSSensorPlugin] CGSSenTurnCtrlView::HandleCommandL() - return" );
    }
// ---------------------------------------------------------------------------
// CGSSenTurnCtrlView::DoDeactivate
// Deactivates the current view 
// ---------------------------------------------------------------------------
void CGSSenTurnCtrlView::DoDeactivate()
    {
    // Check selections
           Container()->CheckSelections();
           // Store changes and show previous view
           Container()->StoreSelectionsL();
           CGSSensorBaseView::DoDeactivate();
    
    }
// ---------------------------------------------------------------------------
// CGSSenTurnCtrlView::Container
// Returns call container item
// ---------------------------------------------------------------------------
//
CGSSenTurnCtrlContainer* CGSSenTurnCtrlView::Container()
    {
    TRACE_( "[GSSensorPlugin] CGSSenTurnCtrlView::Container()" );
    return static_cast<CGSSenTurnCtrlContainer*>( iContainer );
    }

// ---------------------------------------------------------------------------
// CGSSenTurnCtrlView::NewContainerL()
// Creates new iContainer.
// ---------------------------------------------------------------------------
//
void CGSSenTurnCtrlView::NewContainerL()
    {
    TRACE_( "[GSSensorPlugin] CGSSenTurnCtrlView::NewContainerL()" );
    iContainer = new ( ELeave ) CGSSenTurnCtrlContainer( iModel, *this );
    TRACE_( "[GSSensorPlugin] CGSSenTurnCtrlView::NewContainerL() - return" );
    }

// ---------------------------------------------------------------------------
// CGSSenTurnCtrlView::HandleListBoxSelectionL()
// ---------------------------------------------------------------------------
void CGSSenTurnCtrlView::HandleListBoxSelectionL() 
    {
    TRACE_( "[GSSensorPlugin] CGSSenTurnCtrlView::HandleListBoxSelectionL()" );
    const TInt currentItem = Container()->CurrentFeatureId();
    Container()->ChangeSelectionStatus( currentItem );
    Container()->UpdateCheckboxIconL( currentItem );
    TRACE_( "[GSSensorPlugin] CGSSenTurnCtrlView::HandleListBoxSelectionL() - return" );
    }

// ---------------------------------------------------------------------------
// CGSSenTurnCtrlView::CheckMiddleSoftkeyLabelL
// ---------------------------------------------------------------------------
//
void CGSSenTurnCtrlView::CheckMiddleSoftkeyLabelL() 
    {
    TRACE_( "[GSSensorPlugin] CGSSenTurnCtrlView::CheckMiddleSoftkeyLabelL()" );
    // First, resolve current item
    const TInt currentItem = Container()->CurrentFeatureId();

    // First, remove current label
    RemoveCommandFromMSK();

    // Resolve is currently selected item checked or unchecked and change MSK label accordingly
    if ( Container()->SelectionStatus( currentItem ) )
        {
        // Change MKS to 'Unmark'
        SetMiddleSoftKeyLabelL( R_GS_MKS_LABEL_UNMARK, EGSSenMskGeneral );
        }
    else
        {
        // Change MSK to 'Mark'
        SetMiddleSoftKeyLabelL( R_GS_MKS_LABEL_MARK, EGSSenMskGeneral );
        }  

    TRACE_( "[GSSensorPlugin] CGSSenTurnCtrlView::CheckMiddleSoftkeyLabelL() - return" );
    }