--- a/eventsui/eventseditor/src/evteditor.cpp Thu Aug 19 09:48:36 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,1729 +0,0 @@
-/*
-* Copyright (c) 2008 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: Form class for creating events.
-*
-*/
-
-#include <evtmgmteditorui.rsg>
-#include <avkon.rsg>
-#include <avkon.hrh>
-#include <eikedwin.h>
-#include <eikmenup.h>
-#include <eikenv.h>
-#include <aknlistquerydialog.h>
-#include <StringLoader.h>
-#include <eikaufty.h>
-#include <AknPopupFieldText.h>
-#include <eikenv.h>
-#include <eikspane.h> // Status pane
-#include <akntitle.h> // CAknTitlePane
-#include <aknuniteditor.h>
-#include <e32math.h>
-#include <AknIconArray.h> // Icon Array
-#include <evteditor.mbg>
-#include <AknsUtils.h>
-#include <AknsSkinInstance.h>
-#include <data_caging_path_literals.hrh>
-#include <gulicon.h> // Gul Icon
-#include <eikapp.h>
-#include <eikenv.h>
-#include <barsread.h> // For TResourceReader
-#include <bautils.h>
-#include <eikserverapp.h>
-#include <aknappui.h>
-#include <AknUtils.h>
-#include <aknnotewrappers.h>
-#include <hlplch.h>
-
-#include "evteditor.h"
-#include "evtmgmteditorui.hrh"
-#include "evtevent.h"
-#include "evttoneaction.h"
-#include "evtdebug.h"
-#include "evteditorconsts.h"
-#include "evtmgmtuiringtonecomponent.h"
-#include "evtdefs.h"
-
-// ---------------------------------------------------------------------------
-// CEvtEditor::NewL()
-// @param[in] aIsEditMode - It sets mode of editor.
-// If true, edit mode is set else view mode is set.
-// @param[in] aEvent - The event to be displayed on editor
-// Empty if new event is going to be created.
-// @param[in] aTriggerLocation - Coordinate based location details of
-// the event to be displayed on editor.
-// @param[in] aExitCmdHandler - It handles all commands which may result into closing editor.
-// ---------------------------------------------------------------------------
-//
-CEvtEditor* CEvtEditor ::NewL(TBool aIsEditable,
- CEvtEvent& aEvent,
- CEvtMgmtUiEngine& aEventEngine,
- TBool aDisplayExitMenuItem
- )
- {
- CEvtEditor * self = new (ELeave) CEvtEditor(aIsEditable, aEvent, aEventEngine, aDisplayExitMenuItem );
- CleanupStack::PushL(self);
- self->ConstructL();
- CleanupStack::Pop(self);
- return self;
- }
-
-// ---------------------------------------------------------------------------
-// CEvtEditor::~CEvtEditor()
-// ---------------------------------------------------------------------------
-//
-CEvtEditor::~CEvtEditor()
- {
- EVTUIDEBUG("+ CEvtEditor::~CEvtEditor()");
- // Close the resource loader
- iResourceLoader.Close();
-
- if(iCmdHandler)
- {
- delete iCmdHandler;
- iCmdHandler = NULL;
- }
-
- delete iSysOfMeas;
- iSysOfMeas = NULL;
- EVTUIDEBUG("- CEvtEditor::~CEvtEditor()");
- }
-
-// ---------------------------------------------------------------------------
-// CEvtEditor ::ConstructL()
-// ---------------------------------------------------------------------------
-//
-void CEvtEditor ::ConstructL()
- {
- EVTUIDEBUG("+ CEvtEditor::ConstructL()");
- // Open the Resource File
- OpenLocalizedResourceFileL( KEvtEditorResFileName, iResourceLoader );
-
- CAknForm::ConstructL(R_EVTMGMTUI_CREATEEVENTFORM_MENUBAR);
- iCmdHandler = CEvtMgmtUiEditorCmdHandler::NewL( iEvent,
- *this,
- iEventEngine );
-
- // Observer for a change in System of Measurement
- iSysOfMeas = CEvtMgmtUiSysOfMeasurement::NewL(*this);
- EVTUIDEBUG("- CEvtEditor::ConstructL()");
- }
-
-// ---------------------------------------------------------------------------
-// CEvtEditor ::CEvtEditor()
-// ---------------------------------------------------------------------------
-//
-CEvtEditor::CEvtEditor( TBool aIsEditable,
- CEvtEvent& aEvent,
- CEvtMgmtUiEngine& aEventEngine,
- TBool aDisplayExitMenuItem)
- :iIsEditMode( aIsEditable ),
- iEvent( aEvent ),
- iResourceLoader( *CCoeEnv::Static()),
- iEventEngine( aEventEngine ),
- iDisplayExitMenuItem( aDisplayExitMenuItem )
- {
- iEventAttributeMask = 0;
- }
-
-// ---------------------------------------------------------------------------
-// Derived from CEikDialog
-// CEvtEditor ::OkToExitL()
-// ---------------------------------------------------------------------------
-//
-TBool CEvtEditor::OkToExitL( TInt aButtonId )
- {
- EVTUIDEBUG1("+ CEvtEditor::OkToExitL() - %d", aButtonId );
- switch(aButtonId)
- {
- case EAknFormCmdEdit: // when MSK is pressed
- {
- //Handle MSK operation based on focused line.
- HandleMSKL();
- //dont close editor
- return EFalse;
- }
- case EAknSoftkeyOptions: //when LSK is pressed
- {
- //display menu specific to editor
- DisplayMenuL();
- //don't close editor
- return EFalse;
- }
- case EAknSoftkeyDone: // when RSK is pressed in edit mode
- {
- return ProcessDoneCommandL();
- }
- default: // close editor in all other cases
- {
- return ETrue;
- }
- }
- }
-
-// ---------------------------------------------------------------------------
-// CEvtEditor::ProcessDoneCommandL()
-// It checks if event is empty.
-// @ret true if event is empty else false
-// ---------------------------------------------------------------------------
-//
-TBool CEvtEditor::ProcessDoneCommandL()
- {
- //validate event, if valid event, display 'Event status' popup dialog
- // and perform selected operation.
- if( IsEmptyEventL() || !iEventAttributeMask )
- {
- return ETrue;
- }
- else
- {
- //update attribute mask so that only those attributes of event will be modified
- iCmdHandler->SetEventAttributeMask( iEventAttributeMask );
-
- if(EActive == iEvent.EventStatus())
- {
- if(MandatoryFieldsFilled())
- {
- iCmdHandler->HandleEditorCmdL( EEvtEditorCmdActivate );
- }
- else
- {
- HBufC* infoMsg = StringLoader::LoadLC(R_LOCEV_NOTE_MISSED_INFO );
- CAknInformationNote* infoNote = new(ELeave) CAknInformationNote( ETrue );
- infoNote->ExecuteLD( *infoMsg );
- CleanupStack::PopAndDestroy();
- }
- }
- else
- {
- iCmdHandler->HandleEditorCmdL( EEvtEditorCmdSaveDraft );
- }
-
- return EFalse;
- }
- }
-
-// ---------------------------------------------------------------------------
-// CEvtEditor::IsEmptyEventL()
-// It checks if event is empty.
-// @ret true if event is empty else false
-// ---------------------------------------------------------------------------
-//
-TBool CEvtEditor::IsEmptyEventL()
- {
- //if eventid is not zero, it means existing event is opened in editor
- //hence it is not empty event.
- if(iEvent.EventId())
- return EFalse;
-
- // Check for Default Action
- TBool defaultAction(EFalse);
- if( iEvent.HasAction() )
- {
- CEvtToneAction* tone = CEvtToneAction::NewLC();
- tone->InternalizeL( iEvent.Action() );
- CEvtMgmtUiRingtoneComponent* ringtoneComponent = CEvtMgmtUiRingtoneComponent::NewLC( KNullDesC() );
- if( ringtoneComponent->DefaultRingtoneL().Compare( tone->FileName() ) == 0 &&
- !tone->ToneLoop() )
- {
- defaultAction = ETrue;
- }
- CleanupStack::PopAndDestroy( 2 ); // tone, ringtoneComponent
- }
-
- //if eventid is zero, it means new event is about to create.
- //hence check if something is entered by the user.
- if( 6 == GetNumberOfLinesOnPage(0) && //if only subject,place and repeat are present
- 0 == iEvent.Subject().Compare(KNullDesC) && //if subject is empty
- 0 == iEvent.Place().Compare(KNullDesC) && // if place is default
- 0 == iEvent.Repeat() && // if repeat is OFF
- EDraft == iEvent.EventStatus() &&
- defaultAction ) // if Status is Draft
- {
- return ETrue;
- }
- return EFalse;
- }
-
-// ---------------------------------------------------------------------------
-// CEvtEditor ::LoadFormValuesFromDataL()
-// Called when the form is executed and when the user chooses to discard changes
-// in QuerySaveChangesL (via DoNotSaveFormDataL).
-// ---------------------------------------------------------------------------
-//
-void CEvtEditor::LoadFormValuesFromDataL()
- {
- EVTUIDEBUG("+ CEvtEditor::LoadFormValuesFromDataL()");
- if(iEvent.EventId()==0) //if create event
- {
- CEikEdwin* placeEditor = static_cast <CEikEdwin*> (ControlOrNull(EEvtMgmtUiDlgCIdPlace));
- if(placeEditor)
- {
- if( iEvent.Place().Compare(KNullDesC) == 0 )
- {
- HBufC* define = StringLoader::LoadLC(R_EVTUI_CREATENEW_FORM_DEFINED);
- placeEditor->SetTextL(define);
- CleanupStack::PopAndDestroy(define);
- }
- }
-
- CAknPopupFieldText* repeatPopupFieldText = (CAknPopupFieldText*)Control( EEvtMgmtUiDlgCIdRepeat );
- if(repeatPopupFieldText)
- {
- repeatPopupFieldText->SetCurrentValueIndex(1);
- }
-
- // Set the Default Ringtone
- CEvtMgmtUiRingtoneComponent* ringtoneComponent = CEvtMgmtUiRingtoneComponent::NewLC( KNullDesC() );
- if( ringtoneComponent->DefaultRingtoneL().Compare( KNullDesC ) == 0 )
- {
- iEvent.SetActionL( NULL );
- }
- else
- {
- CEvtToneAction* tone = CEvtToneAction::NewLC();
- tone->SetFileNameL( ringtoneComponent->Ringtone() );
- tone->SetToneLoop( EFalse );
-
- CEvtAction* action = CEvtAction::NewLC();
- tone->ExternalizeL( *action );
- iEvent.SetActionL( action ); // ownership is transferred.
- CleanupStack::Pop( action ); // action
-
- CleanupStack::PopAndDestroy( ); // tone
- }
- CleanupStack::PopAndDestroy( ); // ringtoneComponent
-
- SetRingtoneL();
-
- // Set Default Status
- iEvent.SetEventStatus(EDraft);
- SetStatusL();
-
- return;
- }
-
- //assign initial values
- CEikEdwin* subjectEditor = static_cast <CEikEdwin*> (ControlOrNull(EEvtMgmtUiDlgCIdSubject));
- if(subjectEditor )
- {
- if( iEvent.Subject().Compare(KNullDesC) != 0 )
- {
- HBufC* subject = iEvent.Subject().AllocLC();
- subjectEditor->SetTextL( subject );
- CleanupStack::PopAndDestroy(subject);
- }
- }
-
- CEikEdwin* placeEditor = static_cast <CEikEdwin*> (ControlOrNull(EEvtMgmtUiDlgCIdPlace));
- if(placeEditor)
- {
- if( iEvent.Place().Compare(KNullDesC) == 0 )
- {
- HBufC* define = StringLoader::LoadLC(R_EVTUI_CREATENEW_FORM_DEFINED);
- placeEditor->SetTextL(define);
- CleanupStack::PopAndDestroy(define);
- }
- else
- {
- HBufC* place = iEvent.Place().AllocLC();
- placeEditor->SetTextL(place);
- CleanupStack::PopAndDestroy(place);
- EVTUIDEBUG(" Setting Radius");
- InsertRadiusDlgLineL();
- }
- }
-
- CAknPopupFieldText* repeatPopupFieldText = (CAknPopupFieldText*)Control( EEvtMgmtUiDlgCIdRepeat );
- if(repeatPopupFieldText)
- {
- if(iEvent.Repeat())
- repeatPopupFieldText->SetCurrentValueIndex(0);
- else
- repeatPopupFieldText->SetCurrentValueIndex(1);
- }
-
- // Set Ringtone
- SetRingtoneL();
-
- // Set Status
- SetStatusL();
-
- if( iEvent.Description().Compare(KNullDesC)!=0 )
- {
- InsertDesDlgLineL();
- SetDescL();
- }
- EVTUIDEBUG("- CEvtEditor::LoadFormValuesFromDataL()");
- }
-
-// ---------------------------------------------------------------------------
-// Derived from CEikDialog
-// CEvtEditor ::PreLayoutDynInitL()
-// ---------------------------------------------------------------------------
-//
-void CEvtEditor::PreLayoutDynInitL()
- {
- EVTUIDEBUG("+ CEvtEditor::PreLayoutDynInitL()");
- CAknForm::PreLayoutDynInitL();
-
- //Load existing event if it is opened in viewe mode
- LoadFormValuesFromDataL();
- EVTUIDEBUG("- CEvtEditor::PreLayoutDynInitL()");
- }
-
-// ---------------------------------------------------------------------------
-// Derived from CEikDialog
-// CEvtEditor ::PostLayoutDynInitL()
-// ---------------------------------------------------------------------------
-//
-void CEvtEditor::PostLayoutDynInitL()
- {
- EVTUIDEBUG("+ CEvtEditor::PostLayoutDynInitL()");
- CAknForm::PostLayoutDynInitL();
-
- if(iEvent.Subject().Compare(KNullDesC) == 0)
- {
- if(iEvent.EventId())
- {
- TPtrC ptr = KNullDesC();
- MakeTitleL(ptr);
- }
- else
- {
- HBufC* navititle = StringLoader::LoadLC( R_EVTUI_CREATENEW_FORM_DEFAULTNAVITITLE);
- MakeTitleL(*navititle);
- CleanupStack::PopAndDestroy(navititle);
- }
- }
- else
- {
- TPtrC ptr = iEvent.Subject();
- MakeTitleL( ptr);
- }
-
- ChangeRSKCaptionL();
- SetEditableL(iIsEditMode);
- EVTUIDEBUG("- CEvtEditor::PostLayoutDynInitL()");
- }
-// ---------------------------------------------------------------------------
-// Derived from CAknForm
-// CEvtEditor ::DynInitMenuPaneL()
-// ---------------------------------------------------------------------------
-//
-void CEvtEditor ::DynInitMenuPaneL(TInt aResourceId, CEikMenuPane* aMenuPane)
- {
- CAknForm::DynInitMenuPaneL(aResourceId,aMenuPane);
-
- if (aResourceId == R_AVKON_FORM_MENUPANE)
- {
-
- // Disable all the unwanted AKnForm's Default Menu Items
- aMenuPane->SetItemDimmed(EAknFormCmdLabel, ETrue);
- aMenuPane->SetItemDimmed(EAknFormCmdAdd, ETrue);
- aMenuPane->SetItemDimmed(EAknFormCmdDelete, ETrue);
- aMenuPane->SetItemDimmed(EAknFormCmdSave, ETrue);
-
- if(iDisplayExitMenuItem)
- aMenuPane->SetItemDimmed(EAknCmdExit, EFalse);
- else
- aMenuPane->SetItemDimmed(EAknCmdExit, ETrue);
-
- if( IsEditable() )
- {
- // "Edit" present only in Viewer mode
- aMenuPane->SetItemDimmed(EAknFormCmdEdit, ETrue);
-
- // "Discard Changes" has to be present only in Edit mode
- // and if some changes are made
- if( IsEmptyEventL() || !iEventAttributeMask || !iEvent.EventId())
- aMenuPane->SetItemDimmed(EEvtEditorCmdDiscard, ETrue);
- else
- aMenuPane->SetItemDimmed(EEvtEditorCmdDiscard, EFalse);
-
- // Initially display all the Editor specific Menu items which
- // are dimmed based on focus and context
- aMenuPane->SetItemDimmed(EEvtEditorCmdAddDesc, ETrue);
- aMenuPane->SetItemDimmed(EEvtEditorCmdRemoveDesc, ETrue);
- aMenuPane->SetItemDimmed(EEvtEditorCmdSetPlace, ETrue);
- aMenuPane->SetItemDimmed(EEvtEditorCmdEditDesc, ETrue);
-
- if(NULL == ControlOrNull(EEvtMgmtUiDlgCIdAssignTone))
- aMenuPane->SetItemDimmed(EEvtEditorCmdAssignTone, EFalse);
- else
- aMenuPane->SetItemDimmed(EEvtEditorCmdAssignTone, ETrue);
-
- // "Add Description" / "Remove Description" is displayed based
- // on Decsription control's existance in Form
- if( NULL == ControlOrNull(EEvtMgmtUiDlgCIdDesc) )
- {
- aMenuPane->SetItemDimmed(EEvtEditorCmdAddDesc, EFalse);
- aMenuPane->SetItemDimmed(EEvtEditorCmdRemoveDesc, ETrue);
- }
- else
- {
- aMenuPane->SetItemDimmed(EEvtEditorCmdAddDesc, ETrue);
- aMenuPane->SetItemDimmed(EEvtEditorCmdRemoveDesc, EFalse);
- }
-
- // Menu items whose existance depends on the focussed control
- switch( IdOfFocusControl() )
- {
- case EEvtMgmtUiDlgCIdPlace:
- {
- aMenuPane->SetItemDimmed(EEvtEditorCmdSetPlace, EFalse);
- break;
- }
- case EEvtMgmtUiDlgCIdDesc:
- {
- aMenuPane->SetItemDimmed(EEvtEditorCmdEditDesc, EFalse);
- break;
- }
- case EEvtMgmtUiDlgCIdAssignTone:
- {
- aMenuPane->SetItemDimmed(EAknFormCmdEdit, ETrue);
- aMenuPane->SetItemDimmed(EEvtEditorCmdAssignTone, EFalse);
- break;
- }
- case EEvtMgmtUiDlgCIdRepeat:
- case EEvtMgmtUiDlgCIdAudioLoop:
- case EEvtMgmtUiDlgCIdStatus:
- {
- aMenuPane->SetItemDimmed(EAknFormCmdEdit, EFalse);
- aMenuPane->SetItemTextL(EAknFormCmdEdit,R_EVTUI_CREATENEW_FORM_CMDCHANGE);
- break;
- }
- default:
- {
- break;
- }
- }//switch
-
- // Activate and Draft are absent in Edit mode
- aMenuPane->SetItemDimmed(EEvtEditorCmdActivate, ETrue);
- aMenuPane->SetItemDimmed(EEvtEditorCmdSaveDraft, ETrue);
-
- // Editor/Viewer specific menu items
- aMenuPane->SetItemDimmed(EEvtEditorCmdNavigateToPlace, ETrue);
- aMenuPane->SetItemDimmed(EEvtEditorCmdShowOnMap, ETrue);
- aMenuPane->SetItemDimmed(EEvtMgmtUiEventUiPosSettings, EFalse);
- }
- else // View Mode
- {
- // "Edit" present only in Viewer mode
- aMenuPane->SetItemDimmed(EAknFormCmdEdit, EFalse);
-
- // "Discard Changes" has to be absent only in View mode
- aMenuPane->SetItemDimmed(EEvtEditorCmdDiscard, ETrue);
-
- // Dim all the Editor specific Menu items.
- aMenuPane->SetItemDimmed(EEvtEditorCmdAddDesc, ETrue);
- aMenuPane->SetItemDimmed(EEvtEditorCmdRemoveDesc, ETrue);
- aMenuPane->SetItemDimmed(EEvtEditorCmdSetPlace, ETrue);
- aMenuPane->SetItemDimmed(EEvtEditorCmdEditDesc, ETrue);
- aMenuPane->SetItemDimmed(EEvtEditorCmdAssignTone, ETrue);
-
- // Menu items that depend on Event's status
- switch( iEvent.EventStatus() )
- {
- case EActive:
- {
- aMenuPane->SetItemDimmed(EEvtEditorCmdActivate, ETrue);
- aMenuPane->SetItemDimmed(EEvtEditorCmdSaveDraft, EFalse);
- break;
- }
- case EDraft:
- {
- if(MandatoryFieldsFilled())
- aMenuPane->SetItemDimmed(EEvtEditorCmdActivate, EFalse);
- else
- aMenuPane->SetItemDimmed(EEvtEditorCmdActivate, ETrue);
- aMenuPane->SetItemDimmed(EEvtEditorCmdSaveDraft, ETrue);
- break;
- }
- case ECompleted:
- {
- aMenuPane->SetItemDimmed(EEvtEditorCmdActivate, EFalse);
- aMenuPane->SetItemDimmed(EEvtEditorCmdSaveDraft, EFalse);
- break;
- }
- default:
- break;
- }
-
- // if location is defined
- if( Math::IsNaN( iEvent.Location().Latitude() ) || Math::IsNaN( iEvent.Location().Latitude() )
- || iEvent.Location().Latitude() == 0 || iEvent.Location().Latitude() == 0 )
- {
- aMenuPane->SetItemDimmed(EEvtEditorCmdNavigateToPlace, ETrue);
- aMenuPane->SetItemDimmed(EEvtEditorCmdShowOnMap, ETrue);
- }
- else
- {
- aMenuPane->SetItemDimmed(EEvtEditorCmdNavigateToPlace, EFalse);
- aMenuPane->SetItemDimmed(EEvtEditorCmdShowOnMap, EFalse);
- }
- aMenuPane->SetItemDimmed(EEvtMgmtUiEventUiPosSettings, ETrue);
- }
-
- }//if
- }
-// -----------------------------------------------------------------------------
-// Derived from CEikDialog
-// CEvtEditor::HandleControlStateChangeL()
-// Called when focus is moved from the specified line.
-// -----------------------------------------------------------------------------
-//
-void CEvtEditor::HandleControlStateChangeL(TInt aControlId)
- {
- EVTUIDEBUG1("+ CEvtEditor::PostLayoutDynInitL() - %d", aControlId );
- switch(aControlId)
- {
- case EEvtMgmtUiDlgCIdSubject:
- {
- iEventAttributeMask = iEventAttributeMask | CEvtMgmtUiEngine::EEvtEventAttributeSubject;
-
- //Retrieve subject text
- CEikEdwin* subjectEditor = static_cast <CEikEdwin*> (ControlOrNull(EEvtMgmtUiDlgCIdSubject));
- if(subjectEditor)
- {
- HBufC* subject = subjectEditor->GetTextInHBufL();
- if( subject )
- {
- CleanupStack::PushL(subject);
- subject->Des().Trim();
- iEvent.SetSubjectL(*subject);
- MakeTitleL(*subject);
- CleanupStack::PopAndDestroy(subject);
- }
- else
- {
- iEvent.SetSubjectL(KNullDesC);
- HBufC* navititle = StringLoader::LoadLC( R_EVTUI_CREATENEW_FORM_DEFAULTNAVITITLE);
- MakeTitleL(*navititle);
- CleanupStack::PopAndDestroy(navititle);
- }
- }
- break;
- }
- case EEvtMgmtUiDlgCIdRadius:
- {
- iEventAttributeMask = iEventAttributeMask | CEvtMgmtUiEngine::EEvtEventAttributeRadius;
- CAknUnitEditor* radiusEd =
- (CAknUnitEditor*)Control( EEvtMgmtUiDlgCIdRadius );
- if(radiusEd)
- {
- //convert radius in km unit
- TReal val(0);
- if( EAknUnitEditorMile == radiusEd->Unit() )
- {
- val = radiusEd->Value();
- val /= KUnitConversion;
- }
- if( EAknUnitEditorKilometer ==radiusEd->Unit() )
- val = radiusEd->Value();
-
- //validate radius value
- if( val<KMinRadiusInKm ) //if less than minima, set to minima
- iEvent.SetRadius( KMinRadiusInKm );
- else if( val>KMaxRadiusInKm ) //if greater than maxima, set to maxima
- iEvent.SetRadius( KMaxRadiusInKm );
- else
- iEvent.SetRadius( val );
- }
- break;
- }
- case EEvtMgmtUiDlgCIdRepeat:
- {
- iEventAttributeMask = iEventAttributeMask | CEvtMgmtUiEngine::EEvtEventAttributeRepeat;
- CAknPopupFieldText* repeatPopupFieldText =
- (CAknPopupFieldText*)Control( EEvtMgmtUiDlgCIdRepeat );
- if(repeatPopupFieldText)
- {
- if(repeatPopupFieldText->CurrentValueIndex() == 0)
- iEvent.SetRepeat( ETrue );
- else
- iEvent.SetRepeat( EFalse );
- }
- break;
- }
- case EEvtMgmtUiDlgCIdAudioLoop:
- {
- iEventAttributeMask = iEventAttributeMask | CEvtMgmtUiEngine::EEvtEventAttributeAudioLoop;
- CAknPopupFieldText* audioLoopPopupFieldText =
- (CAknPopupFieldText*)Control( EEvtMgmtUiDlgCIdAudioLoop );
- if(audioLoopPopupFieldText)
- {
- CEvtToneAction* tone = CEvtToneAction::NewLC();
- tone->InternalizeL( iEvent.Action() );
- if( audioLoopPopupFieldText->CurrentValueIndex() == 0)
- tone->SetToneLoop( EFalse );
- else
- tone->SetToneLoop( ETrue );
-
- CEvtAction* action = CEvtAction::NewLC();
- tone->ExternalizeL( *action );
- iEvent.SetActionL( action ); //ownership is transferred.
- CleanupStack::Pop( action );
- CleanupStack::PopAndDestroy( tone );
- }
- break;
- }
- case EEvtMgmtUiDlgCIdStatus:
- {
- iEventAttributeMask = iEventAttributeMask | CEvtMgmtUiEngine::EEvtEventAttributeStatus;
- CAknPopupFieldText* statusPopupFieldText =
- (CAknPopupFieldText*)Control( EEvtMgmtUiDlgCIdStatus );
- if(statusPopupFieldText)
- {
- switch(statusPopupFieldText->CurrentValueIndex())
- {
- case 0:
- iEvent.SetEventStatus(EActive);
- break;
- case 1:
- iEvent.SetEventStatus(EDraft);
- break;
- case 2:
- iEvent.SetEventStatus(ECompleted);
- break;
- default:
- iEvent.SetEventStatus(EDraft);
- break;
- }
- }
- break;
- }
- }
- EVTUIDEBUG("- CEvtEditor::PostLayoutDynInitL()");
- }
-
-
-// -----------------------------------------------------------------------------
-// CEvtEditor::ProcessCommandL()
-// It handles command events
-// -----------------------------------------------------------------------------
-//
-void CEvtEditor::ProcessCommandL(TInt aCommandId)
- {
- EVTUIDEBUG1("+ CEvtEditor::ProcessCommandL() - %d", aCommandId );
- CAknForm::ProcessCommandL(aCommandId); //to hide menu
-
-
- switch(aCommandId)
- {
- case EEvtEditorCmdAddDescNew:
- case EEvtEditorCmdAddDescFromExisting:
- case EEvtEditorCmdEditDesc:
- case EEvtEditorCmdAssignTone:
- case EEvtEditorCmdShowOnMap:
- case EEvtEditorCmdNavigateToPlace:
- case EEvtMgmtUiEventUiPosSettings:
- case EEvtEditorCmdSetPlace:
- {
- iCmdHandler->HandleEditorCmdL( aCommandId );
- break;
- }
- case EEvtEditorCmdRemoveDesc:
- {
- RemoveDesDlgLineL();
- iEventAttributeMask = iEventAttributeMask | CEvtMgmtUiEngine::EEvtEventAttributeDesc;
- DrawDeferred();
- break;
- }
- case EEvtEditorCmdDelete:
- {
- if( IsEmptyEventL() )
- TryExitL( EAknSoftkeyBack );
- else if( DisplayConfirmationQueryDlgL(R_EVTUI_CREATENEW_FORM_CONFIRMATION_DELETEEVENT) )
- {
- if( !iEvent.EventId() )
- TryExitL( EAknSoftkeyBack );
- else
- iCmdHandler->HandleEditorCmdL( aCommandId );
- }
- break;
- }
- case EEvtEditorCmdActivate:
- {
- if(IsEditable())
- ProcessDoneCommandL();
- else
- {
- iEvent.SetEventStatus(EActive);
- iEventAttributeMask = iEventAttributeMask | CEvtMgmtUiEngine::EEvtEventAttributeStatus;
- iCmdHandler->SetEventAttributeMask( iEventAttributeMask );
- iCmdHandler->HandleEditorCmdL( aCommandId );
- }
- break;
- }
- case EEvtEditorCmdSaveDraft:
- {
- if(IsEditable())
- ProcessDoneCommandL();
- else
- {
- iEvent.SetEventStatus(EDraft);
- iEventAttributeMask = iEventAttributeMask | CEvtMgmtUiEngine::EEvtEventAttributeStatus;
- iCmdHandler->SetEventAttributeMask( iEventAttributeMask );
- iCmdHandler->HandleEditorCmdL( aCommandId );
- }
- break;
- }
- case EAknCmdExit:
- {
- // The User has exited the application using the Exit option from
- //.Options menu. But, thats possible only if we exit the application
- // with EAknCmdExit.
- // A bit of convoluted logic but needed because we are using the
- // same components for the Settings UI Server as well as LC.
-
- CEikAppServer* server = iEikonEnv->AppServer();
- if ( server )
- {
- server->NotifyServerExit( EAknCmdExit );
- }
- CAknAppUi* appUi = static_cast< CAknAppUi* >( iEikonEnv->AppUi());
- appUi->RunAppShutter();
- break;
- }
- case EAknFormCmdEdit:
- {
- HandleMSKL();
- if( !iIsEditMode )
- {
- iIsEditMode = ETrue;
- }
- DrawDeferred();
- break;
- }
- case EEvtEditorCmdDiscard:
- if( !DisplayConfirmationQueryDlgL(R_LOCEV_QUERY_DISCARD_CHANGES) )
- break;
- case EAknSoftkeyBack:
- {
- TryExitL( EAknSoftkeyBack );
- break;
- }
- case EAknCmdHelp:
- {
- HlpLauncher::LaunchHelpApplicationL( iEikonEnv->WsSession(),
- static_cast<CAknAppUi*>(
- iCoeEnv->AppUi() )->AppHelpContextL() );
- break;
- }
- default:
- {
- //panic code
- break;
- }
- }
- EVTUIDEBUG("- CEvtEditor::ProcessCommandL()");
- }
-
-// -----------------------------------------------------------------------------
-// CEvtEditor::SetMopParent
-// -----------------------------------------------------------------------------
-//
-void CEvtEditor::SetMopParent(
- MObjectProvider* aParent )
- {
- CCoeControl::SetMopParent( aParent );
- }
-
-// -----------------------------------------------------------------------------
-// CEvtEditor::SetHelpContext
-// -----------------------------------------------------------------------------
-//
-void CEvtEditor::SetHelpContext( TCoeHelpContext aContext )
- {
- iHelpContext = aContext;
- }
-
-// -----------------------------------------------------------------------------
-// CEvtEditor::ExecuteL
-// -----------------------------------------------------------------------------
-//
-TInt CEvtEditor::ExecuteLD()
- {
- return CAknForm::ExecuteLD( R_EVTMGMTUI_CREATEEVENT_FORM_DIALOG );
- }
-
-// -----------------------------------------------------------------------------
-// CEvtEditor::GetHelpContext
-// -----------------------------------------------------------------------------
-//
-void CEvtEditor::GetHelpContext( TCoeHelpContext& aContext ) const
- {
- if ( iHelpContext.iContext.Length() > 0 )
- {
- aContext.iContext = iHelpContext.iContext;
- aContext.iMajor = iHelpContext.iMajor;
- }
- }
-
-// -----------------------------------------------------------------------------
-// CEvtEditor::DisplayConfirmationQueryDlg()
-// It shows confirmation query dialog
-// -----------------------------------------------------------------------------
-//
-TBool CEvtEditor::DisplayConfirmationQueryDlgL( TInt aResourceId )
- {
- HBufC* msg = StringLoader::LoadLC(aResourceId);
- TBool response= EFalse;
- CAknQueryDialog* confirmationQuery = CAknQueryDialog::NewL();
- response = confirmationQuery->ExecuteLD(R_EVTUI_CONFIRMATION_QUERY, *msg);
- CleanupStack::PopAndDestroy(msg);
- return response;
- }
-
-// -----------------------------------------------------------------------------
-// CEvtEditor::ChangeRSKCaptionL()
-// It changes caption of RSK key
-// -----------------------------------------------------------------------------
-//
-void CEvtEditor::ChangeRSKCaptionL()
- {
- EVTUIDEBUG("+ CEvtEditor::ChangeRSKCaptionL()");
- //if edit mode then RSK =Done otherwise Back
- CEikButtonGroupContainer* cba = CEikButtonGroupContainer::Current();
- CleanupStack::PushL( cba );
- if(iIsEditMode)
- cba->SetCommandSetL ( R_EVTMGMTUI_CREATEEVENT_CBA_NOMSK );
- else
- cba->SetCommandSetL(R_EVTMGMTUI_CREATEEVENT_CBA_BACK);
- cba->DrawDeferred();
- CleanupStack::Pop();//cba
- EVTUIDEBUG("- CEvtEditor::ChangeRSKCaptionL()");
- }
-
-// -----------------------------------------------------------------------------
-// CEvtEditor::ChangeMSKCaptionL()
-// It changes caption of MSK key
-// @param aControlId of current focused line
-// -----------------------------------------------------------------------------
-//
-void CEvtEditor::ChangeMSKCaptionL(TInt aControlId)
- {
- EVTUIDEBUG("+ CEvtEditor::ChangeMSKCaptionL()");
- CEikButtonGroupContainer* cba = CEikButtonGroupContainer::Current();
- CleanupStack::PushL( cba );
-
- //attribute specific cba
- switch(aControlId)
- {
- case EEvtMgmtUiDlgCIdSubject:
- case EEvtMgmtUiDlgCIdRadius:
- {//Options Done
- cba->SetCommandSetL(R_EVTMGMTUI_CREATEEVENT_CBA_NOMSK);
- break;
- }
- case EEvtMgmtUiDlgCIdRepeat:
- case EEvtMgmtUiDlgCIdAssignTone:
- case EEvtMgmtUiDlgCIdAudioLoop:
- case EEvtMgmtUiDlgCIdStatus:
- { //Options Change Done
- cba->SetCommandSetL(R_EVTMGMTUI_CREATEEVENT_CBA);
- break;
- }
- case EEvtMgmtUiDlgCIdDesc:
- {//Options Edit Done
- cba->SetCommandSetL(R_EVTMGMTUI_CREATEEVENT_CBA_EDIT);
- break;
- }
- case EEvtMgmtUiDlgCIdPlace:
- {
- if(iEvent.Place().Compare(KNullDesC)==0)//Options Define Done
- cba->SetCommandSetL(R_EVTMGMTUI_CREATEEVENT_CBA_DEFINE);
- else //Options Change Done
- cba->SetCommandSetL(R_EVTMGMTUI_CREATEEVENT_CBA);
- break;
- }
- default:
- break;
- }
- cba->DrawDeferred();
- CleanupStack::Pop();//cba
- EVTUIDEBUG("- CEvtEditor::ChangeMSKCaptionL()");
- }
-
-// -----------------------------------------------------------------------------
-// CEvtEditor::HandleMSKL()
-// It performs the required action when MSK is pressed
-// -----------------------------------------------------------------------------
-//
-void CEvtEditor::HandleMSKL()
- {
- EVTUIDEBUG("+ CEvtEditor::HandleMSKL()");
- if( !iIsEditMode )
- {
- iIsEditMode = ETrue;
- SetEditableL(ETrue);
- ChangeRSKCaptionL();
- ChangeMSKCaptionL( IdOfFocusControl() );
- return;
- }
-
- if(IsEditable())
- {
- //attribute specific action
- switch( IdOfFocusControl() )
- {
- case EEvtMgmtUiDlgCIdSubject:
- {
- CEikEdwin* subjectEditor = static_cast <CEikEdwin*> (ControlOrNull(EEvtMgmtUiDlgCIdSubject));
- if(subjectEditor )
- {
- subjectEditor->SetCursorPosL(iEvent.Subject().Length(),EFalse);
- subjectEditor->DrawDeferred();
- }
- break;
- }
- case EEvtMgmtUiDlgCIdPlace:
- {
- ProcessCommandL(EEvtEditorCmdSetPlace);
- break;
- }
- case EEvtMgmtUiDlgCIdDesc:
- {
- ProcessCommandL(EEvtEditorCmdEditDesc);
- break;
- }
- case EEvtMgmtUiDlgCIdAssignTone:
- {
- ProcessCommandL(EEvtEditorCmdAssignTone);
- break;
- }
- case EEvtMgmtUiDlgCIdRepeat:
- {
- //ProcessCommandL(EEvtMgmtUiDlgCIdRepeat);
- TogglePopupFieldControlL( EEvtMgmtUiDlgCIdRepeat );
- break;
- }
- case EEvtMgmtUiDlgCIdAudioLoop:
- {
- //ProcessCommandL(EEvtMgmtUiDlgCIdAudioLoop);
- TogglePopupFieldControlL( EEvtMgmtUiDlgCIdAudioLoop );
- break;
- }
- case EEvtMgmtUiDlgCIdStatus:
- {
- CheckStatusL();
- CAknPopupFieldText* statusEditor = static_cast <CAknPopupFieldText*> ( ControlOrNull(EEvtMgmtUiDlgCIdStatus) );
- if (statusEditor)
- {
- TKeyEvent keyEvent;
- keyEvent.iCode = EKeyEnter;
- keyEvent.iModifiers = EModifierPureKeycode;
- statusEditor->OfferKeyEventL( keyEvent, EEventKey );
- }
- break;
- }
- default:
- {
- //error panic
- break;
- }
- }
- }
- EVTUIDEBUG("- CEvtEditor::HandleMSKL()");
- }
-
-// -----------------------------------------------------------------------------
-// CEvtEditor::InsertDesDlgLineL()
-// It inserts dialog line for descriptor
-// -----------------------------------------------------------------------------
-//
-void CEvtEditor::InsertDesDlgLineL()
- {
- EVTUIDEBUG("+ CEvtEditor::InsertDesDlgLineL()");
- TInt lineIndex;
- if( !ControlOrNull( EEvtMgmtUiDlgCIdRadius ))
- {
- lineIndex = FindLineIndex(* ControlOrNull(EEvtMgmtUiDlgCIdPlace)) + 1;
- }
- else
- {
- lineIndex = FindLineIndex(* ControlOrNull(EEvtMgmtUiDlgCIdRadius)) + 1;
- }
- InsertLineL(lineIndex,R_EVTUI_CREATENEWFORM_DLGLINE_DESC);
- UpdatePageL(ETrue);
- EVTUIDEBUG("- CEvtEditor::InsertDesDlgLineL()");
- }
-
-// -----------------------------------------------------------------------------
-// CEvtEditor::RemoveDesDlgLineL()
-// It removes dialog line for descriptor
-// -----------------------------------------------------------------------------
-//
-void CEvtEditor::RemoveDesDlgLineL()
- {
- EVTUIDEBUG("+ CEvtEditor::RemoveDesDlgLineL()");
- if( ControlOrNull(EEvtMgmtUiDlgCIdDesc))
- {
- DeleteLine(EEvtMgmtUiDlgCIdDesc,ETrue);
- iEvent.SetDescriptionL(KNullDesC);
- }
- EVTUIDEBUG("- CEvtEditor::RemoveDesDlgLineL()");
- }
-
-// -----------------------------------------------------------------------------
-// CEvtEditor::SetDescL()
-// It sets text to descriptor edwin
-// -----------------------------------------------------------------------------
-//
-void CEvtEditor::SetDescL()
- {
- EVTUIDEBUG("+ CEvtEditor::SetDescL()");
- CEikEdwin* descEditor = static_cast <CEikEdwin*> (ControlOrNull(EEvtMgmtUiDlgCIdDesc));
- if (descEditor)
- {
- TPtrC desc = iEvent.Description();
- descEditor->SetTextL(&desc);
- UpdatePageL(ETrue);
- }
- EVTUIDEBUG("- CEvtEditor::SetDescL()");
- }
-
-// -----------------------------------------------------------------------------
-// CEvtEditor::SetRadiusL()
-// It sets radius to radius editor
-// -----------------------------------------------------------------------------
-//
-void CEvtEditor::SetRadiusL()
- {
- EVTUIDEBUG("+ CEvtEditor::SetRadiusL()");
- CAknUnitEditor* radiusEd =
- (CAknUnitEditor*)Control( EEvtMgmtUiDlgCIdRadius );
- if(radiusEd)
- {
- NotifySOMChangeL(); // to set unit value
- }
- EVTUIDEBUG("- CEvtEditor::SetRadiusL()");
- }
-
-// -----------------------------------------------------------------------------
-// CEvtEditor::CheckStatusL()
-// It Checks for the status and dynamically sets the popup list
-// -----------------------------------------------------------------------------
-//
-void CEvtEditor::CheckStatusL()
- {
- CAknPopupFieldText* statusEditor = static_cast <CAknPopupFieldText*> ( ControlOrNull(EEvtMgmtUiDlgCIdStatus) );
- if( statusEditor && statusEditor->MdcArray()->MdcaCount() == 3 )
- {
- MDesC16Array* statusArray = (MDesC16Array*) (statusEditor->MdcArray());
- CAknQueryValueTextArray* aTextArray = static_cast <CAknQueryValueTextArray*> (statusArray);
- CDesCArray* arr = aTextArray->Array(); // Delete the previous Array
- arr->Reset();
- arr->Compress();
- HBufC* strActive = StringLoader::LoadLC( R_LOCEV_LIST_VALUE_ACTIVE );
- HBufC* strDraft = StringLoader::LoadLC( R_LOCEV_LIST_VALUE_DRAFT );
- arr->AppendL( *strActive );
- arr->AppendL( *strDraft );
- CleanupStack::PopAndDestroy( strDraft );
- CleanupStack::PopAndDestroy( strActive );
-
- if(EActive == iEvent.EventStatus())
- statusEditor->SetCurrentValueIndex (0);
- else
- statusEditor->SetCurrentValueIndex (1);
-
- statusEditor->SetFocus(ETrue);
- }
- }
-
-// -----------------------------------------------------------------------------
-// CEvtEditor::SetStatusL()
-// It sets Status of the event
-// -----------------------------------------------------------------------------
-//
-void CEvtEditor::SetStatusL()
- {
- EVTUIDEBUG("+ CEvtEditor::SetStatusL()");
- //Set Status of the Event
- CAknPopupFieldText* statusEditor = static_cast <CAknPopupFieldText*> ( ControlOrNull(EEvtMgmtUiDlgCIdStatus) );
- if(statusEditor)
- {
- switch(iEvent.EventStatus())
- {
- case EActive:
- statusEditor->SetCurrentValueIndex(0);
- break;
- case EDraft:
- statusEditor->SetCurrentValueIndex(1);
- break;
- case ECompleted:
- statusEditor->SetCurrentValueIndex(2);
- break;
- default:
- statusEditor->SetCurrentValueIndex(0);
- break;
- }
- }
- EVTUIDEBUG("- CEvtEditor::SetStatusL()");
- }
-
-// -----------------------------------------------------------------------------
-// CEvtEditor::SetPlaceL()
-// It sets text to place edwin
-// -----------------------------------------------------------------------------
-//
-void CEvtEditor::SetPlaceL()
- {
- EVTUIDEBUG("+ CEvtEditor::SetPlaceL()");
- //Set place dialog line to new place value
- CEikEdwin* placeEditor = static_cast <CEikEdwin*> (ControlOrNull(EEvtMgmtUiDlgCIdPlace));
- if (placeEditor)
- {
- HBufC* place = iEvent.Place().AllocLC();
- if(place->Compare(KNullDesC)!=0)
- {
- iEventAttributeMask = iEventAttributeMask | CEvtMgmtUiEngine::EEvtEventAttributePlace;
- placeEditor->SetTextL(place);
- placeEditor->DrawDeferred();
- InsertRadiusDlgLineL();
- DrawNow();
- }
- CleanupStack::PopAndDestroy(place);
- }
- EVTUIDEBUG("- CEvtEditor::SetPlaceL()");
- }
-
-// -----------------------------------------------------------------------------
-// CEvtEditor::SetRingtoneL()
-// It sets text to ringtone edwin
-// -----------------------------------------------------------------------------
-//
-void CEvtEditor::SetRingtoneL()
- {
- EVTUIDEBUG("+ CEvtEditor::SetRingtoneL()");
- CEikEdwin* ringtoneEditor = static_cast <CEikEdwin*> ( ControlOrNull(EEvtMgmtUiDlgCIdAssignTone) );
-
- if ( ringtoneEditor )
- {
- if( iEvent.HasAction() )
- {
- CEvtToneAction* tone = CEvtToneAction::NewLC();
- tone->InternalizeL( iEvent.Action() );
- TParsePtrC parse( tone->FileName() );
- TPtrC filename = parse.NameAndExt();
- ringtoneEditor->SetTextL( &filename );
-
- // Insert Loop
- InsertAudioLoopDlgLinesL();
- CAknPopupFieldText* audioLoopEditor = static_cast <CAknPopupFieldText*> ( ControlOrNull(EEvtMgmtUiDlgCIdAudioLoop) );
- if(audioLoopEditor)
- {
- if(tone->ToneLoop())
- audioLoopEditor->SetCurrentValueIndex(1);
- else
- audioLoopEditor->SetCurrentValueIndex(0);
- }
- CleanupStack::PopAndDestroy( tone );
- }
- else
- {
- HBufC* strOff = StringLoader::LoadLC( R_EVTUI_RINGTONESELECT_OFF );
- ringtoneEditor->SetTextL( strOff );
- CleanupStack::PopAndDestroy( strOff );
-
- // Remove Loop
- RemoveAudioLoopDlgLineL();
- }
- UpdatePageL(ETrue);
- }
- Debug(_L("CEvtEditor::SetRingtoneL()"));
- if( iEvent.HasAction() )
- {
- CEvtToneAction* tone = CEvtToneAction::NewLC();
- TFileName debug;
- tone->InternalizeL( iEvent.Action() );
- debug.Copy(_L("Ringtone: "));
- debug.Append(tone->FileName());
- Debug(debug);
- debug.Copy(_L("Audio Loop: "));
- debug.AppendNum(tone->ToneLoop());
- Debug(debug);
- CleanupStack::PopAndDestroy(tone);
- }
- EVTUIDEBUG("- CEvtEditor::SetRingtoneL()");
- }
-
-// -----------------------------------------------------------------------------
-// CEvtEditor::MandatoryFieldsFilled()
-// It checks if all mandatory fields are filled
-// @return ETrue if all mandatory fields are filled
-// KFalse otherwise
-// -----------------------------------------------------------------------------
-//
-TBool CEvtEditor::MandatoryFieldsFilled()
- {
- return (iEvent.Subject().Compare(KNullDesC)!=0 && iEvent.Place().Compare(KNullDesC)!=0);
- }
-
-// -----------------------------------------------------------------------------
-// CEvtEditor::LineChangedL()
-// Derived from CAknDialog
-// -----------------------------------------------------------------------------
-//
-void CEvtEditor::LineChangedL(TInt aControlId)
- {
- EVTUIDEBUG("+ CEvtEditor::LineChangedL()");
- if(iIsEditMode)
- ChangeMSKCaptionL(aControlId);
- EVTUIDEBUG("- CEvtEditor::LineChangedL()");
- }
-
-// -----------------------------------------------------------------------------
-// CEvtEditor::InsertRadiusDlgLineL()
-// It inserts dialog line for radius
-// -----------------------------------------------------------------------------
-//
-void CEvtEditor::InsertRadiusDlgLineL()
- {
- EVTUIDEBUG("+ CEvtEditor::InsertRadiusDlgLineL()");
- if( ControlOrNull(EEvtMgmtUiDlgCIdRadius)==NULL )
- {
- TInt lineIndex;
- lineIndex = FindLineIndex(* ControlOrNull(EEvtMgmtUiDlgCIdPlace))+1;
- InsertLineL(lineIndex,R_EVTUI_CREATENEWFORM_DLGLINE_RADIUS);
- SetRadiusL();
- }
- EVTUIDEBUG("- CEvtEditor::InsertRadiusDlgLineL()");
- }
-
-// -----------------------------------------------------------------------------
-// CEvtEditor::RemoveRadiusDlgLineL()
-// It remove dialog line for radius
-// -----------------------------------------------------------------------------
-//
-void CEvtEditor::RemoveRadiusDlgLineL()
- {
- EVTUIDEBUG("+ CEvtEditor::RemoveRadiusDlgLineL()");
- if(ControlOrNull(EEvtMgmtUiDlgCIdRadius)!=NULL)
- {
- DeleteLine(EEvtMgmtUiDlgCIdRadius,ETrue);
- }
- EVTUIDEBUG("- CEvtEditor::RemoveRadiusDlgLineL()");
- }
-
-// -----------------------------------------------------------------------------
-// CEvtEditor::RemoveAudioLoopDlgLineL()
-// It removes dialog line for ringtone and audio-loop
-// -----------------------------------------------------------------------------
-//
-void CEvtEditor::RemoveAudioLoopDlgLineL()
- {
- EVTUIDEBUG("+ CEvtEditor::RemoveAudioLoopDlgLineL()");
- if(ControlOrNull(EEvtMgmtUiDlgCIdAudioLoop)!=NULL)
- {
- DeleteLine(EEvtMgmtUiDlgCIdAudioLoop,ETrue);
- }
- EVTUIDEBUG("- CEvtEditor::RemoveAudioLoopDlgLineL()");
- }
-// -----------------------------------------------------------------------------
-// CEvtEditor::InsertAudioLoopDlgLinesL()
-// It inserts dialog line for ringtone and audio-loop
-// -----------------------------------------------------------------------------
-//
-void CEvtEditor::InsertAudioLoopDlgLinesL()
- {
- EVTUIDEBUG("+ CEvtEditor::InsertAudioLoopDlgLinesL()");
- if( ControlOrNull(EEvtMgmtUiDlgCIdAudioLoop)==NULL )
- {
- TInt lastLineIndex = FindLineIndex(* ControlOrNull(EEvtMgmtUiDlgCIdAssignTone));
- InsertLineL(lastLineIndex+1,R_EVTUI_CREATENEWFORM_DLGLINE_AUDIOLOOP);
- UpdatePageL(ETrue);
- }
- EVTUIDEBUG("- CEvtEditor::InsertAudioLoopDlgLinesL()");
- }
-
-// -----------------------------------------------------------------------------
-// CEvtEditor::NotifyEditorL()
-// Inherited from MEvtMgmtUiEditorObserver
-// -----------------------------------------------------------------------------
-//
-void CEvtEditor::NotifyEditorL(TInt aCommand, TInt aErrorCode)
- {
- EVTUIDEBUG1("+ CEvtEditor::NotifyEditorL() - %d", aErrorCode );
- if(aErrorCode!=KErrNone && aErrorCode!=KErrCancel&& aErrorCode!=KErrNotFound)
- return;
-
- switch(aCommand)
- {
- case EEvtEditorCmdSetPlace:
- {
- if( aErrorCode==KErrNone )
- SetPlaceL();
- ChangeMSKCaptionL(EEvtMgmtUiDlgCIdPlace);
- break;
- }
- case EEvtEditorCmdAddDescNew:
- case EEvtEditorCmdAddDescFromExisting:
- case EEvtEditorCmdEditDesc:
- {
- if( aErrorCode == KErrNone )
- {
- if(!ControlOrNull(EEvtMgmtUiDlgCIdDesc))
- InsertDesDlgLineL();
- TryChangeFocusToL( EEvtMgmtUiDlgCIdDesc );
- SetDescL();
- }
- else
- {
- RemoveDesDlgLineL();
- DrawNow();
- }
- iEventAttributeMask = iEventAttributeMask | CEvtMgmtUiEngine::EEvtEventAttributeDesc;
- break;
- }
- case EEvtEditorCmdAssignTone:
- {
- if ( aErrorCode == KErrNone || aErrorCode == KErrNotFound )
- {
- // Ring tone assignment was successful
- SetRingtoneL();
- TryChangeFocusToL( EEvtMgmtUiDlgCIdAssignTone );
- iEventAttributeMask = iEventAttributeMask | CEvtMgmtUiEngine::EEvtEventAttributeTone;
- }
- break;
- }
- case EEvtEditorCmdDelete:
- case EEvtEditorCmdActivate:
- case EEvtEditorCmdSaveDraft:
- {
- if ( !aErrorCode )
- {
- TryExitL( EEvtEditorCmdCloseDlg );
- }
- break;
- }
- default:
- {
- break;
- }
- }
- EVTUIDEBUG("- CEvtEditor::NotifyEditorL()");
- }
-
-// -----------------------------------------------------------------------------
-// CEvtEditor::NotifySOMChangeL()
-// Inherited from MEvtMgmtUiSOMObserver
-// -----------------------------------------------------------------------------
-//
-void CEvtEditor::NotifySOMChangeL( )
- {
- EVTUIDEBUG("+ CEvtEditor::NotifySOMChangeL()");
- if( ControlOrNull(EEvtMgmtUiDlgCIdRadius) != NULL )
- {
- CAknUnitEditor* radiusEd =
- (CAknUnitEditor*)Control( EEvtMgmtUiDlgCIdRadius );
-
- //convert radius in km unit
- TReal val(0);
- switch( iSysOfMeas->GetCurrentSysofMeasL() )
- {
- case ELocImperial: // Mile
- {
- val = iEvent.Radius();
- val *= KUnitConversion;
- TReal setVal;
- Math::Round(setVal, val, 2);
- radiusEd->SetMinimumAndMaximum( KMinRadiusInKm*KUnitConversion, KMaxRadiusInKm*KUnitConversion );
- radiusEd->SetValue( setVal );
- radiusEd->SetUnitL( EAknUnitEditorMile );
- break;
- }
- case ELocMetric: // KiloMetre
- {
- val = iEvent.Radius();
- TReal setVal;
- Math::Round(setVal, val, 2);
- radiusEd->SetMinimumAndMaximum( KMinRadiusInKm, KMaxRadiusInKm );
- radiusEd->SetValue( setVal );
- radiusEd->SetUnitL( EAknUnitEditorKilometer );
- break;
- }
- default:
- break;
- }
- UpdatePageL(ETrue);
- }
- EVTUIDEBUG("- CEvtEditor::NotifySOMChangeL()");
- }
-
-// -----------------------------------------------------------------------------
-// CEvtEditor::OfferKeyEventL()
-// Inherited from CAknForm
-// -----------------------------------------------------------------------------
-//
-TKeyResponse CEvtEditor::OfferKeyEventL (const TKeyEvent &aKeyEvent, TEventCode aType)
- {
- // Handle the "C" key in View mode.
- if(!IsEditable() && aType == EEventKeyUp)
- {
- switch ( aKeyEvent.iScanCode )
- {
- case EStdKeyBackspace:
- case EStdKeyDelete:
- {
- ProcessCommandL( EEvtEditorCmdDelete );
- return EKeyWasConsumed;
- }
- default:
- {
- break;
- }
- }
- }
-
- // Handle the Control Specific key events.
- if( IdOfFocusControl() == EEvtMgmtUiDlgCIdPlace && aType == EEventKey )
- {
- switch(aKeyEvent.iCode)
- {
- case EKeyDownArrow:
- {
- if( ControlOrNull(EEvtMgmtUiDlgCIdRadius) )
- TryChangeFocusToL( EEvtMgmtUiDlgCIdRadius );
- else if( ControlOrNull(EEvtMgmtUiDlgCIdDesc) )
- TryChangeFocusToL( EEvtMgmtUiDlgCIdDesc );
- else if( ControlOrNull(EEvtMgmtUiDlgCIdRepeat) )
- TryChangeFocusToL( EEvtMgmtUiDlgCIdRepeat );
- return EKeyWasConsumed;
- }
- default:
- break;
- }
- }
- if( IdOfFocusControl() == EEvtMgmtUiDlgCIdStatus && aType == EEventKey )
- {
- switch(aKeyEvent.iCode)
- {
- case EKeyLeftArrow:
- case EKeyRightArrow:
- case EKeyOK:
- case EKeyEnter:
- {
- CheckStatusL();
- }
- default:
- break;
- }
- }
- return CAknForm::OfferKeyEventL( aKeyEvent, aType );
- }
-
-// -----------------------------------------------------------------------------
-// CEvtEditor::HandlePointerEventL()
-// Inherited from CAknForm
-// -----------------------------------------------------------------------------
-//
-void CEvtEditor::HandlePointerEventL(const TPointerEvent& aPointerEvent)
- {
- EVTUIDEBUG("+ CEvtEditor::HandlePointerEventL()");
-
- if( aPointerEvent.iType != TPointerEvent::EButton1Up )
- {
- CAknForm::HandlePointerEventL( aPointerEvent );
- if( aPointerEvent.iType == TPointerEvent::EDrag )
- iIsDragging++;
- return;
- }
-
- EVTUIDEBUG1("iIsDragging =%d",iIsDragging );
-
- //ToDo: Hack for kinetic scrolling
- // Must be removed once avkon fix is recieved.
- if( iIsDragging >6 )
- {
- CAknForm::HandlePointerEventL( aPointerEvent );
- iIsDragging = 0;
- return;
- }
-
- iIsDragging = 0;
- // End of todo
-
- if( !IsEditable() )
- {
- iIsEditMode = ETrue;
- SetEditableL(ETrue);
- ChangeRSKCaptionL();
- ChangeMSKCaptionL( IdOfFocusControl() );
- return;
- }
-
- CEikEdwin* editor = NULL;
- CAknPopupFieldText* popupFieldText = NULL;
- switch(IdOfFocusControl())
- {
- case EEvtMgmtUiDlgCIdPlace: // Place Editor
- editor = static_cast <CEikEdwin*> (ControlOrNull(EEvtMgmtUiDlgCIdPlace));
- if ( editor )
- {
- iCmdHandler->HandleEditorCmdL( EEvtEditorCmdSetPlace );
- }
- break;
- case EEvtMgmtUiDlgCIdDesc: // Description Editor
- editor = static_cast <CEikEdwin*> (ControlOrNull(EEvtMgmtUiDlgCIdDesc));
- if ( editor )
- {
- iCmdHandler->HandleEditorCmdL( EEvtEditorCmdEditDesc );
- }
- break;
- case EEvtMgmtUiDlgCIdAssignTone: // Tone Editor
- editor = static_cast <CEikEdwin*> (ControlOrNull(EEvtMgmtUiDlgCIdAssignTone));
- if ( editor )
- {
- iCmdHandler->HandleEditorCmdL( EEvtEditorCmdAssignTone );
- }
- break;
- case EEvtMgmtUiDlgCIdStatus: // Status Editor
- popupFieldText = static_cast <CAknPopupFieldText*> ( ControlOrNull(EEvtMgmtUiDlgCIdStatus) );
- if( popupFieldText )
- {
- TInt editorStatus = popupFieldText->CurrentValueIndex();
- CheckStatusL();
- if( ECompleted != editorStatus )
- {
- if( EActive == editorStatus )
- {
- popupFieldText->SetCurrentValueIndex ( EDraft );
- }
- else
- {
- popupFieldText->SetCurrentValueIndex ( EActive );
- }
- HandleControlStateChangeL( EEvtMgmtUiDlgCIdStatus );
- UpdatePageL(ETrue);
- return;
- }
- else
- {
- CAknForm::HandlePointerEventL( aPointerEvent );
- return;
- }
- }
- break;
- case EEvtMgmtUiDlgCIdRepeat: // Repeat editor
- case EEvtMgmtUiDlgCIdAudioLoop: // audio loop editor
- TogglePopupFieldControlL( IdOfFocusControl() );
- break;
- default:
- CAknForm::HandlePointerEventL( aPointerEvent );
- break;
- }
- EVTUIDEBUG("- CEvtEditor::HandlePointerEventL()");
- }
-// ---------------------------------------------------------------------------
-// CEvtEditor::MakeTitleL()
-// Set the Title Text
-// ---------------------------------------------------------------------------
-//
-void CEvtEditor::MakeTitleL( TDesC& aText )
- {
- EVTUIDEBUG("+ CEvtEditor::MakeTitleL()");
-
- // Obtain the title from the Status Pane
- CAknTitlePane* title = static_cast<CAknTitlePane*>( iEikonEnv->AppUiFactory()->
- StatusPane()->ControlL( TUid::Uid( EEikStatusPaneUidTitle )));
-
- // Set the Title's buffer
- HBufC* buf = aText.AllocL();
- title->SetText( buf ); // Takes ownership of buf
- title->DrawNow();
- EVTUIDEBUG("- CEvtEditor::MakeTitleL()");
- }
-
-// ---------------------------------------------------------------------------
-// CEvtEditor::TogglePopupFieldControlL()
-// it toggles value of popupfield control
-// ---------------------------------------------------------------------------
-//
-void CEvtEditor::TogglePopupFieldControlL( TInt aControlId )
- {
- EVTUIDEBUG1("+ CEvtEditor::TogglePopupFieldControlL() - %d", aControlId );
- CAknPopupFieldText* audioLoopPopupFieldText =
- (CAknPopupFieldText*)Control( aControlId );
- if(audioLoopPopupFieldText)
- {
- if( audioLoopPopupFieldText->CurrentValueIndex() == 0)
- audioLoopPopupFieldText->SetCurrentValueIndex(1);
- else
- audioLoopPopupFieldText->SetCurrentValueIndex(0);
-
- HandleControlStateChangeL( aControlId );
-
- UpdatePageL(ETrue);
- }
- EVTUIDEBUG("- CEvtEditor::TogglePopupFieldControlL()");
- }
-
-// ---------------------------------------------------------------------------
-// void CEvtMgmtUiModel::OpenLocalizedResourceFileL
-// Opens the nearest localized resourcefile using aResourceLoader.
-// aResourceLoader should be opened only once before closing it.
-// Otherwise it will raise a panic. Therefore it is better to have
-// multiple resource loaders.
-//
-// @param aResourceFileName Drive and name of resource file in format
-// <path>:<rsc_file_name>
-// @param aResourceLoader Resource loader for the resource. The loader
-// must not be opened allready or it will raise
-// a panic. It is caller's responsibility to
-// close the resource loader after using the
-// resource.
-// ---------------------------------------------------------------------------
-//
-void CEvtEditor::OpenLocalizedResourceFileL(
- const TDesC& aResourceFileName,
- RConeResourceLoader& aResourceLoader )
- {
- TFileName* tmpName = new(ELeave) TFileName;
- CleanupStack::PushL( tmpName );
-
- // Append the Resource Files Directory
- tmpName->Append( KDC_RESOURCE_FILES_DIR );
-
- // Append the Ressource File Name
- tmpName->Append( aResourceFileName );
-
- // Obtain the drive where the DLL is installed
- TFileName* dllDrive = new (ELeave) TFileName;
- CleanupStack::PushL( dllDrive );
- Dll::FileName( *dllDrive );
-
- // Obtain the Complete path for the Resource File
- TParse parse;
- User::LeaveIfError( parse.Set( *dllDrive, NULL, NULL ) );
- User::LeaveIfError( parse.Set( parse.Drive(), tmpName, NULL ) );
- TFileName* fileName = new(ELeave) TFileName;
- CleanupStack::PushL( fileName );
- fileName->Append( parse.FullName() );
-
- // Get language of resource file
- BaflUtils::NearestLanguageFile( CEikonEnv::Static()->FsSession(), *fileName );
-
- // Open resource file
- aResourceLoader.OpenL( *fileName );
-
- // Pop all the fields
- CleanupStack::PopAndDestroy( fileName );
- CleanupStack::PopAndDestroy( dllDrive );
- CleanupStack::PopAndDestroy( tmpName );
- }
-
-//End of file