meetingui/attendeeview/UiSrc/CAttendeeViewerDlg.cpp
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Fri, 12 Mar 2010 15:42:35 +0200
branchRCL_3
changeset 10 38571fd2a704
parent 0 f979ecb2b13e
permissions -rw-r--r--
Revision: 201007 Kit: 201008

/*
* Copyright (c) 2004 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:  Provides methods for .
*
*/



// INCLUDE FILES
#include "cattendeeviewerdlg.h"
#include "cattendeedialogbase.h"
#include "mattendeeeng.h"
#include "cattendeedetailsdlg.h"
#include "attendeeviewuid.h"
#include "attendeeview.hrh"

#include <attendeeview_res.rsg>
#include <stringloader.h>
#include <caluser.h>
#include <csxhelp/cale.hlp.hrh>
#include <mrcommands.hrh>

// ============================ MEMBER FUNCTIONS ==============================
CAttendeeViewerDlg* CAttendeeViewerDlg::NewL( 
                                 MDesCArray *aArray,
                                 TInt aMenuBarResourceId,                                          
                                 TInt aOkMenuBarResourceId,
                                 MAttendeeEng& aEngine,
                                 TCoeHelpContext& aHelpContext,
                                 MAgnEntryUiCallback& aEntryUiCallback )
    {
    CAttendeeViewerDlg* self = NewLC( aArray,
                                      aMenuBarResourceId,
                                      aOkMenuBarResourceId,
                                      aEngine,
                                      aHelpContext,
                                      aEntryUiCallback );
    CleanupStack::Pop(self); //self
  
    return self;
    }

CAttendeeViewerDlg* CAttendeeViewerDlg::NewLC( 
                                   MDesCArray *aArray,
                                   TInt aMenuBarResourceId,
                                   TInt aOkMenuBarResourceId,
                                   MAttendeeEng& aEngine,
                                   TCoeHelpContext& aHelpContext,
                                   MAgnEntryUiCallback& aEntryUiCallback )
    {
    CAttendeeViewerDlg* self = 
        new(ELeave)CAttendeeViewerDlg( aArray, 
                                       aEngine,
                                       aMenuBarResourceId,
                                       aOkMenuBarResourceId,
                                       aHelpContext,
                                       aEntryUiCallback );
    CleanupStack::PushL( self );
    self->ConstructL( aMenuBarResourceId );
    
    return self;
    }
// ----------------------------------------------------------------------------
// CAttendeeViewerDlg::CAttendeeViewerDlg
// C++ default constructor can NOT contain any code, that
// might leave.
// ----------------------------------------------------------------------------
//
CAttendeeViewerDlg::CAttendeeViewerDlg( 
                                 MDesCArray *aArray, 
                                 MAttendeeEng& aEngine,
                                 TInt aMenuBarResourceId,
                                 TInt aOkMenuBarResourceId,
                                 TCoeHelpContext& aHelpContext,
                                 MAgnEntryUiCallback& aEntryUiCallback ):
    CAttendeeDialogBase( aArray, 
                         aEngine, 
                         aMenuBarResourceId, 
                         aOkMenuBarResourceId,
                         aEntryUiCallback ),
    iHelpContext( aHelpContext )
    {

    }

// ---------------------------------------------------------
// CAttendeeViewerDlg::~CAttendeeViewerDlg
// ---------------------------------------------------------
//
CAttendeeViewerDlg::~CAttendeeViewerDlg()
    {
    }

// ---------------------------------------------------------
// CAttendeeViewerDlg::DynInitMenuPaneL
// ---------------------------------------------------------
//
void CAttendeeViewerDlg::DynInitMenuPaneL( TInt aResourceId,
                                            CEikMenuPane* aMenuPane )
    {

    const TInt visible( ListBox()->Model()->NumberOfItems() );
    const TInt marked( ListBox()->SelectionIndexes()->Count() );
    switch( aResourceId )
        {      
        case R_ATTENDEEVIEW_VIEWER_MENU:
            {
            if ( iEntryUiCallback.IsCommandAvailable( EMRCommandRespondAccept )
                    && marked <= 0 )
                {
                aMenuPane->SetItemDimmed( EAttCmdRespond, EFalse );
                }
            else
                {
                aMenuPane->SetItemDimmed( EAttCmdRespond, ETrue );
                }
                
            if ( marked > 0 )
                {
                aMenuPane->SetItemDimmed( EAttDetails, ETrue );
                }
            if ( visible <= 0 ) 
                {
                aMenuPane->SetItemDimmed( EAttDetails, ETrue );
                }
            break;
            }
        case R_ATTENDEEVIEW_VIEWER_CONTEXT_MENU:
            {
            if ( marked > 0 )
                {                
                aMenuPane->SetItemDimmed( EAttDetails, ETrue );                
                aMenuPane->SetItemDimmed( EAttCmdRespond, ETrue );
                aMenuPane->SetItemDimmed( EAttCmdSend, EFalse );                               
                }
            else
                {                
                if ( iEntryUiCallback.IsCommandAvailable( EMRCommandRespondAccept ) )
                    {
                    aMenuPane->SetItemDimmed( EAttCmdRespond, EFalse );
                    }
                else
                    {
                    aMenuPane->SetItemDimmed( EAttCmdRespond, ETrue );
                    }
                    
                aMenuPane->SetItemDimmed( EAttCmdSend, ETrue );
                }
            break;
            }
        default:
            {
            CAttendeeDialogBase::DynInitMenuPaneL( aResourceId, aMenuPane );
            break;
            }
        }
    }

// ----------------------------------------------------
// CAttendeeViewerDlg::MakeEmptyTextListBoxL
// ----------------------------------------------------
//
void CAttendeeViewerDlg::MakeEmptyTextListBoxL()
    {
    HBufC* textFromResourceFile;
    textFromResourceFile = 
        StringLoader::LoadLC( R_ATTENDEE_VIEWER_EMPTY_TEXT, 
                              CEikonEnv::Static() );    
    ListBox()->View()->SetListEmptyTextL( *textFromResourceFile );
    CleanupStack::PopAndDestroy( textFromResourceFile ); 
    }

// ----------------------------------------------------
// CAttendeeDialogBase::DetailsCmdL
// ---------------------------------------------------------
//
void CAttendeeViewerDlg::DetailsCmdL()
    {
    TInt index( ListBox()->CurrentItemIndex() );
    if ( index >= 0 && index < ListBox()->Model()->NumberOfItems() 
         && index < iEngine.NumberOfItems())
        {
        CPbkContactItem* item = iEngine.PbkContactItemL( index );
        if ( !item )
            {
            item = CreateContactL(
                    iEngine.At( index ).AgnAttendee()->Address() );
            }
        CleanupStack::PushL( item );

        CAttendeeDetailsDlg* dlg = CAttendeeDetailsDlg::NewL(
                                item,
                                &iEngine.ContactEngine(),
                                iEngine.At( index ).AgnAttendee()->StatusL(),
                                EFalse ); 
        dlg->RunLD();

        CleanupStack::PopAndDestroy( item );
        }
    }

// -----------------------------------------------------------------------------
// CAttendeeDialogBase::GetHelpContext
// -----------------------------------------------------------------------------
//
void CAttendeeViewerDlg::GetHelpContext( TCoeHelpContext& aContext ) const
    {
    
    //If help text was given in construction use it 
    if(!iHelpContext.IsNull())
        {
        aContext = iHelpContext;
        }
    else
        {
        //Remove comments after new cale.hlp.hrh is ready
        //aContext.iContext = KCALE_HLP_ATTENDEE_VIEW;
        //aContext.iMajor = TUid::Uid( KEcomDllUID );
        }    
    }
   
// End of File