meetingui/attendeeview/UiSrc/CAttendeeViewImpl.cpp
author Maximilian Odendahl <maxodendahl@gmail.com>
Sun, 20 Jun 2010 22:50:42 +0200
branchRCL_3
changeset 22 07e82e2b738b
parent 0 f979ecb2b13e
permissions -rw-r--r--
fix linking issue

/*
* Copyright (c) 2004-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:   Implements interface for CAttendeeViewImpl
*
*/



// INCLUDE FILES
#include "cattendeeviewimpl.h"
#include "attendeeviewconsts.h"
#include "cattendeeeng.h"
#include "cattendeeviewerdlg.h"
#include "cattendeeeditordlg.h"
#include "cattendeelbmodel.h"
#include "cattendeeuiutils.h"
#include <attendeeview_res.rsg>
#include <calentry.h>
#include <caluser.h>

// ============================ MEMBER FUNCTIONS ==============================
// ----------------------------------------------------------------------------
// CAttendeeViewImpl::NewL
// Two-phased constructor.
// ----------------------------------------------------------------------------
//
CAttendeeViewImpl* CAttendeeViewImpl::NewL( /*TAny* aPhoneOwner*/ )
    {
    CAttendeeViewImpl* self = 
        new (ELeave) CAttendeeViewImpl( /* const_cast< CCalUser* >( aPhoneOwner )*/ );
    CleanupStack::PushL( self );
    self->ConstructL();
    CleanupStack::Pop( self ); // self
    return self;
    }

// ---------------------------------------------------------
// CAttendeeViewImpl::ConstructL
// ---------------------------------------------------------
//
void CAttendeeViewImpl::ConstructL()
    {    
    // Create utils and read resource files
    iUiUtils = CAttendeeUiUtils::NewL();    
    iUiUtils->OpenResourceFilesL();  

    }

// ----------------------------------------------------------------------------
// CAttendeeViewImpl::CAttendeeViewImpl
// C++ default constructor can NOT contain any code, that
// might leave.
// ----------------------------------------------------------------------------
//
CAttendeeViewImpl::CAttendeeViewImpl( /*CCalUser* aPhoneOwner*/ )
    //  : iPhoneOwner( aPhoneOwner )
    {
    }

// ---------------------------------------------------------
// CAttendeeViewImpl::~CAttendeeViewImpl
// ---------------------------------------------------------
//
CAttendeeViewImpl::~CAttendeeViewImpl()
    {
    delete iDialog;
    if ( iUiUtils )
        {
        iUiUtils->CloseResourceFile();
        }
    delete iUiUtils;
    delete iEngine;
    }

// ---------------------------------------------------------
// CAttendeeViewImpl::ExecuteViewL
// ---------------------------------------------------------
//
TInt CAttendeeViewImpl::ExecuteViewL( RPointerArray<CCalEntry>& aEntries,
                           const TAgnEntryUiInParams& aInParams,
                           TAgnEntryUiOutParams& aOutParams,
                           MAgnEntryUiCallback& aCallback )
    {
    // Check that aEntries only has single entry
    if ( aEntries.Count() != 1 )
        {
        User::Leave( KErrArgument );
        }
        
    CCalEntry* entry = aEntries[ 0 ];

    // Check that organizer is set.
    CCalUser* organizer = entry->OrganizerL();
    if ( !organizer )
        {
        User::Leave( KErrArgument );
        }
    delete organizer;
    
    // Check that phone owner is set.
    CCalUser* phoneOwner = entry->PhoneOwnerL();
    if ( !phoneOwner )
        {
        User::Leave( KErrArgument );
        }
    delete phoneOwner;
    
    // Create the engine and parse the entry.
    iEngine = CAttendeeEng::NewL( *entry );
    iEngine->ParseAgnEntryL();



    // Create the model
    MDesCArray* model = CAttendeeLBModel::NewLC( *iEngine );


    // Create the dialog
    if ( aInParams.iEditorMode == EEditExistingEntry )
        {
        // take model's ownership
        iDialog = CAttendeeEditorDlg::NewL( 
                                    model, 
                                    R_ATTENDEEVIEW_EDITOR_MENUBAR, 
                                    R_ATTENDEEVIEW_EDITOR_CONTEXT_MENUBAR,
                                    *iEngine,
                                    iHelpContext,
                                    aCallback );
        }
    else if ( aInParams.iEditorMode == EViewEntry )
        {
        // take model's ownership
        iDialog = CAttendeeViewerDlg::NewL( 
                                       model, 
                                       R_ATTENDEEVIEW_VIEW_MENUBAR, 
                                       R_ATTENDEEVIEW_VIEWER_CONTEXT_MENUBAR, 
                                       *iEngine,
                                       iHelpContext,
                                       aCallback );
        }

    else // ECreateNewEntry not supported.
        {
        User::Leave( KErrArgument );
        }

    // Pop the model since the ownership was taken.
    CleanupStack::Pop( static_cast<CAttendeeLBModel*>( model ) );
 
    // Run the dialog
    iDialog->PrepareLC( R_ATTENDEE_VIEW_DIALOG ); //no need to pop    
    TInt ret( 0 );
    ret = iDialog->RunLD();
    iDialog = NULL;

    // Fill aOutParams
    if ( iEngine->IsEditedL() )
        {
        aOutParams.iAction = EMeetingSaved;
        }
    else
        {
        aOutParams.iAction = ENoAction;
        }

    return ret;
    }
    
// ---------------------------------------------------------
// CAttendeeViewImpl::SetHelpContext
// ---------------------------------------------------------
//
void CAttendeeViewImpl::SetHelpContext( const TCoeHelpContext& aContext )
    {
    iHelpContext.iContext = aContext.iContext;
    iHelpContext.iMajor = aContext.iMajor;
    }


// End of File