scrsaver/scrsaverplugins/ScreenSaverAnimPlugin/src/ScreenSaverAnimSettingDialog.cpp
--- a/scrsaver/scrsaverplugins/ScreenSaverAnimPlugin/src/ScreenSaverAnimSettingDialog.cpp Thu Aug 19 09:55:47 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,470 +0,0 @@
-/*
-* Copyright (c) 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: This file implements the Setting Dialog which
-* is used to display Settings container
-*
-*/
-
-
-
-
-
-#ifdef SYMBIAN_ENABLE_SPLIT_HEADERS
-#include <uikon/eikctrlstatus.h>
-#endif
-#include <e32std.h>
-#include <AknDialog.h>
-#include <coeaui.h>
-#include <eikenv.h>
-#include <bautils.h>
-#include <eikdialg.h>
-#include <eikmenup.h>
-#include <eikspane.h>
-
-#ifdef __SERIES60_HELP
-#include <hlplch.h>
-#endif // __SERIES60_HELP
-
-#ifdef __SERIES60_HELP
-// Help Context UID = DLL UID3
-const TUid KScreenSaverAnimPluginHelpContextUid = { 0x10207447 };
-#endif // __SERIES60_HELP
-
-#include <coeaui.h>
-#include <AknWaitNoteWrapper.h>
-#include <aknnotewrappers.h>
-#include <akntitle.h>
-#include <data_caging_path_literals.hrh>
-#include <StringLoader.h>
-#include <screensaveranimplugin.rsg>
-//-----------
-// USER INCLUDES
-#include "ScreenSaverAnimPlugin.h"
-#include "ScreenSaverAnimPlugin.hrh"
-#include "ScreenSaverAnimSettingDialog.h"
-#include "ScreenSaverAnimPluginContainer.h"
-#include "screensaver.hlp.hrh"
-
-// Middle softkey control ID
-const TInt KSanimMSKControlID = 3;
-
-// ============================ MEMBER FUNCTIONS ===============================
-
-// -----------------------------------------------------------------------------
-// CScreenSaverAnimSettingDialog::CScreenSaverAnimSettingDialog
-// Default Constructor. Initialises Dialog State Variables.
-// -----------------------------------------------------------------------------
-//
-CScreenSaverAnimSettingDialog::CScreenSaverAnimSettingDialog(
- CScreenSaverAnimPlugin* aCaller,
- CScreenSaverAnimSettingObject* aSettingObject )
- :iSettingObject( aSettingObject ),
- iCaller( aCaller )
- {
- iCustControl = NULL;
- }
-
-// -----------------------------------------------------------------------------
-// CScreenSaverAnimSettingDialog::ConstructL
-// Second Phase Constructor for CScreenSaverAnimSettingDialog. Opens resource file, reads the
-// dialog menu resource and calls CAknDialog::ConstructL with the resource as
-// param.
-// -----------------------------------------------------------------------------
-//
-void CScreenSaverAnimSettingDialog::ConstructL()
- {
- CAknDialog::ConstructL( R_SANIM_DIALOG_MENUBAR );
- }
-
-// -----------------------------------------------------------------------------
-// CScreenSaverAnimSettingDialog::NewL
-// Factory function for creating CScreenSaverAnimSettingDialog objects.
-// Returns: CScreenSaverAnimSettingDialog* ; Pointer to the created object.
-// Leaves if error occurs during creation.
-// -----------------------------------------------------------------------------
-//
-CScreenSaverAnimSettingDialog* CScreenSaverAnimSettingDialog::NewL(
- CScreenSaverAnimPlugin* aCaller,
- CScreenSaverAnimSettingObject* aSettingObject )
- {
- CScreenSaverAnimSettingDialog* self = CScreenSaverAnimSettingDialog::NewLC(
- aCaller,
- aSettingObject );
- CleanupStack::Pop( self );
- return self;
- }
-
-// -----------------------------------------------------------------------------
-// CScreenSaverAnimSettingDialog::NewLC
-// Factory function for creating CScreenSaverAnimSettingDialog objects.
-// It also pushes the created dialog object onto the cleanup stack.
-// Returns: CScreenSaverAnimSettingDialog* ; Pointer to the created object.
-// Leaves if error occurs during creation.
-// -----------------------------------------------------------------------------
-//
-CScreenSaverAnimSettingDialog* CScreenSaverAnimSettingDialog::NewLC(
- CScreenSaverAnimPlugin* aCaller,
- CScreenSaverAnimSettingObject* aSettingObject )
- {
- CScreenSaverAnimSettingDialog* self = new ( ELeave )
- CScreenSaverAnimSettingDialog( aCaller, aSettingObject );
- CleanupStack::PushL( self );
- self->ConstructL();
- return self;
- }
-
-// Destructor
-CScreenSaverAnimSettingDialog::~CScreenSaverAnimSettingDialog()
- {
- if (this->IsFocused())
- {
- CEikDialog::ButtonGroupContainer().RemoveCommandObserver(
- KSanimMSKControlID );
- }
-
- // Custom Control will be automatically destroyed by dialog framework
- iCustControl = NULL;
-
- // Set the text in status pane to the stored one
- if (iAppTitleText)
- {
- // Get the Status Pane Control
- CEikStatusPane* sp = iEikonEnv->AppUiFactory()->StatusPane();
- // Get the title pane
- CAknTitlePane* tp = NULL;
- TRAPD( errGetControl,
- tp = static_cast< CAknTitlePane* >( sp->ControlL(
- TUid::Uid( EEikStatusPaneUidTitle ) ) ) );
- if ( errGetControl == KErrNone && tp )
- {
- //set application name in the title pane
- TRAPD( errSetText,
- tp->SetTextL( *iAppTitleText ) );
- if ( errSetText != KErrNone )
- {
- // No error handling here
- }
- }
-
- delete iAppTitleText;
- iAppTitleText = NULL;
- }
-
- delete iTitlePaneString;
- }
-
-// -----------------------------------------------------------------------------
-// CScreenSaverAnimSettingDialog::ExecuteLD
-// Reimplements CAknDialog::ExecuteLD. It initialises the member variables of
-// the class and calls CAknDialog::ExecuteLD() with the dialog resource.
-// -----------------------------------------------------------------------------
-//
-TInt CScreenSaverAnimSettingDialog::ExecuteLD()
- {
-#ifdef SCREENSAVER_LOG_ENABLED
- _LIT( msg, "In Executeld dlg" );
- PrintDebugMsg( msg );
-#endif
-
- // Save this pointer since there are leaving functions in the flow
- CleanupStack::PushL( this );
-
- // Get the Status Pane Control
- CEikStatusPane* sp = iEikonEnv->AppUiFactory()->StatusPane();
-
- // Get the Title Pane Control
- CAknTitlePane* tp = static_cast< CAknTitlePane* >( sp->ControlL(
- TUid::Uid( EEikStatusPaneUidTitle ) ) );
-
- // Store the Application's title text
- iAppTitleText = HBufC::NewL( tp->Text()->Length() );
- *iAppTitleText = *tp->Text();
-
- // Display Settings in the title pane of application
- iTitlePaneString = NULL;
- iTitlePaneString = StringLoader::LoadL( R_SANIM_TITLE_SETTINGS,
- iEikonEnv );
- // SetTextL also ensures that if the length exceeds the layout space
- // available the text is truncated from the end.
- tp->SetTextL( iTitlePaneString->Des() );
-
- // ExecuteLD will delete this, so we have to Pop it...
- CleanupStack::Pop( this ); // this
-
- return CAknDialog::ExecuteLD( R_SANIM_SETTING_DIALOG );
-
- }
-
-// -----------------------------------------------------------------------------
-// CScreenSaverAnimSettingDialog::DynInitMenuPaneL
-// Reimplements CAknDialog::DynInitMenuPaneL inorder to support dynamic hiding
-// of menu items based on current state of the viewer.
-// -----------------------------------------------------------------------------
-//
-void CScreenSaverAnimSettingDialog::DynInitMenuPaneL(
- TInt aResourceId, // Resource Id for which this func is called
- CEikMenuPane* aMenuPane ) // Menupane object pointer for manipulation
- {
- if ( ( aResourceId == R_SANIM_DIALOG_MENU ) && ( aMenuPane ) )
- {
- }
- }
-
-
-// -----------------------------------------------------------------------------
-// Layouts dialog before showing it.
-// -----------------------------------------------------------------------------
-//
-void CScreenSaverAnimSettingDialog::PreLayoutDynInitL()
- {
- // Set middle softkey as Change.
- SetMiddleSoftKeyLabelL( R_SANIM_MSK_CHANGE, ESanimDlgChangeCommand );
-
- CAknDialog::PreLayoutDynInitL();
- }
-
-// -----------------------------------------------------------------------------
-// CScreenSaverAnimSettingDialog::OkToExitL
-// Reimplements CAknDialog::OkToExitL inorder to display custom menu and
-// trap the back softkey to provide restore view functionality/exit.
-// -----------------------------------------------------------------------------
-//
-TBool CScreenSaverAnimSettingDialog::OkToExitL( TInt aButtonId ) // ButtonId of button pressed
- {
- if ( aButtonId == EAknSoftkeyOptions )
- {
- DisplayMenuL();
- return EFalse;
- }
- else
- {
- if ( aButtonId == EAknSoftkeyBack )
- {
- }
- else
- {
- // Especially handle Select Key
- if ( ( aButtonId == EAknSoftkeySelect ) ||
- ( aButtonId == EEikBidOk ) ||
- ( aButtonId == ESanimDlgChangeCommand ) )
- {
- // Select button pressed, handle, do not leave dialog
- ProcessCommandL( ESanimDlgChangeCommand );
- return EFalse;
- }
- if ( aButtonId == EEikCmdExit )
- {
- }
- }
- }
-
- return ETrue;
- }
-
-
-// ---------------------------------------------------------------------------
-// CScreenSaverAnimSettingDialog::HandleApplicationForegroundEvent
-// This API is used by the application to give background/foreground events
-// to the Dialog. The dialog inturn passes the events to custom control.
-// ---------------------------------------------------------------------------
-//
-void CScreenSaverAnimSettingDialog::HandleApplicationForegroundEvent( TBool
- /*aForeground*/ )
- {
- }
-
-// -----------------------------------------------------------------------------
-// CScreenSaverAnimSettingDialog::ProcessCommandL
-// Reimplements CAknDialog::ProcessCommandL inorder to handle dialog menu
-// commands.
-// -----------------------------------------------------------------------------
-//
-void CScreenSaverAnimSettingDialog::ProcessCommandL( TInt aCommandId ) // Command Id
- {
- // The Commands are handled by the custom CCoe Control and
- // a boolean varialble is used inorder to keep track whether
- // the control command processing needs to be invoked or not.
- CAknDialog::ProcessCommandL( aCommandId );
- switch ( aCommandId )
- {
- case ESanimDlgChangeCommand:
- if ( iCustControl )
- {
- iCustControl->HandleListBoxSelectionL();
- }
- break;
- case ESanimDlgHelpCommand:
- {
-#ifdef __SERIES60_HELP
- HlpLauncher::LaunchHelpApplicationL( iEikonEnv->WsSession(),
- iEikonEnv->EikAppUi()->AppHelpContextL() );
-#endif
- }
- break;
- case EAknSoftkeyBack: // Fall Through
- case EEikCmdExit:
- case EAknCmdExit:
- // Close this dialog
- TryExitL( aCommandId );
- iAvkonAppUi->ProcessCommandL( aCommandId );
- break;
- default:
- break;
- }
- }
-
-#ifdef __SERIES60_HELP
-// -----------------------------------------------------------------------------
-// CScreenSaverAnimSettingDialog::OfferKeyEventL
-// Handles Key events by reimplementing CCoeControl::OfferKeyEventL.
-// Returns:
-// EKeyWasConsumed: If this control uses this key.
-// EKeyWasNotConsumed: Otherwise.
-// -----------------------------------------------------------------------------
-//
-void CScreenSaverAnimSettingDialog::GetHelpContext( TCoeHelpContext&
- aContext ) const
- {
- aContext.iMajor = KScreenSaverAnimPluginHelpContextUid;
- aContext.iContext = KSCREENSAVER_HLP_ANIM_SETTINGS;
- }
-#endif // __SERIES60_HELP
-
-// -----------------------------------------------------------------------------
-// CScreenSaverAnimSettingDialog::CreateCustomControlL
-// Reimplements CAknDialog::CreateCustomControlL inorder to add the
-// custom control as part of the dialog in the UI framework.
-// Returns: SEikControlInfo which contains the Cust Control, if
-// aControlType == ESanimCustControl
-// else,
-// the structure does not contain any control.
-// -----------------------------------------------------------------------------
-//
-SEikControlInfo CScreenSaverAnimSettingDialog::CreateCustomControlL(
- TInt aControlType ) // Control Type
- {
-#ifdef SCREENSAVER_LOG_ENABLED
- _LIT( msg, "In Create Custom Control" );
- PrintDebugMsg( msg );
-#endif
-
- SEikControlInfo controlInfo;
- controlInfo.iControl = NULL;
- controlInfo.iTrailerTextId = 0;
- controlInfo.iFlags = EEikControlIsNonFocusing;
-
- switch ( aControlType )
- {
- case ESanimCustControl:
- iCustControl = CScreenSaverAnimPluginContainer::NewL(
- iCaller,
- this,
- iSettingObject );
- controlInfo.iControl = iCustControl;
- break;
- default:
- break;
- }
- return controlInfo;
- }
-
-// -----------------------------------------------------------------------------
-// CScreenSaverAnimSettingDialog::SizeChanged
-// Reimplements CAknDialog::SizeChanged inorder to support the resize of the
-// dialog when functions such as SetRect, SetExtent are called on the dialog.
-// -----------------------------------------------------------------------------
-//
-void CScreenSaverAnimSettingDialog::SizeChanged()
- {
- CAknDialog::SizeChanged();
- iCustControl->SetExtent( Rect().iTl, Rect().Size() );
- DrawNow();
- }
-
-// -----------------------------------------------------------------------------
-// CScreenSaverAnimSettingDialog::OfferKeyEventL
-// Handles Key events by reimplementing CCoeControl::OfferKeyEventL.
-// Returns:
-// EKeyWasConsumed: If this control uses this key.
-// EKeyWasNotConsumed: Otherwise.
-// -----------------------------------------------------------------------------
-//
-TKeyResponse CScreenSaverAnimSettingDialog::OfferKeyEventL(
- const TKeyEvent& aKeyEvent, // Key Event
- TEventCode aType ) // Event Code
- {
- if ( iCustControl )
- {
- TKeyResponse lCcRetVal = iCustControl->OfferKeyEventL( aKeyEvent, aType );
- if ( lCcRetVal == EKeyWasConsumed )
- {
- // Key was consumed, UNLESS it was the End key, which should be
- // passed to base class. For some reason listboxes like to eat
- // end keys
- if ( aKeyEvent.iCode != EKeyEscape )
- {
- return EKeyWasConsumed;
- }
- }
- }
- return CAknDialog::OfferKeyEventL( aKeyEvent, aType );
- }
-
-// -----------------------------------------------------------------------------
-// CScreenSaverAnimSettingDialog::HandleResourceChange
-// Handles change of skin/Layout
-// -----------------------------------------------------------------------------
-//
-void CScreenSaverAnimSettingDialog::HandleResourceChange( TInt aType )
- {
- if ( iCustControl )
- {
- iCustControl->HandleResourceChange( aType );
- }
- CAknDialog::HandleResourceChange( aType );
- }
-
-// ---------------------------------------------------------------------------
-// CScreenSaverAnimSettingDialog::FocusChanged
-// ---------------------------------------------------------------------------
-//
-void CScreenSaverAnimSettingDialog::FocusChanged( TDrawNow aDrawNow )
- {
- // Pass focus changed event to listbox.
- if ( iCustControl )
- {
- iCustControl->SetFocus( IsFocused(), aDrawNow );
- }
- }
-
-// ---------------------------------------------------------------------------
-// Sets middle softkey label.
-// ---------------------------------------------------------------------------
-//
-void CScreenSaverAnimSettingDialog::SetMiddleSoftKeyLabelL(
- const TInt aResourceId, const TInt aCommandId )
- {
- HBufC* middleSKText = StringLoader::LoadLC( aResourceId );
- TPtr mskPtr = middleSKText->Des();
- CEikDialog::ButtonGroupContainer().AddCommandToStackL(
- KSanimMSKControlID,
- aCommandId,
- mskPtr );
- CEikDialog::ButtonGroupContainer().UpdateCommandObserverL(
- KSanimMSKControlID,
- *this );
- CleanupStack::PopAndDestroy( middleSKText );
- }
-
-// End of File