imagehandlingutilities/thumbnailmanager/thumbnailserver/src/thumbnailfetchedchecker.cpp
branchRCL_3
changeset 58 9e8b0cc88842
parent 41 9d4d3445ce6e
equal deleted inserted replaced
50:60bb012f1157 58:9e8b0cc88842
    14 * Description:
    14 * Description:
    15  *
    15  *
    16 */
    16 */
    17 
    17 
    18 #include "thumbnailfetchedchecker.h"
    18 #include "thumbnailfetchedchecker.h"
    19 #include "thumbnaillog.h"
       
    20 
    19 
    21 const int KMaxStoredEntries = 100;
    20 const int KMaxStoredEntries = 100;
    22 
    21 
    23 // -----------------------------------------------------------------------------
    22 // -----------------------------------------------------------------------------
    24 // CThumbnailFetchedChecker::CThumbnailFetchedChecker()
    23 // CThumbnailFetchedChecker::CThumbnailFetchedChecker()
    48 
    47 
    49 // -----------------------------------------------------------------------------
    48 // -----------------------------------------------------------------------------
    50 // CThumbnailFetchedChecker::LastFetchResult()
    49 // CThumbnailFetchedChecker::LastFetchResult()
    51 // -----------------------------------------------------------------------------
    50 // -----------------------------------------------------------------------------
    52 //
    51 //
    53 TInt CThumbnailFetchedChecker::LastFetchResult( const TDesC& aUri, const TThumbnailSize aThumbnailSize )
    52 TInt CThumbnailFetchedChecker::LastFetchResult( const TDesC& aUri )
    54     {
    53     {
    55     TN_DEBUG3( "CThumbnailFetchedChecker::LastFetchResult(aUri=%S aThumbnailSize=%d)", &aUri, aThumbnailSize);
    54     TInt i = iNotFetched.FindInOrder( aUri, CEntry::FindCB );
    56 
    55     if ( i >= 0 && i < iNotFetched.Count() )
    57     CEntry* entry = NULL;
       
    58     TRAPD( err, entry = CEntry::NewL( aUri, aThumbnailSize, KErrNone ) );
       
    59     if ( !err && entry )
       
    60         {
    56         {
    61         TInt ret = iNotFetched.FindInOrder( entry, CEntry::FindCB );
    57         return iNotFetched[ i ]->iError;
    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         }
    58         }
    70 
       
    71     delete entry;        
       
    72     entry = NULL;
       
    73         
       
    74     return KErrNone;
    59     return KErrNone;
    75     }
    60     }
    76 
    61 
    77 // -----------------------------------------------------------------------------
    62 // -----------------------------------------------------------------------------
    78 // CThumbnailFetchedChecker::SetFetchResult()
    63 // CThumbnailFetchedChecker::SetFetchResult()
    79 // -----------------------------------------------------------------------------
    64 // -----------------------------------------------------------------------------
    80 //
    65 //
    81 void CThumbnailFetchedChecker::SetFetchResult( const TDesC& aUri, const TThumbnailSize aThumbnailSize, TInt aError )
    66 void CThumbnailFetchedChecker::SetFetchResult( const TDesC& aUri, TInt aError )
    82     {
    67     {
    83     TN_DEBUG4( "CThumbnailFetchedChecker::SetFetchResult(aUri=%S aThumbnailSize=%d aError=%d)", &aUri, aThumbnailSize, aError);
       
    84     if ( aError == KErrNone )
    68     if ( aError == KErrNone )
    85         {
    69         {
    86         // Remove successful results from store
    70         // Do not store successful results
    87         CEntry* entry = NULL;
    71         TInt i = iNotFetched.FindInOrder( aUri, CEntry::FindCB );
    88         TRAPD( err, entry = CEntry::NewL( aUri, aThumbnailSize, aError ) );
    72         if ( i >= 0 && i < iNotFetched.Count() )
    89         if ( !err && entry )
       
    90             {
    73             {
    91             TInt i = iNotFetched.FindInOrder( entry, CEntry::FindCB );
    74             delete iNotFetched[ i ];
    92             if ( i >= 0 )
    75             iNotFetched.Remove( i );
    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             }
    76             }
   100         entry = NULL;
       
   101         delete entry;
       
   102         }
    77         }
   103     else
    78     else
   104         {
    79         {
   105 
       
   106         // Add or update
    80         // Add or update
   107         CEntry* entry = NULL;
    81         CEntry* entry = NULL;
   108         TRAPD( err, entry = CEntry::NewL( aUri, aThumbnailSize, aError ) );
    82         TRAPD( err, entry = CEntry::NewL( aUri, aError ) );
   109         if ( !err && entry )
    83         if ( !err && entry )
   110             {
    84             {
   111             err = iNotFetched.Find( entry );
    85             err = iNotFetched.Find( entry );
   112             if ( err != KErrNotFound )
    86             if ( err != KErrNotFound )
   113                 {
    87                 {
   114                 // update existing fetch result
    88                 TInt i = iNotFetched.FindInOrder( aUri, CEntry::FindCB );
   115                 TInt i = iNotFetched.FindInOrder( entry, CEntry::FindCB );
    89                 if ( i >= 0 && i < iNotFetched.Count() )
   116                 if ( i >= 0 )
       
   117                     {
    90                     {
   118                     TN_DEBUG1( "CThumbnailFetchedChecker::LastFetchResult() -> Update fetched tn error" );
       
   119                     iNotFetched[ i ]->iError = aError;
    91                     iNotFetched[ i ]->iError = aError;
   120                     }
    92                     }
   121                 }
    93                 }
   122             else 
    94             else 
   123                 {
    95                 {
   124                 if( iNotFetched.Count() < KMaxStoredEntries )
    96                 if( iNotFetched.Count() < KMaxStoredEntries )
   125                     {
    97                     {
   126                     // insert new fetch result
       
   127                     TInt err = iNotFetched.InsertInOrder( entry, CEntry::InsertCB );
    98                     TInt err = iNotFetched.InsertInOrder( entry, CEntry::InsertCB );
   128                     if ( err == KErrNone )
    99                     if ( err == KErrNone )
   129                         {
   100                         {
   130                         TN_DEBUG2( "CThumbnailFetchedChecker::LastFetchResult() -> Inserted new fetched tn error %d", iNotFetched.Count());	
       
   131                         entry = NULL; // owned by array now
   101                         entry = NULL; // owned by array now
   132                         }
   102                         }
   133                     }
   103                     }
   134                 }
   104                 }
   135             
   105             
   138             }
   108             }
   139         }
   109         }
   140     }
   110     }
   141 
   111 
   142 // -----------------------------------------------------------------------------
   112 // -----------------------------------------------------------------------------
   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 // -----------------------------------------------------------------------------
       
   192 // CThumbnailFetchedChecker::Reset()
   113 // CThumbnailFetchedChecker::Reset()
   193 // -----------------------------------------------------------------------------
   114 // -----------------------------------------------------------------------------
   194 //
   115 //
   195 void CThumbnailFetchedChecker::Reset()
   116 void CThumbnailFetchedChecker::Reset()
   196     {
   117     {
   197     TN_DEBUG1( "CThumbnailFetchedChecker::Reset()");
       
   198     iNotFetched.ResetAndDestroy();
   118     iNotFetched.ResetAndDestroy();
   199     }
   119     }
   200 
   120 
   201 // -----------------------------------------------------------------------------
   121 // -----------------------------------------------------------------------------
   202 // CThumbnailFetchedChecker::CEntry::NewL()
   122 // CThumbnailFetchedChecker::CEntry::New()
   203 // -----------------------------------------------------------------------------
   123 // -----------------------------------------------------------------------------
   204 //
   124 //
   205 CThumbnailFetchedChecker::CEntry* CThumbnailFetchedChecker::CEntry::NewL(
   125 CThumbnailFetchedChecker::CEntry* CThumbnailFetchedChecker::CEntry::NewL(
   206         const TDesC& aUri, const TThumbnailSize aThumbnailSize, TInt aError )
   126         const TDesC& aUri, TInt aError )
   207     {
   127     {
   208     TN_DEBUG4( "CThumbnailFetchedChecker::CEntry::NewL(aUri=%S aThumbnailSize=%d aError=%d)", &aUri, aThumbnailSize, aError);
       
   209     CEntry* self  = new (ELeave) CEntry();
   128     CEntry* self  = new (ELeave) CEntry();
   210     if ( self )
   129     if ( self )
   211         {
   130         {
   212         self->iUri = aUri.AllocL();
   131         self->iUri = aUri.Alloc();
   213         self->iSize = aThumbnailSize;
       
   214         self->iError = aError;
   132         self->iError = aError;
   215         if ( !self->iUri )
   133         if ( !self->iUri )
   216             {
   134             {
   217             delete self;
   135             delete self;
   218             self = NULL;
   136             self = NULL;
   224 // -----------------------------------------------------------------------------
   142 // -----------------------------------------------------------------------------
   225 // CThumbnailFetchedChecker::CEntry::FindCB()
   143 // CThumbnailFetchedChecker::CEntry::FindCB()
   226 // -----------------------------------------------------------------------------
   144 // -----------------------------------------------------------------------------
   227 //
   145 //
   228 TInt CThumbnailFetchedChecker::CEntry::FindCB(
   146 TInt CThumbnailFetchedChecker::CEntry::FindCB(
   229         const CThumbnailFetchedChecker::CEntry& aEntry, const CThumbnailFetchedChecker::CEntry& aEntry1 )
   147     const TDesC* aUri, const CThumbnailFetchedChecker::CEntry& aEntry )
   230     {
   148     {
   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);
       
   251     return aUri->CompareF( *( aEntry.iUri ) );
   149     return aUri->CompareF( *( aEntry.iUri ) );
   252     }
   150     }
   253 
   151 
   254 // -----------------------------------------------------------------------------
   152 // -----------------------------------------------------------------------------
   255 // CThumbnailFetchedChecker::CEntry::InsertCB()
   153 // CThumbnailFetchedChecker::CEntry::InsertCB()
   257 //
   155 //
   258 TInt CThumbnailFetchedChecker::CEntry::InsertCB(
   156 TInt CThumbnailFetchedChecker::CEntry::InsertCB(
   259         const CThumbnailFetchedChecker::CEntry& aEntry1,
   157         const CThumbnailFetchedChecker::CEntry& aEntry1,
   260         const CThumbnailFetchedChecker::CEntry& aEntry2 )
   158         const CThumbnailFetchedChecker::CEntry& aEntry2 )
   261     {
   159     {
   262     TN_DEBUG1( "CThumbnailFetchedChecker::CEntry::InsertCB");
   160     return aEntry1.iUri->CompareF( *( aEntry2.iUri ) );
   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         }
       
   272     }
   161     }
   273 
   162 
   274 // -----------------------------------------------------------------------------
   163 // -----------------------------------------------------------------------------
   275 // CThumbnailFetchedChecker::CEntry::CEntry()
   164 // CThumbnailFetchedChecker::CEntry::CEntry()
   276 // -----------------------------------------------------------------------------
   165 // -----------------------------------------------------------------------------
   284 // -----------------------------------------------------------------------------
   173 // -----------------------------------------------------------------------------
   285 //
   174 //
   286 CThumbnailFetchedChecker::CEntry::~CEntry()
   175 CThumbnailFetchedChecker::CEntry::~CEntry()
   287     {
   176     {
   288     delete iUri;
   177     delete iUri;
   289     iUri = NULL;
       
   290     }
   178     }