customization/EmbeddedLinkAdapter/src/EmbeddedLinkApp.cpp
changeset 0 3ce708148e4d
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/customization/EmbeddedLinkAdapter/src/EmbeddedLinkApp.cpp	Thu Dec 17 08:40:12 2009 +0200
@@ -0,0 +1,538 @@
+/*
+* Copyright (c) 2009 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: Implementation of customization components
+*
+*/
+
+
+#include "EmbeddedLinkApp.h"
+
+
+// ---------------------------------------------------------
+// CEmbeddedLinkApp::NewL
+//
+//
+// ---------------------------------------------------------
+CEmbeddedLinkApp* CEmbeddedLinkApp::NewL( TInt aId )
+	{
+	CEmbeddedLinkApp* self = CEmbeddedLinkApp::NewLC( aId );
+    CleanupStack::Pop( self );
+    return self;
+	}
+
+// ---------------------------------------------------------
+// CEmbeddedLinkApp::NewLC
+//
+//
+// ---------------------------------------------------------
+CEmbeddedLinkApp* CEmbeddedLinkApp::NewLC( TInt aId )
+	{
+	CEmbeddedLinkApp* self = new ( ELeave ) CEmbeddedLinkApp;
+    CleanupStack::PushL( self );
+    self->ConstructL( aId );
+    return self;
+	}
+
+// ---------------------------------------------------------
+// CEmbeddedLinkApp::ConstructL
+//
+//
+// ---------------------------------------------------------
+void CEmbeddedLinkApp::ConstructL( TInt aId )
+	{
+	User::LeaveIfError( iFavouritesSess.Connect() );
+
+
+	iId=aId;
+	User::LeaveIfError( GetAppName( iAppName ) );
+//sf-	iFolderUid=0; //sf-FolderUidL();
+	}
+
+// ---------------------------------------------------------
+// CEmbeddedLinkApp::~CEmbeddedLinkApp
+//
+//
+// ---------------------------------------------------------
+CEmbeddedLinkApp::~CEmbeddedLinkApp()
+	{
+	iFavouritesSess.Close();
+	}
+
+// ---------------------------------------------------------
+// CEmbeddedLinkApp::AddLinkL
+//
+//
+// ---------------------------------------------------------
+TInt CEmbeddedLinkApp::AddLinkL( TDesC& aName, TDesC& aUrl, const TDesC& aUsername, 
+					const TDesC& aPassword, TInt aApId )
+	{
+	TInt err( KErrNone );
+
+  RFavouritesDb db;
+  User::LeaveIfError( db.Open( iFavouritesSess, KBrowserBookmarks ) );
+  CleanupClosePushL<RFavouritesDb>( db );
+
+
+	CFavouritesItem* favItem = CFavouritesItem::NewLC();
+
+	favItem->SetNameL( aName );
+	favItem->SetUrlL( aUrl );
+	favItem->SetType( CFavouritesItem::EItem );
+	
+	if ( aUsername != KNullDesC ) 
+		{
+		favItem->SetUserNameL( aUsername );
+		}
+	if ( aPassword != KNullDesC )
+		{
+		favItem->SetPasswordL( aPassword );
+		}
+	
+	if ( aApId != KErrNotFound )
+		{
+		TFavouritesWapAp wapAp;
+		wapAp=aApId;
+		favItem->SetWapAp( wapAp );	
+		}
+
+	favItem->SetParentFolder( FolderUidL() ); //sf-iFolderUid );
+
+	err = db.Add( *favItem, ETrue );
+//	db->CommitL();			KAATAA !!!!!
+	db.Close();
+
+	if ( err == KErrNone )
+		{
+		err = favItem->Uid();
+		}
+	else 
+		{
+		}
+
+	CleanupStack::PopAndDestroy( 2 ); //db, favItem
+
+	return err;
+	}
+
+// ---------------------------------------------------------
+// CEmbeddedLinkApp::GetLinkUidL
+//
+//
+// ---------------------------------------------------------
+TInt CEmbeddedLinkApp::GetLinkUidL( TDesC& aName, TDesC& /*aAddress*/, TInt folderUid, TInt& aUid )
+	{
+  RFavouritesDb db;
+  User::LeaveIfError( db.Open( iFavouritesSess, KBrowserBookmarks ) );
+  CleanupClosePushL<RFavouritesDb>( db );
+
+	CArrayFixFlat<TInt>* array = new ( ELeave ) CArrayFixFlat<TInt>( 16 );
+	CleanupStack::PushL( array );
+	TInt err = KErrNone;
+
+	err=db.GetUids( *array, folderUid, CFavouritesItem::EItem, &aName, KFavouritesNullContextId );	
+
+	if ( err == KErrNone && array->Count() < 2 )
+		{
+		for ( TInt i = 0; i < array->Count(); i++ )
+			{
+			aUid=array->At( i );
+			}
+		}
+	else
+		{
+		err = KErrBadName;		
+		}	 
+
+	db.Close();
+
+	CleanupStack::PopAndDestroy( 2 );	// db, array
+		
+	return err;
+	}
+
+// ---------------------------------------------------------
+// CEmbeddedLinkApp::GetLinkL
+//
+//
+// ---------------------------------------------------------
+TInt CEmbeddedLinkApp::GetLinkL( TInt aUid, CFavouritesItem& aFavItem )
+	{
+	TInt err( KErrNone );
+
+  RFavouritesDb db;
+  User::LeaveIfError( db.Open( iFavouritesSess, KBrowserBookmarks ) );
+  CleanupClosePushL<RFavouritesDb>( db );
+
+	err=db.Get( aUid, aFavItem );
+	db.Close();
+
+	
+	CleanupStack::PopAndDestroy();
+	return err;
+	}
+
+// ---------------------------------------------------------
+// CEmbeddedLinkApp::GetLinksL
+//
+//
+// ---------------------------------------------------------
+TInt CEmbeddedLinkApp::GetLinksL( CFavouritesItemList& aFavItemList )
+	{
+	TInt err( KErrNone );
+	
+	CArrayFixFlat<TInt>* array = new (ELeave) CArrayFixFlat<TInt>( 16 );
+	CleanupStack::PushL( array );
+
+  RFavouritesDb db;
+  User::LeaveIfError( db.Open( iFavouritesSess, KBrowserBookmarks ) );
+  CleanupClosePushL<RFavouritesDb>( db );
+
+	err = db.GetUids( *array, KFavouritesNullUid, CFavouritesItem::EFolder, NULL, iId );	// Get all folder uids related to the app
+
+
+	if ( err == KErrNone )																	// Then get the links in the folder
+		{
+		for ( TInt i = 0; i < array->Count(); i++ )
+			{
+			err = db.GetAll( aFavItemList, array->At( i ), CFavouritesItem::EItem, NULL, KFavouritesNullContextId );	
+			}	
+		}	
+
+	db.Close();
+	
+	CleanupStack::PopAndDestroy( 2 ); // array, db
+	return err;
+	}
+	
+// ---------------------------------------------------------
+// CEmbeddedLinkApp::RemoveLinkL
+//
+//
+// ---------------------------------------------------------
+TInt CEmbeddedLinkApp::RemoveLinkL( TInt aUid )
+	{
+	TInt err = KErrNone;
+
+  RFavouritesDb db;
+  User::LeaveIfError( db.Open( iFavouritesSess, KBrowserBookmarks ) );
+  CleanupClosePushL<RFavouritesDb>( db );
+
+	err = db.Delete( aUid );
+	db.Close();
+
+
+	CleanupStack::PopAndDestroy(); // db
+
+	return err;
+ 	}
+
+// ---------------------------------------------------------
+// CEmbeddedLinkApp::GetAppNameL
+//
+//
+// ---------------------------------------------------------
+TInt CEmbeddedLinkApp::GetAppName( TDes& aName )
+	{
+	TInt err( KErrNone );
+
+	switch( iId )
+		{
+		case KFavouritesNullContextId:
+		aName.Copy(_L("Unused"));
+		break;
+		
+		case KFavouritesApplicationContextId:
+		aName.Copy(_L("Application"));
+		break;
+		
+		case KFavouritesImageContextId:
+		aName.Copy(_L("Image"));
+		break;
+		
+		case KFavouritesAudioContextId:
+		aName.Copy(_L("Audio"));
+		break;
+		
+		case KFavouritesVideoContextId:
+		aName.Copy(_L("Video"));
+		break;
+		
+		case KFavouritesGameDataContextId:
+		aName.Copy(_L("GameData"));
+		break;
+		
+		case KFavouritesRingingToneContextId:
+		aName.Copy(_L("RingingTone"));
+		break;
+		
+		case KFavouritesSkinContextId:
+		aName.Copy(_L("Skin"));
+		break;
+		
+		case KFavouritesMusicContextId:
+		aName.Copy(_L("Music"));
+		break;
+
+		default:
+		err=KErrNotFound;
+		break;
+		}
+
+	return err;
+	}
+
+// ---------------------------------------------------------
+// CEmbeddedLinkApp::UpdateUrlL
+//
+//
+// ---------------------------------------------------------
+TInt CEmbeddedLinkApp::UpdateUrlL( const TDesC& aUrl, TInt aUid )
+	{
+	TInt err( KErrNone );
+
+  RFavouritesDb db;
+  User::LeaveIfError( db.Open( iFavouritesSess, KBrowserBookmarks ) );
+  CleanupClosePushL<RFavouritesDb>( db );
+
+	CFavouritesItem* favItem = CFavouritesItem::NewLC();
+	
+	err = db.Get( aUid, *favItem );
+
+	if ( err==KErrNone )
+		{
+		favItem->SetUrlL( aUrl );
+		err = db.Update( *favItem, aUid, ETrue );
+		}
+	
+	db.Close();
+
+	CleanupStack::PopAndDestroy( 2 ); //db, favItem
+	
+	return err;
+}
+
+// ---------------------------------------------------------
+// CEmbeddedLinkApp::UpdateNameL
+//
+//
+// ---------------------------------------------------------
+TInt CEmbeddedLinkApp::UpdateNameL( const TDesC& aName, TInt aUid )
+{
+	TInt err( KErrNone );
+
+  RFavouritesDb db;
+  User::LeaveIfError( db.Open( iFavouritesSess, KBrowserBookmarks ) );
+  CleanupClosePushL<RFavouritesDb>( db );
+
+	CFavouritesItem* favItem = CFavouritesItem::NewLC();
+	
+	err = db.Get( aUid, *favItem );
+
+	if ( err == KErrNone )
+		{
+		favItem->SetNameL( aName );
+		err = db.Update( *favItem, aUid, ETrue );
+		}
+		
+	db.Close();
+
+	CleanupStack::PopAndDestroy( 2 ); //db, favItem
+	
+	return err;
+}
+
+// ---------------------------------------------------------
+// CEmbeddedLinkApp::UpdateUserNameL
+//
+//
+// ---------------------------------------------------------
+TInt CEmbeddedLinkApp::UpdateUserNameL( const TDesC& aUserName, const TInt aUid )
+	{
+	TInt err( KErrNone );
+
+  RFavouritesDb db;
+  User::LeaveIfError( db.Open( iFavouritesSess, KBrowserBookmarks ) );
+  CleanupClosePushL<RFavouritesDb>( db );
+
+	CFavouritesItem* favItem = CFavouritesItem::NewLC();
+	
+	err = db.Get( aUid, *favItem );
+
+	if ( err == KErrNone )
+		{
+		favItem->SetUserNameL( aUserName );
+		err = db.Update( *favItem, aUid, ETrue );
+		}
+
+	db.Close();
+
+	CleanupStack::PopAndDestroy( 2 ); //db, favItem
+
+	return err;
+	}
+
+// ---------------------------------------------------------
+// CEmbeddedLinkApp::UpdatePasswordL
+//
+//
+// ---------------------------------------------------------
+TInt CEmbeddedLinkApp::UpdatePasswordL( const TDesC& aPassword, const TInt aUid )
+	{
+	TInt err( KErrNone );
+
+  RFavouritesDb db;
+  User::LeaveIfError( db.Open( iFavouritesSess, KBrowserBookmarks ) );
+  CleanupClosePushL<RFavouritesDb>( db );
+
+	CFavouritesItem* favItem = CFavouritesItem::NewLC();
+	
+	err = db.Get( aUid, *favItem );
+
+	if ( err == KErrNone )
+		{
+		favItem->SetPasswordL( aPassword );
+		err = db.Update( *favItem, aUid, ETrue );
+		}
+
+	db.Close();
+
+	CleanupStack::PopAndDestroy( 2 ); //db, favItem
+	
+	return err;
+	}
+
+// ---------------------------------------------------------
+// CEmbeddedLinkApp::UpdateWapApL
+//
+//
+// ---------------------------------------------------------
+TInt CEmbeddedLinkApp::UpdateWapApL( const TDesC& aWapAp, const TInt aUid )
+	{
+	TInt err( KErrNone );
+
+  RFavouritesDb db;
+  User::LeaveIfError( db.Open( iFavouritesSess, KBrowserBookmarks ) );
+  CleanupClosePushL<RFavouritesDb>( db );
+
+	CFavouritesItem* favItem = CFavouritesItem::NewLC();
+	
+	err = db.Get( aUid, *favItem );
+
+	if ( err == KErrNone )
+		{
+        TFavouritesWapAp wapAp;
+        wapAp.SetDefault();
+        if (aWapAp.Length() > 0)
+        	{
+        	TUint value = 0;
+			TLex lex( aWapAp );
+			TInt lexErr = lex.Val( value );
+			if (lexErr == KErrNone)
+				{
+				wapAp.SetApId( value );
+				}
+			else
+				{
+				wapAp.SetNull();
+				}
+        	}
+
+		favItem->SetWapAp( wapAp );	
+
+		err = db.Update( *favItem, aUid, ETrue );
+		}
+
+	db.Close();
+
+	CleanupStack::PopAndDestroy( 2 ); //db, favItem
+	
+	return err;
+	}
+
+// ---------------------------------------------------------
+// CEmbeddedLinkApp::GetURI
+//
+//
+// ---------------------------------------------------------
+TPtrC CEmbeddedLinkApp::GetURI()
+	{
+	return iURI.Ptr();
+	}
+
+// ---------------------------------------------------------
+// CEmbeddedLinkApp::SetURI
+//
+//
+// ---------------------------------------------------------
+TInt CEmbeddedLinkApp::SetURI( const TDesC& aURI )
+	{
+	iURI.Copy(aURI);
+	return KErrNone;
+	}
+
+// ---------------------------------------------------------
+// CEmbeddedLinkApp::AppId
+//
+//
+// ---------------------------------------------------------
+TInt CEmbeddedLinkApp::AppId() const
+	{
+	return iId;
+	}
+
+// ---------------------------------------------------------
+// CEmbeddedLinkApp::AppName
+//
+//
+// ---------------------------------------------------------
+TPtrC CEmbeddedLinkApp::AppName() const
+	{
+	return iAppName;
+	}
+
+// ---------------------------------------------------------
+// CEmbeddedLinkApp::FolderUidL
+// ---------------------------------------------------------
+TInt CEmbeddedLinkApp::FolderUidL( )
+	{
+  RFavouritesDb db;
+  User::LeaveIfError( db.Open( iFavouritesSess, KBrowserBookmarks ) );
+  CleanupClosePushL<RFavouritesDb>( db );
+
+	CArrayFixFlat<TInt>* array = new ( ELeave ) CArrayFixFlat<TInt>( 16 );
+	CleanupStack::PushL( array );
+
+	TInt err = KErrNone;
+
+	err = db.GetUids( *array, KFavouritesNullUid, CFavouritesItem::EFolder, NULL, iId );
+
+	User::LeaveIfError( err );
+
+	TInt folderUid = 0;
+
+	if (array->Count() == 0)
+		{
+//sf-		User::Leave( KErrNotFound );
+		}
+	else
+		{
+		folderUid = (*array)[0];
+		}
+
+	db.Close();
+
+	CleanupStack::PopAndDestroy( 2 ); //db, array
+
+	return folderUid;
+	}