omaprovisioning/provisioning/WAPAdapter/Src/CWPWAPBookmarkItem.cpp
changeset 0 b497e44ab2fc
child 2 5594fba90824
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/omaprovisioning/provisioning/WAPAdapter/Src/CWPWAPBookmarkItem.cpp	Thu Dec 17 09:07:52 2009 +0200
@@ -0,0 +1,273 @@
+/*
+* Copyright (c) 2002-2006 Nokia Corporation and/or its subsidiary(-ies). 
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  One bookmark item.
+*
+*/
+
+
+
+// INCLUDE FILES
+#include <e32base.h>
+#include <CWPCharacteristic.h>
+#include <CWPParameter.h>
+#include <FavouritesDb.h>
+#include <FavouritesItemList.h>         // CFavouritesItemList
+#include <wpwapadapterresource.rsg>
+#include <CWPAdapter.h>
+#include "CWPWAPBookmarkItem.h"
+#include "WPWAPUtil.h"
+
+// CONSTANTS
+const TInt KUrlMaxLength = 255;
+const TInt KNameMaxLength = 50;
+
+// -----------------------------------------------------------------------------
+// CWPWAPBookmarkItem::CWPWAPBookmarkItem
+// C++ default constructor can NOT contain any code, that
+// might leave.
+// -----------------------------------------------------------------------------
+//
+CWPWAPBookmarkItem::CWPWAPBookmarkItem( const TDesC& aTitle, 
+    const TDesC& aDefaultName, 
+    CWPCharacteristic*& aLink, 
+    RFavouritesDb aDb )
+: iTitle( aTitle ), iDefaultName( aDefaultName ), iLink( aLink ), 
+iBookmarkDb( aDb )
+    {
+    }
+
+// -----------------------------------------------------------------------------
+// CWPWAPBookmarkItem::ConstructL
+// Symbian 2nd phase constructor can leave.
+// -----------------------------------------------------------------------------
+//
+void CWPWAPBookmarkItem::ConstructL( CWPCharacteristic& aCharacteristic )
+    {
+    aCharacteristic.AcceptL( *this );
+    if( iName == KNullDesC )
+        {
+        iName.Set( iDefaultName );
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CWPWAPBookmarkItem::NewL
+// Two-phased constructor.
+// -----------------------------------------------------------------------------
+//
+CWPWAPBookmarkItem* CWPWAPBookmarkItem::NewL(  const TDesC& aTitle, 
+    const TDesC& aDefaultName, 
+    CWPCharacteristic& aCharacteristic, 
+    CWPCharacteristic*& aLink,
+    RFavouritesDb aDb )
+    {
+    CWPWAPBookmarkItem* self = new(ELeave) CWPWAPBookmarkItem( aTitle, 
+        aDefaultName, aLink, aDb ); 
+    CleanupStack::PushL(self);
+    self->ConstructL( aCharacteristic );
+    CleanupStack::Pop(self);
+    return self;
+    }
+
+// Destructor
+CWPWAPBookmarkItem::~CWPWAPBookmarkItem()
+    {
+    }
+
+// -----------------------------------------------------------------------------
+// CWPWAPBookmarkItem::Name
+// -----------------------------------------------------------------------------
+//
+const TDesC& CWPWAPBookmarkItem::Name() const
+    {
+    return iName;
+    }
+
+
+// -----------------------------------------------------------------------------
+// CWPWAPBookmarkItem::Title
+// -----------------------------------------------------------------------------
+//
+const TDesC& CWPWAPBookmarkItem::Title() const
+    {
+    return iTitle;
+    }
+
+// -----------------------------------------------------------------------------
+// CWPWAPBookmarkItem::Title
+// -----------------------------------------------------------------------------
+//
+const TDesC& CWPWAPBookmarkItem::Address() const
+    {
+    return iURI;
+    }
+
+// -----------------------------------------------------------------------------
+// CWPWAPBookmarkItem::SaveID
+// -----------------------------------------------------------------------------
+//
+const TDesC8& CWPWAPBookmarkItem::SaveData() const
+    {
+    if( iSaveItem().iSaveItemType != KWPWAPItemTypeNone )
+        {
+        return iSaveItem;
+        }
+    else
+        {
+        return KNullDesC8;
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CWPWAPBookmarkItem::AddL
+// -----------------------------------------------------------------------------
+//
+void CWPWAPBookmarkItem::AddL( RPointerArray<MWPWAPItemBase>& aShownItems,
+                              RPointerArray<MWPWAPItemBase>& /*aHiddenItems*/ )
+    {
+    User::LeaveIfError( aShownItems.Append( this ) );
+    }
+
+// -----------------------------------------------------------------------------
+// CWPWAPBookmarkItem::SaveL
+// -----------------------------------------------------------------------------
+//
+void CWPWAPBookmarkItem::SaveL()
+    {
+    TPckgBuf<TUint32> uid;
+    if( iLink && iLink->Data().Length() == uid.MaxLength() )
+        {
+        uid.Copy( iLink->Data() );
+        iUID = uid();
+        }
+
+    CreateDbL();
+    
+    CFavouritesItem* item = CFavouritesItem::NewL();
+    CleanupStack::PushL( item );
+    
+    item->SetType( CFavouritesItem::EItem );
+    item->SetParentFolder( KFavouritesRootUid );
+    item->SetNameL( iName );
+    item->SetUrlL( iURI ); 
+    
+    if( iUID != KWPWAPNoUID )
+        {
+        TFavouritesWapAp ap;
+        ap.SetApId( iUID );
+        item->SetWapAp( ap );
+        } 
+    TInt err( iBookmarkDb.Add( *item, ETrue ) );
+    if( err == KErrLocked )
+        {
+        err = EWPBookmarksLocked;
+        }
+    User::LeaveIfError( err );
+    iSaveItem().iSaveItemType = KWPWAPItemTypeBookmark;
+    iSaveItem().iUID = item->Uid();
+    
+    CleanupStack::PopAndDestroy(); // item
+    }
+
+// -----------------------------------------------------------------------------
+// CWPWAPBookmarkItem::CanSetAsDefault
+// -----------------------------------------------------------------------------
+//
+TBool CWPWAPBookmarkItem::CanSetAsDefault() const
+    {
+    // Startpage support. This can be set as default if this is to be 
+    // interpreted as startpage.
+    return iHasStartPage;
+    }
+
+
+// -----------------------------------------------------------------------------
+// CWPWAPBookmarkItem::SetAsDefaultL
+// -----------------------------------------------------------------------------
+//
+void CWPWAPBookmarkItem::SetAsDefaultL()
+    {
+    }
+
+// -----------------------------------------------------------------------------
+// CWPWAPBookmarkItem::ValidateL
+// -----------------------------------------------------------------------------
+//
+TBool CWPWAPBookmarkItem::ValidateL()
+    {
+    return iURI.Length() <= KUrlMaxLength
+        && iName.Length() <= KNameMaxLength
+        && iURI.Length() > 0
+        && WPWAPUtil::CheckURI( iURI );
+    }
+
+// -----------------------------------------------------------------------------
+// CWPWAPBookmarkItem::VisitL
+// -----------------------------------------------------------------------------
+//
+void CWPWAPBookmarkItem::VisitL( CWPCharacteristic& /*aCharacteristic*/ )
+    {
+    }
+
+// -----------------------------------------------------------------------------
+// CWPWAPBookmarkItem::VisitL
+// -----------------------------------------------------------------------------
+//
+void CWPWAPBookmarkItem::VisitL( CWPParameter& aParameter )
+    {
+    switch( aParameter.ID() )
+        {
+        case EWPParameterURI:
+            {
+            iURI.Set( aParameter.Value() );
+            break;
+            }
+
+        case EWPParameterName:
+            {
+            iName.Set( aParameter.Value() );
+            break;
+            }
+
+        case EWPParameterStartPage:
+            {
+            iHasStartPage = ETrue;
+            break;
+            }
+        default:
+            {
+            break;
+            }
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CWPWAPBookmarkItem::VisitL
+// -----------------------------------------------------------------------------
+//
+void CWPWAPBookmarkItem::VisitLinkL( CWPCharacteristic& /*aLink*/ )
+    {
+    }
+
+// -----------------------------------------------------------------------------
+// CWPWAPBookmarkItem::CreateDbL
+// -----------------------------------------------------------------------------
+//
+void CWPWAPBookmarkItem::CreateDbL()
+    {
+    User::LeaveIfError( iSession.Connect() );
+    User::LeaveIfError( iBookmarkDb.Open( iSession, KBrowserBookmarks ) );
+    }
+
+//  End of File