javaextensions/pim/javapimloc/src.s60/cpimlocalizationmanager.cpp
branchRCL_3
changeset 19 04becd199f91
equal deleted inserted replaced
16:f5050f1da672 19:04becd199f91
       
     1 /*
       
     2 * Copyright (c) 2004-2007 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:  Provides localized strings
       
    15 *
       
    16 */
       
    17 
       
    18 
       
    19 // CLASS HEADER
       
    20 #include "cpimlocalizationmanager.h"
       
    21 
       
    22 // INTERNAL INCLUDES
       
    23 #include "cpimlocalizationdata.h"
       
    24 #include "pimlocalizationids.h"
       
    25 #include "pimlocalizationutils.h"
       
    26 #include "pimpanics.h"
       
    27 
       
    28 // EXTERNAL INCLUDES
       
    29 #include <data_caging_path_literals.hrh>
       
    30 #include <f32file.h>
       
    31 #include <barsc.h>
       
    32 #include <barsread.h>
       
    33 #include <pimcm.rsg>
       
    34 #include <pimevent.rsg>
       
    35 #include <pimtodo.rsg>
       
    36 
       
    37 #include <StringLoader.h>
       
    38 
       
    39 // UNNAMED LOCAL NAMESPACE
       
    40 namespace
       
    41 {
       
    42 // CONSTANTS
       
    43 _LIT(KPIMCMFileName, "pimcm.rsc");
       
    44 _LIT(KPIMEventFileName, "pimevent.rsc");
       
    45 _LIT(KPIMToDoFileName, "pimtodo.rsc");
       
    46 }
       
    47 
       
    48 // ============================ MEMBER FUNCTIONS ===============================
       
    49 // -----------------------------------------------------------------------------
       
    50 // CPIMLocalizationManager::NewL
       
    51 // Two-phased constructor.
       
    52 // -----------------------------------------------------------------------------
       
    53 //
       
    54 CPIMLocalizationManager* CPIMLocalizationManager::NewL()
       
    55 {
       
    56     CPIMLocalizationManager* self = new(ELeave) CPIMLocalizationManager;
       
    57     CleanupStack::PushL(self);
       
    58     self->ConstructL();
       
    59     CleanupStack::Pop(self);
       
    60     return self;
       
    61 }
       
    62 
       
    63 // destructor
       
    64 CPIMLocalizationManager::~CPIMLocalizationManager()
       
    65 {
       
    66     iRFs.Close();
       
    67 }
       
    68 
       
    69 // -----------------------------------------------------------------------------
       
    70 // CPIMLocalizationManager::GetPIMLocalizationDataL
       
    71 // Creates an instance of MPIMLocalizationData.
       
    72 // Caller takes ownership of the returned object.
       
    73 // Return:  An instance of MPIMLocalizationData.
       
    74 // -----------------------------------------------------------------------------
       
    75 //
       
    76 MPIMLocalizationData* CPIMLocalizationManager::GetPIMLocalizationDataL(
       
    77     TPIMLocalizationDataID aType)  // Type of the list
       
    78 {
       
    79     return GetPIMLocalizationDataL(aType, 0);
       
    80 }
       
    81 
       
    82 // -----------------------------------------------------------------------------
       
    83 // CPIMLocalizationManager::GetPIMLocalizationDataL
       
    84 // Creates an instance of MPIMLocalizationData.
       
    85 // Caller takes ownership of the returned object.
       
    86 // Return:  An instance of MPIMLocalizationData.
       
    87 // -----------------------------------------------------------------------------
       
    88 //
       
    89 MPIMLocalizationData* CPIMLocalizationManager::GetPIMLocalizationDataL(
       
    90     TPIMLocalizationDataID aType, // Type of the list
       
    91     TPIMLocalizationDataID aSubType)  // Subtype of the (contact)list
       
    92 {
       
    93     TFileName resourceFileName;
       
    94     TInt resourceId(0);
       
    95     switch (aType)
       
    96     {
       
    97     case KPIMLocalizationIdContacts:
       
    98     {
       
    99         resourceFileName.Append(KPIMCMFileName());
       
   100         resourceId = R_PIM_CNT_LISTS;
       
   101         break;
       
   102     }
       
   103     case KPIMLocalizationIdEvent:
       
   104     {
       
   105         resourceFileName.Append(KPIMEventFileName());
       
   106         resourceId = R_PIM_EVENT_LISTS;
       
   107         break;
       
   108     }
       
   109     case KPIMLocalizationIdToDo:
       
   110     {
       
   111         resourceFileName.Append(KPIMToDoFileName());
       
   112         resourceId = R_PIM_TODO_LISTS;
       
   113         break;
       
   114     }
       
   115     default:
       
   116     {
       
   117         // No other lists available
       
   118         User::Leave(KErrArgument);
       
   119     }
       
   120     }
       
   121 
       
   122     RResourceFile resourceFile;
       
   123     PIMLocalizationUtils::OpenResourceFileLC(iRFs, resourceFile, resourceFileName);
       
   124     // Create resource reader for the resource file
       
   125     HBufC8* buffer = resourceFile.AllocReadLC(resourceId);
       
   126 
       
   127     TResourceReader reader;
       
   128     reader.SetBuffer(buffer);
       
   129 
       
   130     CPIMLocalizationData* localization =
       
   131         CPIMLocalizationData::NewL(resourceFile,
       
   132                                    reader,
       
   133                                    aSubType);
       
   134 
       
   135     // buffer, resourceFile.Close()
       
   136     CleanupStack::PopAndDestroy(2, &resourceFile);
       
   137     return localization;
       
   138 }
       
   139 
       
   140 
       
   141 // -----------------------------------------------------------------------------
       
   142 // CPIMLocalizationManager::CPIMLocalizationManager
       
   143 // C++ default constructor can NOT contain any code, that
       
   144 // might leave.
       
   145 // -----------------------------------------------------------------------------
       
   146 //
       
   147 CPIMLocalizationManager::CPIMLocalizationManager()
       
   148 {
       
   149 }
       
   150 
       
   151 // -----------------------------------------------------------------------------
       
   152 // CPIMLocalizationManager::ConstructL
       
   153 // Symbian 2nd phase constructor can leave.
       
   154 // -----------------------------------------------------------------------------
       
   155 //
       
   156 void CPIMLocalizationManager::ConstructL()
       
   157 {
       
   158     User::LeaveIfError(iRFs.Connect());
       
   159 }
       
   160 
       
   161 // End of file