calendarui/multicaluidialog/src/multicaluidialogimpl.cpp
changeset 0 f979ecb2b13e
child 12 38571fd2a704
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/calendarui/multicaluidialog/src/multicaluidialogimpl.cpp	Tue Feb 02 10:12:19 2010 +0200
@@ -0,0 +1,915 @@
+/*
+ * 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 : Implemrntation class for calenlistdialog .
+ */
+
+//System include
+#include <calsession.h>
+#include <calentryview.h>
+#include <calcalendarinfo.h>
+#include <StringLoader.h>
+#include <AknsBasicBackgroundControlContext.h>
+#include <aknconsts.h>
+#include <AknIconArray.h>
+#include <aknlists.h>
+#include <akntitle.h>
+#include <eikclbd.h>
+#include <aknnavi.h>
+#include <aknlayoutscalable_apps.cdl.h>
+#include <layoutmetadata.cdl.h>
+#include <data_caging_path_literals.hrh>
+#include <pathinfo.h>
+#include <bautils.h>
+#include <aknenv.h>
+#include <eikapp.h>
+#include <eikenv.h>
+#include <gulicon.h>
+#include <multicaluidialog.rsg>
+#include <multicaluidialog.mbg>
+#include <avkon.rsg>
+#include <eikcapc.h> 
+
+//User include
+#include "multicaluidialogimpl.h"
+#include "multicaluidialogmodel.h"
+#include "calendarui_debug.h"
+#include "calendar.hrh"
+#include <aknPopup.h>
+
+
+// ----------------------------------------------------------------------------
+// CMultiCalUiDialogImpl::CMultiCalUiDialogImpl
+// (other items were commented in a header).
+// ----------------------------------------------------------------------------
+//
+CMultiCalUiDialogImpl::CMultiCalUiDialogImpl()
+    {
+    TRACE_ENTRY_POINT
+    
+    TRACE_EXIT_POINT
+    }
+
+// ----------------------------------------------------------------------------
+// CMultiCalUiDialogImpl::NewL
+// (other items were commented in a header).
+// ----------------------------------------------------------------------------
+//
+CMultiCalUiDialogImpl* CMultiCalUiDialogImpl::NewL(const RPointerArray<CCalEntry>& 
+        aCalEntries)
+    {
+    TRACE_ENTRY_POINT
+    CMultiCalUiDialogImpl* self = CMultiCalUiDialogImpl::NewLC(aCalEntries);
+    CleanupStack::Pop(self);
+    TRACE_EXIT_POINT
+    return self;
+    }
+
+// ----------------------------------------------------------------------------
+// CMultiCalUiDialogImpl::NewLC
+// (other items were commented in a header).
+// ----------------------------------------------------------------------------
+//
+CMultiCalUiDialogImpl* CMultiCalUiDialogImpl::NewLC(const RPointerArray<CCalEntry>& 
+        aCalEntries)
+    {
+    TRACE_ENTRY_POINT
+    CMultiCalUiDialogImpl* self = new(ELeave) CMultiCalUiDialogImpl();
+    CleanupStack::PushL(self);
+    self->ConstructL(aCalEntries);
+    TRACE_EXIT_POINT
+    return self;
+    }
+
+// ----------------------------------------------------------------------------
+// CMultiCalUiDialogImpl::~CMultiCalUiDialogImpl
+// (other items were commented in a header).
+// ----------------------------------------------------------------------------
+//
+CMultiCalUiDialogImpl::~CMultiCalUiDialogImpl()
+    {
+    TRACE_ENTRY_POINT
+    
+	if(iListBox)
+		{
+		iListBox->Reset();
+		delete iListBox; 
+		}
+    
+    if( iResourceFileOffset )
+        {
+        CCoeEnv::Static()->DeleteResourceFile( iResourceFileOffset );
+        }
+    
+    // Don't set the title pane text.
+    TRAP_IGNORE( SetTitlePaneL( EFalse ) );
+  
+    if(iMultiCalUiDialogModel)
+        {
+        delete iMultiCalUiDialogModel;
+        iMultiCalUiDialogModel = NULL;
+        }
+    
+    iColorUidArray.Reset();
+    
+    delete iDesArray;
+    
+    delete iBgContext;
+
+    TRACE_EXIT_POINT
+    }
+
+// ----------------------------------------------------------------------------
+// CMultiCalUiDialogImpl::ConstructL
+// (other items were commented in a header).
+// ----------------------------------------------------------------------------
+//
+void CMultiCalUiDialogImpl::ConstructL(const RPointerArray<CCalEntry>& aCalEntries)
+    {
+    TRACE_ENTRY_POINT
+    
+    TFileName fileName;
+    // Get the complate path of the DLL from where it is currently loaded
+    Dll::FileName( fileName );
+    
+    TFileName resFile;
+    TFileName iconFile;
+    
+    // Append the Drive letters ex., Z: or C:
+    resFile.Append(fileName.Mid(0,2));
+    resFile.Append(KDC_RESOURCE_FILES_DIR);
+    resFile.Append(KResourceFile);
+    
+    BaflUtils::NearestLanguageFile( CCoeEnv::Static()->FsSession(), resFile );
+    
+    iResourceFileOffset = CEikonEnv::Static()->AddResourceFileL( resFile );
+    
+    iIconFile.Append(fileName.Mid(0,2));
+    iIconFile.Append(KDC_APP_BITMAP_DIR);
+    iIconFile.Append(KIconFile);
+    
+    //iIconFile = ((CEikAppUi*)CCoeEnv::Static()->AppUi())->Application()->BitmapStoreName();
+    
+    iMultiCalUiDialogModel = CMultiCalUiDialogModel::NewL();
+    
+    iMultiCalUiDialogModel->SetCalEntry(aCalEntries); 
+    
+    CAknDialog::ConstructL (R_CALENDB_LIST_MENUBAR);
+    TRACE_EXIT_POINT
+    }
+
+// ----------------------------------------------------------------------------
+// CMultiCalUiDialogImpl::LaunchCalenDbListDialogL
+// (other items were commented in a header).
+// ----------------------------------------------------------------------------
+//
+TInt CMultiCalUiDialogImpl::LaunchCalenDbListDialogL()
+    {
+    TRACE_ENTRY_POINT
+    
+    TInt returnVal( KErrNone );
+    
+    returnVal =  CAknDialog::ExecuteLD( R_CALENDB_LIST_DIALOG );
+    
+    TRACE_EXIT_POINT
+    return returnVal;
+    }
+
+// ----------------------------------------------------------------------------
+// CMultiCalUiDialogImpl::FocusChanged
+// (other items were commented in a header).
+// ----------------------------------------------------------------------------
+//
+void CMultiCalUiDialogImpl::FocusChanged( TDrawNow aDrawNow )
+    {
+    TRACE_ENTRY_POINT;
+    
+    CAknDialog::FocusChanged( aDrawNow );    
+    
+    TRACE_EXIT_POINT;
+    }
+
+// ----------------------------------------------------------------------------
+// CMultiCalUiDialogImpl::ConstructListL
+// (other items were commented in a header).  
+// ----------------------------------------------------------------------------
+//
+void CMultiCalUiDialogImpl::ConstructListL()
+    {
+    TRACE_ENTRY_POINT;
+    
+    if(iDesArray && iListBox)
+        {
+        return;
+        }
+
+    iDesArray = new (ELeave) CDesCArrayFlat(5);
+    iListBox = new (ELeave) CCalenDbListbox(iColorUidArray);    
+    iListBox->SetContainerWindowL( *this );
+    iListBox->ConstructL(this, EAknListBoxSelectionList );
+
+    //Create scroll bar
+    iListBox->CreateScrollBarFrameL(ETrue);
+    iListBox->ScrollBarFrame()->SetScrollBarVisibilityL(
+            CEikScrollBarFrame::EOff, CEikScrollBarFrame::EAuto);
+
+    CTextListBoxModel* model = iListBox->Model();
+    model->SetItemTextArray(iDesArray);
+    model->SetOwnershipType(ELbmDoesNotOwnItemArray);
+    
+    iListBox->SetListBoxObserver( this );
+    
+    PrepareIconsL();
+
+    iListBox->View()->SetListEmptyTextL( _L("No Items") );
+
+    TRACE_EXIT_POINT;
+    }
+
+// ----------------------------------------------------------------------------
+// CCalenMultipleDbUi::UpdateListboxL
+// (other items were commented in a header).
+// ----------------------------------------------------------------------------
+//
+void CMultiCalUiDialogImpl::UpdateListboxL()
+    {
+    TRACE_ENTRY_POINT;
+    
+    iListBox->View()->SetDisableRedraw( ETrue );
+    iDesArray->Reset();
+    iColorUidArray.Close();
+    
+    RPointerArray<CCalCalendarInfo>& calendarInfoArray = 
+                                iMultiCalUiDialogModel->GetCalendarInfoArray();
+    
+    if( calendarInfoArray.Count() > 0 )
+        {
+        iListBox->ItemDrawer()->ColumnData()->SetIconArray( iIconsList );
+
+        for(TInt i = 0 ; i < calendarInfoArray.Count() ; i++)
+            {
+            TBuf<KMultiDbMaxLength> tempString;
+            CCalCalendarInfo* calendarInfo = calendarInfoArray[i];
+
+            TPtrC nameBuf = calendarInfo->NameL();
+
+            //"%d\t%S\t%S\t%d"
+            TBuf<10> icon;
+            TInt iconIndex(1);
+            icon.Format(KIconFormat,iconIndex);
+            
+            tempString.Append(icon);
+           
+            tempString.Append(KListSeparatorFormat);
+            tempString.Append(nameBuf);
+            tempString.Append(KListSeparatorFormat);
+
+            HBufC* strTemp = NULL; 
+            if(calendarInfo->Enabled())
+                {
+                strTemp = StringLoader::LoadLC(R_CALEN_DB_VISIBLE,iCoeEnv);
+                }
+            else
+                {
+                strTemp = StringLoader::LoadLC(R_CALEN_DB_HIDDEN,iCoeEnv);
+                }
+
+            tempString.Append(strTemp->Des());
+            CleanupStack::PopAndDestroy(strTemp);
+
+            tempString.Append(KListSeparatorFormat);
+
+            //Collect color info to be used in itemdrawer for painting strip
+            iColorUidArray.Append(calendarInfo->Color().Value());
+            
+            iDesArray->AppendL(tempString);
+            }
+        }
+    
+    iListBox->View()->SetDisableRedraw( EFalse );
+    iListBox->HandleItemAdditionL(); //Update and draw listbox
+
+    TRACE_EXIT_POINT;
+    }
+
+// ----------------------------------------------------------------------------
+// CMultiCalUiDialogImpl::PrepareIconsL
+// (other items were commented in a header).
+// ----------------------------------------------------------------------------
+//
+void CMultiCalUiDialogImpl::PrepareIconsL()
+    {
+    TRACE_ENTRY_POINT;
+    
+    iIconsList = CreateIconsL();
+    
+    TRACE_EXIT_POINT;
+    }
+
+// ----------------------------------------------------------------------------
+// CMultiCalUiDialogImpl::GetIconL
+// (other items were commented in a header).
+// ----------------------------------------------------------------------------
+//
+CGulIcon* CMultiCalUiDialogImpl::GetIconL( TCalenListDbIcons aIndex )
+    {
+    TRACE_ENTRY_POINT;
+    
+    CGulIcon* icon;
+    TRgb nonSkinColor = AKN_LAF_COLOR(215);
+    CFbsBitmap* bitmap = NULL;
+    CFbsBitmap* mask = NULL;
+    
+    switch( aIndex )
+        {
+        case ECalenListDbIconUnMarked:
+            {
+            icon = CreateBitmapSkinnedIconL( 
+                    KAknsIIDQgnPropCheckboxOn,
+                    iIconFile,
+                    EMbmMulticaluidialogQgn_prop_checkbox_off,
+                    EMbmMulticaluidialogQgn_prop_checkbox_off_mask );
+            }
+            break;
+
+        case ECalenListDbIconMarked:
+            {
+            icon = CreateBitmapSkinnedIconL( 
+                                KAknsIIDQgnPropCheckboxOn,
+                                iIconFile, 
+                                EMbmMulticaluidialogQgn_prop_checkbox_on,
+                                EMbmMulticaluidialogQgn_prop_checkbox_on_mask );
+            }
+            break;
+            
+        default:
+            {
+            icon = CGulIcon::NewL( bitmap, mask );
+            }
+            break;
+        }
+
+    TRACE_EXIT_POINT;
+    return icon;
+    }
+
+// ----------------------------------------------------------------------------
+// CMultiCalUiDialogImpl::CreateIconsL
+// (other items were commented in header.)
+// ----------------------------------------------------------------------------
+//
+CAknIconArray* CMultiCalUiDialogImpl::CreateIconsL()
+    {
+    TRACE_ENTRY_POINT;
+    const TInt iconCount( 2 );
+    CAknIconArray* icons = new(ELeave) CAknIconArray( iconCount );
+    CleanupStack::PushL( icons );
+    icons->SetReserveL( iconCount );
+
+    for( TInt i=0; i<iconCount; ++i )
+        {
+        icons->AppendL( GetIconL( ECalenListDbIconMarked ) );
+        icons->AppendL( GetIconL( ECalenListDbIconUnMarked ) );
+        }
+    CleanupStack::Pop( icons );
+    TRACE_EXIT_POINT;
+    return icons;
+    }
+
+// -----------------------------------------------------------------------------
+// CMultiCalUiDialogImpl::CreateBitmapSkinnedIconL
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+CGulIcon* CMultiCalUiDialogImpl::CreateBitmapSkinnedIconL(const TAknsItemID& aSkinIconId,
+                        const TDesC& aFilename,
+                        TInt aNormalIconId,
+                        TInt aNormalMaskId) const
+    {
+    TRACE_ENTRY_POINT;
+    
+    CFbsBitmap* bitmap = NULL;
+    CFbsBitmap* mask = NULL;
+    
+    AknsUtils::CreateIconLC(AknsUtils::SkinInstance(), aSkinIconId,
+                bitmap, mask, 
+                aFilename, aNormalIconId, aNormalMaskId);
+    
+    CGulIcon* icon = CGulIcon::NewL(bitmap, mask);
+    
+    // Ownership of bitmap and mask transferred
+    CleanupStack::Pop(2); // bitmap, mask
+    
+    TRACE_EXIT_POINT;
+    return icon;
+    }
+
+// -----------------------------------------------------------------------------
+// CMultiCalUiDialogImpl::MarkUnmarkCalendarL
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+void CMultiCalUiDialogImpl::MarkUnmarkCalendarL()
+    {
+    TRACE_ENTRY_POINT
+    
+    TInt index = iListBox->CurrentItemIndex();
+    
+    TBool status = EFalse;
+    status = iMultiCalUiDialogModel->GetCalendarStatus(index);
+    
+    if(status)
+        {
+        status = EFalse;
+        }
+    else
+        {
+        status = ETrue;
+        }
+    
+    iMultiCalUiDialogModel->SetCalendarStatus(index,status);
+    
+    TPtrC indexText = iDesArray->MdcaPoint(index);
+    HBufC* formatText = indexText.AllocLC();
+    TPtr modified = formatText->Des();
+    modified[0] = status ? '0' : '1';
+    
+    indexText.Set(modified);
+    iDesArray->Delete(index);
+    iDesArray->InsertL(index,indexText);
+    CleanupStack::PopAndDestroy(formatText);
+    
+    iListBox->RedrawItem(index);
+    UpdateCbaL();
+    
+    TRACE_EXIT_POINT
+    }
+
+// ----------------------------------------------------------------------------
+// CMultiCalUiDialogImpl::UpdateCbaL
+// (other items were commented in header.)
+// ----------------------------------------------------------------------------
+//
+void CMultiCalUiDialogImpl::UpdateCbaL()
+    {    
+    TRACE_ENTRY_POINT;
+    CEikButtonGroupContainer&  cba = ButtonGroupContainer ();    
+    
+    if(!iMultiCalUiDialogModel->MarkedCalendarsCount())
+        {
+        cba.MakeCommandVisible( EAknSoftkeyOptions, EFalse );
+        }
+    else
+        {
+        cba.MakeCommandVisible( EAknSoftkeyOptions, ETrue );
+        }
+    cba.DrawNow(); 
+    
+    TRACE_EXIT_POINT;
+    }
+
+// ----------------------------------------------------------------------------
+// CMultiCalUiDialogImpl::SetTitlePaneL
+// (other items were commented in header.)
+// ----------------------------------------------------------------------------
+//
+void CMultiCalUiDialogImpl::SetTitlePaneL( TBool aCurrentState )
+    {
+    TRACE_ENTRY_POINT;
+    CEikStatusPane* sp = iEikonEnv->AppUiFactory()->StatusPane();
+
+    // Set empty navi pane label
+    iNaviContainer = static_cast<CAknNavigationControlContainer*>(
+                                 sp->ControlL( TUid::Uid( EEikStatusPaneUidNavi ) ) );
+    iNaviContainer->PushDefaultL();
+
+   // Set title text
+    CAknTitlePane* tp = static_cast<CAknTitlePane*>(
+                                 sp->ControlL( TUid::Uid( EEikStatusPaneUidTitle ) ) );
+
+    if( aCurrentState )
+        {
+        iTitlepaneText = ( *tp->Text() ); 
+        HBufC* titleText = StringLoader::LoadLC( R_CALEN_DB_LIST_TITLE , iCoeEnv );
+        tp->SetTextL( *titleText );  
+        CleanupStack::PopAndDestroy( titleText );
+        }
+    else
+        {
+        tp->SetTextL(iTitlepaneText);
+        }
+    TRACE_EXIT_POINT;
+    }
+
+// ----------------------------------------------------------------------------
+// CMultiCalUiDialogImpl::DynInitMenuPaneL
+// (other items were commented in header.)
+// ----------------------------------------------------------------------------
+//
+void CMultiCalUiDialogImpl::DynInitMenuPaneL( TInt /*aResourceId*/, CEikMenuPane* /*aMenuPane*/ )
+    {
+    TRACE_ENTRY_POINT;
+    
+     
+    TRACE_EXIT_POINT;  
+    }
+
+// ----------------------------------------------------------------------------
+// CMultiCalUiDialogImpl::ProcessCommandL
+// (other items were commented in header.)
+// ----------------------------------------------------------------------------
+//
+void  CMultiCalUiDialogImpl::ProcessCommandL( TInt aCommandId )
+    {
+    TRACE_ENTRY_POINT;
+    
+    CAknDialog::ProcessCommandL(aCommandId);
+    
+    switch(aCommandId)
+        {
+        case EAknSoftkeyOptions:
+        case EAknSoftkeyUnmark:
+            {
+            MarkUnmarkCalendarL();
+            }
+            break;
+            
+        default:
+            {
+            // No implementation yet.
+            }
+            break;
+        }
+    
+    TRACE_EXIT_POINT;
+    }
+
+// ----------------------------------------------------------------------------
+// CMultiCalUiDialogImpl::OfferKeyEventL
+// (other items were commented in header.) 
+// ----------------------------------------------------------------------------
+//
+TKeyResponse CMultiCalUiDialogImpl::OfferKeyEventL(const TKeyEvent& aKeyEvent,
+                                                                     TEventCode aType)
+    { 
+    
+    TRACE_ENTRY_POINT;
+    TKeyResponse exitCode(EKeyWasNotConsumed);
+    
+    if(aType == EEventKey )
+        {
+        if( aKeyEvent.iCode == EKeyEscape )
+            {
+            TryExitL( EKeyEscape );
+            return exitCode; 
+            }
+        else if(aType == EKeyOK)
+            {
+            MarkUnmarkCalendarL();
+            }
+        else if(aKeyEvent.iCode == EKeyBackspace)
+            {
+            return exitCode;
+            }
+        else 
+            {
+            exitCode = EKeyWasConsumed;
+            iListBox->OfferKeyEventL( aKeyEvent, aType );
+
+            // Draw because pressing up/down means we have to redraw the backgrouns skin.
+            DrawDeferred();
+            }
+        }
+    TRACE_EXIT_POINT;
+    return exitCode;
+    }
+
+// ----------------------------------------------------------------------------
+// CMultiCalUiDialogImpl::HandlePointerEventL
+// (other items were commented in header.) 
+// ----------------------------------------------------------------------------
+//
+void CMultiCalUiDialogImpl::HandlePointerEventL(const TPointerEvent& aPointerEvent)
+    {
+    // single click 
+    TRACE_ENTRY_POINT;
+    
+    if( !AknLayoutUtils::PenEnabled() )
+           {
+           return;
+           }
+      TInt index = iListBox->CurrentItemIndex();
+      iListBox->HandlePointerEventL(aPointerEvent);      
+       
+    TRACE_EXIT_POINT;
+    }
+
+// ----------------------------------------------------------------------------
+// CMultiCalUiDialogImpl::OkToExitL
+// (other items were commented in header.)
+// ----------------------------------------------------------------------------
+//
+TBool CMultiCalUiDialogImpl::OkToExitL( TInt aButtonId )
+    {
+    TRACE_ENTRY_POINT;
+    
+    TBool okExit = EFalse;
+    
+    switch(aButtonId)
+        {   
+        case EKeyEscape:
+        case EAknSoftkeyCancel:
+            {
+            okExit = ETrue;
+            }
+            break;           
+ 
+        case EAknSoftkeyOk:
+        case ECalenSelectCmdOk:    
+            {
+            TInt index = iListBox->CurrentItemIndex();
+            
+            if(!iMultiCalUiDialogModel->MarkedCalendarsCount())
+                {
+                iMultiCalUiDialogModel->SetCalendarStatus(index,ETrue);
+                }
+            
+            iMultiCalUiDialogModel->StoreCalEntryL();
+            
+            okExit = ETrue;
+            }
+            break;
+
+        default:
+            {
+            okExit = CAknDialog::OkToExitL(aButtonId);
+            }
+            break;
+        }
+    TRACE_EXIT_POINT;
+    
+    return okExit;
+    }
+
+// ----------------------------------------------------------------------------
+// CMultiCalUiDialogImpl::SizeChanged
+// Set the rect to dialog and listbox
+// ----------------------------------------------------------------------------
+//
+void CMultiCalUiDialogImpl::SizeChanged()
+    {
+    TRACE_ENTRY_POINT;
+    
+    CAknDialog::SizeChanged();
+    
+    TRect rect = iRect = Rect();
+    
+    if( iBgContext )
+        {
+        iBgContext->SetRect( rect );
+        }
+    
+    if( iListBox )
+        {
+        TInt orientation = Layout_Meta_Data::IsLandscapeOrientation() ? 1 : 0;
+        TAknLayoutRect application_window;
+        
+        if( ( !orientation ) && AknLayoutUtils::PenEnabled() )
+            {
+            TRect appWindow;
+            TAknLayoutRect application_window;
+            AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EApplicationWindow, 
+                                               appWindow );
+            application_window.LayoutRect( 
+                    appWindow, 
+                AknLayoutScalable_Apps::application_window().LayoutLine() ); 
+                
+            // Find the size of the main pane.
+            TAknLayoutRect main_pane;                    
+                                
+            main_pane.LayoutRect( 
+            application_window.Rect(), 
+            AknLayoutScalable_Apps::main_pane( orientation ).LayoutLine() );
+            
+            TRect listboxRect;
+            listboxRect.SetWidth( main_pane.Rect().Width() );
+            listboxRect.SetHeight( main_pane.Rect().Height() );
+            iListBox->SetRect( listboxRect );
+            }
+        else
+            {
+            iListBox->SetRect( rect );
+            }
+        }
+    
+    TRACE_EXIT_POINT;
+    }
+
+// ----------------------------------------------------------------------------
+// CMultiCalUiDialogImpl::ComponentControl
+// (other items were commented in a header).
+// ----------------------------------------------------------------------------
+//
+CCoeControl* CMultiCalUiDialogImpl::ComponentControl( TInt /*aIndex*/) const
+    {
+    TRACE_ENTRY_POINT;
+    
+    if(iListBox)
+        {
+        TRACE_EXIT_POINT;
+        return iListBox;
+        }
+    
+    TRACE_EXIT_POINT;   
+    return NULL;
+    }
+
+// ----------------------------------------------------------------------------
+// CMultiCalUiDialogImpl::CountComponentControls
+// (other items were commented in a header).
+// ----------------------------------------------------------------------------
+//
+TInt CMultiCalUiDialogImpl::CountComponentControls() const
+    {
+    TRACE_ENTRY_POINT;
+    
+    if(iListBox)
+        {
+        TRACE_EXIT_POINT;
+        return 1;
+        }
+    
+    TRACE_EXIT_POINT;
+    return 0;
+    }
+
+// ----------------------------------------------------------------------------
+// CMultiCalUiDialogImpl::PreLayoutDynInitL
+// (other items were commented in a header).
+// ----------------------------------------------------------------------------
+//
+void  CMultiCalUiDialogImpl::PreLayoutDynInitL()
+    {
+    TRACE_ENTRY_POINT;
+    iBgContext = 
+    CAknsBasicBackgroundControlContext::NewL( KAknsIIDQsnBgAreaMain,iRect,ETrue );
+    
+    SetTitlePaneL( ETrue );
+    ConstructListL();
+    UpdateListboxL();
+    //UpdateCbaL();
+    
+    
+    TInt orientation = Layout_Meta_Data::IsLandscapeOrientation() ? 1 : 0;      
+    if( AknLayoutUtils::PenEnabled() )   
+        {
+        // Find the size of the main pane.
+        // Find the application window
+        TRect appWindow;
+        TAknLayoutRect application_window;
+        AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EApplicationWindow, 
+                                           appWindow );
+        application_window.LayoutRect( 
+                appWindow, 
+            AknLayoutScalable_Apps::application_window().LayoutLine() ); 
+            
+        // Find the size of the main pane.
+        TAknLayoutRect main_pane;                    
+                            
+        main_pane.LayoutRect( 
+        application_window.Rect(), 
+        AknLayoutScalable_Apps::main_pane( orientation ).LayoutLine() );
+        
+        TRect listboxRect;
+        listboxRect.SetWidth( main_pane.Rect().Width() );
+        listboxRect.SetHeight( main_pane.Rect().Height() );
+        iListBox->SetRect( listboxRect );
+        }
+    
+    TRACE_EXIT_POINT;
+    }
+
+// ----------------------------------------------------------------------------
+// CMultiCalUiDialogImpl::PostLayoutDynInitL
+// (other items were commented in a header).
+// ----------------------------------------------------------------------------
+//
+void CMultiCalUiDialogImpl::PostLayoutDynInitL()
+    {
+    TRACE_ENTRY_POINT;        
+    UpdateCbaL();    
+    TRACE_EXIT_POINT;
+    }
+
+// ----------------------------------------------------------------------------
+// CMultiCalUiDialogImpl::MopSupplyObject
+// (other items were commented in a header).
+// ----------------------------------------------------------------------------
+//
+TTypeUid::Ptr CMultiCalUiDialogImpl::MopSupplyObject(TTypeUid aId)
+    {
+    TRACE_ENTRY_POINT;
+    
+    if(aId.iUid == MAknsControlContext::ETypeId )
+        {
+        MAknsControlContext* cc = iBgContext;
+        if ( cc )
+            {
+            return MAknsControlContext::SupplyMopObject( aId, cc );
+            }
+        }
+    
+    TRACE_EXIT_POINT;
+    
+    return CAknDialog::MopSupplyObject( aId );
+    }
+
+// ----------------------------------------------------------------------------
+// CMultiCalUiDialogImpl::HandleResourceChange
+// (other items were commented in a header).
+// ----------------------------------------------------------------------------
+//
+void CMultiCalUiDialogImpl::HandleResourceChange(TInt aType)
+    {
+    TRACE_ENTRY_POINT;
+    
+    if ( aType == KAknsMessageSkinChange || aType == KEikDynamicLayoutVariantSwitch )
+        {
+        SizeChanged();
+        TRAP_IGNORE(UpdateListboxL());
+        }
+    
+    CAknDialog::HandleResourceChange( aType );
+    TRACE_EXIT_POINT;
+    }
+
+// ----------------------------------------------------------------------------
+// CMultiCalUiDialogImpl::Draw
+// (other items were commented in a header).
+// ----------------------------------------------------------------------------
+//
+void CMultiCalUiDialogImpl::Draw(const TRect& aRect) const
+    {
+    TRACE_ENTRY_POINT;
+    
+    CWindowGc& gc = SystemGc();
+    TRect mainPane;
+    AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EMainPane, mainPane );
+    TRect zerodRect( TPoint(0, 0), mainPane.Size() );
+    iBgContext->SetRect( zerodRect );
+    iBgContext->SetParentPos( mainPane.iTl );
+    AknsDrawUtils::Background( AknsUtils::SkinInstance(), iBgContext, this, gc, aRect );
+    
+    TRACE_EXIT_POINT;
+    }
+
+// ----------------------------------------------------------------------------
+// CMultiCalUiDialogImpl::HandleListBoxEventL 
+// (other items were commented in a header).
+// ----------------------------------------------------------------------------
+//
+void CMultiCalUiDialogImpl::HandleListBoxEventL(CEikListBox* /*aListBox */,
+        TListBoxEvent aEventType)
+    {
+    switch (aEventType)
+        {
+        //Single click integration
+        case EEventItemSingleClicked:
+        case EEventEnterKeyPressed:
+            {
+            const TInt index(iListBox->CurrentItemIndex());
+            if (index != KErrNotFound)
+                {
+                MarkUnmarkCalendarL();
+                }
+            }
+            break;
+        }
+    }
+
+
+// ----------------------------------------------------------------------------
+// CMultiCalUiDialogImpl::CallBackFor select
+// (other items were commented in a header).
+// ----------------------------------------------------------------------------
+//
+TInt CMultiCalUiDialogImpl::DoAsyncExit(TAny* aPtr)
+    {
+    TRACE_ENTRY_POINT
+    CMultiCalUiDialogImpl* self = static_cast<CMultiCalUiDialogImpl*>(aPtr);
+    self->TryExitL(self->iAsyncExitCmd);
+    TRACE_EXIT_POINT
+    return 0;
+    }
+
+// End of file.