diff -r 79859ed3eea9 -r 919f36ff910f widgets/widgetapp/src/WidgetUiWindow.cpp --- a/widgets/widgetapp/src/WidgetUiWindow.cpp Tue Aug 31 16:17:46 2010 +0300 +++ b/widgets/widgetapp/src/WidgetUiWindow.cpp Wed Sep 01 12:28:30 2010 +0100 @@ -21,27 +21,31 @@ #include "WidgetUiWindowContainer.h" #include "WidgetUiWindowManager.h" #include "WidgetUiDialogsProviderProxy.h" -#include "WidgetRegistryConstants.h" -#include "Browser_platform_variant.hrh" +#include +#include "browser_platform_variant.hrh" #ifdef BRDO_WRT_HS_FF #include "cpspublisher.h" #endif #include -#include +#include #include - -#include -#include +#include +#include +#include #include "WidgetInstallerInternalCRKeys.h" -#include +#include #include #include #include #include #include -#include +#include #include "SWInstWidgetUid.h" +#ifdef RD_SCALABLE_UI_V2 +#include +#include +#endif //RD_SCALABLE_UI_V2 // EXTERNAL DATA STRUCTURES @@ -53,6 +57,7 @@ const TUint KWmlNoDefaultAccessPoint = KMaxTUint; // see cenrep setting default -1 as int, here as uint const TUint KWmlNoDefaultSnapId = KMaxTUint; // see cenrep setting default -1 as int, here as uint + // MACROS // LOCAL CONSTANTS AND MACROS @@ -93,8 +98,9 @@ : iWindowManager( aWindowManager ), iCpsPublisher( aCpsPublisher ), iNetworkAccessGrant(EInvalid), iPreferredOrientation(TBrCtlDefs::EOrientationUndefined), iIsCurrent(EFalse), iShowSoftkeys(EFalse), iWidgetLoaded(EFalse), - iSchemeProcessing (EFalse),iClickCount(0), iWidgetLoadStarted(EFalse), - iNetworkState(ENetworkNotAllowed), iUserPermission(ETrue) + iSchemeProcessing (EFalse), iNetworkState(ENetworkNotAllowed), iUserPermission(ETrue), + iClickCount(0), iWidgetLoadStarted(EFalse), iSapiPromptCleared(ETrue),iNeedToIgnoreSapiNtfn(0), + iNeedToIgnoreSapiClearNtfn(0) { } @@ -107,7 +113,8 @@ void CWidgetUiWindow::ConstructL( const TUid& aUid ) { iUid = aUid; - + iDialogsProvider = CBrowserDialogsProvider::NewL( NULL ); + iPenEnabled = AknLayoutUtils::PenEnabled(); iShowSoftkeys = iPenEnabled; @@ -120,7 +127,7 @@ iUrl = GetUlrL( clientSession, aUid ); iWidgetUiObserver = CWidgetUiObserver::NewL( *this ); - iWidgetUiDialogsProviderProxy = CWidgetUiDialogsProviderProxy::NewL(*(iWindowManager.DialogsProvider()), NULL, *this); + iWidgetUiDialogsProviderProxy = CWidgetUiDialogsProviderProxy::NewL(*iDialogsProvider, NULL, *this); #ifdef BRDO_WRT_HS_FF iNetworkModeWait = new(ELeave) CActiveSchedulerWait(); @@ -194,8 +201,10 @@ iDlId = 0; + iNeedToNotifyNetworkState = EFalse; // determine initial widget online/offline network state DetermineNetworkState(); + iAsyncCallBack = new (ELeave) CAsyncCallBack(TCallBack(DeleteItself,this),CActive::EPriorityLow); } // ----------------------------------------------------------------------------- @@ -206,6 +215,10 @@ // CWidgetUiWindow::~CWidgetUiWindow() { + if( iDialogsProvider) + { + iDialogsProvider->CancelAll(); + } if (iEngine && iWidgetUiObserver) { iEngine->RemoveLoadEventObserver( iWidgetUiObserver ); @@ -220,10 +233,21 @@ delete iLeftSoftKeyLabel; delete iWidgetUiDialogsProviderProxy; delete iSchemeHandler; - delete iMiniviewBitmap; + + iActiveMiniviewBitmap = 0; + iMiniviewBitmap1.Reset(); + iMiniviewBitmap2.Reset(); + #ifdef BRDO_WRT_HS_FF delete iNetworkModeWait; #endif + if(iAsyncCallBack) + { + iAsyncCallBack->Cancel(); + } + delete iAsyncCallBack; + iAsyncCallBack=NULL; + delete iDialogsProvider; } // ----------------------------------------------------------------------------- @@ -333,7 +357,7 @@ TBool CWidgetUiWindow::DialogMimeFileSelectLC(HBufC*& aSelectedFileName, const TDesC& aMimeType) { - return iWindowManager.DialogsProvider()->DialogMimeFileSelectLC(aSelectedFileName, aMimeType); + return iDialogsProvider->DialogMimeFileSelectLC(aSelectedFileName, aMimeType); } // ----------------------------------------------------------------------------- @@ -486,15 +510,33 @@ } // ----------------------------------------------------------------------------- -// CWidgetUiWindow::Relayout() +// CWidgetUiWindow::RelayoutL( TInt aType ) // switch the display orientation based on preferred setting // // ----------------------------------------------------------------------------- // -void CWidgetUiWindow::Relayout( ) +void CWidgetUiWindow::RelayoutL( TInt aType ) { if (iIsCurrent) { +#ifdef RD_SCALABLE_UI_V2 + if(aType == KEikDynamicLayoutVariantSwitch) + { + CRepository* iSensor = CRepository::NewLC(KCRUidSensorSettings); + TInt sensorOn = 0; + //get sensor is on/off from general settings + iSensor->Get(KSenSettingsSensorsOn, sensorOn); + if(sensorOn == 0) + { + TRect rec = iWindowManager.View()->Container()->Rect(); + if( rec.Height() < rec.Width()) + iPreferredOrientation = TBrCtlDefs::EOrientationLandscape; + else + iPreferredOrientation = TBrCtlDefs::EOrientationPortrait; + } + CleanupStack::PopAndDestroy(); + } +#endif // RD_SCALABLE_UI_V2 SetDisplayMode(iPreferredOrientation); SetSoftkeysVisible(iShowSoftkeys); //iWindowManager.View()->Container()->SizeChanged(); @@ -520,7 +562,7 @@ UpdateCba(); Engine()->MakeVisible( iWidgetLoaded ); // redraw incase the orientation changed while in the background - Relayout(); + RelayoutL(KEikDynamicLayoutVariantSwitch); } else { @@ -570,7 +612,17 @@ // reset the Right Softkey TRAP_IGNORE(iWidgetUiObserver->UpdateSoftkeyL(EKeyRight,KNullDesC,KDummyCommand,EChangeReasonLoad)); } - + if (iLeftSoftKeyLabel) + { + // restore the Left Softkey + TRAP_IGNORE(iWidgetUiObserver->UpdateSoftkeyL(EKeyLeft,*iLeftSoftKeyLabel,KDummyCommand,EChangeReasonLoad)); + } + else + { + // reset the Left Softkey + TRAP_IGNORE(iWidgetUiObserver->UpdateSoftkeyL(EKeyLeft,KNullDesC,KDummyCommand,EChangeReasonLoad)); + } + // restore state if ( !showSoftkeys ) { @@ -613,6 +665,9 @@ { Engine()->MakeVisible( ETrue ); } + PublishSnapShot(); + if(iWidgetLoaded && iNeedToNotifyNetworkState) + DetermineNetworkState(); } // ----------------------------------------------------------------------------- @@ -627,16 +682,18 @@ { #ifdef BRDO_WRT_HS_FF - if ( !iMiniviewBitmap ) + if ( iCpsPublisher) { - iMiniviewBitmap = new CFbsBitmap(); - } - - if ( iMiniviewBitmap && iCpsPublisher) - { + // Swap bitmaps + if(iActiveMiniviewBitmap == &iMiniviewBitmap1) + iActiveMiniviewBitmap = &iMiniviewBitmap2; + else + iActiveMiniviewBitmap = &iMiniviewBitmap1; + + // Take snapshot and publish TRAP_IGNORE( - (iEngine->TakeSnapshotL( *iMiniviewBitmap )); - iCpsPublisher->PublishBitmapL( *iMiniviewBitmap, *iWidgetBundleId ); + (iEngine->TakeSnapshotL( *iActiveMiniviewBitmap )); + iCpsPublisher->PublishBitmapL( *iActiveMiniviewBitmap, *iWidgetBundleId ); ); } #endif @@ -694,6 +751,7 @@ CWidgetPropertyValue* propValue = widgetRegistry.GetWidgetPropertyValueL(iUid, EAllowNetworkAccess ); TInt networkAccess = *propValue; delete propValue; + propValue = widgetRegistry.GetWidgetPropertyValueL(iUid, EAllowFullAccess ); TInt fullAccess = *propValue; delete propValue; @@ -738,13 +796,11 @@ if ( prompt ) { - CBrowserDialogsProvider* dialogProvider - = iWindowManager.DialogsProvider(); TBool grant = EFalse; HBufC* message = StringLoader::LoadLC( R_WIDGETUI_NETWORK_ACCESS ); HBufC* yes = StringLoader::LoadLC( R_WIDGETUI_SOFTKEY_YES ); HBufC* no = StringLoader::LoadLC( R_WIDGETUI_SOFTKEY_NO ); - grant = dialogProvider->DialogConfirmL( _L(""), *message, *yes, *no ); + grant = iDialogsProvider->DialogConfirmL( _L(""), *message, *yes, *no ); CleanupStack::PopAndDestroy( 3 ); // save prompt result for session SetNetworkAccessGrant( grant? EAllow : EDeny ); @@ -782,6 +838,7 @@ TInt ask( 1 ); TInt wmlId( KWmlNoDefaultAccessPoint ); TInt snapId( KWmlNoDefaultSnapId ); +#ifndef BRDO_OCC_ENABLED_FF CRepository* rep( NULL ); TRAPD( cenrepError, rep = CRepository::NewL( KCRUidBrowser ) ); if ( KErrNone == cenrepError ) @@ -791,6 +848,7 @@ (void)rep->Get( KBrowserNGDefaultSnapId, snapId ); } delete rep; +#endif if ( ask == EBrowserCenRepApSelModeDestination && ( snapId != KWmlNoDefaultSnapId) ) { @@ -810,6 +868,18 @@ iWindowManager.GetConnection()->SetRequestedAP( iap ); ); } + + if ( EBrowserCenRepApSelModeAlwaysAsk == ask ) + { + //Always ask case + TUint32 ap( 0 ); + iWindowManager.GetConnection()->SetRequestedAP( ap ); +#ifdef BRDO_OCC_ENABLED_FF + TUint32 snapId = 0; //Defaults connects to Internet snap + iWindowManager.GetConnection()->SetConnectionType(CMManager::EDestination); + iWindowManager.GetConnection()->SetRequestedSnap(snapId); +#endif + } } } @@ -825,11 +895,22 @@ if ( !iWindowManager.GetConnection()->Connected() ) { // 2.2. make a connection - TInt connFailure = iWindowManager.GetConnection()->StartConnectionL( ETrue ); + iConnecting=ETrue; + TInt connFailure = 0; + TRAPD(err, connFailure=iWindowManager.GetConnection()->StartConnectionL( ETrue )); + iConnecting=EFalse; + User::LeaveIfError(err); + if(iDeleteItself) + iAsyncCallBack->CallBack(); if (KErrCancel == connFailure) { #ifdef BRDO_WRT_HS_FF - iCpsPublisher->NetworkConnectionCancelledL(); + if(! (EMiniViewEnabled == WidgetMiniViewState() || + EMiniViewNotEnabled == WidgetMiniViewState()) ) + { + iCpsPublisher->NetworkConnectionCancelledL(); + iNetworkModeWait->Start(); + } #endif User::Leave( connFailure ); } @@ -843,7 +924,16 @@ User::Leave( connFailure ); } *aNewConn = ETrue; - + if(iWindowManager.GetNetworkMode() == EOfflineMode) + { + iWindowManager.GetConnection()->CancelConnection(); + iWindowManager.GetConnection()->StopConnectionL(); + User::Leave( KErrAccessDenied ); + } +#ifdef BRDO_OCC_ENABLED_FF + else + TRAP_IGNORE(iWindowManager.ConnNeededStatusL(KErrNone)); +#endif } } @@ -858,6 +948,13 @@ TApBearerType* aBearerType ) { +#ifdef BRDO_OCC_ENABLED_FF + TBool retryFlag = iWindowManager.GetRetryFlag(); + if( retryFlag ) + { + return; + } +#endif // default in case connection setup fails *aConnectionPtr = 0; @@ -957,8 +1054,11 @@ aDesArray, paramFound ); - TLex lex(dlId); - User::LeaveIfError(lex.Val(iDlId)); + if ( paramFound ) + { + TLex lex(dlId); + User::LeaveIfError(lex.Val(iDlId)); + } TDataType dataType( *contentType8 ); CAiwGenericParamList* genericParamList = @@ -1121,9 +1221,10 @@ { TNetworkState currNetState; RWidgetRegistryClientSession& widgetRegistry = iWindowManager.WidgetUIClientSession(); - TInt inMiniView = widgetRegistry.IsWidgetInMiniView( iUid); + TInt inMiniView = !(WidgetMiniViewState()==EMiniViewEnabled || WidgetMiniViewState()==EMiniViewNotEnabled);//widgetRegistry.IsWidgetInMiniView( iUid); CWidgetPropertyValue* propValue = widgetRegistry.GetWidgetPropertyValueL( iUid, EAllowNetworkAccess ); - TInt netAccessWdgtProp = *propValue; // AllowNetworkAccess in the info.plist file + TInt netAccessWdgtProp = propValue && *propValue; // AllowNetworkAccess in the info.plist file + delete propValue; if ( netAccessWdgtProp && ((inMiniView && (iWindowManager.GetNetworkMode() == (TInt)EOnlineMode)) || (!inMiniView && iUserPermission)) ) @@ -1183,4 +1284,66 @@ } } } + +// ----------------------------------------------------------------------------- +// CWidgetUiWindow::NeedToNotifyNetworkState() +// ----------------------------------------------------------------------------- +// +void CWidgetUiWindow::NeedToNotifyNetworkState(TBool aNetworkState) + { + iNeedToNotifyNetworkState = aNetworkState; + } + +// ----------------------------------------------------------------------------- +// CWidgetUiWindow::CanBeDeleted() +// ----------------------------------------------------------------------------- +// +TBool CWidgetUiWindow::CanBeDeleted() + { + iDeleteItself = iConnecting; + return !iConnecting; + } + + +void CWidgetUiWindow::DeleteItself() + { + iAsyncCallBack->CallBack(); + } + +// ----------------------------------------------------------------------------- +// CWidgetUiWindow::DeleteItself() +// ----------------------------------------------------------------------------- +// +TInt CWidgetUiWindow::DeleteItself(TAny* aPtr) + { + CWidgetUiWindow* self = (CWidgetUiWindow*)aPtr; + CWidgetUiWindowManager* p = &self->iWindowManager; + //if sync request start another event loop + if(self->Engine()->IsSynchRequestPending()) + { + self->DeleteItself(); + return KErrNone; + } + delete self; + //The Correct fix is to call AppUI::Exit() + //But that is leaving + if(p->WindowListCount() == 0) + User::Exit(KErrNone); + return 0; + } + +#ifdef BRDO_OCC_ENABLED_FF + void CWidgetUiWindow::CancelAllDialogs() + { + if( iDialogsProvider) + { + iDialogsProvider->CancelAll(); + } + } + + TBool CWidgetUiWindow::IsDialogsLaunched() + { + return (iDialogsProvider && iDialogsProvider->IsDialogLaunched() ); + } +#endif // End of file