calendarui/editors/src/calenpriorityfield.cpp
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Tue, 25 May 2010 12:41:10 +0300
branchRCL_3
changeset 30 d68a4b5d5885
parent 0 f979ecb2b13e
permissions -rw-r--r--
Revision: 201019 Kit: 2010121

/*
* 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:  ?Description
*
*/

// system includes
#include <AknPopupField.h>
#include <AknQueryValueText.h>
#include <CalenDefaultEditorsData.rsg>

// user includes
#include "calenpriorityfield.h"
#include "CalenDefaultEditors.hrh"
#include "CalenDescription.h"
#include "calennotedatautil.h"

// debug
#include "calendarui_debug.h"

// -----------------------------------------------------------------------------
// CCalenPriorityField::NewL
// First phase constructor
// -----------------------------------------------------------------------------
//
CCalenPriorityField* CCalenPriorityField::NewL( CCalenUnifiedEditor& aUnifiedEditor )
    {
    TRACE_ENTRY_POINT;

    CCalenPriorityField* self =
        new( ELeave ) CCalenPriorityField( aUnifiedEditor );
    CleanupStack::PushL( self );
    self->ConstructL();
    CleanupStack::Pop();

    TRACE_EXIT_POINT;
    return self;
    }

// -----------------------------------------------------------------------------
// CCalenPriorityField::CCalenPriorityField
// C++ constructor
// -----------------------------------------------------------------------------
//
CCalenPriorityField::CCalenPriorityField( CCalenUnifiedEditor& aUnifiedEditor )
    : iUnifiedEditor( aUnifiedEditor )
    {
    TRACE_ENTRY_POINT;
    TRACE_EXIT_POINT;
    }

// -----------------------------------------------------------------------------
// CCalenPriorityField::ConstructL
// second phase constructor
// -----------------------------------------------------------------------------
//
void CCalenPriorityField::ConstructL()
    {
    TRACE_ENTRY_POINT;

    // read resource for confideitiality popup list
    iPriorityArrayText = iUnifiedEditor.ControlEnv()->ReadDesCArrayResourceL(
            R_CALEN_EDITOR_PRIORITY_POPUP_ITEMS);

    // create textarray
    iPriorityArray = CAknQueryValueTextArray::NewL();
    iPriorityTextValues = CAknQueryValueText::NewL();
    iPriorityArray->SetArray( *iPriorityArrayText );
    iPriorityTextValues->SetArrayL( iPriorityArray );

    TRACE_EXIT_POINT;
    }

// -----------------------------------------------------------------------------
// CCalenPriorityField::~CCalenPriorityField
// Destructor
// -----------------------------------------------------------------------------
//
CCalenPriorityField::~CCalenPriorityField()
    {
    TRACE_ENTRY_POINT;

    delete iPriorityArrayText;
    delete iPriorityArray;
    delete iPriorityTextValues;

    TRACE_EXIT_POINT;
    }

// -----------------------------------------------------------------------------
// CCalenPriorityField::HandleControlStateChangedL
// Handle Event type change
// -----------------------------------------------------------------------------
//
void CCalenPriorityField::HandleControlStateChangeL( TInt aControlId )
    {
    TRACE_ENTRY_POINT;

    switch ( aControlId )
        {
        case ECalenEditorPriority:
            {
            NotifyPriorityChangeL();
            break;
            }
        default:
            {
            break;
            }
        }

    TRACE_EXIT_POINT;
    }

// ---------------------------------------------------------
// CCalenPriorityField::NotifyPriorityChangeL
// This function is used when the top item of each form
// ---------------------------------------------------------
//
void CCalenPriorityField::NotifyPriorityChangeL()
    {
    TRACE_ENTRY_POINT;

    // Nothing to do
    TRACE_EXIT_POINT;
    }

// -----------------------------------------------------------------------------
// CCalenPriorityField::ReadDataFromFormL
// Read data from form
// -----------------------------------------------------------------------------
//
void CCalenPriorityField::ReadDataFromFormL( TBool /*aContinueOnError*/ )
    {
    TRACE_ENTRY_POINT;
    
    TInt priority = iPriorityTextValues->CurrentValueIndex();
    iUnifiedEditor.Edited().SetPriorityL( static_cast<CCalenEntryUtil::TTodoPriority>( priority+1 ) );
    
    TRACE_EXIT_POINT;
    }

// -----------------------------------------------------------------------------
// CCalenPriorityField::SetDataToEditorL
// Update form data
// -----------------------------------------------------------------------------
//
void CCalenPriorityField::SetDataToEditorL()
    {
    TRACE_ENTRY_POINT;    

    // set priority item
    TInt priority = iUnifiedEditor.Edited().Priority();
    iPriorityTextValues->SetCurrentValueIndex( priority-1 );
    
    TRACE_EXIT_POINT;
    }

// -----------------------------------------------------------------------------
// CCalenPriorityField::InitPriorityFieldLayoutL
// Updates fields just before the form is shown.
// -----------------------------------------------------------------------------
//
void CCalenPriorityField::InitPriorityFieldLayoutL()
    {
    TRACE_ENTRY_POINT;

    CAknPopupField* pops =
        static_cast<CAknPopupField*>( iUnifiedEditor.Control( ECalenEditorPriority ) );
    pops->SetQueryValueL( iPriorityTextValues );
    
    // Set value to priority field in Editor
    SetDataToEditorL();

    TRACE_EXIT_POINT;
    }

// -----------------------------------------------------------------------------
// CCalenPriorityField::PrepareForFocusTransitionL
// Prepare for focus change
// -----------------------------------------------------------------------------
//
void CCalenPriorityField::PrepareForFocusTransitionL( TInt aFocusedId )
    {
    TRACE_ENTRY_POINT;
    

    switch( aFocusedId )
        {
        case ECalenEditorPriority:
            {
            TBool continueOnError = EFalse;
            ReadDataFromFormL( continueOnError );
            break;
            }
        default: 
            break;
        }
    TRACE_EXIT_POINT;
    }

// End of File