summaryrefslogtreecommitdiff
path: root/sfx2/source/doc/objcont.cxx
diff options
context:
space:
mode:
authorFrank Schoenheit [fs] <frank.schoenheit@sun.com>2009-11-22 22:17:18 +0100
committerFrank Schoenheit [fs] <frank.schoenheit@sun.com>2009-11-22 22:17:18 +0100
commit70259f71b73997f8cf16a73ae1677ffa985717d0 (patch)
treea6d845a126d0c427e2ee93e38862df19baa4f56a /sfx2/source/doc/objcont.cxx
parent4acaac1b07aaa9173b74e68ebc849b7f49ec3e05 (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.cxx187
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;
}
//====================================================================