imagehandlingutilities/thumbnailmanager/thumbnailserver/src/thumbnailfetchedchecker.cpp
changeset 31 d429f823a6b7
parent 29 4bdfb6b5c9b4
child 33 221be23823c5
equal deleted inserted replaced
30:b67379558a75 31:d429f823a6b7
    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             entry = NULL;
       
    66             delete entry;
       
    67 
       
    68             return iNotFetched[ ret ]->iError;
       
    69             }
       
    70         }
       
    71 
       
    72     delete entry;        
       
    73     entry = NULL;
       
    74         
    59     return KErrNone;
    75     return KErrNone;
    60     }
    76     }
    61 
    77 
    62 // -----------------------------------------------------------------------------
    78 // -----------------------------------------------------------------------------
    63 // CThumbnailFetchedChecker::SetFetchResult()
    79 // CThumbnailFetchedChecker::SetFetchResult()
    64 // -----------------------------------------------------------------------------
    80 // -----------------------------------------------------------------------------
    65 //
    81 //
    66 void CThumbnailFetchedChecker::SetFetchResult( const TDesC& aUri, TInt aError )
    82 void CThumbnailFetchedChecker::SetFetchResult( const TDesC& aUri, const TThumbnailSize aThumbnailSize, TInt aError )
    67     {
    83     {
       
    84     TN_DEBUG4( "CThumbnailFetchedChecker::SetFetchResult(aUri=%S aThumbnailSize=%d aError=%d)", &aUri, aThumbnailSize, aError);
    68     if ( aError == KErrNone )
    85     if ( aError == KErrNone )
    69         {
    86         {
    70         // Do not store successful results
    87         // Remove successful results from store
    71         TInt i = iNotFetched.FindInOrder( aUri, CEntry::FindCB );
    88         CEntry* entry = NULL;
    72         if ( i >= 0 && i < iNotFetched.Count() )
    89         TRAPD( err, entry = CEntry::NewL( aUri, aThumbnailSize, aError ) );
    73             {
    90         if ( !err && entry )
    74             delete iNotFetched[ i ];
    91             {
    75             iNotFetched.Remove( i );
    92             TInt i = iNotFetched.FindInOrder( entry, CEntry::FindCB );
    76             }
    93             if ( i >= 0 )
       
    94                 {
       
    95                 TN_DEBUG2( "CThumbnailFetchedChecker::LastFetchResult() -> Remove successful results from store %d",  iNotFetched.Count() );
       
    96                 delete iNotFetched[ i ];
       
    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.Remove( ret );
       
   159             }
       
   160         }
       
   161     while(ret != KErrNotFound );
       
   162     
       
   163     }
       
   164 
       
   165 // -----------------------------------------------------------------------------
       
   166 // CThumbnailFetchedChecker::LastFetchResult()
       
   167 // -----------------------------------------------------------------------------
       
   168 //
       
   169 void CThumbnailFetchedChecker::RenameFetchResultL( const TDesC& aNewUri, const TDesC& aOldUri )
       
   170     {
       
   171     TN_DEBUG3( "CThumbnailFetchedChecker::RenameFetchResult(aNewUri=%S aOldUri=%S)", &aNewUri, &aOldUri);
       
   172     // change every occurence of passed uri
       
   173     TInt ret;
       
   174     do
       
   175         {
       
   176         ret = iNotFetched.FindInOrder( aOldUri, CEntry::FindCBUri );
       
   177         if ( ret >= 0 )
       
   178             {
       
   179             delete iNotFetched[ ret ]->iUri;
       
   180             iNotFetched[ ret ]->iUri = NULL;
       
   181 
       
   182             iNotFetched[ ret ]->iUri = aNewUri.AllocL();
       
   183             TN_DEBUG1( "CThumbnailFetchedChecker::RenameeFetchResult() -> Renamed URI in fetched list" );	
       
   184             }
       
   185         }
       
   186     while(ret != KErrNotFound );
       
   187     
       
   188     }
       
   189 
       
   190 // -----------------------------------------------------------------------------
   113 // CThumbnailFetchedChecker::Reset()
   191 // CThumbnailFetchedChecker::Reset()
   114 // -----------------------------------------------------------------------------
   192 // -----------------------------------------------------------------------------
   115 //
   193 //
   116 void CThumbnailFetchedChecker::Reset()
   194 void CThumbnailFetchedChecker::Reset()
   117     {
   195     {
       
   196     TN_DEBUG1( "CThumbnailFetchedChecker::Reset()");
   118     iNotFetched.ResetAndDestroy();
   197     iNotFetched.ResetAndDestroy();
   119     }
   198     }
   120 
   199 
   121 // -----------------------------------------------------------------------------
   200 // -----------------------------------------------------------------------------
   122 // CThumbnailFetchedChecker::CEntry::New()
   201 // CThumbnailFetchedChecker::CEntry::NewL()
   123 // -----------------------------------------------------------------------------
   202 // -----------------------------------------------------------------------------
   124 //
   203 //
   125 CThumbnailFetchedChecker::CEntry* CThumbnailFetchedChecker::CEntry::NewL(
   204 CThumbnailFetchedChecker::CEntry* CThumbnailFetchedChecker::CEntry::NewL(
   126         const TDesC& aUri, TInt aError )
   205         const TDesC& aUri, const TThumbnailSize aThumbnailSize, TInt aError )
   127     {
   206     {
       
   207     TN_DEBUG4( "CThumbnailFetchedChecker::CEntry::NewL(aUri=%S aThumbnailSize=%d aError=%d)", &aUri, aThumbnailSize, aError);
   128     CEntry* self  = new (ELeave) CEntry();
   208     CEntry* self  = new (ELeave) CEntry();
   129     if ( self )
   209     if ( self )
   130         {
   210         {
   131         self->iUri = aUri.Alloc();
   211         self->iUri = aUri.AllocL();
       
   212         self->iSize = aThumbnailSize;
   132         self->iError = aError;
   213         self->iError = aError;
   133         if ( !self->iUri )
   214         if ( !self->iUri )
   134             {
   215             {
   135             delete self;
   216             delete self;
   136             self = NULL;
   217             self = NULL;
   142 // -----------------------------------------------------------------------------
   223 // -----------------------------------------------------------------------------
   143 // CThumbnailFetchedChecker::CEntry::FindCB()
   224 // CThumbnailFetchedChecker::CEntry::FindCB()
   144 // -----------------------------------------------------------------------------
   225 // -----------------------------------------------------------------------------
   145 //
   226 //
   146 TInt CThumbnailFetchedChecker::CEntry::FindCB(
   227 TInt CThumbnailFetchedChecker::CEntry::FindCB(
   147     const TDesC* aUri, const CThumbnailFetchedChecker::CEntry& aEntry )
   228         const CThumbnailFetchedChecker::CEntry& aEntry, const CThumbnailFetchedChecker::CEntry& aEntry1 )
   148     {
   229     {
       
   230     TN_DEBUG1( "CThumbnailFetchedChecker::CEntry::FindCB");
       
   231     if( aEntry1.iSize == aEntry.iSize)
       
   232         {
       
   233         // return index if size and uri matches
       
   234         return aEntry.iUri->CompareF( *( aEntry1.iUri ) );
       
   235         }
       
   236     else 
       
   237         {
       
   238         return KErrNotFound;
       
   239         }
       
   240     }
       
   241 
       
   242 // -----------------------------------------------------------------------------
       
   243 // CThumbnailFetchedChecker::CEntry::FindCBUri()
       
   244 // -----------------------------------------------------------------------------
       
   245 //
       
   246 TInt CThumbnailFetchedChecker::CEntry::FindCBUri(
       
   247         const TDesC* aUri, const CThumbnailFetchedChecker::CEntry& aEntry )
       
   248     {
       
   249     TN_DEBUG2( "CThumbnailFetchedChecker::CEntry::FindCBUri(aUri=%S", &aUri);
   149     return aUri->CompareF( *( aEntry.iUri ) );
   250     return aUri->CompareF( *( aEntry.iUri ) );
   150     }
   251     }
   151 
   252 
   152 // -----------------------------------------------------------------------------
   253 // -----------------------------------------------------------------------------
   153 // CThumbnailFetchedChecker::CEntry::InsertCB()
   254 // CThumbnailFetchedChecker::CEntry::InsertCB()
   155 //
   256 //
   156 TInt CThumbnailFetchedChecker::CEntry::InsertCB(
   257 TInt CThumbnailFetchedChecker::CEntry::InsertCB(
   157         const CThumbnailFetchedChecker::CEntry& aEntry1,
   258         const CThumbnailFetchedChecker::CEntry& aEntry1,
   158         const CThumbnailFetchedChecker::CEntry& aEntry2 )
   259         const CThumbnailFetchedChecker::CEntry& aEntry2 )
   159     {
   260     {
   160     return aEntry1.iUri->CompareF( *( aEntry2.iUri ) );
   261     TN_DEBUG1( "CThumbnailFetchedChecker::CEntry::InsertCB");
       
   262     if( aEntry1.iSize == aEntry2.iSize)
       
   263         {
       
   264         // return index if size and uri matches
       
   265         return aEntry1.iUri->CompareF( *( aEntry2.iUri ) );
       
   266         }
       
   267     else 
       
   268         {
       
   269         return KErrNotFound;
       
   270         }
   161     }
   271     }
   162 
   272 
   163 // -----------------------------------------------------------------------------
   273 // -----------------------------------------------------------------------------
   164 // CThumbnailFetchedChecker::CEntry::CEntry()
   274 // CThumbnailFetchedChecker::CEntry::CEntry()
   165 // -----------------------------------------------------------------------------
   275 // -----------------------------------------------------------------------------