messagingappbase/mcesettings/mcesettingsgsplugin/src/MceSettingsGSPlugin.cpp
changeset 0 72b543305e3a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/messagingappbase/mcesettings/mcesettingsgsplugin/src/MceSettingsGSPlugin.cpp	Thu Dec 17 08:44:11 2009 +0200
@@ -0,0 +1,326 @@
+/*
+* Copyright (c) 2006-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:   Implementation of Messaging Settings GS Plugin
+*
+*/
+
+
+
+// INCLUDE FILES
+#include <aknnotedialog.h>      // Popup note
+#include <bautils.h>            // BaflUtils
+#include <gsprivatepluginproviderids.h> // KGSPluginProviderInternal
+#include <gsplugininterface.h>
+#include <gsfwviewuids.h>       // KGSAppsPluginUid
+#include <ecom/implementationproxy.h>
+#include <featmgr.h>            // Featuremanager
+#include <MceSettingsDialog.h>
+#include <MceSettingsArrays.h>
+#include <hlplch.h>             // HlpLauncher
+#include <muiulock.h>           // CMuiuLock to lock settings
+#include <ConeResLoader.h>
+#include <StringLoader.h>       // StringLoader
+
+#include <mcesettingsgspluginicons.mbg> // own bitmaps
+#include <MceSettingsGSPluginRsc.rsg>   // own resources
+#include <aknclearer.h>         // CAknLocalScreenClearer
+#include "MceSettingsGSPlugin.hrh"
+#include "MceSettingsGSPlugin.h"        // own header
+#include "MceSettingsGSPluginContainer.h"
+
+// CONSTANTS
+_LIT( KMceSettingsGSPluginRscFile, "mcesettingsgspluginrsc.rsc" );
+_LIT( KMceSetGSPluginMbmFile, "mcesettingsgspluginicons.mif");
+
+
+
+// ========================= MEMBER FUNCTIONS ================================
+
+// ---------------------------------------------------------------------------
+// CMceSettingsGSPlugin::CMceSettingsGSPlugin()
+// C++ default constructor can NOT contain any code, that
+// might leave.
+// ---------------------------------------------------------------------------
+//
+CMceSettingsGSPlugin::CMceSettingsGSPlugin()
+    {
+    }
+
+
+// ---------------------------------------------------------------------------
+// CMceSettingsGSPlugin::~CMceSettingsGSPlugin()
+// Destructor
+// ---------------------------------------------------------------------------
+//
+CMceSettingsGSPlugin::~CMceSettingsGSPlugin()
+    {
+    FeatureManager::UnInitializeLib();
+    delete iSettingsLock;
+    delete iContainer;
+    delete iLocalScreenClearer;
+    }
+
+
+// ---------------------------------------------------------------------------
+// CMceSettingsGSPlugin::ConstructL
+// Symbian 2nd phase constructor can leave.
+// ---------------------------------------------------------------------------
+//
+void CMceSettingsGSPlugin::ConstructL()
+    {
+    // preparing resources for use
+    TParse parse;
+    parse.Set(KMceSettingsGSPluginRscFile, &KDC_RESOURCE_FILES_DIR, NULL);
+    TFileName fileName = parse.FullName();
+    BaflUtils::NearestLanguageFile( iCoeEnv->FsSession(), fileName );
+    iResourceLoader.OpenL( fileName );
+    // base construct (base needs the resources to be loaded 1st)
+    BaseConstructL( R_MCEUI_MAIN_VIEW );
+    FeatureManager::InitializeLibL();
+    }
+
+
+// ---------------------------------------------------------------------------
+// CMceSettingsGSPlugin::NewL()
+// Two-phased constructor.
+// ---------------------------------------------------------------------------
+//
+CMceSettingsGSPlugin* CMceSettingsGSPlugin::NewL( TAny* /*aAppUi*/ )
+    {
+    CMceSettingsGSPlugin* self = new( ELeave ) CMceSettingsGSPlugin();
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop( self );
+    return self;
+    }
+
+
+// ---------------------------------------------------------------------------
+// CMceSettingsGSPlugin::Id()
+// See header for details.
+// ---------------------------------------------------------------------------
+//
+TUid CMceSettingsGSPlugin::Id() const
+    {
+    return KGSMceSettingsGSPluginUid;
+    }
+
+
+// ---------------------------------------------------------------------------
+// CMceSettingsGSPlugin::NewContainerL
+// Creates new iContainer.
+// ---------------------------------------------------------------------------
+//
+void CMceSettingsGSPlugin::NewContainerL()
+    {
+    iContainer = new( ELeave ) CMceSettingsGSPluginContainer;
+    }
+
+
+// ---------------------------------------------------------------------------
+// CMceSettingsGSPlugin::DoActivate
+// Activate this view
+// ---------------------------------------------------------------------------
+//  
+void CMceSettingsGSPlugin::DoActivateL( 
+    const TVwsViewId& aPrevViewId,
+    TUid aCustomMessageId,
+    const TDesC8& aCustomMessage )
+    {
+    iAppUi->AddViewDeactivationObserverL( this );        
+
+    iSettingsLock = CMuiuLock::NewL( KMuiuLockSettings);
+
+    // Reserve settings
+    TInt err = iSettingsLock->Reserve();
+    if ( !err )
+        {
+        CGSBaseView::DoActivateL( aPrevViewId, aCustomMessageId, aCustomMessage );
+        }
+    else
+        {
+        // Show information note: MCE has settings opened
+        CAknNoteDialog* dlg = new (ELeave) CAknNoteDialog(
+            CAknNoteDialog::ENoTone, CAknNoteDialog::ELongTimeout);
+        CleanupStack::PushL( dlg );                
+        dlg->ExecuteLD(R_MCE_NOTE_SETTINGS_OPEN_MCE);
+        CleanupStack::Pop(); // dlg
+        iLocalScreenClearer = CAknLocalScreenClearer::NewL( EFalse );
+        iAppUi->ActivateLocalViewL( KGSAppsPluginUid );
+        }
+    }
+
+
+// ---------------------------------------------------------------------------
+// CMceSettingsGSPlugin::DoDeactivate
+// Deactivate this view
+// ---------------------------------------------------------------------------
+//
+void CMceSettingsGSPlugin::DoDeactivate()
+    {
+    // Release repository
+    iSettingsLock->Release();
+
+    CGSBaseView::DoDeactivate();
+    }
+
+    
+// ---------------------------------------------------------------------------
+// CMceSettingsGSPlugin::HandleViewDeactivation()
+// See header for details.
+// ---------------------------------------------------------------------------
+//
+void CMceSettingsGSPlugin::HandleViewDeactivation(
+    const TVwsViewId& /*aViewIdToBeDeactivated*/,
+    const TVwsViewId& /*aNewlyActivatedViewId*/)
+    {
+
+    }
+
+
+// ---------------------------------------------------------------------------
+// CMceSettingsGSPlugin::HandleCommandL()
+// See header for details.
+// ---------------------------------------------------------------------------
+//
+void CMceSettingsGSPlugin::HandleCommandL( TInt aCommand )
+    {
+    switch ( aCommand )
+        {
+        case EMceSettingsCmdEdit:
+            {
+            static_cast<CMceSettingsGSPluginContainer*>(iContainer)->EditSubSettingsL();
+            break;
+            }
+            
+        case EAknSoftkeyBack:
+            {
+            iAppUi->ActivateLocalViewL( KGSAppsPluginUid );
+            break;
+            }
+        case EMceSettingsGSHelp:
+        case EAknCmdHelp:
+            {
+            if( FeatureManager::FeatureSupported( KFeatureIdHelp ) )
+                {
+                HlpLauncher::LaunchHelpApplicationL(
+                    iEikonEnv->WsSession(), iAppUi->AppHelpContextL() );
+                }
+            break;
+            }                       
+        default:
+            {
+            iAppUi->HandleCommandL( aCommand );
+            break;
+            }
+        }
+    }
+
+
+// ---------------------------------------------------------------------------
+// CMceSettingsGSPlugin::GetCaptionL
+// Caption text for view to be displayed in NaviPane.
+// ---------------------------------------------------------------------------
+//
+void CMceSettingsGSPlugin::GetCaptionL( TDes& aCaption ) const
+    {
+    // the resource file is already opened.
+    HBufC* result = StringLoader::LoadL( R_QTN_SET_FOLDER_MESSAGING, iEikonEnv );
+    aCaption.Copy( *result );
+    delete result;
+    }
+
+
+// ---------------------------------------------------------------------------
+// CPSUIGSPlugin::PluginProviderCategory()
+// See header for details.
+// ---------------------------------------------------------------------------
+//
+TInt CMceSettingsGSPlugin::PluginProviderCategory() const
+    {
+    return KGSPluginProviderInternal;
+    }
+
+ 
+// ---------------------------------------------------------------------------
+// CMceSettingsGSPlugin::CreateIconL()
+// See header for details.
+// ---------------------------------------------------------------------------
+//
+CGulIcon* CMceSettingsGSPlugin::CreateIconL( const TUid aIconType )
+    {
+    CGulIcon* icon;
+
+    TParse parse;
+    parse.Set(KMceSetGSPluginMbmFile, &KDC_BITMAP_DIR, NULL);
+    TPtrC iconFile = parse.FullName();
+
+    if( aIconType == KGSIconTypeLbxItem )
+        {
+        icon = AknsUtils::CreateGulIconL(
+            AknsUtils::SkinInstance(),
+            KAknsIIDQgnPropSetAppsMce,
+            iconFile,
+            EMbmMcesettingsgspluginiconsQgn_prop_set_apps_mce,
+            EMbmMcesettingsgspluginiconsQgn_prop_set_apps_mce_mask );
+
+        }
+     else
+        {
+        icon = CGSPluginInterface::CreateIconL( aIconType );
+        }
+
+    return icon;
+    }
+
+
+// ---------------------------------------------------------------------------
+// CMceSettingsGSPlugin::HandleListBoxSelectionL
+// Handle any user actions while in the list view.
+// ---------------------------------------------------------------------------
+//
+void CMceSettingsGSPlugin::HandleListBoxSelectionL()
+    {
+    }
+    
+    
+// ---------------------------------------------------------------------------
+// CMceSettingsGSPlugin::DynInitMenuPaneL()
+// See header for details.
+// ---------------------------------------------------------------------------
+//
+void CMceSettingsGSPlugin::DynInitMenuPaneL( TInt /* aResourceId */, CEikMenuPane* /* aMenuPane */)
+    {
+    }
+    
+    
+// ---------------------------------------------------------------------------
+// CMceSettingsGSPlugin::HandleListBoxEventL()
+// See header for details.
+// ---------------------------------------------------------------------------
+//
+void CMceSettingsGSPlugin::HandleListBoxEventL(CEikListBox* /*aListBox*/, TListBoxEvent aEventType )
+    {    
+    switch(aEventType)
+        {
+        case EEventEnterKeyPressed:
+        case EEventItemSingleClicked:
+            HandleCommandL( EMceSettingsCmdEdit );
+        break;
+        default:
+        break;
+        }
+    }
+
+// End of file