emailuis/gsemailsettings/src/GSEmailSettingsView.cpp
changeset 0 8466d47a6819
child 8 e1b6206813b4
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/emailuis/gsemailsettings/src/GSEmailSettingsView.cpp	Thu Dec 17 08:39:21 2009 +0200
@@ -0,0 +1,245 @@
+/*
+* 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:  Email plugin for s60 general settings
+*
+*/
+
+
+// SYSTEM INCLUDES
+#include "emailtrace.h"
+#include <f32file.h>
+#include <e32cmn.h>
+#include <bautils.h>
+#include <data_caging_path_literals.hrh>
+#include <StringLoader.h>
+#include <GSEmailSettingsPlugin.rsg>
+//<cmail>
+#include "CFSMailCommon.h"
+#include "FreestyleEmailUiConstants.h" // email enumerations
+//</cmail>
+#include <freestyleemailui.mbg> // icons
+#include <gsfwviewuids.h>
+
+// LOCAL INCLUDES
+#include "GSEmailSettingsView.h"
+#include "GSEmailSettings.hrh"
+#include "FreestyleEmailUiConstants.h"
+
+// CONSTANTS
+_LIT( KEmailSettingsAppResourceFile,"GSEmailSettingsPlugin.RSC");
+_LIT( KIconPath,"FreestyleEmailUi_aif.mif" );
+
+// -----------------------------------------------------------------------------
+// CGSEmailSettingsView::NewL()
+// Two-phased constructor.
+// -----------------------------------------------------------------------------
+//
+CGSEmailSettingsView* CGSEmailSettingsView::NewL()
+	{
+    FUNC_LOG;
+	CGSEmailSettingsView* self = CGSEmailSettingsView::NewLC();
+	CleanupStack::Pop( self );
+	return self;
+    }
+
+// -----------------------------------------------------------------------------
+// CGSEmailSettingsView::NewLC()
+// Creates a CGSEmailSettingsView object.
+// -----------------------------------------------------------------------------
+//
+CGSEmailSettingsView* CGSEmailSettingsView::NewLC()
+    {
+    FUNC_LOG;
+    CGSEmailSettingsView* self = new ( ELeave ) CGSEmailSettingsView;
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    return self;
+    }
+
+// -----------------------------------------------------------------------------
+// CGSEmailSettingsView::CGSEmailSettingsView()
+// Default Constructor
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CGSEmailSettingsView::CGSEmailSettingsView()
+	: iResourceLoader( *iCoeEnv  )
+	{
+    FUNC_LOG;
+	}
+
+// -----------------------------------------------------------------------------
+// CGSEmailSettingsView::~MySetFrmWrkView()
+// Destroy the object and release all memory objects
+// -----------------------------------------------------------------------------
+//
+CGSEmailSettingsView::~CGSEmailSettingsView()
+	{
+    FUNC_LOG;
+    iResourceLoader.Close(); 
+    }
+
+// -----------------------------------------------------------------------------
+// CGSEmailSettingsView::ConstructL()
+// Symbian OS default constructor.
+// -----------------------------------------------------------------------------
+//
+void CGSEmailSettingsView::ConstructL()
+	{
+    FUNC_LOG;
+	TFileName resFile;
+	resFile.Append( KDC_APP_RESOURCE_DIR );
+	resFile.Append( KEmailSettingsAppResourceFile );
+	RProcess process;
+	TFileName exeFileName = process.FileName();
+	TParse parse;
+	            
+	User::LeaveIfError( parse.Set( resFile, &exeFileName, NULL ) );
+	TFileName fileName( parse.FullName() );
+    // Get language of resource file
+    BaflUtils::NearestLanguageFile( iCoeEnv->FsSession(), fileName );
+    // Open resource file
+    TRAP_IGNORE( iResourceLoader.OpenL( fileName ) ); 
+
+    BaseConstructL( R_EMAIL_GS_SETTING_LIST_VIEW );	
+	}
+
+// -----------------------------------------------------------------------------
+// CGSEmailSettingsView::GetCaptionL()
+// Functionality for getting the Caption of the Plugin
+// -----------------------------------------------------------------------------
+//
+void CGSEmailSettingsView::GetCaptionL( TDes& aCaption ) const
+    {
+    FUNC_LOG;
+
+    HBufC* text = StringLoader::LoadLC( R_FS_EMAIL_GS_APP_SHORT_NAME  );
+    aCaption.Copy( *text );
+    CleanupStack::PopAndDestroy( text );
+
+    }
+    
+// -----------------------------------------------------------------------------
+// CGSEmailSettingsView::Visible()
+// This function could be used to hide the plugin dynamically
+// -----------------------------------------------------------------------------
+//
+TBool CGSEmailSettingsView::Visible() const
+    {
+    FUNC_LOG;
+    return ETrue;
+    }
+
+// ---------------------------------------------------------------------------
+// CGSEmailSettingsView::ItemType()
+// Get the type of this GS plugin
+// ---------------------------------------------------------------------------
+//
+TGSListboxItemTypes CGSEmailSettingsView::ItemType()
+    {
+    FUNC_LOG;
+    return EGSItemTypeSingleLargeDialog;
+    }
+
+// ---------------------------------------------------------------------------
+// CGSEmailSettingsView::HandleSelection()
+// Called when user selects Email settings from GS
+// ---------------------------------------------------------------------------
+//
+void CGSEmailSettingsView::HandleSelection( const TGSSelectionTypes /*aSelectionType*/ )
+    {
+    FUNC_LOG;
+    TInt tmp = 1;
+    const TPckgBuf<TInt> pkgBuf( tmp );
+    TVwsViewId pluginViewId = TVwsViewId( KFSEmailUiUid, SettingsViewId );
+    // <cmail>
+    TRAP_IGNORE( ActivateViewL(
+        pluginViewId, TUid::Uid(KOpenMailSettingsFromGS), pkgBuf ) );
+    // </cmail>
+    }
+
+// ---------------------------------------------------------------------------
+// CGSEmailSettingsView::CreateIconL()
+// ---------------------------------------------------------------------------
+//
+CGulIcon* CGSEmailSettingsView::CreateIconL( const TUid aIconType )
+	{
+    FUNC_LOG;
+	CGulIcon* icon;
+	if ( aIconType == KGSIconTypeLbxItem )
+	    {
+	    TFileName resFile;
+        resFile.Append( KDC_BITMAP_DIR );
+        resFile.Append( KIconPath );
+        RProcess process;
+        TFileName exeFileName = process.FileName();
+        TParse parse;
+	                    
+        User::LeaveIfError( parse.Set( resFile, &exeFileName, NULL ) );
+        TFileName iconFileName( parse.FullName() );
+	    
+	    CFbsBitmap* bitmap(0);
+	    CFbsBitmap* bitmap_mask(0);
+
+	    TInt bitmapId = 0;
+	    TInt maskId = 0;
+	    AknIconUtils::ValidateLogicalAppIconId( iconFileName, bitmapId, maskId );
+	    AknIconUtils::CreateIconLC( bitmap, bitmap_mask, iconFileName, bitmapId, maskId );
+
+	    // create icon from bitmaps
+	    icon = CGulIcon::NewL( bitmap, bitmap_mask );
+	    CleanupStack::Pop( bitmap_mask );
+	    CleanupStack::Pop( bitmap );
+	    }
+	else
+	    {
+	    icon = CGSPluginInterface::CreateIconL( aIconType );
+	    }
+	return icon;
+	}
+ 
+// -----------------------------------------------------------------------------
+// CGSEmailSettingsView::Id()
+// From CAknView, returns the views id.
+// -----------------------------------------------------------------------------
+//
+TUid CGSEmailSettingsView::Id() const
+    {
+    FUNC_LOG;
+    return KGSEmailSettingsPluginUid;
+    }
+
+// -----------------------------------------------------------------------------
+// CGSEmailSettingsView::DoActivateL()
+// -----------------------------------------------------------------------------
+//
+void CGSEmailSettingsView::DoActivateL( const TVwsViewId& /*aPrevViewId*/,
+                                  TUid /*aCustomMessageId*/,
+                                  const TDesC8& /*aCustomMessage*/ )
+    {
+    FUNC_LOG;
+    // not view-type-plugin => implementation not needed
+    }
+
+// ---------------------------------------------------------------------------
+// CGSEmailSettingsView::DoDeactivate()
+// ---------------------------------------------------------------------------
+//
+void CGSEmailSettingsView::DoDeactivate()
+    {
+    FUNC_LOG;
+    // not view-type-plugin => implementation not needed
+    }
+
+// end of file
+