customization/EmbeddedLinkAdapter/src/EmbeddedLinkApp.cpp
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Thu, 17 Dec 2009 08:40:12 +0200
changeset 0 3ce708148e4d
permissions -rw-r--r--
Revision: 200949 Kit: 200951

/*
* 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;
	}