diff options
author | Frank Schoenheit [fs] <frank.schoenheit@sun.com> | 2009-11-22 22:17:18 +0100 |
---|---|---|
committer | Frank Schoenheit [fs] <frank.schoenheit@sun.com> | 2009-11-22 22:17:18 +0100 |
commit | 70259f71b73997f8cf16a73ae1677ffa985717d0 (patch) | |
tree | a6d845a126d0c427e2ee93e38862df19baa4f56a /sfx2/source/doc/objcont.cxx | |
parent | 4acaac1b07aaa9173b74e68ebc849b7f49ec3e05 (diff) |
[CWS autorecovery] removed the unused "Save Window State with Document" option
This happened in further preparation for issue #i65597#, where the current phase aims
at changing the SFX-Document-Loader to be completely UNO-based, by introducing a
UNO-ViewFactory in SFX.
Diffstat (limited to 'sfx2/source/doc/objcont.cxx')
-rw-r--r-- | sfx2/source/doc/objcont.cxx | 187 |
1 files changed, 61 insertions, 126 deletions
diff --git a/sfx2/source/doc/objcont.cxx b/sfx2/source/doc/objcont.cxx index a946cc690318..a7561b7dec37 100644 --- a/sfx2/source/doc/objcont.cxx +++ b/sfx2/source/doc/objcont.cxx @@ -89,12 +89,11 @@ using namespace ::com::sun::star; using namespace ::com::sun::star::uno; +using ::com::sun::star::document::XViewDataSupplier; +using ::com::sun::star::container::XIndexAccess; //==================================================================== -#define SFX_WINDOWS_STREAM "SfxWindows" -#define SFX_PREVIEW_STREAM "SfxPreview" - //==================================================================== static @@ -194,165 +193,101 @@ SfxObjectShell::CreatePreviewMetaFile_Impl( sal_Bool bFullContent, sal_Bool bHig //==================================================================== -SfxViewFrame* SfxObjectShell::LoadWindows_Impl( SfxTopFrame& rPreferedFrame ) +bool SfxObjectShell::LoadView_Impl( SfxTopFrame& rPreferedFrame ) { - if ( pImp->bLoadingWindows ) - return NULL; + return false; DBG_ASSERT( GetMedium(), "A Medium should exist here!"); - if( !GetMedium() ) - return 0; + if ( !GetMedium() ) + return false; // get correct mode SFX_APP(); SfxViewFrame* pPreferedViewFrame = rPreferedFrame.GetCurrentViewFrame(); - SvtSaveOptions aOpt; - BOOL bLoadDocWins = aOpt.IsSaveDocWins() && !pPreferedViewFrame; - - // try to get viewdata information for XML format - REFERENCE < XVIEWDATASUPPLIER > xViewDataSupplier( GetModel(), ::com::sun::star::uno::UNO_QUERY ); - REFERENCE < XINDEXACCESS > xViewData; + // obtain view data + Reference< XViewDataSupplier > xViewDataSupplier( GetModel(), UNO_QUERY ); + Reference< XIndexAccess > xViewData; if ( xViewDataSupplier.is() ) - { xViewData = xViewDataSupplier->getViewData(); - if ( !xViewData.is() ) - return NULL; - } - else - return NULL; - SfxViewFrame *pActiveFrame = 0; - String aWinData; - SfxItemSet *pSet = GetMedium()->GetItemSet(); + if ( !xViewData.is() || ( xViewData->getCount() == 0 ) ) + return false; + + SfxItemSet* pSet = GetMedium()->GetItemSet(); pImp->bLoadingWindows = TRUE; - BOOL bLoaded = FALSE; - sal_Int32 nView = 0; // get saved information for all views - SfxTopFrame* pCurrentTargetFrame = &rPreferedFrame; - while ( TRUE ) + // get viewdata and look for the stored ViewId + USHORT nViewId = 0; + SEQUENCE < PROPERTYVALUE > aUserData; + if ( xViewData->getByIndex( 0 ) >>= aUserData ) { - USHORT nViewId = 0; - String aUserData; // used in the binary format - SEQUENCE < PROPERTYVALUE > aSeq; // used in the XML format - - // XML format - // active view is the first view in the container - FASTBOOL bActive = ( nView == 0 ); - - if ( nView == xViewData->getCount() ) - // finished - break; - - // get viewdata and look for the stored ViewId - ::com::sun::star::uno::Any aAny = xViewData->getByIndex( nView++ ); - if ( aAny >>= aSeq ) + ::comphelper::NamedValueCollection aNamedUserData( aUserData ); + ::rtl::OUString sViewId = aNamedUserData.getOrDefault( "ViewId", ::rtl::OUString() ); + if ( sViewId.getLength() ) { - ::comphelper::NamedValueCollection aNamedUserData( aSeq ); - ::rtl::OUString sViewId = aNamedUserData.getOrDefault( "ViewId", ::rtl::OUString() ); - if ( sViewId.getLength() ) - { - sViewId = sViewId.copy( 4 ); // format is like in "view3" - nViewId = USHORT( sViewId.toInt32() ); - } + sViewId = sViewId.copy( 4 ); // format is like in "view3" + nViewId = USHORT( sViewId.toInt32() ); } + } - // load only active view, but current item is not the active one ? - // in XML format the active view is the first one - if ( !bLoadDocWins && !bActive ) - break; - - pSet->ClearItem( SID_USER_DATA ); - SfxViewFrame *pFrame = 0; - if ( pPreferedViewFrame ) + pSet->ClearItem( SID_USER_DATA ); + SfxViewFrame* pTargetFrame = pPreferedViewFrame; + if ( pTargetFrame ) + { + // use the frame from the arguments, but don't set a window size + if ( pTargetFrame->GetViewShell() || !pTargetFrame->GetObjectShell() ) { - // use the frame from the arguments, but don't set a window size - pFrame = pPreferedViewFrame; - if ( pFrame->GetViewShell() || !pFrame->GetObjectShell() ) - { - pSet->ClearItem( SID_VIEW_POS_SIZE ); - pSet->ClearItem( SID_WIN_POSSIZE ); - pSet->Put( SfxUInt16Item( SID_VIEW_ID, nViewId ) ); + pSet->ClearItem( SID_VIEW_POS_SIZE ); + pSet->ClearItem( SID_WIN_POSSIZE ); + pSet->Put( SfxUInt16Item( SID_VIEW_ID, nViewId ) ); - // avoid flickering controllers - SfxBindings &rBind = pFrame->GetBindings(); - rBind.ENTERREGISTRATIONS(); + // avoid flickering controllers + SfxBindings &rBind = pTargetFrame->GetBindings(); + rBind.ENTERREGISTRATIONS(); - // set document into frame - pCurrentTargetFrame->InsertDocument_Impl( *this ); + // set document into frame + rPreferedFrame.InsertDocument_Impl( *this ); - // restart controller updating - rBind.LEAVEREGISTRATIONS(); - } - else - { - // create new view - pFrame->CreateView_Impl( nViewId ); - } + // restart controller updating + rBind.LEAVEREGISTRATIONS(); } else { - if ( bLoadDocWins ) - { - // open in the background - pSet->Put( SfxUInt16Item( SID_VIEW_ZOOM_MODE, 0 ) ); - pSet->Put( SfxRectangleItem( SID_VIEW_POS_SIZE, Rectangle() ) ); - } - - pSet->Put( SfxUInt16Item( SID_VIEW_ID, nViewId ) ); - - if ( pCurrentTargetFrame ) - { - // Frame "ubergeben, allerdings ist der noch leer - pCurrentTargetFrame->InsertDocument_Impl( *this ); - pFrame = pCurrentTargetFrame->GetCurrentViewFrame(); - } - else - { - pFrame = SfxTopFrame::Create( this, nViewId, FALSE, pSet )->GetCurrentViewFrame(); - } - - // only temporary data, don't hold it in the itemset - pSet->ClearItem( SID_VIEW_POS_SIZE ); - pSet->ClearItem( SID_WIN_POSSIZE ); - pSet->ClearItem( SID_VIEW_ZOOM_MODE ); - } - - bLoaded = TRUE; - - // UserData hier einlesen, da es ansonsten immer mit bBrowse=TRUE - // aufgerufen wird, beim Abspeichern wurde aber bBrowse=FALSE verwendet - if ( pFrame && pFrame->GetViewShell() ) - { - if ( aUserData.Len() ) - pFrame->GetViewShell()->ReadUserData( aUserData, !bLoadDocWins ); - else if ( aSeq.getLength() ) - pFrame->GetViewShell()->ReadUserDataSequence( aSeq, !bLoadDocWins ); + // create new view + pTargetFrame->CreateView_Impl( nViewId ); } + } + else + { + pSet->Put( SfxUInt16Item( SID_VIEW_ID, nViewId ) ); - // perhaps there are more windows to load - pCurrentTargetFrame = NULL; - - if ( bActive ) - pActiveFrame = pFrame; + // Frame "ubergeben, allerdings ist der noch leer + rPreferedFrame.InsertDocument_Impl( *this ); + pTargetFrame = rPreferedFrame.GetCurrentViewFrame(); - if( pPreferedViewFrame || !bLoadDocWins ) - // load only active window - break; + // only temporary data, don't hold it in the itemset + pSet->ClearItem( SID_VIEW_POS_SIZE ); + pSet->ClearItem( SID_WIN_POSSIZE ); + pSet->ClearItem( SID_VIEW_ZOOM_MODE ); } - if ( pActiveFrame ) + // UserData hier einlesen, da es ansonsten immer mit bBrowse=TRUE + // aufgerufen wird, beim Abspeichern wurde aber bBrowse=FALSE verwendet + if ( pTargetFrame && pTargetFrame->GetViewShell() && aUserData.getLength() ) { - if ( !pPreferedViewFrame ) - // activate frame - pActiveFrame->MakeActive_Impl( TRUE ); + pTargetFrame->GetViewShell()->ReadUserDataSequence( aUserData, TRUE ); } + if ( pTargetFrame && !pPreferedViewFrame ) + // activate frame + pTargetFrame->MakeActive_Impl( TRUE ); + pImp->bLoadingWindows = FALSE; - return pPreferedViewFrame && bLoaded ? pPreferedViewFrame : pActiveFrame; + return true; } //==================================================================== |