contentstorage/casrv/cawidgetscanner/src/cawidgetstoragehandler.cpp
author hgs
Wed, 06 Oct 2010 16:00:22 +0300
changeset 125 26079c1bb561
parent 119 50e220be30d1
permissions -rw-r--r--
201039_01
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
85
7feec50967db 201003_02
hgs
parents:
diff changeset
     1
/*
7feec50967db 201003_02
hgs
parents:
diff changeset
     2
 * Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
7feec50967db 201003_02
hgs
parents:
diff changeset
     3
 * All rights reserved.
7feec50967db 201003_02
hgs
parents:
diff changeset
     4
 * This component and the accompanying materials are made available
7feec50967db 201003_02
hgs
parents:
diff changeset
     5
 * under the terms of "Eclipse Public License v1.0"
7feec50967db 201003_02
hgs
parents:
diff changeset
     6
 * which accompanies this distribution, and is available
7feec50967db 201003_02
hgs
parents:
diff changeset
     7
 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
7feec50967db 201003_02
hgs
parents:
diff changeset
     8
 *
7feec50967db 201003_02
hgs
parents:
diff changeset
     9
 * Initial Contributors:
7feec50967db 201003_02
hgs
parents:
diff changeset
    10
 * Nokia Corporation - initial contribution.
7feec50967db 201003_02
hgs
parents:
diff changeset
    11
 *
7feec50967db 201003_02
hgs
parents:
diff changeset
    12
 * Contributors:
7feec50967db 201003_02
hgs
parents:
diff changeset
    13
 *
93
hgs
parents: 92
diff changeset
    14
 * Description:
85
7feec50967db 201003_02
hgs
parents:
diff changeset
    15
 *
7feec50967db 201003_02
hgs
parents:
diff changeset
    16
 */
7feec50967db 201003_02
hgs
parents:
diff changeset
    17
// INCLUDE FILES
7feec50967db 201003_02
hgs
parents:
diff changeset
    18
7feec50967db 201003_02
hgs
parents:
diff changeset
    19
#include <badesca.h>
94
hgs
parents: 93
diff changeset
    20
#include <usif/scr/screntries.h>
98
hgs
parents: 96
diff changeset
    21
#include <hbtextresolversymbian.h>
hgs
parents: 96
diff changeset
    22
85
7feec50967db 201003_02
hgs
parents:
diff changeset
    23
#include "widgetscannerutils.h"
7feec50967db 201003_02
hgs
parents:
diff changeset
    24
#include "cawidgetstoragehandler.h"
7feec50967db 201003_02
hgs
parents:
diff changeset
    25
#include "cadef.h"
7feec50967db 201003_02
hgs
parents:
diff changeset
    26
#include "cainnerentry.h"
7feec50967db 201003_02
hgs
parents:
diff changeset
    27
#include "cainnerquery.h"
7feec50967db 201003_02
hgs
parents:
diff changeset
    28
#include "castorageproxy.h"
7feec50967db 201003_02
hgs
parents:
diff changeset
    29
#include "caarraycleanup.inl"
96
hgs
parents: 94
diff changeset
    30
#include "calocalizationentry.h"
98
hgs
parents: 96
diff changeset
    31
#include "cawidgetscannerparser.h"
96
hgs
parents: 94
diff changeset
    32
#include "cawidgetscannerdef.h"
hgs
parents: 94
diff changeset
    33
94
hgs
parents: 93
diff changeset
    34
using namespace Usif;
hgs
parents: 93
diff changeset
    35
98
hgs
parents: 96
diff changeset
    36
// ============================ MEMBER FUNCTIONS ============================z===
85
7feec50967db 201003_02
hgs
parents:
diff changeset
    37
7feec50967db 201003_02
hgs
parents:
diff changeset
    38
// -----------------------------------------------------------------------------
98
hgs
parents: 96
diff changeset
    39
// 
85
7feec50967db 201003_02
hgs
parents:
diff changeset
    40
// -----------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
    41
//
98
hgs
parents: 96
diff changeset
    42
CCaWidgetStorageHandler::CCaWidgetStorageHandler( CCaStorageProxy* aStorage,
102
hgs
parents: 99
diff changeset
    43
        Usif::RSoftwareComponentRegistry& aSoftwareRegistry, RFs& aFs ) :
hgs
parents: 99
diff changeset
    44
            iSoftwareRegistry(aSoftwareRegistry)
85
7feec50967db 201003_02
hgs
parents:
diff changeset
    45
    {
7feec50967db 201003_02
hgs
parents:
diff changeset
    46
    iStorage = aStorage;
7feec50967db 201003_02
hgs
parents:
diff changeset
    47
    iFs = aFs;
7feec50967db 201003_02
hgs
parents:
diff changeset
    48
    }
7feec50967db 201003_02
hgs
parents:
diff changeset
    49
7feec50967db 201003_02
hgs
parents:
diff changeset
    50
// -----------------------------------------------------------------------------
98
hgs
parents: 96
diff changeset
    51
// 
85
7feec50967db 201003_02
hgs
parents:
diff changeset
    52
// -----------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
    53
//
7feec50967db 201003_02
hgs
parents:
diff changeset
    54
void CCaWidgetStorageHandler::ConstructL()
7feec50967db 201003_02
hgs
parents:
diff changeset
    55
    {
98
hgs
parents: 96
diff changeset
    56
    iParser = CCaWidgetScannerParser::NewL( iFs );
85
7feec50967db 201003_02
hgs
parents:
diff changeset
    57
    }
7feec50967db 201003_02
hgs
parents:
diff changeset
    58
7feec50967db 201003_02
hgs
parents:
diff changeset
    59
// -----------------------------------------------------------------------------
98
hgs
parents: 96
diff changeset
    60
// 
85
7feec50967db 201003_02
hgs
parents:
diff changeset
    61
// -----------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
    62
//
7feec50967db 201003_02
hgs
parents:
diff changeset
    63
CCaWidgetStorageHandler* CCaWidgetStorageHandler::NewL(
102
hgs
parents: 99
diff changeset
    64
        CCaStorageProxy* aStorage,
hgs
parents: 99
diff changeset
    65
        Usif::RSoftwareComponentRegistry& aSoftwareRegistry, RFs& aFs )
85
7feec50967db 201003_02
hgs
parents:
diff changeset
    66
    {
102
hgs
parents: 99
diff changeset
    67
    CCaWidgetStorageHandler* self = NewLC( aStorage, aSoftwareRegistry, aFs );
85
7feec50967db 201003_02
hgs
parents:
diff changeset
    68
    CleanupStack::Pop( self );
7feec50967db 201003_02
hgs
parents:
diff changeset
    69
    return self;
7feec50967db 201003_02
hgs
parents:
diff changeset
    70
    }
7feec50967db 201003_02
hgs
parents:
diff changeset
    71
7feec50967db 201003_02
hgs
parents:
diff changeset
    72
// -----------------------------------------------------------------------------
98
hgs
parents: 96
diff changeset
    73
// 
85
7feec50967db 201003_02
hgs
parents:
diff changeset
    74
// -----------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
    75
//
7feec50967db 201003_02
hgs
parents:
diff changeset
    76
CCaWidgetStorageHandler* CCaWidgetStorageHandler::NewLC(
102
hgs
parents: 99
diff changeset
    77
        CCaStorageProxy* aStorage,
hgs
parents: 99
diff changeset
    78
        Usif::RSoftwareComponentRegistry& aSoftwareRegistry, RFs& aFs )
85
7feec50967db 201003_02
hgs
parents:
diff changeset
    79
    {
7feec50967db 201003_02
hgs
parents:
diff changeset
    80
    CCaWidgetStorageHandler* self = new ( ELeave ) CCaWidgetStorageHandler(
102
hgs
parents: 99
diff changeset
    81
            aStorage, aSoftwareRegistry, aFs );
85
7feec50967db 201003_02
hgs
parents:
diff changeset
    82
    CleanupStack::PushL( self );
7feec50967db 201003_02
hgs
parents:
diff changeset
    83
    self->ConstructL();
7feec50967db 201003_02
hgs
parents:
diff changeset
    84
    return self;
7feec50967db 201003_02
hgs
parents:
diff changeset
    85
    }
7feec50967db 201003_02
hgs
parents:
diff changeset
    86
7feec50967db 201003_02
hgs
parents:
diff changeset
    87
// -----------------------------------------------------------------------------
98
hgs
parents: 96
diff changeset
    88
// 
85
7feec50967db 201003_02
hgs
parents:
diff changeset
    89
// -----------------------------------------------------------------------------
7feec50967db 201003_02
hgs
parents:
diff changeset
    90
//
7feec50967db 201003_02
hgs
parents:
diff changeset
    91
CCaWidgetStorageHandler::~CCaWidgetStorageHandler()
7feec50967db 201003_02
hgs
parents:
diff changeset
    92
    {
98
hgs
parents: 96
diff changeset
    93
    delete iParser;
107
hgs
parents: 106
diff changeset
    94
    iWidgetDBCache.ResetAndDestroy();
85
7feec50967db 201003_02
hgs
parents:
diff changeset
    95
    }
7feec50967db 201003_02
hgs
parents:
diff changeset
    96
7feec50967db 201003_02
hgs
parents:
diff changeset
    97
// ----------------------------------------------------------------------------
93
hgs
parents: 92
diff changeset
    98
//
85
7feec50967db 201003_02
hgs
parents:
diff changeset
    99
// ----------------------------------------------------------------------------
93
hgs
parents: 92
diff changeset
   100
//
98
hgs
parents: 96
diff changeset
   101
void CCaWidgetStorageHandler::SynchronizeL()
85
7feec50967db 201003_02
hgs
parents:
diff changeset
   102
    {
7feec50967db 201003_02
hgs
parents:
diff changeset
   103
    FetchWidgetsL();
107
hgs
parents: 106
diff changeset
   104
    AddWidgetsL( iParser->WidgetsScanL( iWidgetDBCache ) );
85
7feec50967db 201003_02
hgs
parents:
diff changeset
   105
    RemoveWidgetsL();
125
26079c1bb561 201039_01
hgs
parents: 119
diff changeset
   106
    MakeNotEmptyCollectionsVisibleL();
85
7feec50967db 201003_02
hgs
parents:
diff changeset
   107
    }
7feec50967db 201003_02
hgs
parents:
diff changeset
   108
7feec50967db 201003_02
hgs
parents:
diff changeset
   109
// ----------------------------------------------------------------------------
93
hgs
parents: 92
diff changeset
   110
//
85
7feec50967db 201003_02
hgs
parents:
diff changeset
   111
// ----------------------------------------------------------------------------
93
hgs
parents: 92
diff changeset
   112
//
85
7feec50967db 201003_02
hgs
parents:
diff changeset
   113
void CCaWidgetStorageHandler::AddL( const CCaWidgetDescription* aWidget )
7feec50967db 201003_02
hgs
parents:
diff changeset
   114
    {
7feec50967db 201003_02
hgs
parents:
diff changeset
   115
    CCaInnerEntry* entry = aWidget->GetEntryLC();
106
hgs
parents: 102
diff changeset
   116
    UpdateCompIdAndRemovableFlagL( aWidget->GetManifestFilePathName(), *entry );
85
7feec50967db 201003_02
hgs
parents:
diff changeset
   117
    iStorage->AddL( entry );
96
hgs
parents: 94
diff changeset
   118
hgs
parents: 94
diff changeset
   119
    SetLocalizationsL( aWidget, entry->GetId() );
98
hgs
parents: 96
diff changeset
   120
hgs
parents: 96
diff changeset
   121
    if ( entry->GetFlags() & ERemovable )
85
7feec50967db 201003_02
hgs
parents:
diff changeset
   122
        {
7feec50967db 201003_02
hgs
parents:
diff changeset
   123
        AddWidgetToDownloadCollectionL( entry );
7feec50967db 201003_02
hgs
parents:
diff changeset
   124
        }
7feec50967db 201003_02
hgs
parents:
diff changeset
   125
    CleanupStack::PopAndDestroy( entry );
7feec50967db 201003_02
hgs
parents:
diff changeset
   126
    }
7feec50967db 201003_02
hgs
parents:
diff changeset
   127
7feec50967db 201003_02
hgs
parents:
diff changeset
   128
// ----------------------------------------------------------------------------
93
hgs
parents: 92
diff changeset
   129
//
85
7feec50967db 201003_02
hgs
parents:
diff changeset
   130
// ----------------------------------------------------------------------------
93
hgs
parents: 92
diff changeset
   131
//
85
7feec50967db 201003_02
hgs
parents:
diff changeset
   132
void CCaWidgetStorageHandler::UpdateL( const CCaWidgetDescription* aWidget,
7feec50967db 201003_02
hgs
parents:
diff changeset
   133
        TUint aEntryId )
7feec50967db 201003_02
hgs
parents:
diff changeset
   134
    {
7feec50967db 201003_02
hgs
parents:
diff changeset
   135
    CCaInnerEntry* entry = aWidget->GetEntryLC();
106
hgs
parents: 102
diff changeset
   136
    UpdateCompIdAndRemovableFlagL( aWidget->GetManifestFilePathName(), *entry );
85
7feec50967db 201003_02
hgs
parents:
diff changeset
   137
    entry->SetId( aEntryId );
98
hgs
parents: 96
diff changeset
   138
    if ( !aWidget->IsMissing() && aWidget->IsUsed() )
85
7feec50967db 201003_02
hgs
parents:
diff changeset
   139
        {
7feec50967db 201003_02
hgs
parents:
diff changeset
   140
        entry->SetFlags( entry->GetFlags() & ~EUsed );
7feec50967db 201003_02
hgs
parents:
diff changeset
   141
        }
93
hgs
parents: 92
diff changeset
   142
    TItemAppearance itemAppearanceChange = EItemAppearanceNotChanged;
98
hgs
parents: 96
diff changeset
   143
    if ( ( entry->GetFlags() & EMissing ) || !( entry->GetFlags() & EVisible ) )
87
hgs
parents: 85
diff changeset
   144
        {
93
hgs
parents: 92
diff changeset
   145
        itemAppearanceChange = EItemAppeared;
87
hgs
parents: 85
diff changeset
   146
        }
93
hgs
parents: 92
diff changeset
   147
    entry->SetFlags( entry->GetFlags() & ~EMissing | EVisible );
hgs
parents: 92
diff changeset
   148
    iStorage->AddL( entry, EFalse, itemAppearanceChange );
98
hgs
parents: 96
diff changeset
   149
96
hgs
parents: 94
diff changeset
   150
    SetLocalizationsL( aWidget, entry->GetId() );
98
hgs
parents: 96
diff changeset
   151
106
hgs
parents: 102
diff changeset
   152
    if ( !aWidget->IsMissing() && ( entry->GetFlags() & ERemovable ) )
85
7feec50967db 201003_02
hgs
parents:
diff changeset
   153
        {
7feec50967db 201003_02
hgs
parents:
diff changeset
   154
        AddWidgetToDownloadCollectionL( entry );
7feec50967db 201003_02
hgs
parents:
diff changeset
   155
        }
7feec50967db 201003_02
hgs
parents:
diff changeset
   156
    CleanupStack::PopAndDestroy( entry );
7feec50967db 201003_02
hgs
parents:
diff changeset
   157
    }
7feec50967db 201003_02
hgs
parents:
diff changeset
   158
7feec50967db 201003_02
hgs
parents:
diff changeset
   159
// ----------------------------------------------------------------------------
93
hgs
parents: 92
diff changeset
   160
//
85
7feec50967db 201003_02
hgs
parents:
diff changeset
   161
// ----------------------------------------------------------------------------
93
hgs
parents: 92
diff changeset
   162
//
85
7feec50967db 201003_02
hgs
parents:
diff changeset
   163
void CCaWidgetStorageHandler::AddWidgetsL( const RWidgetArray& aWidgets )
7feec50967db 201003_02
hgs
parents:
diff changeset
   164
    {
107
hgs
parents: 106
diff changeset
   165
    const TInt newWidgetsCount = aWidgets.Count();
hgs
parents: 106
diff changeset
   166
    
hgs
parents: 106
diff changeset
   167
    for ( TInt i = 0; i < newWidgetsCount; ++i )
85
7feec50967db 201003_02
hgs
parents:
diff changeset
   168
        {
107
hgs
parents: 106
diff changeset
   169
        CCaWidgetDescription *const newWidget = aWidgets[i];
hgs
parents: 106
diff changeset
   170
        
hgs
parents: 106
diff changeset
   171
        newWidget->LocalizeTextsL();
hgs
parents: 106
diff changeset
   172
        
hgs
parents: 106
diff changeset
   173
        const TInt dbCacheIndex = 
hgs
parents: 106
diff changeset
   174
            iWidgetDBCache.Find( 
hgs
parents: 106
diff changeset
   175
                newWidget, CCaWidgetDescription::CompareUri );
hgs
parents: 106
diff changeset
   176
        
hgs
parents: 106
diff changeset
   177
        if ( dbCacheIndex != KErrNotFound )
85
7feec50967db 201003_02
hgs
parents:
diff changeset
   178
            {
107
hgs
parents: 106
diff changeset
   179
            CCaWidgetDescription *const cachedWidget = 
hgs
parents: 106
diff changeset
   180
                iWidgetDBCache[dbCacheIndex];
hgs
parents: 106
diff changeset
   181
            
hgs
parents: 106
diff changeset
   182
            cachedWidget->SetValid( ETrue );
hgs
parents: 106
diff changeset
   183
            
hgs
parents: 106
diff changeset
   184
            const TBool cachedDifferentThanNew = 
hgs
parents: 106
diff changeset
   185
                !cachedWidget->Compare( *newWidget );
hgs
parents: 106
diff changeset
   186
            
hgs
parents: 106
diff changeset
   187
            if ( cachedDifferentThanNew || cachedWidget->IsMissing() )
85
7feec50967db 201003_02
hgs
parents:
diff changeset
   188
                {
107
hgs
parents: 106
diff changeset
   189
                newWidget->SetFlag( EMissing, cachedWidget->IsMissing() );
hgs
parents: 106
diff changeset
   190
                newWidget->SetFlag( EUsed,  cachedWidget->IsUsed() );
hgs
parents: 106
diff changeset
   191
                newWidget->SetFlag( EVisible, cachedWidget->IsVisible() );
hgs
parents: 106
diff changeset
   192
                
hgs
parents: 106
diff changeset
   193
                UpdateL( newWidget, cachedWidget->GetEntryId() );
85
7feec50967db 201003_02
hgs
parents:
diff changeset
   194
                }
7feec50967db 201003_02
hgs
parents:
diff changeset
   195
            }
7feec50967db 201003_02
hgs
parents:
diff changeset
   196
        else
7feec50967db 201003_02
hgs
parents:
diff changeset
   197
            {
107
hgs
parents: 106
diff changeset
   198
            AddL( newWidget );
85
7feec50967db 201003_02
hgs
parents:
diff changeset
   199
            }
7feec50967db 201003_02
hgs
parents:
diff changeset
   200
        }
98
hgs
parents: 96
diff changeset
   201
    HbTextResolverSymbian::Init( _L(""), KLocalizationFilepathZ );
85
7feec50967db 201003_02
hgs
parents:
diff changeset
   202
    }
7feec50967db 201003_02
hgs
parents:
diff changeset
   203
7feec50967db 201003_02
hgs
parents:
diff changeset
   204
// ----------------------------------------------------------------------------
93
hgs
parents: 92
diff changeset
   205
//
85
7feec50967db 201003_02
hgs
parents:
diff changeset
   206
// ----------------------------------------------------------------------------
93
hgs
parents: 92
diff changeset
   207
//
85
7feec50967db 201003_02
hgs
parents:
diff changeset
   208
void CCaWidgetStorageHandler::RemoveWidgetsL()
7feec50967db 201003_02
hgs
parents:
diff changeset
   209
    {
107
hgs
parents: 106
diff changeset
   210
    const TInt cacheCount = iWidgetDBCache.Count();
hgs
parents: 106
diff changeset
   211
    for ( TInt i = 0; i < cacheCount; ++i)
85
7feec50967db 201003_02
hgs
parents:
diff changeset
   212
        {
107
hgs
parents: 106
diff changeset
   213
        CCaWidgetDescription *const cachedWidget = iWidgetDBCache[i];
hgs
parents: 106
diff changeset
   214
        if ( !cachedWidget->IsValid() )
85
7feec50967db 201003_02
hgs
parents:
diff changeset
   215
            {
107
hgs
parents: 106
diff changeset
   216
            if ( cachedWidget->GetMmcId() != KNullDesC )
85
7feec50967db 201003_02
hgs
parents:
diff changeset
   217
                {
93
hgs
parents: 92
diff changeset
   218
                RBuf currentMmcId;
hgs
parents: 92
diff changeset
   219
                currentMmcId.CreateL( KMassStorageIdLength );
hgs
parents: 92
diff changeset
   220
                currentMmcId.CleanupClosePushL();
hgs
parents: 92
diff changeset
   221
                WidgetScannerUtils::CurrentMmcId( iFs, currentMmcId );
107
hgs
parents: 106
diff changeset
   222
                if( cachedWidget->GetMmcId() == currentMmcId ||
hgs
parents: 106
diff changeset
   223
                        ( cachedWidget->GetMmcId() == KCaMassStorage() &&
93
hgs
parents: 92
diff changeset
   224
                        MassStorageNotInUse() ) )
hgs
parents: 92
diff changeset
   225
                    {
hgs
parents: 92
diff changeset
   226
                    //item was uninstalled so we remove its mmc id
107
hgs
parents: 106
diff changeset
   227
                    cachedWidget->RemoveMmcId();
hgs
parents: 106
diff changeset
   228
                    ClearVisibleFlagL( cachedWidget );
93
hgs
parents: 92
diff changeset
   229
                    }
hgs
parents: 92
diff changeset
   230
                else
hgs
parents: 92
diff changeset
   231
                    {
107
hgs
parents: 106
diff changeset
   232
                    SetMissingFlagL( cachedWidget );
93
hgs
parents: 92
diff changeset
   233
                    }
98
hgs
parents: 96
diff changeset
   234
                CleanupStack::PopAndDestroy( &currentMmcId );
85
7feec50967db 201003_02
hgs
parents:
diff changeset
   235
                }
7feec50967db 201003_02
hgs
parents:
diff changeset
   236
            else
7feec50967db 201003_02
hgs
parents:
diff changeset
   237
                {
93
hgs
parents: 92
diff changeset
   238
                //item was uninstalled so we remove its mmc id
107
hgs
parents: 106
diff changeset
   239
                ClearVisibleFlagL( cachedWidget );
85
7feec50967db 201003_02
hgs
parents:
diff changeset
   240
                }
7feec50967db 201003_02
hgs
parents:
diff changeset
   241
            }
7feec50967db 201003_02
hgs
parents:
diff changeset
   242
        }
7feec50967db 201003_02
hgs
parents:
diff changeset
   243
    }
7feec50967db 201003_02
hgs
parents:
diff changeset
   244
7feec50967db 201003_02
hgs
parents:
diff changeset
   245
// ----------------------------------------------------------------------------
93
hgs
parents: 92
diff changeset
   246
//
85
7feec50967db 201003_02
hgs
parents:
diff changeset
   247
// ----------------------------------------------------------------------------
93
hgs
parents: 92
diff changeset
   248
//
85
7feec50967db 201003_02
hgs
parents:
diff changeset
   249
void CCaWidgetStorageHandler::AddWidgetToDownloadCollectionL(
7feec50967db 201003_02
hgs
parents:
diff changeset
   250
        const CCaInnerEntry* aEntry )
7feec50967db 201003_02
hgs
parents:
diff changeset
   251
    {
7feec50967db 201003_02
hgs
parents:
diff changeset
   252
    CCaInnerQuery* queryDownload = CCaInnerQuery::NewLC();
7feec50967db 201003_02
hgs
parents:
diff changeset
   253
    CDesC16ArrayFlat* downloadType = new ( ELeave ) CDesC16ArrayFlat(
7feec50967db 201003_02
hgs
parents:
diff changeset
   254
            KGranularityOne );
7feec50967db 201003_02
hgs
parents:
diff changeset
   255
    CleanupStack::PushL( downloadType );
7feec50967db 201003_02
hgs
parents:
diff changeset
   256
    downloadType->AppendL( KCaTypeCollectionDownload );
7feec50967db 201003_02
hgs
parents:
diff changeset
   257
    queryDownload->SetEntryTypeNames( downloadType );//query takes ownership
7feec50967db 201003_02
hgs
parents:
diff changeset
   258
    CleanupStack::Pop( downloadType );
7feec50967db 201003_02
hgs
parents:
diff changeset
   259
    queryDownload->SetRole( EGroupEntryRole );
7feec50967db 201003_02
hgs
parents:
diff changeset
   260
7feec50967db 201003_02
hgs
parents:
diff changeset
   261
    RArray<TInt> idsGroup;
7feec50967db 201003_02
hgs
parents:
diff changeset
   262
    CleanupClosePushL( idsGroup );
7feec50967db 201003_02
hgs
parents:
diff changeset
   263
    iStorage->GetEntriesIdsL( queryDownload, idsGroup );
7feec50967db 201003_02
hgs
parents:
diff changeset
   264
7feec50967db 201003_02
hgs
parents:
diff changeset
   265
    TCaOperationParams operParams;
7feec50967db 201003_02
hgs
parents:
diff changeset
   266
    operParams.iOperationType = TCaOperationParams::EPrepend;
7feec50967db 201003_02
hgs
parents:
diff changeset
   267
    operParams.iGroupId = idsGroup[0];
7feec50967db 201003_02
hgs
parents:
diff changeset
   268
    operParams.iBeforeEntryId = 0;
7feec50967db 201003_02
hgs
parents:
diff changeset
   269
    CleanupStack::PopAndDestroy( &idsGroup );
7feec50967db 201003_02
hgs
parents:
diff changeset
   270
7feec50967db 201003_02
hgs
parents:
diff changeset
   271
    RArray<TInt> idsEntry;
7feec50967db 201003_02
hgs
parents:
diff changeset
   272
    CleanupClosePushL( idsEntry );
7feec50967db 201003_02
hgs
parents:
diff changeset
   273
    idsEntry.Append( aEntry->GetId() );
7feec50967db 201003_02
hgs
parents:
diff changeset
   274
    iStorage->OrganizeL( idsEntry, operParams );
7feec50967db 201003_02
hgs
parents:
diff changeset
   275
7feec50967db 201003_02
hgs
parents:
diff changeset
   276
    CleanupStack::PopAndDestroy( &idsEntry );
7feec50967db 201003_02
hgs
parents:
diff changeset
   277
    CleanupStack::PopAndDestroy( queryDownload );
7feec50967db 201003_02
hgs
parents:
diff changeset
   278
    }
7feec50967db 201003_02
hgs
parents:
diff changeset
   279
7feec50967db 201003_02
hgs
parents:
diff changeset
   280
// ----------------------------------------------------------------------------
93
hgs
parents: 92
diff changeset
   281
//
85
7feec50967db 201003_02
hgs
parents:
diff changeset
   282
// ----------------------------------------------------------------------------
93
hgs
parents: 92
diff changeset
   283
//
85
7feec50967db 201003_02
hgs
parents:
diff changeset
   284
void CCaWidgetStorageHandler::FetchWidgetsL()
7feec50967db 201003_02
hgs
parents:
diff changeset
   285
    {
7feec50967db 201003_02
hgs
parents:
diff changeset
   286
    CCaInnerQuery* query = CCaInnerQuery::NewLC();
7feec50967db 201003_02
hgs
parents:
diff changeset
   287
    CDesC16ArrayFlat* widgetType = new ( ELeave ) CDesC16ArrayFlat(
7feec50967db 201003_02
hgs
parents:
diff changeset
   288
            KGranularityOne );
7feec50967db 201003_02
hgs
parents:
diff changeset
   289
    CleanupStack::PushL( widgetType );
7feec50967db 201003_02
hgs
parents:
diff changeset
   290
    widgetType->AppendL( KCaTypeWidget );
7feec50967db 201003_02
hgs
parents:
diff changeset
   291
    query->SetEntryTypeNames( widgetType );//transfers ownership to query
7feec50967db 201003_02
hgs
parents:
diff changeset
   292
    CleanupStack::Pop( widgetType );
7feec50967db 201003_02
hgs
parents:
diff changeset
   293
7feec50967db 201003_02
hgs
parents:
diff changeset
   294
    RPointerArray<CCaInnerEntry> entries;
7feec50967db 201003_02
hgs
parents:
diff changeset
   295
    CleanupResetAndDestroyPushL( entries );
7feec50967db 201003_02
hgs
parents:
diff changeset
   296
    iStorage->GetEntriesL( query, entries );
98
hgs
parents: 96
diff changeset
   297
107
hgs
parents: 106
diff changeset
   298
    iWidgetDBCache.ResetAndDestroy();
98
hgs
parents: 96
diff changeset
   299
    for ( TInt i = 0; i < entries.Count(); i++ )
85
7feec50967db 201003_02
hgs
parents:
diff changeset
   300
        {
98
hgs
parents: 96
diff changeset
   301
        CCaWidgetDescription* widget = CCaWidgetDescription::NewLC( entries[i] );
107
hgs
parents: 106
diff changeset
   302
        iWidgetDBCache.AppendL( widget ); //iWidgets takes ownership
85
7feec50967db 201003_02
hgs
parents:
diff changeset
   303
        CleanupStack::Pop( widget );
7feec50967db 201003_02
hgs
parents:
diff changeset
   304
        }
7feec50967db 201003_02
hgs
parents:
diff changeset
   305
    CleanupStack::PopAndDestroy( &entries );
7feec50967db 201003_02
hgs
parents:
diff changeset
   306
    CleanupStack::PopAndDestroy( query );
7feec50967db 201003_02
hgs
parents:
diff changeset
   307
    }
7feec50967db 201003_02
hgs
parents:
diff changeset
   308
7feec50967db 201003_02
hgs
parents:
diff changeset
   309
// ----------------------------------------------------------------------------
93
hgs
parents: 92
diff changeset
   310
//
85
7feec50967db 201003_02
hgs
parents:
diff changeset
   311
// ----------------------------------------------------------------------------
93
hgs
parents: 92
diff changeset
   312
//
85
7feec50967db 201003_02
hgs
parents:
diff changeset
   313
void CCaWidgetStorageHandler::SetMissingFlagL(
7feec50967db 201003_02
hgs
parents:
diff changeset
   314
        const CCaWidgetDescription* aWidget )
7feec50967db 201003_02
hgs
parents:
diff changeset
   315
    {
98
hgs
parents: 96
diff changeset
   316
    if ( !aWidget->IsMissing() )
87
hgs
parents: 85
diff changeset
   317
        {
93
hgs
parents: 92
diff changeset
   318
        CCaInnerEntry* entry = aWidget->GetEntryLC();
98
hgs
parents: 96
diff changeset
   319
        entry->SetFlags( ( entry->GetFlags() | EMissing ) & ~EUninstall );
hgs
parents: 96
diff changeset
   320
        if ( aWidget->IsUsed() )
93
hgs
parents: 92
diff changeset
   321
            {
hgs
parents: 92
diff changeset
   322
            entry->SetFlags( entry->GetFlags() | EUsed );
hgs
parents: 92
diff changeset
   323
            }
hgs
parents: 92
diff changeset
   324
        iStorage->AddL( entry, EFalse, EItemDisappeared );
hgs
parents: 92
diff changeset
   325
        CleanupStack::PopAndDestroy( entry );
87
hgs
parents: 85
diff changeset
   326
        }
85
7feec50967db 201003_02
hgs
parents:
diff changeset
   327
    }
7feec50967db 201003_02
hgs
parents:
diff changeset
   328
93
hgs
parents: 92
diff changeset
   329
// ----------------------------------------------------------------------------
hgs
parents: 92
diff changeset
   330
//
hgs
parents: 92
diff changeset
   331
// ----------------------------------------------------------------------------
hgs
parents: 92
diff changeset
   332
//
hgs
parents: 92
diff changeset
   333
void CCaWidgetStorageHandler::ClearVisibleFlagL(
hgs
parents: 92
diff changeset
   334
        const CCaWidgetDescription* aWidget )
hgs
parents: 92
diff changeset
   335
    {
98
hgs
parents: 96
diff changeset
   336
    if ( aWidget->IsVisible() )
hgs
parents: 96
diff changeset
   337
        {
hgs
parents: 96
diff changeset
   338
        CCaInnerEntry* entry = aWidget->GetEntryLC();
hgs
parents: 96
diff changeset
   339
        entry->SetFlags( entry->GetFlags()
hgs
parents: 96
diff changeset
   340
                & ~EUninstall
hgs
parents: 96
diff changeset
   341
                & ~EVisible 
hgs
parents: 96
diff changeset
   342
                & ~EMissing 
hgs
parents: 96
diff changeset
   343
                & ~EUsed );
hgs
parents: 96
diff changeset
   344
        iStorage->AddL( entry, EFalse, EItemDisappeared );
hgs
parents: 96
diff changeset
   345
        CleanupStack::PopAndDestroy( entry );
hgs
parents: 96
diff changeset
   346
        }
93
hgs
parents: 92
diff changeset
   347
    }
hgs
parents: 92
diff changeset
   348
hgs
parents: 92
diff changeset
   349
// ----------------------------------------------------------------------------
hgs
parents: 92
diff changeset
   350
//
hgs
parents: 92
diff changeset
   351
// ----------------------------------------------------------------------------
hgs
parents: 92
diff changeset
   352
//
hgs
parents: 92
diff changeset
   353
TBool CCaWidgetStorageHandler::MassStorageNotInUse()
hgs
parents: 92
diff changeset
   354
    {
hgs
parents: 92
diff changeset
   355
    TBool massStorageNotInUse( ETrue );
hgs
parents: 92
diff changeset
   356
    TInt drive;
119
hgs
parents: 107
diff changeset
   357
    if( DriveInfo::GetDefaultDrive( 
hgs
parents: 107
diff changeset
   358
            DriveInfo::EDefaultMassStorage, drive ) == KErrNone )
93
hgs
parents: 92
diff changeset
   359
        {
119
hgs
parents: 107
diff changeset
   360
        TVolumeInfo volumeInfo;
hgs
parents: 107
diff changeset
   361
        if( iFs.Volume( volumeInfo, drive ) == KErrNotReady )
93
hgs
parents: 92
diff changeset
   362
            {
hgs
parents: 92
diff changeset
   363
            massStorageNotInUse = EFalse;
hgs
parents: 92
diff changeset
   364
            }
hgs
parents: 92
diff changeset
   365
        }
hgs
parents: 92
diff changeset
   366
    return massStorageNotInUse;
hgs
parents: 92
diff changeset
   367
    }
96
hgs
parents: 94
diff changeset
   368
// ----------------------------------------------------------------------------
hgs
parents: 94
diff changeset
   369
//
hgs
parents: 94
diff changeset
   370
// ----------------------------------------------------------------------------
hgs
parents: 94
diff changeset
   371
//
98
hgs
parents: 96
diff changeset
   372
void CCaWidgetStorageHandler::SetLocalizationsL(
hgs
parents: 96
diff changeset
   373
        const CCaWidgetDescription* aWidget, TInt aEntryId )
96
hgs
parents: 94
diff changeset
   374
    {
hgs
parents: 94
diff changeset
   375
    RBuf filename;
99
hgs
parents: 98
diff changeset
   376
    filename.CreateL( aWidget->GetTranslationFileName().Length() + 1 ); //1 for _
96
hgs
parents: 94
diff changeset
   377
    CleanupClosePushL( filename );
99
hgs
parents: 98
diff changeset
   378
    filename.Copy( aWidget->GetTranslationFileName() );
96
hgs
parents: 94
diff changeset
   379
    filename.Append( KWidgetScannerUnderline );
98
hgs
parents: 96
diff changeset
   380
96
hgs
parents: 94
diff changeset
   381
    // prepare localizations
98
hgs
parents: 96
diff changeset
   382
    if ( aWidget->GetTitle().Length() > 0 && aWidget->GetTitle().Compare(
hgs
parents: 96
diff changeset
   383
            aWidget->GetStringIdTitle() ) )
hgs
parents: 96
diff changeset
   384
    // lets do not add localization when key and value are identical
96
hgs
parents: 94
diff changeset
   385
        {
hgs
parents: 94
diff changeset
   386
        CCaLocalizationEntry* titleEntry = CCaLocalizationEntry::NewL();
hgs
parents: 94
diff changeset
   387
        CleanupStack::PushL( titleEntry );
98
hgs
parents: 96
diff changeset
   388
        titleEntry->SetTableNameL( KLocalizationCaEntry );
hgs
parents: 96
diff changeset
   389
        titleEntry->SetAttributeNameL( KLocalizationEnText );
96
hgs
parents: 94
diff changeset
   390
        titleEntry->SetStringIdL( aWidget->GetStringIdTitle() );
hgs
parents: 94
diff changeset
   391
        titleEntry->SetQmFilenameL( filename );
hgs
parents: 94
diff changeset
   392
        titleEntry->SetRowId( aEntryId );
hgs
parents: 94
diff changeset
   393
        iStorage->AddLocalizationL( *titleEntry );
hgs
parents: 94
diff changeset
   394
        CleanupStack::PopAndDestroy( titleEntry );
hgs
parents: 94
diff changeset
   395
        }
hgs
parents: 94
diff changeset
   396
    if ( aWidget->GetDescription().Length() > 0 &&
hgs
parents: 94
diff changeset
   397
            aWidget->GetDescription().Compare(
hgs
parents: 94
diff changeset
   398
                    aWidget->GetStringIdDescription() ) )
98
hgs
parents: 96
diff changeset
   399
    // lets do not add localization when key and value are identical
96
hgs
parents: 94
diff changeset
   400
        {
hgs
parents: 94
diff changeset
   401
        CCaLocalizationEntry* descEntry = CCaLocalizationEntry::NewL();
hgs
parents: 94
diff changeset
   402
        CleanupStack::PushL( descEntry );
98
hgs
parents: 96
diff changeset
   403
        descEntry->SetTableNameL( KLocalizationCaEntry );
hgs
parents: 96
diff changeset
   404
        descEntry->SetAttributeNameL( KLocalizationEnDescription );
96
hgs
parents: 94
diff changeset
   405
        descEntry->SetStringIdL( aWidget->GetStringIdDescription() );
hgs
parents: 94
diff changeset
   406
        descEntry->SetQmFilenameL( filename );
hgs
parents: 94
diff changeset
   407
        descEntry->SetRowId( aEntryId );
hgs
parents: 94
diff changeset
   408
        iStorage->AddLocalizationL( *descEntry );
hgs
parents: 94
diff changeset
   409
        CleanupStack::PopAndDestroy( descEntry );
hgs
parents: 94
diff changeset
   410
        }
hgs
parents: 94
diff changeset
   411
    CleanupStack::PopAndDestroy( &filename );
hgs
parents: 94
diff changeset
   412
    }
93
hgs
parents: 92
diff changeset
   413
94
hgs
parents: 93
diff changeset
   414
// ----------------------------------------------------------------------------
hgs
parents: 93
diff changeset
   415
//
hgs
parents: 93
diff changeset
   416
// ----------------------------------------------------------------------------
hgs
parents: 93
diff changeset
   417
//
106
hgs
parents: 102
diff changeset
   418
void CCaWidgetStorageHandler::UpdateCompIdAndRemovableFlagL(
98
hgs
parents: 96
diff changeset
   419
        const TDesC& aManifestFilePathName, CCaInnerEntry& aEntry ) const
94
hgs
parents: 93
diff changeset
   420
    {
hgs
parents: 93
diff changeset
   421
    RArray<TComponentId> componentIds;
hgs
parents: 93
diff changeset
   422
    CleanupClosePushL( componentIds );
98
hgs
parents: 96
diff changeset
   423
94
hgs
parents: 93
diff changeset
   424
    CComponentFilter* const fileNameFilter = CComponentFilter::NewLC();
hgs
parents: 93
diff changeset
   425
    fileNameFilter->SetFileL( aManifestFilePathName );
hgs
parents: 93
diff changeset
   426
    iSoftwareRegistry.GetComponentIdsL( componentIds, fileNameFilter );
hgs
parents: 93
diff changeset
   427
hgs
parents: 93
diff changeset
   428
    CleanupStack::PopAndDestroy( fileNameFilter );
98
hgs
parents: 96
diff changeset
   429
106
hgs
parents: 102
diff changeset
   430
    if( componentIds.Count() == 1 )
94
hgs
parents: 93
diff changeset
   431
        {
hgs
parents: 93
diff changeset
   432
        RBuf newComponentId;
hgs
parents: 93
diff changeset
   433
        newComponentId.CleanupClosePushL();
hgs
parents: 93
diff changeset
   434
        newComponentId.CreateL( sizeof(TComponentId) + 1 );
hgs
parents: 93
diff changeset
   435
        newComponentId.AppendNum( componentIds[0] );
98
hgs
parents: 96
diff changeset
   436
94
hgs
parents: 93
diff changeset
   437
        RBuf oldComponentId;
hgs
parents: 93
diff changeset
   438
        oldComponentId.CleanupClosePushL();
hgs
parents: 93
diff changeset
   439
        oldComponentId.CreateL( KCaMaxAttrValueLen );
98
hgs
parents: 96
diff changeset
   440
hgs
parents: 96
diff changeset
   441
        const TBool componentIdAttributeFound = aEntry.FindAttribute(
hgs
parents: 96
diff changeset
   442
                KCaComponentId, oldComponentId );
hgs
parents: 96
diff changeset
   443
106
hgs
parents: 102
diff changeset
   444
        if( !componentIdAttributeFound || oldComponentId.Compare(
98
hgs
parents: 96
diff changeset
   445
                newComponentId ) != 0 )
94
hgs
parents: 93
diff changeset
   446
            {
hgs
parents: 93
diff changeset
   447
            // 'add' or 'update' the component id attribute value
98
hgs
parents: 96
diff changeset
   448
            aEntry.AddAttributeL( KCaComponentId, newComponentId );
94
hgs
parents: 93
diff changeset
   449
            }
106
hgs
parents: 102
diff changeset
   450
        CComponentEntry* entry = CComponentEntry::NewLC();
hgs
parents: 102
diff changeset
   451
        iSoftwareRegistry.GetComponentL( componentIds[0] , *entry );
hgs
parents: 102
diff changeset
   452
        if( entry->IsRemovable() )
hgs
parents: 102
diff changeset
   453
            {
hgs
parents: 102
diff changeset
   454
            aEntry.SetFlags( aEntry.GetFlags() | ERemovable );
hgs
parents: 102
diff changeset
   455
            }
hgs
parents: 102
diff changeset
   456
        CleanupStack::PopAndDestroy( entry );
94
hgs
parents: 93
diff changeset
   457
        CleanupStack::PopAndDestroy( &oldComponentId );
hgs
parents: 93
diff changeset
   458
        CleanupStack::PopAndDestroy( &newComponentId );
hgs
parents: 93
diff changeset
   459
        }
hgs
parents: 93
diff changeset
   460
hgs
parents: 93
diff changeset
   461
    CleanupStack::PopAndDestroy( &componentIds );
hgs
parents: 93
diff changeset
   462
    }
hgs
parents: 93
diff changeset
   463
125
26079c1bb561 201039_01
hgs
parents: 119
diff changeset
   464
// ---------------------------------------------------------
26079c1bb561 201039_01
hgs
parents: 119
diff changeset
   465
//
26079c1bb561 201039_01
hgs
parents: 119
diff changeset
   466
// ---------------------------------------------------------
26079c1bb561 201039_01
hgs
parents: 119
diff changeset
   467
//
26079c1bb561 201039_01
hgs
parents: 119
diff changeset
   468
void CCaWidgetStorageHandler::MakeNotEmptyCollectionsVisibleL()
26079c1bb561 201039_01
hgs
parents: 119
diff changeset
   469
    {
26079c1bb561 201039_01
hgs
parents: 119
diff changeset
   470
    RPointerArray<CCaInnerEntry> resultArray;
26079c1bb561 201039_01
hgs
parents: 119
diff changeset
   471
    CleanupResetAndDestroyPushL( resultArray );
26079c1bb561 201039_01
hgs
parents: 119
diff changeset
   472
    CCaInnerQuery* hiddenCollectionsQuery = CCaInnerQuery::NewLC();
26079c1bb561 201039_01
hgs
parents: 119
diff changeset
   473
    CDesC16ArrayFlat* entryType = new ( ELeave ) CDesC16ArrayFlat(
26079c1bb561 201039_01
hgs
parents: 119
diff changeset
   474
            KGranularityOne );
26079c1bb561 201039_01
hgs
parents: 119
diff changeset
   475
    CleanupStack::PushL( entryType );
26079c1bb561 201039_01
hgs
parents: 119
diff changeset
   476
    entryType->AppendL( KCaTypeCollection );
26079c1bb561 201039_01
hgs
parents: 119
diff changeset
   477
    hiddenCollectionsQuery->SetEntryTypeNames( entryType );
26079c1bb561 201039_01
hgs
parents: 119
diff changeset
   478
    hiddenCollectionsQuery->SetFlagsOff( EVisible );
26079c1bb561 201039_01
hgs
parents: 119
diff changeset
   479
    iStorage->GetEntriesL( hiddenCollectionsQuery, resultArray );
26079c1bb561 201039_01
hgs
parents: 119
diff changeset
   480
    CleanupStack::Pop( entryType );
26079c1bb561 201039_01
hgs
parents: 119
diff changeset
   481
    CleanupStack::PopAndDestroy( hiddenCollectionsQuery );
26079c1bb561 201039_01
hgs
parents: 119
diff changeset
   482
    if( resultArray.Count()>0 )
26079c1bb561 201039_01
hgs
parents: 119
diff changeset
   483
        {
26079c1bb561 201039_01
hgs
parents: 119
diff changeset
   484
        for( TInt i=0; i<resultArray.Count(); i++ )
26079c1bb561 201039_01
hgs
parents: 119
diff changeset
   485
            {
26079c1bb561 201039_01
hgs
parents: 119
diff changeset
   486
            // for any not visible collection
26079c1bb561 201039_01
hgs
parents: 119
diff changeset
   487
            MakeCollectionVisibleIfHasVisibleEntryL( resultArray[i] );
26079c1bb561 201039_01
hgs
parents: 119
diff changeset
   488
            }
26079c1bb561 201039_01
hgs
parents: 119
diff changeset
   489
        }
26079c1bb561 201039_01
hgs
parents: 119
diff changeset
   490
    CleanupStack::PopAndDestroy( &resultArray );
26079c1bb561 201039_01
hgs
parents: 119
diff changeset
   491
   }
26079c1bb561 201039_01
hgs
parents: 119
diff changeset
   492
26079c1bb561 201039_01
hgs
parents: 119
diff changeset
   493
// ---------------------------------------------------------
26079c1bb561 201039_01
hgs
parents: 119
diff changeset
   494
//
26079c1bb561 201039_01
hgs
parents: 119
diff changeset
   495
// ---------------------------------------------------------
26079c1bb561 201039_01
hgs
parents: 119
diff changeset
   496
//
26079c1bb561 201039_01
hgs
parents: 119
diff changeset
   497
void CCaWidgetStorageHandler::MakeCollectionVisibleIfHasVisibleEntryL(
26079c1bb561 201039_01
hgs
parents: 119
diff changeset
   498
        CCaInnerEntry* aEntry )
26079c1bb561 201039_01
hgs
parents: 119
diff changeset
   499
    {
26079c1bb561 201039_01
hgs
parents: 119
diff changeset
   500
    RPointerArray<CCaInnerEntry> resultEntriesArray;
26079c1bb561 201039_01
hgs
parents: 119
diff changeset
   501
    CleanupResetAndDestroyPushL( resultEntriesArray );
26079c1bb561 201039_01
hgs
parents: 119
diff changeset
   502
    CCaInnerQuery* visibleEntriesQuery = CCaInnerQuery::NewLC();
26079c1bb561 201039_01
hgs
parents: 119
diff changeset
   503
    visibleEntriesQuery->SetParentId( aEntry->GetId() );
26079c1bb561 201039_01
hgs
parents: 119
diff changeset
   504
    visibleEntriesQuery->SetFlagsOn( EVisible );
26079c1bb561 201039_01
hgs
parents: 119
diff changeset
   505
    visibleEntriesQuery->SetFlagsOff( EMissing );
26079c1bb561 201039_01
hgs
parents: 119
diff changeset
   506
    iStorage->GetEntriesL( visibleEntriesQuery, resultEntriesArray );
26079c1bb561 201039_01
hgs
parents: 119
diff changeset
   507
    if( resultEntriesArray.Count()>0 )
26079c1bb561 201039_01
hgs
parents: 119
diff changeset
   508
        {
26079c1bb561 201039_01
hgs
parents: 119
diff changeset
   509
        // set collection visible if hidden
26079c1bb561 201039_01
hgs
parents: 119
diff changeset
   510
        if( !( aEntry->GetFlags() & EVisible ) )
26079c1bb561 201039_01
hgs
parents: 119
diff changeset
   511
            {
26079c1bb561 201039_01
hgs
parents: 119
diff changeset
   512
            aEntry->SetFlags( aEntry->GetFlags() | EVisible );
26079c1bb561 201039_01
hgs
parents: 119
diff changeset
   513
            // update here this collection
26079c1bb561 201039_01
hgs
parents: 119
diff changeset
   514
            iStorage->AddL( aEntry );
26079c1bb561 201039_01
hgs
parents: 119
diff changeset
   515
            }
26079c1bb561 201039_01
hgs
parents: 119
diff changeset
   516
        }
26079c1bb561 201039_01
hgs
parents: 119
diff changeset
   517
    CleanupStack::PopAndDestroy( visibleEntriesQuery );
26079c1bb561 201039_01
hgs
parents: 119
diff changeset
   518
    CleanupStack::PopAndDestroy( &resultEntriesArray );
26079c1bb561 201039_01
hgs
parents: 119
diff changeset
   519
    }
26079c1bb561 201039_01
hgs
parents: 119
diff changeset
   520
93
hgs
parents: 92
diff changeset
   521
//  End of File