photosgallery/controllers/imageviewer/src/glximageviewermanager.cpp
branchRCL_3
changeset 12 ce1c7ad1f18b
parent 4 57d388cc48c1
child 15 191387a8b767
equal deleted inserted replaced
11:71da52165949 12:ce1c7ad1f18b
    17 
    17 
    18 
    18 
    19 #include "glximageviewermanager.h"
    19 #include "glximageviewermanager.h"
    20 #include <glxsingletonstore.h>
    20 #include <glxsingletonstore.h>
    21 #include <glxtracer.h>
    21 #include <glxtracer.h>
       
    22 #include <glxlog.h>
    22 
    23 
    23 #include <f32file.h>
    24 #include <f32file.h>
       
    25 #include <caf/manager.h>
       
    26 #include <driveinfo.h>
       
    27 #include <coeutils.h>
    24 
    28 
       
    29 _LIT( KPrivateFolder, "\\Private\\" );
       
    30 _LIT( KGifFileExt, ".gif" );
       
    31 _LIT( KTempFilePath, "?:\\data\\images\\200104E7.gif" );
       
    32     
    25 EXPORT_C CGlxImageViewerManager* CGlxImageViewerManager::InstanceL()
    33 EXPORT_C CGlxImageViewerManager* CGlxImageViewerManager::InstanceL()
    26     {
    34     {
    27     TRACER("CGlxImageViewerManager::InstanceL()");
    35     TRACER("CGlxImageViewerManager::InstanceL()");
    28     return CGlxSingletonStore::InstanceL(&NewL);
    36     return CGlxSingletonStore::InstanceL(&NewL);
    29     }
    37     }
    48 
    56 
    49 EXPORT_C TBool CGlxImageViewerManager::IsPrivate()
    57 EXPORT_C TBool CGlxImageViewerManager::IsPrivate()
    50     {
    58     {
    51     TRACER("CGlxImageViewerManager::IsPrivate()");    
    59     TRACER("CGlxImageViewerManager::IsPrivate()");    
    52     return iIsPrivate;
    60     return iIsPrivate;
       
    61     }
       
    62 
       
    63 EXPORT_C TBool CGlxImageViewerManager::IsPrivateGif()
       
    64     {
       
    65     TRACER("CGlxImageViewerManager::IsPrivateGif()");    
       
    66     return iIsPrivateGif;
    53     }
    67     }
    54 
    68 
    55 CGlxImageViewerManager::CGlxImageViewerManager()
    69 CGlxImageViewerManager::CGlxImageViewerManager()
    56     : iImageUri(NULL), iFile(NULL), iIsPrivate(EFalse)
    70     : iImageUri(NULL), iFile(NULL), iIsPrivate(EFalse)
    57     {
    71     {
   119         iFile->Close();
   133         iFile->Close();
   120         }
   134         }
   121     delete iFile;
   135     delete iFile;
   122     iFile = NULL;
   136     iFile = NULL;
   123 
   137 
       
   138     if (iIsPrivateGif)
       
   139         {
       
   140         iManager->DeleteFile(iImageUri->Des());
       
   141         iIsPrivateGif = EFalse;
       
   142         }
       
   143 
       
   144     if ( iManager )
       
   145         {
       
   146         delete iManager;
       
   147         iManager = NULL;
       
   148         }
       
   149     
   124     if ( iImageUri )
   150     if ( iImageUri )
   125         {
   151         {
   126         delete iImageUri;
   152         delete iImageUri;
   127         iImageUri = NULL;
   153         iImageUri = NULL;
   128         }
   154         }
   134 // ---------------------------------------------------------------------------
   160 // ---------------------------------------------------------------------------
   135 //
   161 //
   136 EXPORT_C void CGlxImageViewerManager::SetImageFileHandleL(const RFile& aFileHandle)
   162 EXPORT_C void CGlxImageViewerManager::SetImageFileHandleL(const RFile& aFileHandle)
   137     {
   163     {
   138     TRACER("void CGlxImageViewerManager::SetImageFileHandleL()");
   164     TRACER("void CGlxImageViewerManager::SetImageFileHandleL()");
   139     _LIT( KPrivateFolder, "\\Private\\" );    // Platsec private folder  
       
   140     TFileName filePath;
   165     TFileName filePath;
   141     User::LeaveIfError( aFileHandle.FullName( filePath ) );
   166     User::LeaveIfError(aFileHandle.FullName(filePath));
   142     SetImageUriL( filePath );
   167     TParsePtrC parse(filePath);
   143     TParsePtrC parse( filePath );
   168     if (parse.PathPresent() && parse.Path().Length()
   144     if( parse.PathPresent() &&
   169             > KPrivateFolder().Length() && parse.Path().Left(
   145         parse.Path().Length() > KPrivateFolder().Length() &&
   170             KPrivateFolder().Length()).CompareF(KPrivateFolder) == 0)
   146         parse.Path().Left( KPrivateFolder().Length() ).CompareF( KPrivateFolder ) == 0 )
       
   147         {
   171         {
   148         // File is in private folder; duplicate file handle
   172         // File is in private folder; duplicate file handle
   149         iFile = new (ELeave) RFile64;
   173         iFile = new (ELeave) RFile64;
   150         User::LeaveIfError( iFile->Duplicate( aFileHandle ) );
   174         User::LeaveIfError(iFile->Duplicate(aFileHandle));
   151         iIsPrivate = ETrue;
   175         iIsPrivate = ETrue;
       
   176         if (parse.Ext().Compare(KGifFileExt) == 0)
       
   177             {
       
   178             // Gif file from private path, hence make a local copy.
       
   179             TFileName ramFilePath(KTempFilePath);
       
   180             TChar drive;
       
   181             User::LeaveIfError(DriveInfo::GetDefaultDrive(
       
   182                     DriveInfo::EDefaultRam, drive));
       
   183             ramFilePath[0] = drive;
       
   184             ConeUtils::EnsurePathExistsL(ramFilePath);
       
   185             if (!iManager)
       
   186                 {
       
   187                 iManager = ContentAccess::CManager::NewL();    
       
   188                 }
       
   189             iManager->CopyFile(*iFile, ramFilePath);
       
   190             filePath.Copy(ramFilePath);
       
   191             iIsPrivateGif = ETrue;
       
   192             }
   152         }
   193         }
       
   194     SetImageUriL( filePath );
   153     }
   195     }