browserutilities/aiwbrowserprovider/src/AiwBrowserProviderSaveUrl.cpp
changeset 0 dd21522fd290
child 36 0ed94ceaa377
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/browserutilities/aiwbrowserprovider/src/AiwBrowserProviderSaveUrl.cpp	Mon Mar 30 12:54:55 2009 +0300
@@ -0,0 +1,438 @@
+/*
+* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "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:  Providing open url functionality
+*
+*/
+
+
+// INCLUDE FILES
+#include "AiwBrowserProviderSaveUrl.h"
+
+#include <AiwMenu.h>
+//#include <AiwCommon.hrh>
+#include <coemain.h>
+#include <barsread.h>
+#include <StringLoader.h>
+#include <AiwBrowserProvider.rsg>
+#include <data_caging_path_literals.hrh>  
+#include <aknnotewrappers.h> 
+#include <AknNoteDialog.h>
+#include <FavouritesDb.h>
+#include <e32std.h>
+
+#include "AiwBrowserCommands.hrh"
+#include "logger.h"
+
+// LOCAL CONSTANTS AND MACROS
+_LIT( KResourceFileName, "AiwBrowserProvider.rsc");
+
+// ============================= LOCAL FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// NewL 
+// Constructor of CAiwBrowserProviderSaveUrl
+// Returns:
+// 
+// -----------------------------------------------------------------------------
+//
+CAiwBrowserProviderSaveUrl* CAiwBrowserProviderSaveUrl::NewL()
+    {
+	CAiwBrowserProviderSaveUrl* self = new(ELeave) CAiwBrowserProviderSaveUrl;
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	CleanupStack::Pop(self);
+	return self;
+    }
+
+// -----------------------------------------------------------------------------
+// CAiwBrowserProviderSaveUrl
+// Constructor of CAiwBrowserProviderSaveUrl class
+// Returns:
+// 
+// -----------------------------------------------------------------------------
+//
+CAiwBrowserProviderSaveUrl::CAiwBrowserProviderSaveUrl()
+    {
+    }
+
+// -----------------------------------------------------------------------------
+// ConstructL
+// Constructor of CAiwBrowserProviderOpenUrl
+// Returns:
+// 
+// -----------------------------------------------------------------------------
+//
+void CAiwBrowserProviderSaveUrl::ConstructL()
+    {
+    TFileName fName(  KNullDesC );
+    iResourceOffset = -1;
+    fName.Append( _L("Z:") );
+    fName.Append( KDC_RESOURCE_FILES_DIR );
+    fName.Append( KResourceFileName );
+    iResourceOffset = CCoeEnv::Static()->AddResourceFileL( fName );
+    LOG_WRITE("AIWBP: OpenUrl Resource file added.");    
+    }
+
+// -----------------------------------------------------------------------------
+// ~CAiwBrowserProviderSaveUrl
+// Destructor of CAiwBrowserProviderSaveUrl class
+// Returns:
+// 
+// -----------------------------------------------------------------------------
+//
+CAiwBrowserProviderSaveUrl::~CAiwBrowserProviderSaveUrl()
+    {
+    if( iResourceOffset != -1 )
+        {
+    	CCoeEnv::Static()->DeleteResourceFile(iResourceOffset);
+        iResourceOffset = -1;
+        LOG_WRITE("AIWBP: Resource file deleted");
+        }
+    }
+
+
+// -----------------------------------------------------------------------------
+// InitialiseL 
+// aiw initialization
+// Returns: none
+//                    
+// -----------------------------------------------------------------------------
+//
+void CAiwBrowserProviderSaveUrl::InitialiseL(MAiwNotifyCallback& aFrameworkCallback, 
+                                       const RCriteriaArray& aInterest)
+    {
+    iNotifyCallback = &aFrameworkCallback;
+    iInterest = &aInterest;
+    LOG_WRITE("AIWBP: Save Url Provider Initialised");       
+    }
+
+// -----------------------------------------------------------------------------
+// HandleServiceCmdL 
+// 
+// Returns: 
+//         
+//         
+// -----------------------------------------------------------------------------
+//
+void CAiwBrowserProviderSaveUrl::HandleServiceCmdL
+        (const TInt& /*aCmdId*/, const CAiwGenericParamList& /*aInParamList*/,
+         CAiwGenericParamList& /*aOutParamList*/, TUint /*aCmdOptions*/,
+         const MAiwNotifyCallback* /*aCallback*/)
+    {
+    }
+
+// -----------------------------------------------------------------------------
+// InitializeMenuPaneL 
+// initialization of menu pane 
+// Returns: none
+//          
+// -----------------------------------------------------------------------------
+//
+//
+void CAiwBrowserProviderSaveUrl::InitializeMenuPaneL
+        (CAiwMenuPane& aMenuPane, TInt aIndex,
+         TInt /*aCascadeId*/, const CAiwGenericParamList& /*aInParamList*/)
+    {
+    TResourceReader reader;    
+    CCoeEnv::Static()->CreateResourceReaderLC
+        (reader, R_AIW_BROWSER_PROVIDER_SAVE_URL_MENU);
+    aMenuPane.AddMenuItemsL(reader, EBrowserAiwCmdSaveUrl, aIndex);//save url
+    CleanupStack::PopAndDestroy(); // reader
+    LOG_WRITE("AIWBP: Save Url Menu initialized");
+    }
+
+// -----------------------------------------------------------------------------
+// HandleMenuCmdL
+// handles menu commands
+// Returns: none
+//          
+// -----------------------------------------------------------------------------
+//
+
+void CAiwBrowserProviderSaveUrl::HandleMenuCmdL
+        (TInt /*aMenuCmdId*/, const CAiwGenericParamList& aInParamList,
+         CAiwGenericParamList& /*aOutParamList*/, TUint /*aCmdOptions*/,
+         const MAiwNotifyCallback* /*aCallback*/)
+    {
+    TInt index = 0;
+    const TAiwGenericParam* aiwUrl = NULL;
+    const TAiwGenericParam* aiwAccessPoint = NULL;
+    const TAiwGenericParam* aiwPassword = NULL;
+    const TAiwGenericParam* aiwUserName = NULL;
+    const TAiwGenericParam* aiwBookmarkName = NULL;
+    TUint32 accessPoint = 0;
+    TPtrC pPassword;
+    TPtrC pUserName;
+    TPtrC pBookmarkName;
+   
+    TPtrC paramtext;
+    aiwUrl = aInParamList.FindFirst( index, EGenericParamURL, EVariantTypeDesC);
+    if( index == KErrNotFound )
+        {
+        return;
+        }
+    LOG_WRITE("AIWBP: aiwUrl set");
+    index = 0;                    
+    aiwAccessPoint = aInParamList.FindFirst( index, EGenericParamAccessPoint, EVariantTypeTInt32);
+    if( index != KErrNotFound )
+        {
+        TInt32 aid;
+        aid = aiwAccessPoint->Value().AsTInt32();
+        if( aid > 0)
+            {       
+            accessPoint = (TUint32) aid;
+            }
+        }
+    LOG_WRITE("AIWBP: accesspoint set");
+    index = 0;            
+    aiwPassword = aInParamList.FindFirst( index, EGenericParamPassword, EVariantTypeDesC);
+    if( index != KErrNotFound )
+        {
+        pPassword.Set( aiwPassword->Value().AsDes() );
+        }
+    else
+        {
+        pPassword.Set( KNullDesC );
+        }
+    LOG_WRITE("AIWBP:  password set");  
+    index = 0;            
+    aiwUserName = aInParamList.FindFirst( index,EGenericParamUserName, EVariantTypeDesC);
+    if( index != KErrNotFound )
+        {
+        pUserName.Set( aiwUserName->Value().AsDes() );
+        }
+    else
+        {
+        pUserName.Set( KNullDesC );
+        }
+    LOG_WRITE("AIWBP: username set");   
+    index = 0;            
+    aiwBookmarkName = aInParamList.FindFirst( index, EGenericParamBookmarkName, EVariantTypeDesC);
+    if( index != KErrNotFound )
+        {
+        pBookmarkName.Set( aiwBookmarkName->Value().AsDes() );
+        }
+    else
+        {
+        pBookmarkName.Set( KNullDesC );
+        }
+    
+    LOG_WRITE("AIWBP: bookmark set");
+    SaveUrlL( aiwUrl->Value().AsDes(), 
+             pBookmarkName, 
+             pUserName, 
+             pPassword,
+             accessPoint );
+    }
+
+// -----------------------------------------------------------------------------
+// SaveUrlL
+// saves url
+// Returns: none
+//          
+// -----------------------------------------------------------------------------
+//
+
+void CAiwBrowserProviderSaveUrl::SaveUrlL(
+                const TDesC& aUrl, 
+                const TDesC& aName,
+                const TDesC& aUserName, 
+                const TDesC& aPassword, 
+                const TUint32 aApId )
+{
+
+    CFavouritesItem* item;
+    TFavouritesWapAp ap;
+    TInt err;
+    
+    RFavouritesSession sess;
+    err = sess.Connect();
+    if( err != KErrNone )
+        {
+        LOG_WRITE("AIWBP: Failed to open a favorites session.");
+	    ErrorNoteL( 
+					R_AIW_BROWSER_BOOKMARKS_TEXT_BM_NOT_SAVED );
+        return;
+        }
+    CleanupClosePushL<RFavouritesSession>( sess );
+    RFavouritesDb db;
+    err = db.Open( sess, KBrowserBookmarks );
+    if( err != KErrNone )
+        {
+        LOG_WRITE("AIWBP: Failed to open a favorites db.");
+	    ErrorNoteL( 
+					R_AIW_BROWSER_BOOKMARKS_TEXT_BM_NOT_SAVED );
+        CleanupStack::PopAndDestroy( 1 );          
+        return;
+        }
+    CleanupClosePushL<RFavouritesDb>( db );
+
+    item = CFavouritesItem::NewLC();
+
+    if( aUrl.Length() < 1 )
+        {
+        LOG_WRITE("AIWBP: Url is empty.");
+	    ErrorNoteL( 
+					R_AIW_BROWSER_BOOKMARKS_TEXT_BM_NOT_SAVED );
+        return;
+        }
+    
+    item->SetUrlL( aUrl.Left( KFavouritesMaxUrl ) );
+    item->SetParentFolder( KFavouritesRootUid );
+    
+    if( aName.Length() < 1 )
+        {
+        item->SetNameL( aUrl.Left( KFavouritesMaxName ) );        
+        LOG_WRITE("AIWBP: Name length is 0.");
+        } 
+    else
+        {
+        item->SetNameL( aName.Left( KFavouritesMaxName ) );
+        }
+
+    ap.SetApId( aApId );        
+    item->SetWapAp( ap );
+    LOG_WRITE("AIWBP: ap id is set.");
+    if( aUserName.Length() > 0 )
+        { 
+        item->SetUserNameL( aUserName.Left( KFavouritesMaxUserName ));
+        LOG_WRITE("AIWBP: UserName id is set.");
+        }
+    if( aPassword.Length() > 0 )
+        {
+        item->SetPasswordL( aPassword.Left( KFavouritesMaxPassword ) );
+        LOG_WRITE("AIWBP: password is set.");
+        }
+
+    HBufC* prompt = StringLoader::LoadLC( R_AIW_WML_ENTER_BOOKMARK_NAME );
+	TBuf<KFavouritesMaxName> retString;
+	retString.Copy( item->Name() );
+    LOG_WRITE("AIWBP: String loaded from resource.");
+
+    TBool queryName = ETrue;
+	while( queryName )
+		{		
+		err = DialogPromptReqL( 
+			prompt->Des(), 
+			&retString, 
+            EFalse,
+    		KFavouritesMaxName );
+		if( err )
+			{
+			item->SetNameL(retString.Left(KFavouritesMaxName));
+        // Add the item. The transaction is automatic.
+            err = db.Add( *item, ETrue ) ;
+			if ( !err )
+				{
+				InfoNoteL(
+							R_BROWSER_OK_NOTE,
+							R_AIW_BROWSER_BOOKMARKS_TEXT_BM_SAVED );
+				queryName = EFalse;
+                LOG_WRITE("AIWBP: saved to bookmarks.");
+				}
+			else if( KErrAlreadyExists == err )
+				{
+				InfoNoteL( 
+						R_BROWSER_INFO_NOTE, R_AIW_WML_NAME_ALREADY_IN_USE );
+                LOG_WRITE("AIWBP: allready exists");
+                }
+			else
+				{
+				ErrorNoteL( 
+					R_AIW_BROWSER_BOOKMARKS_TEXT_BM_NOT_SAVED );
+                LOG_WRITE("AIWBP: not saved error");
+                }
+			}
+		else
+            {
+			queryName = EFalse;
+            }
+		}
+	CleanupStack::PopAndDestroy( 4 );  // prompt, db, session, item
+}
+
+// -----------------------------------------------------------------------------
+// ErrorNoteL 
+// popups an error note
+// Returns: none
+//          
+// -----------------------------------------------------------------------------
+//
+
+void CAiwBrowserProviderSaveUrl::ErrorNoteL( const TInt aPromptResourceId )
+    {
+    HBufC* prompt = StringLoader::LoadLC( aPromptResourceId );
+    CAknErrorNote* note = new ( ELeave ) CAknErrorNote();
+    note->ExecuteLD( *prompt );
+    CleanupStack::PopAndDestroy();  // prompt
+    }
+
+// -----------------------------------------------------------------------------
+// InfoNoteL 
+// popups an info dialog
+// Returns: none
+//          
+// -----------------------------------------------------------------------------
+//
+
+void CAiwBrowserProviderSaveUrl::InfoNoteL
+( TInt aDialogResourceId, const TInt aPromptResourceId )
+    {
+    HBufC* prompt = StringLoader::LoadLC( aPromptResourceId );
+    CAknNoteDialog* dialog = new (ELeave) CAknNoteDialog
+								( REINTERPRET_CAST( CEikDialog**, &dialog ) );
+    dialog->PrepareLC( aDialogResourceId ) ;
+    dialog->SetCurrentLabelL( EGeneralNote, *prompt );
+    dialog->RunDlgLD( CAknNoteDialog::ELongTimeout, CAknNoteDialog::ENoTone );
+    CleanupStack::PopAndDestroy();  // prompt
+    }
+
+// -----------------------------------------------------------------------------
+// DialogPromptReqL
+// popups an dialog
+// Returns: errorcode
+//          
+// -----------------------------------------------------------------------------
+//
+
+TInt CAiwBrowserProviderSaveUrl::DialogPromptReqL( const TDesC& aMsg, 
+                                        TDes* aResp, 
+                                        TBool aLowerCase,
+                                        TInt aMaxLength
+                                        )
+	{
+	TPtrC msg( aMsg );
+
+	CAknTextQueryDialog* dialog = new( ELeave )CAknTextQueryDialog( *aResp, msg );
+	if( aMaxLength )
+	    {
+		dialog->SetMaxLength(aMaxLength);
+	    }
+
+    TInt resource;
+    if ( aLowerCase )
+        {
+        resource = R_WB_SCRIPT_PROMPT_LOWERCASE;
+        }
+    else
+        {
+        resource = R_WB_SCRIPT_PROMPT_LINES;
+        }
+	return dialog->ExecuteLD( resource );
+	}
+
+
+
+
+