meetingrequest/mrgui/src/cesmruifactory.cpp
branchRCL_3
changeset 25 3533d4323edc
equal deleted inserted replaced
24:d189ee25cf9d 25:3533d4323edc
       
     1 /*
       
     2 * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description:  ESMR UI Factory implementation
       
    15 *
       
    16 */
       
    17 
       
    18 #include "cesmruifactory.h"
       
    19 #include "mesmruibase.h"
       
    20 #include "cesmreditordialog.h"
       
    21 #include "cesmrviewerdialog.h"
       
    22 #include "cesmrtrackingviewdialog.h"
       
    23 #include "cesmrviewerfieldstorage.h"
       
    24 #include "esmrhelper.h"
       
    25 #include "cesmrpolicy.h"
       
    26 #include "mmrinfoprovider.h"
       
    27 #include "mmrpolicyprovider.h"
       
    28 
       
    29 #include <esmrgui.rsg>
       
    30 #include <e32base.h>
       
    31 #include <eikenv.h>
       
    32 #include <ConeResLoader.h>
       
    33 #include <data_caging_path_literals.hrh>
       
    34 #include <bautils.h>
       
    35 
       
    36 // DEBUG
       
    37 #include "emailtrace.h"
       
    38 
       
    39 // Unnamed namespace for local definitions
       
    40 namespace  {
       
    41 
       
    42 // Definition for ui resource file
       
    43 _LIT( KResourceFile, "esmrgui.rsc" );
       
    44 
       
    45 #ifdef _DEBUG
       
    46 
       
    47 /** Literal for panics */
       
    48 _LIT( KESMRUIFactoryPanicTxt, "ESMRUIFactory" );
       
    49 
       
    50 /** Enumeration for panic codes */
       
    51 enum TESMRUIFactoryPanic
       
    52     {
       
    53     EESMRUIFactoryInvalidEntry,
       
    54     EESMRUIFactoryInvalidPolicyMode
       
    55     };
       
    56 
       
    57 /**
       
    58  * Raises system panic
       
    59  */
       
    60 void Panic( TESMRUIFactoryPanic aPanic )
       
    61     {
       
    62     User::Panic( KESMRUIFactoryPanicTxt, aPanic );
       
    63     }
       
    64 
       
    65 #endif // _DEBUG
       
    66 }
       
    67 
       
    68 // ======== MEMBER FUNCTIONS ========
       
    69 
       
    70 // ---------------------------------------------------------------------------
       
    71 // CESMRUiFactory::CESMRUiFactory
       
    72 // ---------------------------------------------------------------------------
       
    73 //
       
    74 CESMRUiFactory::CESMRUiFactory()
       
    75     {
       
    76     FUNC_LOG;
       
    77     // Do nothing
       
    78     }
       
    79 
       
    80 // ---------------------------------------------------------------------------
       
    81 // CESMRUiFactory::~CESMRUiFactory
       
    82 // ---------------------------------------------------------------------------
       
    83 //
       
    84 EXPORT_C CESMRUiFactory::~CESMRUiFactory()
       
    85     {
       
    86     FUNC_LOG;
       
    87     if ( iResourceOffset )
       
    88         {
       
    89         CCoeEnv::Static()->DeleteResourceFile( iResourceOffset );
       
    90         }
       
    91     }
       
    92 
       
    93 // ---------------------------------------------------------------------------
       
    94 // CESMRUiFactory::NewL
       
    95 // ---------------------------------------------------------------------------
       
    96 //
       
    97 EXPORT_C CESMRUiFactory* CESMRUiFactory::NewL()
       
    98     {
       
    99     FUNC_LOG;
       
   100     CESMRUiFactory* self = new (ELeave) CESMRUiFactory();
       
   101     CleanupStack::PushL( self );
       
   102     self->ConstructL();
       
   103     CleanupStack::Pop( self );
       
   104     return self;
       
   105     }
       
   106 
       
   107 // ---------------------------------------------------------------------------
       
   108 // CESMRUiFactory::ConstructL
       
   109 // ---------------------------------------------------------------------------
       
   110 //
       
   111 void CESMRUiFactory::ConstructL()
       
   112     {
       
   113     FUNC_LOG;
       
   114     CEikonEnv* eikEnv=CEikonEnv::Static();// codescanner::eikonenvstatic
       
   115     LoadResourceFileL(eikEnv, KResourceFile, iResourceOffset);    
       
   116     }
       
   117 
       
   118 // ---------------------------------------------------------------------------
       
   119 // CESMRUiFactory::LoadResourceFileL
       
   120 // ---------------------------------------------------------------------------
       
   121 //
       
   122 void CESMRUiFactory::LoadResourceFileL(
       
   123         CEikonEnv* aEikEnv,
       
   124         const TDesC& aFileName,
       
   125         TInt& aResourceOffset )
       
   126     {
       
   127     FUNC_LOG;
       
   128     TFileName pathAndFile;
       
   129     
       
   130     INFO_1( "Locating resource file for %S", &aFileName );
       
   131     ESMRHelper::LocateResourceFile(
       
   132                 aFileName,
       
   133                 KDC_RESOURCE_FILES_DIR,
       
   134                 pathAndFile,
       
   135                 &aEikEnv->FsSession() );
       
   136 
       
   137     INFO_1( "Finding nearest language file for %S", &pathAndFile );
       
   138     
       
   139     // Find the resource file for the nearest language
       
   140     BaflUtils::NearestLanguageFile(aEikEnv->FsSession(), pathAndFile );
       
   141     
       
   142     INFO( "Adding resource file" );
       
   143     aResourceOffset = CCoeEnv::Static()->AddResourceFileL( pathAndFile );
       
   144     }
       
   145 
       
   146 // ---------------------------------------------------------------------------
       
   147 // CESMRUiFactory::CreateUIL()
       
   148 // ---------------------------------------------------------------------------
       
   149 //
       
   150 MESMRUiBase* CESMRUiFactory::CreateUIL(
       
   151         MMRInfoProvider& aInfoProvider,
       
   152         MAgnEntryUiCallback& aCallback )
       
   153     {
       
   154     FUNC_LOG;
       
   155     MESMRUiBase* ui = NULL;
       
   156 
       
   157     TESMRViewMode viewMode =
       
   158         aInfoProvider.PolicyProvider().CurrentPolicy().ViewMode();
       
   159     
       
   160     switch ( viewMode )
       
   161         {
       
   162         case EESMREditMR: // Fall through
       
   163         case EESMRForwardMR:
       
   164             {
       
   165             ui = CESMREditorDialog::NewL(
       
   166                     aInfoProvider,
       
   167                     aCallback );
       
   168             break;
       
   169             }
       
   170         case EESMRViewMR: // Fall through
       
   171         case EESMRViewAllDayMR:
       
   172             {
       
   173             ui = CESMRViewerDialog::NewL(
       
   174                     aInfoProvider,
       
   175                     aCallback );
       
   176             break;
       
   177             }
       
   178         case EESMRTrackingViewMR:
       
   179             {
       
   180             ui = CESMRTrackingViewDialog::NewL(
       
   181                     aInfoProvider.PolicyProvider().CurrentPolicy(),
       
   182                     *aInfoProvider.EntryL(),
       
   183                     aCallback );
       
   184             break;
       
   185             }
       
   186         default:
       
   187             { 
       
   188             break;
       
   189             } 
       
   190         }
       
   191 
       
   192  #ifdef _DEBUG
       
   193     __ASSERT_DEBUG(ui, Panic(EESMRUIFactoryInvalidPolicyMode) );
       
   194  #else
       
   195     if ( !ui )
       
   196         {
       
   197         User::Leave( KErrArgument );
       
   198         }
       
   199 
       
   200  #endif // _DEBUG
       
   201 
       
   202     return ui;
       
   203     }
       
   204 
       
   205 // EOF
       
   206