meetingui/meetingrequestutils/src/CMREditBeforeSendingViewForm.cpp
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Tue, 02 Feb 2010 10:12:19 +0200
changeset 0 f979ecb2b13e
permissions -rw-r--r--
Revision: 201003 Kit: 201005

/*
* Copyright (c) 2002-2005 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 to edit meeting request description field
*
*/




// INCLUDE FILES
#include "CMREditBeforeSendingViewForm.h"
#include "meetingrequestutils.hrh" 	//common constants
#include "MRHelpers.h"
#include <MeetingRequestUids.hrh>
#include "icalui.hlp.hrh"			// help resources
#include <meetingrequestutilsuires.rsg>
#include <avkon.hrh>
#include <aknquerydialog.h>
#include <stringloader.h>
#include <calentry.h> 		//CCalEntry (Calendar entry API V2)
#include <caluser.h> 		//caluser and attendee
#include <featmgr.h>
#include <hlplch.h>

// CONSTANTS
/// Unnamed namespace for local definitions
namespace {

enum TPanicCode
    {
    };

_LIT( KPanicMsg, "CEditBeforeSendingViewForm" );

void Panic( TPanicCode aReason )
    {
    User::Panic( KPanicMsg, aReason );
    }
    
}  // namespace

// ============================= LOCAL FUNCTIONS ===============================


CEditBeforeSendingViewForm* CEditBeforeSendingViewForm::NewL(
    TMode aMode,
    const CCalEntry& aEntry,
    TDes& aText )
	{
	CEditBeforeSendingViewForm* self =
	    new( ELeave ) CEditBeforeSendingViewForm( aMode, aEntry, aText );
	CleanupStack::PushL( self );
	self->ConstructL();
	CleanupStack::Pop( self );
	return self;
	}

CEditBeforeSendingViewForm::CEditBeforeSendingViewForm(
    TMode aMode,
    const CCalEntry& aEntry,
    TDes& aText )
    : iMode( aMode ),
      iEntry( aEntry ),
      iText( aText )
    {
    }

void CEditBeforeSendingViewForm::ConstructL()
    {
    CAknDialog::ConstructL( R_EDIT_BEFORE_SENDING_VIEW_MENUBAR );
    }

CEditBeforeSendingViewForm::~CEditBeforeSendingViewForm()
    {
    delete iInvitedAttendees;
    }

TBool CEditBeforeSendingViewForm::OkToExitL( TInt aButtonId )
    {

    TBool retVal( EFalse );
    switch ( aButtonId )
    	{
    	case EAknSoftkeyOptions:
			{
			// we want to dynamically handle the opening of options menu
			CAknDialog::DisplayMenuL();
		 	retVal = EFalse;
		 	break;
			}
    	case EAknSoftkeyExit:
    		{    		
    		retVal = ETrue;
    		break;
    		}
		case EAknSoftkeyCancel:
			{
			CAknQueryDialog* queryDlg = CAknQueryDialog::NewL();
    		if(queryDlg->ExecuteLD( R_EDIT_BEFORE_SENDING_CANCEL_RESPONSE_QUERY ) )
    		    {    		    
    			retVal = ETrue;
    		    }
    		else
    		    {    		    
    			retVal = EFalse;
    		    }
			break;
			}
    	case EEditBeforeSendingCmdSend:
    		{
    		retVal = ETrue;
    		break;
    		}
    	}
    return retVal;
    }
    
void CEditBeforeSendingViewForm::ProcessCommandL( TInt aCommandId )
	{
	HideMenu();
	switch ( aCommandId )
		{
		case EEditBeforeSendingCmdSend:
			{
			SaveFormDataL();
			TryExitL( aCommandId );
			break;
			}
		case EAknCmdHelp:
			{
			if ( FeatureManager::FeatureSupported( KFeatureIdHelp ) ) 
        		{
        		HlpLauncher::LaunchHelpApplicationL(
            	iCoeEnv->WsSession(), iAvkonAppUi->AppHelpContextL() );
                }
			break;
			}
		case EAknCmdExit:
			{
			TryExitL( aCommandId );
			break;
			}
				
		}
	}

void CEditBeforeSendingViewForm::PreLayoutDynInitL()
    {
    SetEditableL( ETrue );
    LoadFormDataL();
    }

void CEditBeforeSendingViewForm::PostLayoutDynInitL()
	{
	}

TBool CEditBeforeSendingViewForm::SaveFormDataL()
    {
    CEikEdwin* ctrl = static_cast<CEikEdwin*> ( Control( EDescriptionEditor ) );
    ctrl->GetText( iText );
    return ETrue;
    }

void CEditBeforeSendingViewForm::LoadFormDataL()
    {
    TPtrC toAddr;
	if (iMode == EEditResponse )
		{
		toAddr.Set( MRHelpers::AddressWithoutMailtoPrefix( 
                    iEntry.OrganizerL()->Address() ) );
		}
	else
		{
		delete iInvitedAttendees;
		iInvitedAttendees = NULL;
		iInvitedAttendees =
		    StringLoader::LoadL( R_QTN_CALE_TO_INVITED_ATTENDEES );
        toAddr.Set( *iInvitedAttendees );
		}
    CEikEdwin* toEditor = static_cast<CEikEdwin*> ( Control( EToEditor ) );
    toEditor->SetTextL( &toAddr );

    CEikEdwin* subjectEditor =
        static_cast<CEikEdwin*> ( Control( ESubjectEditor ) );
    subjectEditor->SetTextL( ( &( iEntry.SummaryL() ) ) );
    }

void CEditBeforeSendingViewForm::DynInitMenuPaneL( TInt aResourceId,
												   CEikMenuPane* aMenuPane )
	{
	switch( aResourceId )
		{
		case R_EDIT_BEFORE_SENDING_VIEW_OPTIONS:
		    {		    
			DynInitMainMenuL( aMenuPane );
			break;
		    }
		default:
		    {		    
			break;
		    }
		}
	}

void CEditBeforeSendingViewForm::DynInitMainMenuL( CEikMenuPane* /*aMenuPane*/ )
	{
	}
	
// ---------------------------------------------------------
// CEditBeforeSendingViewForm::GetHelpContext
// Gets help context
// ---------------------------------------------------------
//
void CEditBeforeSendingViewForm::GetHelpContext(
    TCoeHelpContext& aContext ) const
    {
    aContext.iMajor = TUid::Uid( KMeetingRequestViewersDllUID3 );

    // Help resources specified in HRH file.
    if ( iMode == EEditResponse )
    	{
    	aContext.iContext = KCALE_HLP_EDIT_RESPONSE;
    	}
    else if ( iMode == EEditCancellation )
    	{
    	aContext.iContext = KCALE_HLP_EDIT_CANCEL;
    	}
    }


//  End of File