presencesettingsui/src/psuigsplugin.cpp
branchRCL_3
changeset 17 2669f8761a99
parent 16 2580314736af
child 18 fbd2e7cec7ef
--- 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