diff -r 12af337248b1 -r bd7edf625bdd calendarui/settings/settingsui/src/calennestedsettingitem.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/calendarui/settings/settingsui/src/calennestedsettingitem.cpp Wed Sep 01 12:32:31 2010 +0100 @@ -0,0 +1,111 @@ +/* +* Copyright (c) 2007 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: Calendar setting item which opens to a settings +* page when clicked on. +* +*/ + + +//debug +#include "calendarui_debug.h" + +// INCLUDES +#include "calennestedsettingitem.h" +#include +#include +#include "calennestedsettingdialog.h" +#include +#include + +// ========================= MEMBER FUNCTIONS ================================ + +// ---------------------------------------------------------------------------- +// CCalenNestedSettingItem::CCalenCheckboxSettingItem +// Constructor. Does not take ownership of aSettings. +// ---------------------------------------------------------------------------- +// +CCalenNestedSettingItem::CCalenNestedSettingItem( TInt aId, + RPointerArray& aUnownedSettings, + const TDesC& aTitle ) + : CAknSettingItem( aId ), + iUnownedSettings( aUnownedSettings ), + iTitle( aTitle ) + { + TRACE_ENTRY_POINT; + TRACE_EXIT_POINT; + } + +// ---------------------------------------------------------------------------- +// CCalenNestedSettingItem::~CCalenNestedSettingItem +// Destructor. +// ---------------------------------------------------------------------------- +// +CCalenNestedSettingItem::~CCalenNestedSettingItem() + { + TRACE_ENTRY_POINT; + + iOwnedSettings.ResetAndDestroy(); + + TRACE_EXIT_POINT; + } + +// ---------------------------------------------------------------------------- +// CCalenNestedSettingItem::CompleteConstructionL +// Called by the framework to complete construction. +// ---------------------------------------------------------------------------- +// +void CCalenNestedSettingItem::CompleteConstructionL() + { + TRACE_ENTRY_POINT; + + // We need to take ownership of the settings during construction. + // Keep them in order. + while ( iUnownedSettings.Count() ) + { + iOwnedSettings.AppendL( iUnownedSettings[0] ); + iUnownedSettings.Remove( 0 ); + } + + TRACE_EXIT_POINT; + } + +// ---------------------------------------------------------------------------- +// CCalenNestedSettingItem::EditItemL +// From CAknSettingItem. Edits the item. +// ---------------------------------------------------------------------------- +// +void CCalenNestedSettingItem::EditItemL( TBool /*aCalledFromMenu*/ ) + { + TRACE_ENTRY_POINT; + + // Set the status pane title to the plugin name. + CEikStatusPane* sp = CEikonEnv::Static()->AppUiFactory()->StatusPane(); + CAknTitlePane* tp = static_cast( + sp->ControlL( TUid::Uid( EEikStatusPaneUidTitle ) ) ); + + // Copy the current text. We'll set it back when the dialog closes. + HBufC* oldTitle = tp->Text()->AllocLC(); + tp->SetTextL( iTitle ); + + CCalenNestedSettingDialog* dlg = CCalenNestedSettingDialog::NewL( iOwnedSettings ); + TInt retValue = dlg->ExecuteLD( R_CALEN_SETTING_DIALOG ); + + // Restore old title. + tp->SetTextL( *oldTitle ); + CleanupStack::PopAndDestroy( oldTitle ); + + TRACE_EXIT_POINT; + } + +// End of file