omacpadapters/WAPAdapter/Src/CWPWAPBrowserItem.cpp
author hgs
Fri, 15 Oct 2010 11:39:02 +0530
changeset 67 fdbfe0a95492
parent 47 d316aecb87fd
permissions -rw-r--r--
201041
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
47
d316aecb87fd 201025_02
hgs
parents:
diff changeset
     1
/*
d316aecb87fd 201025_02
hgs
parents:
diff changeset
     2
* Copyright (c) 2002-2006 Nokia Corporation and/or its subsidiary(-ies). 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
     3
* All rights reserved.
d316aecb87fd 201025_02
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
d316aecb87fd 201025_02
hgs
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
d316aecb87fd 201025_02
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
d316aecb87fd 201025_02
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
d316aecb87fd 201025_02
hgs
parents:
diff changeset
     8
*
d316aecb87fd 201025_02
hgs
parents:
diff changeset
     9
* Initial Contributors:
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    11
*
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    12
* Contributors:
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    13
*
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    14
* Description:  One browser setting item.
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    15
*
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    16
*/
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    17
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    18
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    19
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    20
// INCLUDE FILES
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    21
#include <e32base.h>
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    22
#include <msvapi.h>
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    23
#include <CWPCharacteristic.h>
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    24
#include <CWPParameter.h>
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    25
#include <CWPAdapter.h>
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    26
#include <centralrepository.h>
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    27
#include <browseruisdkcrkeys.h>
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    28
#include "CWPWAPBrowserItem.h"
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    29
#include "WPWAPItemFactory.h"
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    30
#include "ProvisioningDebug.h"
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    31
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    32
// CONSTANTS
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    33
/// Delay to wait for WmlBrowser to catch up with changes in CommsDb. Microseconds.
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    34
const TInt KWmlDelay = 4*500000;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    35
// Force browser to use User Defined AP
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    36
const TInt KUserDefined = 0;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    37
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    38
// -----------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    39
// CWPWAPBrowserItem::CWPWAPBrowserItem
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    40
// C++ default constructor can NOT contain any code, that
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    41
// might leave.
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    42
// -----------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    43
//
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    44
CWPWAPBrowserItem::CWPWAPBrowserItem( TBool aFirst,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    45
                                      const TDesC& aTitle,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    46
                                      const TDesC& aBookmarkTitle,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    47
                                      const TDesC& aDefaultName, 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    48
                                      const TDesC& aDefaultBookmarkName,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    49
                                      CWPCharacteristic& aCharacteristic, 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    50
                                      CCommsDatabase*& aCommsDb, 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    51
                                      RCmManagerExt*& aCmManager,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    52
                                      RFavouritesDb aBookmarkDb 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    53
                                    )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    54
                                    : CWPWAPItemBase( aTitle,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    55
                                                      aDefaultName, 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    56
                                                      aCharacteristic, 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    57
                                                      aCommsDb, 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    58
                                                      aCmManager ), 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    59
                                    iDefaultBookmarkName( aDefaultBookmarkName ),
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    60
                                    iBookmarkTitle( aBookmarkTitle ), 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    61
                                    iDb( aBookmarkDb ),
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    62
                                    iFirst( aFirst )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    63
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    64
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    65
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    66
// -----------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    67
// CWPWAPBrowserItem::ConstructL
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    68
// Symbian 2nd phase constructor can leave.
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    69
// -----------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    70
//
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    71
void CWPWAPBrowserItem::ConstructL()
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    72
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    73
    BaseConstructL();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    74
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    75
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    76
// -----------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    77
// CWPWAPBrowserItem::NewL
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    78
// Two-phased constructor.
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    79
// -----------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    80
//
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    81
CWPWAPBrowserItem* CWPWAPBrowserItem::NewL( TBool aFirst,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    82
                                            const TDesC& aTitle, 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    83
                                            const TDesC& aBookmarkTitle,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    84
                                            const TDesC& aDefaultName,  
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    85
                                            const TDesC& aDefaultBookmarkName,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    86
                                            CWPCharacteristic& aCharacteristic, 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    87
                                            CCommsDatabase*& aCommsDb, 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    88
                                            RCmManagerExt*& aCmManager,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    89
                                            RFavouritesDb aBookmarkDb
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    90
                                            )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    91
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    92
    CWPWAPBrowserItem* self = new(ELeave) CWPWAPBrowserItem( aFirst,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    93
                                                             aTitle, 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    94
                                                             aBookmarkTitle, 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    95
                                                             aDefaultName, 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    96
                                                             aDefaultBookmarkName,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    97
                                                             aCharacteristic, 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    98
                                                             aCommsDb, 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
    99
                                                             aCmManager, 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   100
                                                             aBookmarkDb ); 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   101
    CleanupStack::PushL(self);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   102
    self->ConstructL();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   103
    CleanupStack::Pop(self);
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   104
    return self;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   105
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   106
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   107
// -----------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   108
// Destructor
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   109
// -----------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   110
CWPWAPBrowserItem::~CWPWAPBrowserItem()
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   111
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   112
    iBookmarks.ResetAndDestroy();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   113
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   114
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   115
// -----------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   116
// CWPWAPBrowserItem::SaveL
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   117
// -----------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   118
//
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   119
void CWPWAPBrowserItem::SaveL()
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   120
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   121
    CreateDbL();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   122
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   123
    TPckg<TUint32> uid( iUID );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   124
    // Check if the iLink->Data() contains an item of the same size as uid. 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   125
    // This is an extra check to ensure that iLink->Data() contains a packaged
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   126
    // TUin32.
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   127
    if( iLink && iLink->Data().Length() == uid.MaxLength() )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   128
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   129
        uid.Copy( iLink->Data() );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   130
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   131
    RCmConnectionMethodExt cm;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   132
    cm = iCmManager->ConnectionMethodL( iUID );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   133
    CleanupClosePushL( cm );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   134
    if( iAddr )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   135
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   136
        // Update the access point startpage
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   137
        WriteHomePageL( cm );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   138
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   139
    CleanupStack::PopAndDestroy(); // cm
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   140
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   141
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   142
// -----------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   143
// CWPWAPBrowserItem::CanSetAsDefault
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   144
// -----------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   145
//
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   146
TBool CWPWAPBrowserItem::CanSetAsDefault() const
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   147
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   148
    return iUID != KWPWAPNoUID;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   149
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   150
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   151
// -----------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   152
// CWPWAPBrowserItem::SetAsDefaultL
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   153
// -----------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   154
//
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   155
void CWPWAPBrowserItem::SetAsDefaultL()
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   156
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   157
    FLOG( _L( "[Provisioning] CWPWAPBrowserItem::SetAsDefaultL:" ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   158
    
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   159
  /*  CreateDbL();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   160
    TRAPD( err, iAPHandler->SetAsDefaultL( (TInt)iUID, EIspTypeWAPOnly) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   161
    if( err == KErrLocked )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   162
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   163
        err = EWPCommsDBLocked;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   164
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   165
    // This function need to leave at the end of the function
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   166
    // otherwise we dont set the default AP when db is locked
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   167
    //User::LeaveIfError( err );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   168
    
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   169
    // There's some delay before the WmlBrowser can find the stored 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   170
    // accesspoint from CommsDb so therefore we wait for a while before
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   171
    // telling the WmlBrowser that default accesspoint should be changed.
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   172
    // The value 500000 is chosen just by trying out.
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   173
    User::After( KWmlDelay );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   174
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   175
    CRepository* repository = CRepository::NewLC( KCRUidBrowser );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   176
    FTRACE(RDebug::Print(
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   177
                _L("[Provisioning] CWPWAPBrowserItem::SetAsDefaultL: AP:(%d)"),
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   178
                                                                  (TInt)iUID));
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   179
    
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   180
    // Force the browser to use the User Defined AP selection mode.
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   181
    User::LeaveIfError( repository->Set( KBrowserAccessPointSelectionMode,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   182
                                         KUserDefined ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   183
    // This sets the accesspoint default for browser.
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   184
    User::LeaveIfError( repository->Set( KBrowserDefaultAccessPoint,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   185
                                         (TInt)iUID ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   186
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   187
    //Set the HomePage to default
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   188
    if(iUID)
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   189
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   190
        User::LeaveIfError( repository->Set( KBrowserNGHomepageType, EBrowserCenRepAccessPoint) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   191
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   192
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   193
    CleanupStack::PopAndDestroy(); // repository
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   194
    FLOG( _L( "[Provisioning] CWPWAPBrowserItem::SetAsDefaultL: Set Done" ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   195
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   196
    User::LeaveIfError( err );*/
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   197
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   198
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   199
// -----------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   200
// CWPWAPBrowserItem::ValidateL
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   201
// -----------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   202
//
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   203
TBool CWPWAPBrowserItem::ValidateL()
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   204
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   205
    return iLink != NULL;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   206
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   207
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   208
// -----------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   209
// CWPWAPBrowserItem::ResourceL
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   210
// -----------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   211
//
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   212
void CWPWAPBrowserItem::ResourceL( CWPCharacteristic& aResource )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   213
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   214
    MWPWAPItemBase* item = WPWAPItemFactory::CreateBookmarkLC( 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   215
                                                          iBookmarkTitle, 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   216
                                                          iDefaultBookmarkName,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   217
                                                          aResource, 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   218
                                                          iLink, 
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   219
                                                          iDb );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   220
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   221
    if( item->CanSetAsDefault() && !iAddr )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   222
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   223
        iAddr = item->Address().AllocL();
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   224
        CleanupStack::PopAndDestroy(); // item
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   225
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   226
    else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   227
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   228
        User::LeaveIfError( iBookmarks.Append( item ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   229
        CleanupStack::Pop(); // item
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   230
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   231
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   232
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   233
// -----------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   234
// CWPWAPBrowserItem::AddL
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   235
// -----------------------------------------------------------------------------
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   236
//
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   237
void CWPWAPBrowserItem::AddL( RPointerArray<MWPWAPItemBase>& aShownItems,
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   238
                              RPointerArray<MWPWAPItemBase>& aHiddenItems )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   239
    {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   240
    for( TInt i( iBookmarks.Count()-1 ); i >= 0 ; i-- )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   241
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   242
        MWPWAPItemBase* item = iBookmarks[i];
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   243
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   244
        if( item->ValidateL() )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   245
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   246
            // Transfer ownership of iBookmarks[i] to aItems
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   247
            iBookmarks[i]->AddL( aShownItems, aHiddenItems );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   248
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   249
        else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   250
            {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   251
            // invalid items get deleted
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   252
            delete item;
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   253
            }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   254
        iBookmarks.Remove( i );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   255
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   256
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   257
    // Only first browser item is shown to the user.
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   258
    if( iFirst )
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   259
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   260
        User::LeaveIfError( aShownItems.Append( this ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   261
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   262
    else
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   263
        {
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   264
        User::LeaveIfError( aHiddenItems.Append( this ) );
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   265
        }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   266
    }
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   267
d316aecb87fd 201025_02
hgs
parents:
diff changeset
   268
//  End of File