browserutilities/aiwbrowserprovider/src/AiwBrowserProviderSaveUrl.cpp
changeset 0 dd21522fd290
child 36 0ed94ceaa377
equal deleted inserted replaced
-1:000000000000 0:dd21522fd290
       
     1 /*
       
     2 * Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies).
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of the License "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description:  Providing open url functionality
       
    15 *
       
    16 */
       
    17 
       
    18 
       
    19 // INCLUDE FILES
       
    20 #include "AiwBrowserProviderSaveUrl.h"
       
    21 
       
    22 #include <AiwMenu.h>
       
    23 //#include <AiwCommon.hrh>
       
    24 #include <coemain.h>
       
    25 #include <barsread.h>
       
    26 #include <StringLoader.h>
       
    27 #include <AiwBrowserProvider.rsg>
       
    28 #include <data_caging_path_literals.hrh>  
       
    29 #include <aknnotewrappers.h> 
       
    30 #include <AknNoteDialog.h>
       
    31 #include <FavouritesDb.h>
       
    32 #include <e32std.h>
       
    33 
       
    34 #include "AiwBrowserCommands.hrh"
       
    35 #include "logger.h"
       
    36 
       
    37 // LOCAL CONSTANTS AND MACROS
       
    38 _LIT( KResourceFileName, "AiwBrowserProvider.rsc");
       
    39 
       
    40 // ============================= LOCAL FUNCTIONS ===============================
       
    41 
       
    42 // -----------------------------------------------------------------------------
       
    43 // NewL 
       
    44 // Constructor of CAiwBrowserProviderSaveUrl
       
    45 // Returns:
       
    46 // 
       
    47 // -----------------------------------------------------------------------------
       
    48 //
       
    49 CAiwBrowserProviderSaveUrl* CAiwBrowserProviderSaveUrl::NewL()
       
    50     {
       
    51 	CAiwBrowserProviderSaveUrl* self = new(ELeave) CAiwBrowserProviderSaveUrl;
       
    52 	CleanupStack::PushL(self);
       
    53 	self->ConstructL();
       
    54 	CleanupStack::Pop(self);
       
    55 	return self;
       
    56     }
       
    57 
       
    58 // -----------------------------------------------------------------------------
       
    59 // CAiwBrowserProviderSaveUrl
       
    60 // Constructor of CAiwBrowserProviderSaveUrl class
       
    61 // Returns:
       
    62 // 
       
    63 // -----------------------------------------------------------------------------
       
    64 //
       
    65 CAiwBrowserProviderSaveUrl::CAiwBrowserProviderSaveUrl()
       
    66     {
       
    67     }
       
    68 
       
    69 // -----------------------------------------------------------------------------
       
    70 // ConstructL
       
    71 // Constructor of CAiwBrowserProviderOpenUrl
       
    72 // Returns:
       
    73 // 
       
    74 // -----------------------------------------------------------------------------
       
    75 //
       
    76 void CAiwBrowserProviderSaveUrl::ConstructL()
       
    77     {
       
    78     TFileName fName(  KNullDesC );
       
    79     iResourceOffset = -1;
       
    80     fName.Append( _L("Z:") );
       
    81     fName.Append( KDC_RESOURCE_FILES_DIR );
       
    82     fName.Append( KResourceFileName );
       
    83     iResourceOffset = CCoeEnv::Static()->AddResourceFileL( fName );
       
    84     LOG_WRITE("AIWBP: OpenUrl Resource file added.");    
       
    85     }
       
    86 
       
    87 // -----------------------------------------------------------------------------
       
    88 // ~CAiwBrowserProviderSaveUrl
       
    89 // Destructor of CAiwBrowserProviderSaveUrl class
       
    90 // Returns:
       
    91 // 
       
    92 // -----------------------------------------------------------------------------
       
    93 //
       
    94 CAiwBrowserProviderSaveUrl::~CAiwBrowserProviderSaveUrl()
       
    95     {
       
    96     if( iResourceOffset != -1 )
       
    97         {
       
    98     	CCoeEnv::Static()->DeleteResourceFile(iResourceOffset);
       
    99         iResourceOffset = -1;
       
   100         LOG_WRITE("AIWBP: Resource file deleted");
       
   101         }
       
   102     }
       
   103 
       
   104 
       
   105 // -----------------------------------------------------------------------------
       
   106 // InitialiseL 
       
   107 // aiw initialization
       
   108 // Returns: none
       
   109 //                    
       
   110 // -----------------------------------------------------------------------------
       
   111 //
       
   112 void CAiwBrowserProviderSaveUrl::InitialiseL(MAiwNotifyCallback& aFrameworkCallback, 
       
   113                                        const RCriteriaArray& aInterest)
       
   114     {
       
   115     iNotifyCallback = &aFrameworkCallback;
       
   116     iInterest = &aInterest;
       
   117     LOG_WRITE("AIWBP: Save Url Provider Initialised");       
       
   118     }
       
   119 
       
   120 // -----------------------------------------------------------------------------
       
   121 // HandleServiceCmdL 
       
   122 // 
       
   123 // Returns: 
       
   124 //         
       
   125 //         
       
   126 // -----------------------------------------------------------------------------
       
   127 //
       
   128 void CAiwBrowserProviderSaveUrl::HandleServiceCmdL
       
   129         (const TInt& /*aCmdId*/, const CAiwGenericParamList& /*aInParamList*/,
       
   130          CAiwGenericParamList& /*aOutParamList*/, TUint /*aCmdOptions*/,
       
   131          const MAiwNotifyCallback* /*aCallback*/)
       
   132     {
       
   133     }
       
   134 
       
   135 // -----------------------------------------------------------------------------
       
   136 // InitializeMenuPaneL 
       
   137 // initialization of menu pane 
       
   138 // Returns: none
       
   139 //          
       
   140 // -----------------------------------------------------------------------------
       
   141 //
       
   142 //
       
   143 void CAiwBrowserProviderSaveUrl::InitializeMenuPaneL
       
   144         (CAiwMenuPane& aMenuPane, TInt aIndex,
       
   145          TInt /*aCascadeId*/, const CAiwGenericParamList& /*aInParamList*/)
       
   146     {
       
   147     TResourceReader reader;    
       
   148     CCoeEnv::Static()->CreateResourceReaderLC
       
   149         (reader, R_AIW_BROWSER_PROVIDER_SAVE_URL_MENU);
       
   150     aMenuPane.AddMenuItemsL(reader, EBrowserAiwCmdSaveUrl, aIndex);//save url
       
   151     CleanupStack::PopAndDestroy(); // reader
       
   152     LOG_WRITE("AIWBP: Save Url Menu initialized");
       
   153     }
       
   154 
       
   155 // -----------------------------------------------------------------------------
       
   156 // HandleMenuCmdL
       
   157 // handles menu commands
       
   158 // Returns: none
       
   159 //          
       
   160 // -----------------------------------------------------------------------------
       
   161 //
       
   162 
       
   163 void CAiwBrowserProviderSaveUrl::HandleMenuCmdL
       
   164         (TInt /*aMenuCmdId*/, const CAiwGenericParamList& aInParamList,
       
   165          CAiwGenericParamList& /*aOutParamList*/, TUint /*aCmdOptions*/,
       
   166          const MAiwNotifyCallback* /*aCallback*/)
       
   167     {
       
   168     TInt index = 0;
       
   169     const TAiwGenericParam* aiwUrl = NULL;
       
   170     const TAiwGenericParam* aiwAccessPoint = NULL;
       
   171     const TAiwGenericParam* aiwPassword = NULL;
       
   172     const TAiwGenericParam* aiwUserName = NULL;
       
   173     const TAiwGenericParam* aiwBookmarkName = NULL;
       
   174     TUint32 accessPoint = 0;
       
   175     TPtrC pPassword;
       
   176     TPtrC pUserName;
       
   177     TPtrC pBookmarkName;
       
   178    
       
   179     TPtrC paramtext;
       
   180     aiwUrl = aInParamList.FindFirst( index, EGenericParamURL, EVariantTypeDesC);
       
   181     if( index == KErrNotFound )
       
   182         {
       
   183         return;
       
   184         }
       
   185     LOG_WRITE("AIWBP: aiwUrl set");
       
   186     index = 0;                    
       
   187     aiwAccessPoint = aInParamList.FindFirst( index, EGenericParamAccessPoint, EVariantTypeTInt32);
       
   188     if( index != KErrNotFound )
       
   189         {
       
   190         TInt32 aid;
       
   191         aid = aiwAccessPoint->Value().AsTInt32();
       
   192         if( aid > 0)
       
   193             {       
       
   194             accessPoint = (TUint32) aid;
       
   195             }
       
   196         }
       
   197     LOG_WRITE("AIWBP: accesspoint set");
       
   198     index = 0;            
       
   199     aiwPassword = aInParamList.FindFirst( index, EGenericParamPassword, EVariantTypeDesC);
       
   200     if( index != KErrNotFound )
       
   201         {
       
   202         pPassword.Set( aiwPassword->Value().AsDes() );
       
   203         }
       
   204     else
       
   205         {
       
   206         pPassword.Set( KNullDesC );
       
   207         }
       
   208     LOG_WRITE("AIWBP:  password set");  
       
   209     index = 0;            
       
   210     aiwUserName = aInParamList.FindFirst( index,EGenericParamUserName, EVariantTypeDesC);
       
   211     if( index != KErrNotFound )
       
   212         {
       
   213         pUserName.Set( aiwUserName->Value().AsDes() );
       
   214         }
       
   215     else
       
   216         {
       
   217         pUserName.Set( KNullDesC );
       
   218         }
       
   219     LOG_WRITE("AIWBP: username set");   
       
   220     index = 0;            
       
   221     aiwBookmarkName = aInParamList.FindFirst( index, EGenericParamBookmarkName, EVariantTypeDesC);
       
   222     if( index != KErrNotFound )
       
   223         {
       
   224         pBookmarkName.Set( aiwBookmarkName->Value().AsDes() );
       
   225         }
       
   226     else
       
   227         {
       
   228         pBookmarkName.Set( KNullDesC );
       
   229         }
       
   230     
       
   231     LOG_WRITE("AIWBP: bookmark set");
       
   232     SaveUrlL( aiwUrl->Value().AsDes(), 
       
   233              pBookmarkName, 
       
   234              pUserName, 
       
   235              pPassword,
       
   236              accessPoint );
       
   237     }
       
   238 
       
   239 // -----------------------------------------------------------------------------
       
   240 // SaveUrlL
       
   241 // saves url
       
   242 // Returns: none
       
   243 //          
       
   244 // -----------------------------------------------------------------------------
       
   245 //
       
   246 
       
   247 void CAiwBrowserProviderSaveUrl::SaveUrlL(
       
   248                 const TDesC& aUrl, 
       
   249                 const TDesC& aName,
       
   250                 const TDesC& aUserName, 
       
   251                 const TDesC& aPassword, 
       
   252                 const TUint32 aApId )
       
   253 {
       
   254 
       
   255     CFavouritesItem* item;
       
   256     TFavouritesWapAp ap;
       
   257     TInt err;
       
   258     
       
   259     RFavouritesSession sess;
       
   260     err = sess.Connect();
       
   261     if( err != KErrNone )
       
   262         {
       
   263         LOG_WRITE("AIWBP: Failed to open a favorites session.");
       
   264 	    ErrorNoteL( 
       
   265 					R_AIW_BROWSER_BOOKMARKS_TEXT_BM_NOT_SAVED );
       
   266         return;
       
   267         }
       
   268     CleanupClosePushL<RFavouritesSession>( sess );
       
   269     RFavouritesDb db;
       
   270     err = db.Open( sess, KBrowserBookmarks );
       
   271     if( err != KErrNone )
       
   272         {
       
   273         LOG_WRITE("AIWBP: Failed to open a favorites db.");
       
   274 	    ErrorNoteL( 
       
   275 					R_AIW_BROWSER_BOOKMARKS_TEXT_BM_NOT_SAVED );
       
   276         CleanupStack::PopAndDestroy( 1 );          
       
   277         return;
       
   278         }
       
   279     CleanupClosePushL<RFavouritesDb>( db );
       
   280 
       
   281     item = CFavouritesItem::NewLC();
       
   282 
       
   283     if( aUrl.Length() < 1 )
       
   284         {
       
   285         LOG_WRITE("AIWBP: Url is empty.");
       
   286 	    ErrorNoteL( 
       
   287 					R_AIW_BROWSER_BOOKMARKS_TEXT_BM_NOT_SAVED );
       
   288         return;
       
   289         }
       
   290     
       
   291     item->SetUrlL( aUrl.Left( KFavouritesMaxUrl ) );
       
   292     item->SetParentFolder( KFavouritesRootUid );
       
   293     
       
   294     if( aName.Length() < 1 )
       
   295         {
       
   296         item->SetNameL( aUrl.Left( KFavouritesMaxName ) );        
       
   297         LOG_WRITE("AIWBP: Name length is 0.");
       
   298         } 
       
   299     else
       
   300         {
       
   301         item->SetNameL( aName.Left( KFavouritesMaxName ) );
       
   302         }
       
   303 
       
   304     ap.SetApId( aApId );        
       
   305     item->SetWapAp( ap );
       
   306     LOG_WRITE("AIWBP: ap id is set.");
       
   307     if( aUserName.Length() > 0 )
       
   308         { 
       
   309         item->SetUserNameL( aUserName.Left( KFavouritesMaxUserName ));
       
   310         LOG_WRITE("AIWBP: UserName id is set.");
       
   311         }
       
   312     if( aPassword.Length() > 0 )
       
   313         {
       
   314         item->SetPasswordL( aPassword.Left( KFavouritesMaxPassword ) );
       
   315         LOG_WRITE("AIWBP: password is set.");
       
   316         }
       
   317 
       
   318     HBufC* prompt = StringLoader::LoadLC( R_AIW_WML_ENTER_BOOKMARK_NAME );
       
   319 	TBuf<KFavouritesMaxName> retString;
       
   320 	retString.Copy( item->Name() );
       
   321     LOG_WRITE("AIWBP: String loaded from resource.");
       
   322 
       
   323     TBool queryName = ETrue;
       
   324 	while( queryName )
       
   325 		{		
       
   326 		err = DialogPromptReqL( 
       
   327 			prompt->Des(), 
       
   328 			&retString, 
       
   329             EFalse,
       
   330     		KFavouritesMaxName );
       
   331 		if( err )
       
   332 			{
       
   333 			item->SetNameL(retString.Left(KFavouritesMaxName));
       
   334         // Add the item. The transaction is automatic.
       
   335             err = db.Add( *item, ETrue ) ;
       
   336 			if ( !err )
       
   337 				{
       
   338 				InfoNoteL(
       
   339 							R_BROWSER_OK_NOTE,
       
   340 							R_AIW_BROWSER_BOOKMARKS_TEXT_BM_SAVED );
       
   341 				queryName = EFalse;
       
   342                 LOG_WRITE("AIWBP: saved to bookmarks.");
       
   343 				}
       
   344 			else if( KErrAlreadyExists == err )
       
   345 				{
       
   346 				InfoNoteL( 
       
   347 						R_BROWSER_INFO_NOTE, R_AIW_WML_NAME_ALREADY_IN_USE );
       
   348                 LOG_WRITE("AIWBP: allready exists");
       
   349                 }
       
   350 			else
       
   351 				{
       
   352 				ErrorNoteL( 
       
   353 					R_AIW_BROWSER_BOOKMARKS_TEXT_BM_NOT_SAVED );
       
   354                 LOG_WRITE("AIWBP: not saved error");
       
   355                 }
       
   356 			}
       
   357 		else
       
   358             {
       
   359 			queryName = EFalse;
       
   360             }
       
   361 		}
       
   362 	CleanupStack::PopAndDestroy( 4 );  // prompt, db, session, item
       
   363 }
       
   364 
       
   365 // -----------------------------------------------------------------------------
       
   366 // ErrorNoteL 
       
   367 // popups an error note
       
   368 // Returns: none
       
   369 //          
       
   370 // -----------------------------------------------------------------------------
       
   371 //
       
   372 
       
   373 void CAiwBrowserProviderSaveUrl::ErrorNoteL( const TInt aPromptResourceId )
       
   374     {
       
   375     HBufC* prompt = StringLoader::LoadLC( aPromptResourceId );
       
   376     CAknErrorNote* note = new ( ELeave ) CAknErrorNote();
       
   377     note->ExecuteLD( *prompt );
       
   378     CleanupStack::PopAndDestroy();  // prompt
       
   379     }
       
   380 
       
   381 // -----------------------------------------------------------------------------
       
   382 // InfoNoteL 
       
   383 // popups an info dialog
       
   384 // Returns: none
       
   385 //          
       
   386 // -----------------------------------------------------------------------------
       
   387 //
       
   388 
       
   389 void CAiwBrowserProviderSaveUrl::InfoNoteL
       
   390 ( TInt aDialogResourceId, const TInt aPromptResourceId )
       
   391     {
       
   392     HBufC* prompt = StringLoader::LoadLC( aPromptResourceId );
       
   393     CAknNoteDialog* dialog = new (ELeave) CAknNoteDialog
       
   394 								( REINTERPRET_CAST( CEikDialog**, &dialog ) );
       
   395     dialog->PrepareLC( aDialogResourceId ) ;
       
   396     dialog->SetCurrentLabelL( EGeneralNote, *prompt );
       
   397     dialog->RunDlgLD( CAknNoteDialog::ELongTimeout, CAknNoteDialog::ENoTone );
       
   398     CleanupStack::PopAndDestroy();  // prompt
       
   399     }
       
   400 
       
   401 // -----------------------------------------------------------------------------
       
   402 // DialogPromptReqL
       
   403 // popups an dialog
       
   404 // Returns: errorcode
       
   405 //          
       
   406 // -----------------------------------------------------------------------------
       
   407 //
       
   408 
       
   409 TInt CAiwBrowserProviderSaveUrl::DialogPromptReqL( const TDesC& aMsg, 
       
   410                                         TDes* aResp, 
       
   411                                         TBool aLowerCase,
       
   412                                         TInt aMaxLength
       
   413                                         )
       
   414 	{
       
   415 	TPtrC msg( aMsg );
       
   416 
       
   417 	CAknTextQueryDialog* dialog = new( ELeave )CAknTextQueryDialog( *aResp, msg );
       
   418 	if( aMaxLength )
       
   419 	    {
       
   420 		dialog->SetMaxLength(aMaxLength);
       
   421 	    }
       
   422 
       
   423     TInt resource;
       
   424     if ( aLowerCase )
       
   425         {
       
   426         resource = R_WB_SCRIPT_PROMPT_LOWERCASE;
       
   427         }
       
   428     else
       
   429         {
       
   430         resource = R_WB_SCRIPT_PROMPT_LINES;
       
   431         }
       
   432 	return dialog->ExecuteLD( resource );
       
   433 	}
       
   434 
       
   435 
       
   436 
       
   437 
       
   438