imagehandlingutilities/thumbnailmanager/thumbnailserver/src/thumbnailfetchedchecker.cpp
branchRCL_3
changeset 20 2b4b06654caa
parent 17 ff2fb7658ff7
child 21 6257223ede8a
equal deleted inserted replaced
19:f759b6186ab5 20:2b4b06654caa
    14 * Description:
    14 * Description:
    15  *
    15  *
    16 */
    16 */
    17 
    17 
    18 #include "thumbnailfetchedchecker.h"
    18 #include "thumbnailfetchedchecker.h"
       
    19 #include "thumbnaillog.h"
    19 
    20 
    20 const int KMaxStoredEntries = 100;
    21 const int KMaxStoredEntries = 100;
    21 
    22 
    22 // -----------------------------------------------------------------------------
    23 // -----------------------------------------------------------------------------
    23 // CThumbnailFetchedChecker::CThumbnailFetchedChecker()
    24 // CThumbnailFetchedChecker::CThumbnailFetchedChecker()
    47 
    48 
    48 // -----------------------------------------------------------------------------
    49 // -----------------------------------------------------------------------------
    49 // CThumbnailFetchedChecker::LastFetchResult()
    50 // CThumbnailFetchedChecker::LastFetchResult()
    50 // -----------------------------------------------------------------------------
    51 // -----------------------------------------------------------------------------
    51 //
    52 //
    52 TInt CThumbnailFetchedChecker::LastFetchResult( const TDesC& aUri )
    53 TInt CThumbnailFetchedChecker::LastFetchResult( const TDesC& aUri, const TThumbnailSize aThumbnailSize )
    53     {
    54     {
    54     TInt i = iNotFetched.FindInOrder( aUri, CEntry::FindCB );
    55     TN_DEBUG3( "CThumbnailFetchedChecker::LastFetchResult(aUri=%S aThumbnailSize=%d)", &aUri, aThumbnailSize);
    55     if ( i >= 0 && i < iNotFetched.Count() )
    56 
    56         {
    57     CEntry* entry = NULL;
    57         return iNotFetched[ i ]->iError;
    58     TRAPD( err, entry = CEntry::NewL( aUri, aThumbnailSize, KErrNone ) );
    58         }
    59     if ( !err && entry )
       
    60         {
       
    61         TInt ret = iNotFetched.FindInOrder( entry, CEntry::FindCB );
       
    62         if ( ret != KErrNotFound )
       
    63             {
       
    64             TN_DEBUG1( "CThumbnailFetchedChecker::LastFetchResult() -> error found");
       
    65             delete entry;
       
    66             entry = NULL;
       
    67             return iNotFetched[ ret ]->iError;
       
    68             }
       
    69         }
       
    70 
       
    71     delete entry;        
       
    72     entry = NULL;
       
    73         
    59     return KErrNone;
    74     return KErrNone;
    60     }
    75     }
    61 
    76 
    62 // -----------------------------------------------------------------------------
    77 // -----------------------------------------------------------------------------
    63 // CThumbnailFetchedChecker::SetFetchResult()
    78 // CThumbnailFetchedChecker::SetFetchResult()
    64 // -----------------------------------------------------------------------------
    79 // -----------------------------------------------------------------------------
    65 //
    80 //
    66 void CThumbnailFetchedChecker::SetFetchResult( const TDesC& aUri, TInt aError )
    81 void CThumbnailFetchedChecker::SetFetchResult( const TDesC& aUri, const TThumbnailSize aThumbnailSize, TInt aError )
    67     {
    82     {
       
    83     TN_DEBUG4( "CThumbnailFetchedChecker::SetFetchResult(aUri=%S aThumbnailSize=%d aError=%d)", &aUri, aThumbnailSize, aError);
    68     if ( aError == KErrNone )
    84     if ( aError == KErrNone )
    69         {
    85         {
    70         // Do not store successful results
    86         // Remove successful results from store
    71         TInt i = iNotFetched.FindInOrder( aUri, CEntry::FindCB );
    87         CEntry* entry = NULL;
    72         if ( i >= 0 && i < iNotFetched.Count() )
    88         TRAPD( err, entry = CEntry::NewL( aUri, aThumbnailSize, aError ) );
    73             {
    89         if ( !err && entry )
    74             delete iNotFetched[ i ];
    90             {
    75             iNotFetched.Remove( i );
    91             TInt i = iNotFetched.FindInOrder( entry, CEntry::FindCB );
    76             }
    92             if ( i >= 0 )
       
    93                 {
       
    94                 TN_DEBUG2( "CThumbnailFetchedChecker::LastFetchResult() -> Remove successful results from store %d",  iNotFetched.Count() );
       
    95                 delete iNotFetched[ i ];
       
    96                 iNotFetched[ i ] = NULL;
       
    97                 iNotFetched.Remove( i );
       
    98                 }
       
    99             }
       
   100         entry = NULL;
       
   101         delete entry;
    77         }
   102         }
    78     else
   103     else
    79         {
   104         {
       
   105 
    80         // Add or update
   106         // Add or update
    81         CEntry* entry = NULL;
   107         CEntry* entry = NULL;
    82         TRAPD( err, entry = CEntry::NewL( aUri, aError ) );
   108         TRAPD( err, entry = CEntry::NewL( aUri, aThumbnailSize, aError ) );
    83         if ( !err && entry )
   109         if ( !err && entry )
    84             {
   110             {
    85             err = iNotFetched.Find( entry );
   111             err = iNotFetched.Find( entry );
    86             if ( err != KErrNotFound )
   112             if ( err != KErrNotFound )
    87                 {
   113                 {
    88                 TInt i = iNotFetched.FindInOrder( aUri, CEntry::FindCB );
   114                 // update existing fetch result
    89                 if ( i >= 0 && i < iNotFetched.Count() )
   115                 TInt i = iNotFetched.FindInOrder( entry, CEntry::FindCB );
       
   116                 if ( i >= 0 )
    90                     {
   117                     {
       
   118                     TN_DEBUG1( "CThumbnailFetchedChecker::LastFetchResult() -> Update fetched tn error" );
    91                     iNotFetched[ i ]->iError = aError;
   119                     iNotFetched[ i ]->iError = aError;
    92                     }
   120                     }
    93                 }
   121                 }
    94             else 
   122             else 
    95                 {
   123                 {
    96                 if( iNotFetched.Count() < KMaxStoredEntries )
   124                 if( iNotFetched.Count() < KMaxStoredEntries )
    97                     {
   125                     {
       
   126                     // insert new fetch result
    98                     TInt err = iNotFetched.InsertInOrder( entry, CEntry::InsertCB );
   127                     TInt err = iNotFetched.InsertInOrder( entry, CEntry::InsertCB );
    99                     if ( err == KErrNone )
   128                     if ( err == KErrNone )
   100                         {
   129                         {
       
   130                         TN_DEBUG2( "CThumbnailFetchedChecker::LastFetchResult() -> Inserted new fetched tn error %d", iNotFetched.Count());	
   101                         entry = NULL; // owned by array now
   131                         entry = NULL; // owned by array now
   102                         }
   132                         }
   103                     }
   133                     }
   104                 }
   134                 }
   105             
   135             
   108             }
   138             }
   109         }
   139         }
   110     }
   140     }
   111 
   141 
   112 // -----------------------------------------------------------------------------
   142 // -----------------------------------------------------------------------------
       
   143 // CThumbnailFetchedChecker::DeleteFetchResult()
       
   144 // -----------------------------------------------------------------------------
       
   145 //
       
   146 void CThumbnailFetchedChecker::DeleteFetchResult( const TDesC& aUri )
       
   147     {
       
   148     TN_DEBUG2( "CThumbnailFetchedChecker::DeleteFetchResult(%S)", &aUri);
       
   149     // delete all entries of passed uri
       
   150     TInt ret;
       
   151     do
       
   152         {
       
   153         ret = iNotFetched.FindInOrder( aUri, CEntry::FindCBUri );
       
   154         if ( ret >= 0 )
       
   155             {
       
   156             TN_DEBUG1( "CThumbnailFetchedChecker::DeleteFetchResult() -> Deteled URI from fetched list" );	
       
   157             delete iNotFetched[ ret ];
       
   158             iNotFetched[ ret ] = NULL;
       
   159             iNotFetched.Remove( ret );
       
   160             }
       
   161         }
       
   162     while(ret != KErrNotFound );
       
   163     
       
   164     }
       
   165 
       
   166 // -----------------------------------------------------------------------------
       
   167 // CThumbnailFetchedChecker::LastFetchResult()
       
   168 // -----------------------------------------------------------------------------
       
   169 //
       
   170 void CThumbnailFetchedChecker::RenameFetchResultL( const TDesC& aNewUri, const TDesC& aOldUri )
       
   171     {
       
   172     TN_DEBUG3( "CThumbnailFetchedChecker::RenameFetchResult(aNewUri=%S aOldUri=%S)", &aNewUri, &aOldUri);
       
   173     // change every occurence of passed uri
       
   174     TInt ret;
       
   175     do
       
   176         {
       
   177         ret = iNotFetched.FindInOrder( aOldUri, CEntry::FindCBUri );
       
   178         if ( ret >= 0 )
       
   179             {
       
   180             delete iNotFetched[ ret ]->iUri;
       
   181             iNotFetched[ ret ]->iUri = NULL;
       
   182 
       
   183             iNotFetched[ ret ]->iUri = aNewUri.AllocL();
       
   184             TN_DEBUG1( "CThumbnailFetchedChecker::RenameeFetchResult() -> Renamed URI in fetched list" );	
       
   185             }
       
   186         }
       
   187     while(ret != KErrNotFound );
       
   188     
       
   189     }
       
   190 
       
   191 // -----------------------------------------------------------------------------
   113 // CThumbnailFetchedChecker::Reset()
   192 // CThumbnailFetchedChecker::Reset()
   114 // -----------------------------------------------------------------------------
   193 // -----------------------------------------------------------------------------
   115 //
   194 //
   116 void CThumbnailFetchedChecker::Reset()
   195 void CThumbnailFetchedChecker::Reset()
   117     {
   196     {
       
   197     TN_DEBUG1( "CThumbnailFetchedChecker::Reset()");
   118     iNotFetched.ResetAndDestroy();
   198     iNotFetched.ResetAndDestroy();
   119     }
   199     }
   120 
   200 
   121 // -----------------------------------------------------------------------------
   201 // -----------------------------------------------------------------------------
   122 // CThumbnailFetchedChecker::CEntry::New()
   202 // CThumbnailFetchedChecker::CEntry::NewL()
   123 // -----------------------------------------------------------------------------
   203 // -----------------------------------------------------------------------------
   124 //
   204 //
   125 CThumbnailFetchedChecker::CEntry* CThumbnailFetchedChecker::CEntry::NewL(
   205 CThumbnailFetchedChecker::CEntry* CThumbnailFetchedChecker::CEntry::NewL(
   126         const TDesC& aUri, TInt aError )
   206         const TDesC& aUri, const TThumbnailSize aThumbnailSize, TInt aError )
   127     {
   207     {
       
   208     TN_DEBUG4( "CThumbnailFetchedChecker::CEntry::NewL(aUri=%S aThumbnailSize=%d aError=%d)", &aUri, aThumbnailSize, aError);
   128     CEntry* self  = new (ELeave) CEntry();
   209     CEntry* self  = new (ELeave) CEntry();
   129     if ( self )
   210     if ( self )
   130         {
   211         {
   131         self->iUri = aUri.Alloc();
   212         self->iUri = aUri.AllocL();
       
   213         self->iSize = aThumbnailSize;
   132         self->iError = aError;
   214         self->iError = aError;
   133         if ( !self->iUri )
   215         if ( !self->iUri )
   134             {
   216             {
   135             delete self;
   217             delete self;
   136             self = NULL;
   218             self = NULL;
   142 // -----------------------------------------------------------------------------
   224 // -----------------------------------------------------------------------------
   143 // CThumbnailFetchedChecker::CEntry::FindCB()
   225 // CThumbnailFetchedChecker::CEntry::FindCB()
   144 // -----------------------------------------------------------------------------
   226 // -----------------------------------------------------------------------------
   145 //
   227 //
   146 TInt CThumbnailFetchedChecker::CEntry::FindCB(
   228 TInt CThumbnailFetchedChecker::CEntry::FindCB(
   147     const TDesC* aUri, const CThumbnailFetchedChecker::CEntry& aEntry )
   229         const CThumbnailFetchedChecker::CEntry& aEntry, const CThumbnailFetchedChecker::CEntry& aEntry1 )
   148     {
   230     {
       
   231     TN_DEBUG1( "CThumbnailFetchedChecker::CEntry::FindCB");
       
   232     if( aEntry1.iSize == aEntry.iSize)
       
   233         {
       
   234         // return index if size and uri matches
       
   235         return aEntry.iUri->CompareF( *( aEntry1.iUri ) );
       
   236         }
       
   237     else 
       
   238         {
       
   239         return KErrNotFound;
       
   240         }
       
   241     }
       
   242 
       
   243 // -----------------------------------------------------------------------------
       
   244 // CThumbnailFetchedChecker::CEntry::FindCBUri()
       
   245 // -----------------------------------------------------------------------------
       
   246 //
       
   247 TInt CThumbnailFetchedChecker::CEntry::FindCBUri(
       
   248         const TDesC* aUri, const CThumbnailFetchedChecker::CEntry& aEntry )
       
   249     {
       
   250     TN_DEBUG2( "CThumbnailFetchedChecker::CEntry::FindCBUri(aUri=%S", &aUri);
   149     return aUri->CompareF( *( aEntry.iUri ) );
   251     return aUri->CompareF( *( aEntry.iUri ) );
   150     }
   252     }
   151 
   253 
   152 // -----------------------------------------------------------------------------
   254 // -----------------------------------------------------------------------------
   153 // CThumbnailFetchedChecker::CEntry::InsertCB()
   255 // CThumbnailFetchedChecker::CEntry::InsertCB()
   155 //
   257 //
   156 TInt CThumbnailFetchedChecker::CEntry::InsertCB(
   258 TInt CThumbnailFetchedChecker::CEntry::InsertCB(
   157         const CThumbnailFetchedChecker::CEntry& aEntry1,
   259         const CThumbnailFetchedChecker::CEntry& aEntry1,
   158         const CThumbnailFetchedChecker::CEntry& aEntry2 )
   260         const CThumbnailFetchedChecker::CEntry& aEntry2 )
   159     {
   261     {
   160     return aEntry1.iUri->CompareF( *( aEntry2.iUri ) );
   262     TN_DEBUG1( "CThumbnailFetchedChecker::CEntry::InsertCB");
       
   263     if( aEntry1.iSize == aEntry2.iSize)
       
   264         {
       
   265         // return index if size and uri matches
       
   266         return aEntry1.iUri->CompareF( *( aEntry2.iUri ) );
       
   267         }
       
   268     else 
       
   269         {
       
   270         return KErrNotFound;
       
   271         }
   161     }
   272     }
   162 
   273 
   163 // -----------------------------------------------------------------------------
   274 // -----------------------------------------------------------------------------
   164 // CThumbnailFetchedChecker::CEntry::CEntry()
   275 // CThumbnailFetchedChecker::CEntry::CEntry()
   165 // -----------------------------------------------------------------------------
   276 // -----------------------------------------------------------------------------
   173 // -----------------------------------------------------------------------------
   284 // -----------------------------------------------------------------------------
   174 //
   285 //
   175 CThumbnailFetchedChecker::CEntry::~CEntry()
   286 CThumbnailFetchedChecker::CEntry::~CEntry()
   176     {
   287     {
   177     delete iUri;
   288     delete iUri;
   178     }
   289     iUri = NULL;
       
   290     }