--- a/presencesettingsui/src/psuigsplugin.cpp Thu Aug 19 10:19:02 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,561 +0,0 @@
-/*
-* Copyright (c) 2006-2010 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: GSFW implementation for Presence Settings UI GS plugin.
-*
-*/
-
-
-
-
-// INCLUDE FILES
-#include <bautils.h>
-#include <gsprivatepluginproviderids.h>
-#include <gsfwviewuids.h>
-#include <psuigspluginrsc.rsg>
-#include <psuigsplugin.mbg>
-#include <gsbaseview.h>
-#include <eiktxlbx.h>
-#include <eikmenup.h>
-#include <eiktxlbm.h>
-#include <featmgr.h>
-#include <hlplch.h>
-#include <coeaui.h>
-#include <aknlists.h>
-#include <aknPopup.h>
-#include <StringLoader.h>
-#include <AknQueryDialog.h>
-
-#include "psuigsplugin.h"
-#include "psuigsplugin.hrh"
-#include "psuigsplugincontainer.h"
-#include "psuigspluginids.hrh"
-#include "psuigspluginmodel.h"
-#include "psuigspluginsettingview.h"
-
-// CONSTANTS
-_LIT( KPSUIGSPluginResourceFileName, "z:\\resource\\psuigspluginrsc.rsc" );
-
-#ifdef __SCALABLE_ICONS
-// bitmap
-_LIT( KPSUIGSPluginIconFileName, "\\resource\\apps\\psuigsplugin.mif");
-#else //__SCALABLE_ICONS
-// svg file
-_LIT( KPSUIGSPluginIconFileName, "\\resource\\apps\\psuigsplugin.mbm");
-#endif //__SCALABLE_ICONS
-
-// ========================= MEMBER FUNCTIONS ================================
-
-// ---------------------------------------------------------------------------
-// CPSUIGSPlugin::CPSUIGSPlugin()
-// C++ default constructor can NOT contain any code, that
-// might leave.
-// ---------------------------------------------------------------------------
-//
-CPSUIGSPlugin::CPSUIGSPlugin()
- : iClosing ( EFalse )
- {
- }
-
-// ---------------------------------------------------------------------------
-// CPSUIGSPlugin::~CPSUIGSPlugin()
-// Destructor
-// ---------------------------------------------------------------------------
-//
-CPSUIGSPlugin::~CPSUIGSPlugin()
- {
- delete iPSModel;
- FeatureManager::UnInitializeLib();
- }
-
-// ---------------------------------------------------------------------------
-// CPSUIGSPlugin::ConstructL
-// Symbian 2nd phase constructor can leave.
-// ---------------------------------------------------------------------------
-//
-void CPSUIGSPlugin::ConstructL()
- {
- // preparing resources for use
- TFileName fileName( KPSUIGSPluginResourceFileName );
- BaflUtils::NearestLanguageFile( iCoeEnv->FsSession(), fileName );
- iResourceLoader.OpenL( fileName );
- // base construct (base needs the resources to be loaded 1st)
- BaseConstructL( R_PSUI_MAIN_VIEW );
- FeatureManager::InitializeLibL();
- }
-
-// ---------------------------------------------------------------------------
-// CPSUIGSPlugin::NewL()
-// Two-phased constructor.
-// ---------------------------------------------------------------------------
-//
-CPSUIGSPlugin* CPSUIGSPlugin::NewL( TAny* /*aAppUi*/ )
- {
- CPSUIGSPlugin* self = new( ELeave ) CPSUIGSPlugin();
- CleanupStack::PushL( self );
- self->ConstructL();
- CleanupStack::Pop( self );
- return self;
- }
-
-// ---------------------------------------------------------------------------
-// CPSUIGSPlugin::Id()
-// See header for details.
-// ---------------------------------------------------------------------------
-//
-TUid CPSUIGSPlugin::Id() const
- {
- return TUid::Uid( PSUIGSPluginImplUid );
- }
-
-// ---------------------------------------------------------------------------
-// CPSUIGSPlugin::NewContainerL()
-// See header for details.
-// ---------------------------------------------------------------------------
-//
-void CPSUIGSPlugin::NewContainerL()
- {
- iContainer = new ( ELeave ) CPSUIGSPluginContainer( this );
- }
-
-// ---------------------------------------------------------------------------
-// CPSUIGSPlugin::DoActivateL()
-// See header for details.
-// ---------------------------------------------------------------------------
-//
-void CPSUIGSPlugin::DoActivateL( const TVwsViewId& aPrevViewId,
- TUid aCustomMessageId,
- const TDesC8& aCustomMessage )
- {
- if ( KPreSettingViewId != aPrevViewId.iViewUid )
- {
- iPSUIGSPrevViewId = aPrevViewId;
- }
-
- // model & observer constructed only when needed
- if ( !iPSModel )
- {
- iPSModel = CPSUIGSPluginModel::NewL();
- iAppUi->AddViewDeactivationObserverL( this );
- }
-
- const TInt id = iPSModel->SettingsId();
- if ( id )
- {// readjust the focus
- SetCurrentItem( iPSModel->SettingsIDArray().Find( id ));
- }
-
- iClosing = EFalse;
- CGSBaseView::DoActivateL( aPrevViewId, aCustomMessageId, aCustomMessage );
- UpdateMSK();
- }
-
-// ---------------------------------------------------------------------------
-// CPSUIGSPlugin::DoDeactivate()
-// See header for details.
-// ---------------------------------------------------------------------------
-//
-void CPSUIGSPlugin::DoDeactivate()
- {
- CGSBaseView::DoDeactivate();
- if ( iClosing )
- {// PSUI plugin is going to be closed so it is safe to free some memory
- delete iPSModel;
- iPSModel = NULL;
- delete iSettingView;
- iSettingView = NULL;
- }
- }
-
-// ---------------------------------------------------------------------------
-// CPSUIGSPlugin::HandleViewDeactivation()
-// See header for details.
-// ---------------------------------------------------------------------------
-//
-void CPSUIGSPlugin::HandleViewDeactivation(
- const TVwsViewId& aViewIdToBeDeactivated,
- const TVwsViewId& aNewlyActivatedViewId)
- {
- if ( TUid::Uid( PSUIGSPluginImplUid ) == aViewIdToBeDeactivated.iViewUid &&
- iPSUIGSPrevViewId.iViewUid == aNewlyActivatedViewId.iViewUid )
- {
- iClosing = ETrue;
- iAppUi->RemoveViewDeactivationObserver( this );
- }
- }
-
-// ---------------------------------------------------------------------------
-// CPSUIGSPlugin::HandleCommandL()
-// See header for details.
-// ---------------------------------------------------------------------------
-//
-void CPSUIGSPlugin::HandleCommandL( TInt aCommand )
- {
- switch ( aCommand )
- {
- case EAknSoftkeyBack:
- {
- RemoveSettingView();
- iAppUi->ActivateLocalViewL( iPSUIGSPrevViewId.iViewUid );
- break;
- }
- case EPSUICmdEdit:
- {
- HandleListBoxSelectionL();
- break;
- }
- case EPSUICmdDelete:
- {
- DeleteSettingsL();
- break;
- }
- case EPSUICmdNewSettingsDefault:
- {
- CreateNewDefaultSettingsL();
- break;
- }
- case EPSUICmdNewSettingsExisting:
- {
- CreateCopyOfExistingSettingsL();
- break;
- }
- case EAknCmdHelp:
- {
- if( FeatureManager::FeatureSupported( KFeatureIdHelp ) )
- {
- HlpLauncher::LaunchHelpApplicationL(
- iEikonEnv->WsSession(), iAppUi->AppHelpContextL() );
- }
- break;
- }
- default:
- {
- iAppUi->HandleCommandL( aCommand );
- break;
- }
- }
- }
-
-// ---------------------------------------------------------------------------
-// CPSUIGSPlugin::SettingCountAndIndex()
-// See header for details.
-// ---------------------------------------------------------------------------
-//
-TInt CPSUIGSPlugin::SettingCountAndIndex( TInt& aIndex )
- {
- CEikTextListBox* listbox = Container()->iListBox;// not owned
- TInt count = listbox->Model()->NumberOfItems();
- aIndex = count ? listbox->CurrentItemIndex() : KErrNotFound;
-
- return count;
- }
-
-// ---------------------------------------------------------------------------
-// CPSUIGSPlugin::HandleListBoxSelectionL()
-// See header for details.
-// ---------------------------------------------------------------------------
-//
-void CPSUIGSPlugin::HandleListBoxSelectionL()
- {
- TInt index = KErrNotFound;
- if ( SettingCountAndIndex( index ))
- {
- iPSModel->EditSettingsL( index );
-
- ConstructSettingViewL();
- iAppUi->ActivateLocalViewL( KPreSettingViewId );
- }
- }
-
-// ---------------------------------------------------------------------------
-// CPSUIGSPlugin::DeleteSettingsL()
-// See header for details.
-// ---------------------------------------------------------------------------
-//
-void CPSUIGSPlugin::DeleteSettingsL()
- {
- TInt index = KErrNotFound;
- TInt count = SettingCountAndIndex( index );
- if ( count )
- {
- if ( AcceptDeletionL( count, index ))
- {
- iPSModel->DeleteSettingsL( index, ETrue );
- CEikTextListBox* listbox = Container()->iListBox;// not owned
- AknListBoxUtils::HandleItemRemovalAndPositionHighlightL(
- listbox, index, ETrue );
- listbox->DrawNow();
- UpdateMSK();
- }
- }
- }
-
-// ---------------------------------------------------------------------------
-// CPSUIGSPlugin::AcceptDeletionL()
-// See header for details.
-// ---------------------------------------------------------------------------
-//
-TBool CPSUIGSPlugin::AcceptDeletionL( TInt aCount, TInt aIndex )
- {
- HBufC* currentName = iPSModel->SettingNameLC( aIndex );
- HBufC* string = NULL;
- if ( aCount == 1 )
- {
- string = StringLoader::LoadLC( R_QTN_PRESENCE_SETTINGS_DELETE_LAST, *currentName );
- }
- else
- {
- string = StringLoader::LoadLC( R_QTN_QUERY_COMMON_CONF_DELETE, *currentName );
- }
-
- CAknQueryDialog* query = CAknQueryDialog::NewL( CAknQueryDialog::EConfirmationTone );
- TInt ok = query->ExecuteLD( R_PSUI_CONF_QUERY, *string );
-
- CleanupStack::PopAndDestroy( 2, currentName );//currentName, string
-
- return ( ok );
- }
-
-// ---------------------------------------------------------------------------
-// CPSUIGSPlugin::GetCaptionL()
-// See header for details.
-// ---------------------------------------------------------------------------
-//
-void CPSUIGSPlugin::GetCaptionL( TDes& aCaption ) const
- {
- StringLoader::Load( aCaption, R_QTN_SET_FOLDER_PRESENCE );
- }
-
-// ---------------------------------------------------------------------------
-// CPSUIGSPlugin::PluginProviderCategory()
-// See header for details.
-// ---------------------------------------------------------------------------
-//
-TInt CPSUIGSPlugin::PluginProviderCategory() const
- {
- return KGSPluginProviderInternal;
- }
-
-// ---------------------------------------------------------------------------
-// CPSUIGSPlugin::CreateIconL()
-// See header for details.
-// ---------------------------------------------------------------------------
-//
-CGulIcon* CPSUIGSPlugin::CreateIconL( const TUid aIconType )
- {
- CGulIcon* icon = NULL;
- if( aIconType == KGSIconTypeLbxItem )
- {
- icon = AknsUtils::CreateGulIconL(
- AknsUtils::SkinInstance(),
- KAknsIIDQgnPropSetConnPresence,
- KPSUIGSPluginIconFileName,
- EMbmPsuigspluginQgn_prop_set_conn_presence,
- EMbmPsuigspluginQgn_prop_set_conn_presence_mask );
- }
- else
- {
- icon = CGSPluginInterface::CreateIconL( aIconType );
- }
-
- return icon;
- }
-
-// ---------------------------------------------------------------------------
-// CPSUIGSPlugin::DynInitMenuPaneL()
-// See header for details.
-// ---------------------------------------------------------------------------
-//
-void CPSUIGSPlugin::DynInitMenuPaneL( TInt aResourceId, CEikMenuPane *aMenuPane )
- {
- // remove some of the items if no settings available
- const TInt count = Container()->iListBox->Model()->NumberOfItems();
- if ( aResourceId == R_PSUI_MAINVIEW_MENUPANE &&
- 0 == count )
- {
- aMenuPane->DeleteMenuItem( EPSUICmdEdit );
- aMenuPane->DeleteMenuItem( EPSUICmdDelete );
- }
- if ( aResourceId == R_PSUI_NEWSETTINGS_MENU &&
- 0 == count )
- {
- aMenuPane->DeleteMenuItem( EPSUICmdNewSettingsExisting );
- }
-
- // help-item handling
- if ( aResourceId == R_PSUI_MAINVIEW_MENUPANE &&
- !FeatureManager::FeatureSupported( KFeatureIdHelp ) )
- {
- aMenuPane->DeleteMenuItem( EAknCmdHelp );
- }
-
- TInt index( KErrNotFound );
- SettingCountAndIndex( index );
-
- if ( KErrNotFound < index )
- {
- // Hide delete option if sip profile used with presence settings
- // is registered.
- if ( iPSModel->IsSipProfileRegisteredL( index ) )
- {
- TInt pos( KErrNotFound );
- if ( aMenuPane->MenuItemExists( EPSUICmdDelete, pos ) )
- {
- aMenuPane->SetItemSpecific( EPSUICmdDelete, EFalse );
- aMenuPane->SetItemDimmed( EPSUICmdDelete, ETrue );
- }
- }
- else
- {
- TInt pos( KErrNotFound );
- if ( aMenuPane->MenuItemExists( EPSUICmdDelete, pos ) )
- {
- aMenuPane->SetItemSpecific( EPSUICmdDelete, ETrue );
- aMenuPane->SetItemDimmed( EPSUICmdDelete, EFalse );
- }
- }
- }
- }
-
-// ---------------------------------------------------------------------------
-// CPSUIGSPlugin::PSModel()
-// See header for details.
-// ---------------------------------------------------------------------------
-//
-CPSUIGSPluginModel* CPSUIGSPlugin::PSModel()
- {
- __ASSERT_DEBUG( iPSModel,User::Panic( KPSUIGSPluginPanicCategory, KErrNotFound ));
- return iPSModel;
- }
-
-// ---------------------------------------------------------------------------
-// CPSUIGSPlugin::ConstructSettingViewL()
-// See header for details.
-// ---------------------------------------------------------------------------
-//
-void CPSUIGSPlugin::ConstructSettingViewL()
- {
- if ( !iSettingView )
- {// no view yet, construct it
- CAknView* view = CPSUIGSPluginSettingView::NewL( this );
- CleanupStack::PushL( view );
- iAppUi->AddViewL( view );
- CleanupStack::Pop( view );
- iSettingView = view;
- }
- }
-
-// ---------------------------------------------------------------------------
-// CPSUIGSPlugin::RemoveSettingView()
-// See header for details.
-// ---------------------------------------------------------------------------
-//
-void CPSUIGSPlugin::RemoveSettingView()
- {
- // Remove view from iAppUi -> View is deleted by iAppUi automatically.
- if ( iSettingView )
- {
- iAppUi->RemoveView( KPreSettingViewId );
- iSettingView = NULL;
- }
- }
-
-// ---------------------------------------------------------------------------
-// CPSUIGSPlugin::CreateNewDefaultSettingsL()
-// See header for details.
-// ---------------------------------------------------------------------------
-//
-void CPSUIGSPlugin::CreateNewDefaultSettingsL()
- {
- iPSModel->CreateDefaultSettingsL();
- ConstructSettingViewL();
- iAppUi->ActivateLocalViewL( KPreSettingViewId );
- }
-
-// ---------------------------------------------------------------------------
-// CPSUIGSPlugin::CreateCopyOfExistingSettingsL()
-// See header for details.
-// ---------------------------------------------------------------------------
-//
-void CPSUIGSPlugin::CreateCopyOfExistingSettingsL()
- {
- CAknSinglePopupMenuStyleListBox* list =
- new ( ELeave ) CAknSinglePopupMenuStyleListBox;
- CleanupStack::PushL( list );
-
- CAknPopupList* popupList =
- CAknPopupList::NewL( list, R_AVKON_SOFTKEYS_OK_CANCEL );
- CleanupStack::PushL( popupList );
-
- HBufC* title = StringLoader::LoadLC( R_QTN_PRESENCE_PROPMT_USE_EXIST );
- popupList->SetTitleL( *title );
- CleanupStack::PopAndDestroy( title );
-
- list->ConstructL( popupList, CEikListBox::ELeftDownInViewRect );
- list->CreateScrollBarFrameL( ETrue );
- list->ScrollBarFrame()->SetScrollBarVisibilityL(
- CEikScrollBarFrame::EOff,
- CEikScrollBarFrame::EAuto );
-
- CTextListBoxModel* model = list->Model();
- model->SetItemTextArray( iPSModel->SettingNames() );// setting names not owned
- model->SetOwnershipType( ELbmDoesNotOwnItemArray );
- list->HandleItemAdditionL();
-
- CleanupStack::Pop( popupList );
- TInt keyPress = popupList->ExecuteLD();
-
- if ( keyPress )
- {
- iPSModel->DuplicateExistingSettingsL( list->CurrentItemIndex() );
- ConstructSettingViewL();
- iAppUi->ActivateLocalViewL( KPreSettingViewId );
- }
-
- CleanupStack::PopAndDestroy( list );
- }
-
-// ---------------------------------------------------------------------------
-// CPSUIGSPlugin::UpdateMSK()
-// See header for details.
-// ---------------------------------------------------------------------------
-//
-void CPSUIGSPlugin::UpdateMSK()
- {
- if ( !Cba() )
- {
- return;
- }
-
- TBool showEdit = ( 0 < Container()->iListBox->Model()->NumberOfItems());
- CEikCba* cba = static_cast< CEikCba* >( Cba()->ButtonGroup() );
- cba->MakeCommandVisible( EPSUICmdEdit, showEdit );
- cba->DrawNow();
- }
-
-// ---------------------------------------------------------------------------
-// CPSUIGSPlugin::HandleListBoxEventL()
-// ---------------------------------------------------------------------------
-//
-void CPSUIGSPlugin::HandleListBoxEventL(
- CEikListBox* /*aListBox*/, TListBoxEvent aListBoxEvent)
- {
- // if the Select Key has been pressed
- if ((aListBoxEvent == MEikListBoxObserver::EEventEnterKeyPressed) ||
- (aListBoxEvent == MEikListBoxObserver::EEventItemSingleClicked))
- {
- HandleListBoxSelectionL();
- }
- }
-
-// End of file