clock2/clockui/uilayer/clockmainview/src/clockmainview.cpp
changeset 0 f979ecb2b13e
child 5 42814f902fe6
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/clock2/clockui/uilayer/clockmainview/src/clockmainview.cpp	Tue Feb 02 10:12:19 2010 +0200
@@ -0,0 +1,883 @@
+/*
+* 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:   This is the source file for the CClockMainView class.
+*
+*/
+
+// System includes
+#include <clock.rsg>
+#include <avkon.hrh>
+#include <aknViewAppUi.h>
+#include <aknnotewrappers.h>
+#include <aknlists.h>
+#include <StringLoader.h>
+#include <tz.h>
+#include <vtzrules.h>
+#include <clockalarmeditor.h>
+#include <hlplch.h>
+
+// User includes
+#include "clockmainview.h"
+#include "clockmaincontainer.h"
+#include "clockalarmarray.h"
+#include "clockappui.h"
+#include "clockdocument.h"
+#include "clock.h"
+#include "clock.hrh"
+#include "clkuialarmmodel.h"
+#include "clkuialarmidleobserver.h"
+#include "clkcommon.h"
+#include "clock_debug.h"
+
+// Constants
+
+// Literals
+
+// ---------------------------------------------------------
+// CClockMainView::NewL
+// rest of the details are commented in the header
+// ---------------------------------------------------------
+//
+CClockMainView* CClockMainView::NewL( CClkUiAlarmModel* aAlarmModel )
+    {
+	__PRINTS( "CClockMainView::NewL - Entry" );
+	
+    CClockMainView* self = new ( ELeave ) CClockMainView;
+    CleanupStack::PushL( self );
+    
+    self->ConstructL( aAlarmModel );
+    
+    CleanupStack::Pop( self );
+	
+	__PRINTS( "CClockMainView::NewL - Exit" );
+	
+    return self;
+    }
+
+// ---------------------------------------------------------
+// CClockMainView::ConstructL
+// rest of the details are commented in the header
+// ---------------------------------------------------------
+//
+void CClockMainView::ConstructL( CClkUiAlarmModel* aAlarmModel )
+	{
+	__PRINTS( "CClockMainView::ConstructL - Entry" );
+	
+	BaseConstructL( R_CLOCK_MAIN_VIEW );
+	
+	// Save the model.
+	iAlarmModel = aAlarmModel;
+	
+	// Construct the alarm array.
+	iAlarmArray = CClockAlarmArray::NewL( iAlarmModel, iCoeEnv );
+	
+    if( !iModelObserver )
+        {
+        iModelObserver = CClkUiAlarmIdleObserver::NewL( this, KAlarmIdleObserverPriority );
+        // Set the observer for the model.
+        iAlarmModel->SetModelObserver( iModelObserver );
+        }
+	
+	__PRINTS( "CClockMainView::ConstructL - Exit" );
+	}
+
+// ---------------------------------------------------------
+// CClockMainView::CClockMainView
+// rest of the details are commented in the header
+// ---------------------------------------------------------
+//
+//Single click integration
+CClockMainView::CClockMainView()
+
+    {
+	__PRINTS( "CClockMainView::CClockMainView - Entry" );
+	
+	// No implementation yet.
+	
+	__PRINTS( "CClockMainView::CClockMainView - Exit" );
+	}
+
+// ---------------------------------------------------------
+// CClockMainView::SetNewAlarmL
+// rest of the details are commented in the header
+// ---------------------------------------------------------
+//
+void CClockMainView::SetNewAlarmL()
+    {
+	__PRINTS( "CClockMainView::SetNewAlarmL - Entry" );
+	
+	// Hide the navigation pane.
+	CClockAppUi* appUi = static_cast< CClockAppUi* > ( AppUi() );
+	appUi->MakeNavigationPaneVisible( EFalse, EClockAppMainViewId );
+	
+    // Mark the alarm editor as open.
+    iAlarmEditorOpen = ETrue;
+    
+    // Construct the alarm editor.
+    CClockAlarmEditor *alarmEditor = CClockAlarmEditor::NewL();
+
+    // Launch the editor. iAlarmId will give either alarm ID 
+    // or EClockAlarmExit or EClockAlarmDelete.
+    iAlarmId = alarmEditor->LaunchL();
+	
+	// Update the title pane text.
+    static_cast< CClockAppUi* > ( AppUi() )->SetTitlePaneTextL( R_CLOCK_TITLE_MAIN_VIEW );
+	
+	 // Show the navigation pane again.
+    appUi->MakeNavigationPaneVisible( ETrue, EClockAppMainViewId );
+    
+    if( EClockAlarmExit == iAlarmId )
+        {		
+        // Mark the alarm editor as closed.
+		iAlarmEditorOpen = EFalse;
+
+		// Cleanup.
+		if( alarmEditor )
+			{
+			delete alarmEditor;
+			alarmEditor = NULL;
+			}
+		
+			
+        // Let the appui handle the exit.
+        AppUi()->HandleCommandL( EClockAlarmExit );
+        
+        __PRINTS( "CClockMainView::SetNewAlarmL:EClockAlarmExit - Exit" );
+        
+        return;
+        }
+
+    if( EClockAlarmDelete == iAlarmId )
+        {		
+		
+        // Mark the alarm editor as closed.
+		iAlarmEditorOpen = EFalse;
+
+		// Cleanup.
+		if( alarmEditor )
+			{
+			delete alarmEditor;
+			alarmEditor = NULL;
+			}
+         
+        // Do nothing. Just close the form without saving any data.
+        __PRINTS( "CClockMainView::SetNewAlarmL:EClockAlarmDelete - Exit" );
+        
+        return;
+        }
+
+    // If the user pressed cancel and if the alarm id is valid. 
+    if( KErrNone != iAlarmId )
+        {
+        // Update the latest alarm details.
+        iAlarmModel->ClockAlarmInfo( iAlarmId, iAlarmInfo );
+        
+        // First update the model with the latest alarm id.
+        iAlarmModel->SaveLatestAlarmId( iAlarmId );
+        
+        // Update the container with the newly added alarm.
+        iContainer->UpdateAlarmListL( iAlarmInfo, iAlarmId );
+        
+       
+        }
+    else
+        {
+        // No implementation yet.
+        }
+    
+    // Mark the alarm editor as closed.
+    iAlarmEditorOpen = EFalse;
+
+    // Cleanup.
+    if( alarmEditor )
+        {
+        delete alarmEditor;
+        alarmEditor = NULL;
+        }
+   
+   
+	__PRINTS( "CClockMainView::SetNewAlarmL - Exit" );
+    }
+
+// ---------------------------------------------------------
+// CClockMainView::RemoveAlarmL
+// rest of the details are commented in the header
+// ---------------------------------------------------------
+//
+void CClockMainView::RemoveAlarmL()
+    {
+	__PRINTS( "CClockMainView::RemoveAlarmL - Entry" );
+	
+    // First get the index of the selected item in the list.
+    TInt itemIndex( iContainer->ListBox()->CurrentItemIndex() );
+    
+    if( KErrNone >= itemIndex )
+        {
+		__PRINTS( "CClockMainView::RemoveAlarmL - Exit" );
+		
+        return;
+        }
+    
+    
+        SClkAlarmInfo alarmInfo;
+        TAlarmId alarmId;
+        // Get the alarm id from alarm model.
+        iAlarmArray->GetSortedAlmIdInfo( itemIndex, alarmId, alarmInfo );
+        
+        // Delete the alarm.
+        User::LeaveIfError( iAlarmModel->DeleteClockAlarm( alarmId ) );
+        
+        // Display the confirmation note to the user about alarm deletion.
+        CAknConfirmationNote* confNote = new( ELeave ) CAknConfirmationNote;
+        HBufC* confNoteText = StringLoader::LoadLC( R_QTN_CLOCK_ALARM_NOTE_DELETED, iCoeEnv );
+        // Display the note.
+        confNote->ExecuteLD( *confNoteText );
+        // Cleanup.
+        CleanupStack::PopAndDestroy( confNoteText );
+        
+        // Update the container.
+        iContainer->RemoveAlarmL( itemIndex );
+        
+        
+       
+      
+	
+	__PRINTS( "CClockMainView::RemoveAlarmL - Exit" );
+    }
+
+// ---------------------------------------------------------
+// CClockMainView::ActivateAlarmL
+// rest of the details are commented in the header
+// ---------------------------------------------------------
+//
+void CClockMainView::ActivateAlarmL()
+    {
+	__PRINTS( "CClockMainView::ActivateAlarmL - Entry" );
+	
+    // First get the focused list item.
+    TInt itemIndex( iContainer->ListBox()->CurrentItemIndex() ); 
+    // Id of the alarm to be activated.
+    TAlarmId alarmId;
+    // Dummy alarm info.
+    SClkAlarmInfo alarmInfo;
+    
+    // Get the id of the alarm at the index in the list.
+    iAlarmArray->GetSortedAlmIdInfo( itemIndex, alarmId, alarmInfo );
+
+    // Activate the alarm.
+    User::LeaveIfError( iAlarmModel->ClockAlarmEnable( alarmId, EAlarmStatusEnabled ) );
+    // Update the listbox.
+    iContainer->ListBox()->SetCurrentItemIndexAndDraw( iAlarmArray->ListBoxIndex( alarmId ) );
+	
+	__PRINTS( "CClockMainView::ActivateAlarmL - Exit" );
+    }
+
+// ---------------------------------------------------------
+// CClockMainView::DeactivateAlarmL
+// rest of the details are commented in the header
+// ---------------------------------------------------------
+//
+void CClockMainView::DeactivateAlarmL()
+    {
+	__PRINTS( "CClockMainView::DeactivateAlarmL - Entry" );
+	
+    // First get the focused list item.
+    TInt itemIndex( iContainer->ListBox()->CurrentItemIndex() ); 
+    // Id of the alarm to be deactivated.
+    TAlarmId alarmId;
+    // Dummy alarm info.
+    SClkAlarmInfo alarmInfo;
+
+    // Get the id of the alarm at the index in the list.
+    iAlarmArray->GetSortedAlmIdInfo( itemIndex, alarmId, alarmInfo );
+
+    // Deactivate the alarm.
+    User::LeaveIfError( iAlarmModel->ClockAlarmEnable( alarmId, EAlarmStatusDisabled ) );
+    // Update the listbox.
+    iContainer->ListBox()->SetCurrentItemIndexAndDraw( iAlarmArray->ListBoxIndex( alarmId ) );
+	
+	__PRINTS( "CClockMainView::DeactivateAlarmL - Exit" );
+    }
+
+// ---------------------------------------------------------
+// CClockMainView::ResetAlarmL
+// rest of the details are commented in the header
+// ---------------------------------------------------------
+//
+void CClockMainView::ResetAlarmL()
+    {
+	__PRINTS( "CClockMainView::ResetAlarmL - Entry" );
+	
+    // First get the focused list item.
+    TInt itemIndex( iContainer->ListBox()->CurrentItemIndex() ); 
+    // Id of the alarm to be deactivated.
+    TAlarmId alarmId;
+    // Dummy alarm info.
+    SClkAlarmInfo alarmInfo;
+
+    // Get the id of the alarm at the index in the list.
+    iAlarmArray->GetSortedAlmIdInfo( itemIndex, alarmId, alarmInfo );
+    
+    // Hide the navigation pane.
+    CClockAppUi* appUi = static_cast< CClockAppUi* > ( AppUi() );
+    appUi->MakeNavigationPaneVisible( EFalse, EClockAppMainViewId );
+    
+    // Mark the alarm editor as open.
+    iAlarmEditorOpen = ETrue;
+    
+    // Construct the alarm editor.
+    CClockAlarmEditor* alarmEditor = CClockAlarmEditor::NewL( alarmId );
+    
+    // Launch the editor.iAlarmId will give either alarm ID 
+    // or EClockAlarmExit or EClockAlarmDelete.
+    iAlarmId = alarmEditor->LaunchL();
+	
+	// Update the title pane text.
+    static_cast< CClockAppUi* > ( AppUi() )->SetTitlePaneTextL( R_CLOCK_TITLE_MAIN_VIEW );
+	
+	 // Show the navigation pane again.
+    appUi->MakeNavigationPaneVisible( ETrue, EClockAppMainViewId );
+    
+    if( EClockAlarmExit == iAlarmId )
+        {		
+        // Mark the alarm editor as closed.
+		iAlarmEditorOpen = EFalse;
+    
+		if( alarmEditor )
+			{
+			delete alarmEditor;
+			alarmEditor = NULL;
+			}
+		
+        // Let the appui handle the exit.
+        AppUi()->HandleCommandL( EClockAlarmExit );
+       
+        __PRINTS( "CClockMainView::ResetAlarmL:EClockAlarmExit - Exit" );
+        
+        return;
+        }
+    
+    if( EClockAlarmDiscardChanges == iAlarmId )
+        {		
+		  // Mark the alarm editor as closed.
+		iAlarmEditorOpen = EFalse;
+		
+		// Cleanup.
+		if( alarmEditor )
+			{
+			delete alarmEditor;
+			alarmEditor = NULL;
+			}
+		
+        // Dont do anything. Simply return.
+        
+        __PRINTS( "CClockMainView::ResetAlarmL:EClockAlarmDiscardChanges - Exit" );
+                
+        return;
+        }
+    
+    // If the user pressed cancel and if the alarm id is valid.
+    if( KErrNone != iAlarmId )
+        {
+        // Delete the previous alarm.
+        User::LeaveIfError( iAlarmModel->DeleteClockAlarm( alarmId ) );
+        
+        // Remove this alarm from the list.
+        iContainer->RemoveAlarmL( itemIndex );
+        
+        // Update the latest alarm details.
+        iAlarmModel->ClockAlarmInfo( iAlarmId, iAlarmInfo );
+        
+        // First update the model with the latest alarm id.
+        iAlarmModel->SaveLatestAlarmId( iAlarmId );
+        
+        // Update the container with the new alarm.
+        iContainer->UpdateAlarmListL( iAlarmInfo, iAlarmId );
+        }
+    
+    // Mark the alarm editor as closed.
+    iAlarmEditorOpen = EFalse;
+    
+    if( alarmEditor )
+        {
+        delete alarmEditor;
+        alarmEditor = NULL;
+        }
+   
+   
+	__PRINTS( "CClockMainView::ResetAlarmL - Exit" );
+    }
+
+// ---------------------------------------------------------
+// CClockMainView::~CClockMainView
+// rest of the details are commented in the header
+// ---------------------------------------------------------
+//
+CClockMainView::~CClockMainView()
+	{
+	__PRINTS( "CClockMainView::~CClockMainView - Entry" );
+	
+	if( iAlarmArray )
+	    {
+	    delete iAlarmArray;
+	    iAlarmArray = NULL;
+	    }
+	if( iContainer )
+	    {
+	    ( AppUi() )->RemoveFromStack( iContainer );
+	    delete iContainer;
+	    iContainer = NULL;
+	    }
+	if( iModelObserver )
+	    {
+		if( iAlarmModel )
+			{
+			iAlarmModel->SetModelObserver( NULL );
+			}
+	    delete iModelObserver;
+	    iModelObserver = NULL;
+	    }
+		
+	__PRINTS( "CClockMainView::~CClockMainView - Exit" );
+	}
+
+// ---------------------------------------------------------
+// CClockMainView::Id
+// rest of the details are commented in the header
+// ---------------------------------------------------------
+//
+TUid CClockMainView::Id() const
+	{
+	__PRINTS( "CClockMainView::Id - Entry" );
+	
+	__PRINTS( "CClockMainView::Id - Exit" );
+	
+	return KClockAppMainViewId;
+	}
+
+// ---------------------------------------------------------
+// CClockMainView::DoActivateL
+// rest of the details are commented in the header
+// ---------------------------------------------------------
+//
+void CClockMainView::DoActivateL( const TVwsViewId& /*aPrevViewId*/,
+        					      TUid aCustomMessageId,
+        					      const TDesC8& /*aCustomMessage*/ )
+    {
+	__PRINTS( "CClockMainView::DoActivateL - Entry" );
+	
+    if( KClockHideInBackground == aCustomMessageId.iUid )
+		{
+		CClockAppUi* appUi = static_cast< CClockAppUi* > ( AppUi() );
+		
+		// Enable bring-to-foreground on view activation.
+		appUi->SetCustomControl( 0 );
+		}  
+	
+    // Re-initialize the alarm id array.
+    iAlarmArray->InitIdList();
+    
+    if( ( KClockAppMainViewId == aCustomMessageId ) && iContainer )
+        {
+        AppUi()->RemoveFromStack( iContainer );
+        delete iContainer;
+        iContainer = NULL;
+        }
+    
+    CClockAppUi* clockAppUi( static_cast< CClockAppUi* > ( AppUi() ) );
+    if( !iContainer )
+    	{
+    	iContainer = CClockMainContainer::NewL( this, ClientRect(), iAlarmArray );
+    	( AppUi() )->AddToStackL( *this, iContainer );
+    	iContainer->SetMopParent( this );    	
+    	
+    	if( clockAppUi->IsAppExitHidden() )
+    	    {
+    	    iContainer->ListBox()->SetCurrentItemIndexAndDraw( KZerothIndex );
+    	    clockAppUi->SetAppHidden( EFalse );
+    	    
+    	    }
+    	else
+            {
+
+            // Focus on the "New Alarm" whenever the main view is activated 
+
+
+            iContainer->ListBox()->SetCurrentItemIndexAndDraw( KErrNone);
+            }
+    	}
+
+    // Update the date and day text.
+    iContainer->SetDayInfoL();
+    
+    // Update the location information text.
+    iContainer->SetZoneInfoL();
+    
+    // Update the DST information in the container.
+    iContainer->UpdateDSTStateL();
+    
+    // Update the title pane text.
+    clockAppUi->SetTitlePaneTextL( R_CLOCK_TITLE_MAIN_VIEW );
+      
+    // If opened from clock, display the navigation pane again.
+    clockAppUi->MakeNavigationPaneVisible( ETrue, EClockAppMainViewId );
+    
+    // Activate the container.
+    iContainer->ActivateL();
+    
+	__PRINTS( "CClockMainView::DoActivateL - Exit" );
+    }
+
+// ---------------------------------------------------------
+// CClockMainView::DoDeactivate
+// rest of the details are commented in the header
+// ---------------------------------------------------------
+//
+void CClockMainView::DoDeactivate()
+	{
+	__PRINTS( "CClockMainView::DoDeactivate - Entry" );
+	
+	// Ask the document to save the user data in the document file.
+	CClockDocument* clockDocument = static_cast< CClockDocument* > ( AppUi()->Document() );
+	TRAP_IGNORE( clockDocument->StoreDataL() );
+	
+	if( iContainer )
+		{
+	
+		// First remove the container from the control stack
+		( AppUi() )->RemoveFromStack( iContainer );
+		// And then destroy it.
+		delete iContainer;
+		iContainer = NULL;
+		}
+	
+	__PRINTS( "CClockMainView::DoDeactivate - Exit" );
+    }
+
+// ---------------------------------------------------------
+// CClockMainView::HandleCommandL
+// rest of the details are commented in the header
+// ---------------------------------------------------------
+//
+void CClockMainView::HandleCommandL( TInt aCommand )
+	{
+	__PRINTS( "CClockMainView::HandleCommandL - Entry" );
+	
+	switch( aCommand )
+		{
+		//Single click integration
+	    case EClockSelect:
+		    {
+		    if ( iContainer->ListBox()->CurrentItemIndex() == 0 )
+		        {
+		        SetNewAlarmL(); 
+		        }
+		    else
+		        {
+		        ResetAlarmL(); 
+		        } 
+		    }
+		    break; 
+
+	    case EClockNewAlarm:
+		    {
+		    // Display the alarm editor for the user to set the alarm.
+		    SetNewAlarmL();
+		    }
+		    break;
+		    
+		case EClockResetAlarm:
+		    {
+		    // Reset the chosen alarm.
+		    ResetAlarmL();
+		    }
+		    break;
+		    
+		case EClockDeactivateAlarm:
+		    {
+		    // Deactivate the focused alarm item in the list.
+		    DeactivateAlarmL();
+		    }
+		    break;
+		    
+		case EClockActivateAlarm:
+		    {
+		    // Activate the focused alarm item in the list.
+		    ActivateAlarmL();
+		    }
+		    break;
+		    
+		case EClockRemoveAlarm:
+		    {
+		    // Delete the selected alarm.
+		    RemoveAlarmL();
+		    }
+		    break;
+		    
+		case EClockSettings:
+		    {
+		    // Let the appui handle the command.
+		    AppUi()->HandleCommandL( EClockSettings );
+		    }
+		    break;
+		    
+		case EClockMainViewExit:
+		case EAknSoftkeyExit:
+		    {
+		    AppUi()->HandleCommandL( aCommand );
+		    }
+		    break;
+			
+	    case EAknCmdHelp:  //EClockWorldHelp:
+			{
+			// Launch clock main view specific help.
+			HlpLauncher::LaunchHelpApplicationL( iCoeEnv->WsSession(), iAvkonAppUi->AppHelpContextL() );
+			}
+			break;
+		    
+		default:
+			{
+			// No implementation yet.
+			}
+			break;
+		}
+		
+	__PRINTS( "CClockMainView::HandleCommandL - Exit" );
+	}
+
+// ---------------------------------------------------------
+// CClockMainView::HandleUpdateL
+// rest of the details are commented in the header
+// ---------------------------------------------------------
+//
+void CClockMainView::HandleUpdateL( TInt /*aReason*/ )
+    {
+	__PRINTS( "CClockMainView::HandleUpdateL - Entry" );
+
+    // Get the currently focussed item.	
+	TInt currentlyFocussedItem( KErrNotFound );
+	if( iContainer )
+	    {
+		currentlyFocussedItem = iContainer->ListBox()->CurrentItemIndex();
+	    } 
+	// Update the alarm array.
+	iAlarmArray->InitIdList();
+	
+    // We redraw the container when an update is received from the uimodel (be it alarm or clockserver).
+    if( iContainer )
+        {
+        iContainer->DrawNow();
+        iContainer->ListBox()->HandleItemAdditionL();
+        
+        // In case the currently focussed item is invalid,set the focus to last item and set the msk text accordingly. 
+        if( KErrNotFound == currentlyFocussedItem ) 
+            {
+            TInt itemCount = iContainer->ListBox()->Model()->ItemTextArray()->MdcaCount();
+        	iContainer->ListBox()->SetCurrentItemIndexAndDraw( itemCount -1 );
+        	
+        	
+            }    
+        }
+	
+	__PRINTS( "CClockMainView::HandleUpdateL - Exit" );
+    }
+
+// ---------------------------------------------------------
+// CClockMainView::DynInitMenuPaneL
+// rest of the details are commented in the header
+// ---------------------------------------------------------
+//
+void CClockMainView::DynInitMenuPaneL( TInt aResourceId, CEikMenuPane* aMenuPane )
+    {
+	__PRINTS( "CClockMainView::DynInitMenuPaneL - Entry" );
+
+	//Single click integration
+    if( ( R_CLOCK_MAIN_VIEW_MENUPANE != aResourceId ) )
+
+
+        {
+		__PRINTS( "CClockMainView::DynInitMenuPaneL - Exit" );
+		
+        return;
+        }
+
+    // TODO: Initialize FeatureManager and remove Help option if its not supported.
+    /*if( !FeatureManager::FeatureSupported( KFeatureIdHelp ) )
+        {
+        aMenuPane->DeleteMenuItem( EAlarmHelpAlarmClock );
+        }*/
+
+	
+    TInt alarmCount = iAlarmArray->MdcaCount();
+
+    // There are no alarms set or the current focussed listitem is "New Alarm" then remove alarm specific options 
+    if( KZeroAlarms >= alarmCount || ( KErrNone == iContainer->ListBox()->CurrentItemIndex() ) )
+        {
+        // There are no alarms set. Remove the irrelevant options from the menu.
+        aMenuPane->DeleteMenuItem( EClockNewAlarm );
+        aMenuPane->DeleteMenuItem( EClockResetAlarm );
+        aMenuPane->DeleteMenuItem( EClockRemoveAlarm );
+        aMenuPane->DeleteMenuItem( EClockActivateAlarm );           
+        aMenuPane->DeleteMenuItem( EClockDeactivateAlarm );                                 
+        }
+    else
+        {
+        // There is atleast one alarm set. Get the details to update the menu.
+        SClkAlarmInfo alarmInfo;
+        TAlarmId alarmId;
+        
+       
+        iAlarmArray->GetSortedAlmIdInfo( iContainer->ListBox()->CurrentItemIndex(), alarmId, alarmInfo );       
+
+        if( alarmInfo.iStatus == EAlarmStatusEnabled ) 
+            {
+            // Alarm is already active. Remove the activate option.
+            aMenuPane->DeleteMenuItem( EClockActivateAlarm ); 
+            
+                      
+
+            if( ( EAlarmRepeatDefintionRepeatOnce == alarmInfo.iRepeat ) || 
+                ( EAlarmRepeatDefintionRepeatNext24Hours == alarmInfo.iRepeat) )
+                {
+                // Alarm is not recurring. Remove the deactivate option from the menu.
+                aMenuPane->DeleteMenuItem( EClockDeactivateAlarm ); 
+                }
+            }
+        else        
+            {
+            // Alarm is already inactive. Remove the deactivate option from the menu. 
+            aMenuPane->DeleteMenuItem( EClockDeactivateAlarm );
+            }
+        }
+
+   
+		
+	__PRINTS( "CClockMainView::DynInitMenuPaneL - Exit" );
+    }
+
+// ---------------------------------------------------------
+// CClockMainView::DynInitMenuBarL
+// rest of the details are commented in the header
+// ---------------------------------------------------------
+//
+//Single click integration
+void CClockMainView::DynInitMenuBarL( TInt /*aResourceId*/, CEikMenuBar* /*aMenuBar*/ )
+
+    {
+	__PRINTS( "CClockMainView::DynInitMenuBarL - Entry" );
+	
+    
+	
+	__PRINTS( "CClockMainView::DynInitMenuBarL - Exit" );
+    }
+
+// ---------------------------------------------------------
+// CClockMainView::HandleForegroundEventL
+// rest of the details are commented in the header
+// ---------------------------------------------------------
+//
+void CClockMainView::HandleForegroundEventL( TBool aForeground )
+    {
+    __PRINTS( "CClockMainView::HandleForegroundEventL - Entry" );
+    
+    if( aForeground )
+        {
+        CClockAppUi* clockAppUi( static_cast< CClockAppUi* > ( AppUi() ) );
+        if( clockAppUi->IsAppExitHidden() )
+            {
+            if( iContainer )
+                {
+                iContainer->ResetMarqueeLabelL();
+                iContainer->ListBox()->SetCurrentItemIndexAndDraw( KZerothIndex );
+                }
+            clockAppUi->SetAppHidden( EFalse );
+           
+            }
+        }
+    
+    __PRINTS( "CClockMainView::HandleForegroundEventL - Exit" );
+    }
+// ---------------------------------------------------------
+// CClockMainView::GetApplicationRect
+// rest of the details are commented in the header
+// ---------------------------------------------------------
+//
+TRect CClockMainView::GetApplicationRect()
+    {
+	__PRINTS( "CClockMainView::GetApplicationRect - Entry" );
+	
+	__PRINTS( "CClockMainView::GetApplicationRect - Exit" );
+	
+    // Return the applicationrect from appui.
+    return AppUi()->ApplicationRect();
+    }
+
+
+
+// ---------------------------------------------------------
+// CClockMainView::HandleEnvChangeL
+// rest of the details are commented in the header
+// ---------------------------------------------------------
+//
+void CClockMainView::HandleEnvChangeL( TClockEnvChanged /*aEnvChanged*/ )
+    {
+	__PRINTS( "CClockMainView::HandleEnvChangeL - Entry" );
+	
+    if( iContainer )
+        {
+        // Update the main view information.
+        iContainer->SetDayInfoL();
+        
+        // Update the location information text.
+        iContainer->SetZoneInfoL();
+        
+        // Update the DST information.
+        iContainer->UpdateDSTStateL();
+        
+        // Update the container.
+        iContainer->DrawNow();
+        }
+	
+	__PRINTS( "CClockMainView::HandleEnvChangeL - Exit" );
+    }
+
+// ---------------------------------------------------------
+// CClockMainView::IsAlarmEditorOpen
+// rest of the details are commented in the header
+// ---------------------------------------------------------
+//
+TBool CClockMainView::IsAlarmEditorOpen()
+    {
+	__PRINTS( "CClockMainView::IsAlarmEditorOpen - Entry" );
+	
+	__PRINTS( "CClockMainView::IsAlarmEditorOpen - Exit" );
+	
+    return iAlarmEditorOpen;
+    }
+
+// ---------------------------------------------------------
+// CClockMainView::ClockApplicationUi
+// rest of the details are commented in the header
+// ---------------------------------------------------------
+//
+CClockAppUi* CClockMainView::ClockApplicationUi()
+    {
+    __PRINTS( "CClockMainView::ClockApplicationUi - Entry" );
+
+    __PRINTS( "CClockMainView::ClockApplicationUi - Exit" );
+    
+    return static_cast< CClockAppUi* > ( AppUi() );
+    }
+
+// End of file