/************************************************************** * * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. * *************************************************************/ // MARKER(update_precomp.py): autogen include statement, do not remove #include "precompiled_scui.hxx" //------------------------------------------------------------------ #include #include "mvtabdlg.hxx" #include "document.hxx" #include "docsh.hxx" #include "miscdlgs.hrc" #include "global.hxx" #include "scresid.hxx" #include "globstr.hrc" #include #if ENABLE_LAYOUT #undef ScResId #define ScResId(x) #x #undef ModalDialog #define ModalDialog( parent, id ) Dialog( parent, "move-copy-sheet.xml", id ) #endif /* ENABLE_LAYOUT */ //================================================================== ScMoveTableDlg::ScMoveTableDlg( Window* pParent ) : ModalDialog ( pParent, ScResId( RID_SCDLG_MOVETAB ) ), // aFtDoc ( this, ScResId( FT_DEST ) ), aLbDoc ( this, ScResId( LB_DEST ) ), aFtTable ( this, ScResId( FT_INSERT ) ), aLbTable ( this, ScResId( LB_INSERT ) ), aBtnCopy ( this, ScResId( BTN_COPY ) ), aBtnOk ( this, ScResId( BTN_OK ) ), aBtnCancel ( this, ScResId( BTN_CANCEL ) ), aBtnHelp ( this, ScResId( BTN_HELP ) ), // nDocument ( 0 ), nTable ( 0 ), bCopyTable ( sal_False ) { #if ENABLE_LAYOUT #undef ScResId SetHelpId (FID_TAB_MOVE); #endif /* ENABLE_LAYOUT */ Init(); FreeResource(); } //------------------------------------------------------------------------ __EXPORT ScMoveTableDlg::~ScMoveTableDlg() { } //------------------------------------------------------------------------ sal_uInt16 ScMoveTableDlg::GetSelectedDocument () const { return nDocument; } SCTAB ScMoveTableDlg::GetSelectedTable () const { return nTable; } sal_Bool ScMoveTableDlg::GetCopyTable () const { return bCopyTable; } void ScMoveTableDlg::SetCopyTable(sal_Bool bFlag) { aBtnCopy.Check(bFlag); } void ScMoveTableDlg::EnableCopyTable(sal_Bool bFlag) { if(bFlag) aBtnCopy.Enable(); else aBtnCopy.Disable(); } //------------------------------------------------------------------------ void __EXPORT ScMoveTableDlg::Init() { aBtnOk.SetClickHdl ( LINK( this, ScMoveTableDlg, OkHdl ) ); aLbDoc.SetSelectHdl ( LINK( this, ScMoveTableDlg, SelHdl ) ); aBtnCopy.Check( sal_False ); InitDocListBox(); SelHdl( &aLbDoc ); } //------------------------------------------------------------------------ void ScMoveTableDlg::InitDocListBox() { SfxObjectShell* pSh = SfxObjectShell::GetFirst(); ScDocShell* pScSh = NULL; sal_uInt16 nSelPos = 0; sal_uInt16 i = 0; aLbDoc.Clear(); aLbDoc.SetUpdateMode( sal_False ); while ( pSh ) { pScSh = PTR_CAST( ScDocShell, pSh ); if ( pScSh ) { if ( pScSh == SfxObjectShell::Current() ) nSelPos = i; aLbDoc.InsertEntry( pScSh->GetTitle(), i ); aLbDoc.SetEntryData( i, (void*)pScSh->GetDocument() ); i++; } pSh = SfxObjectShell::GetNext( *pSh ); } aLbDoc.SetUpdateMode( sal_True ); aLbDoc.InsertEntry( String( ScResId( STR_NEWDOC ) ) ); aLbDoc.SelectEntryPos( nSelPos ); } //------------------------------------------------------------------------ // Handler: IMPL_LINK( ScMoveTableDlg, OkHdl, void *, EMPTYARG ) { sal_uInt16 nDocSel = aLbDoc.GetSelectEntryPos(); sal_uInt16 nDocLast = aLbDoc.GetEntryCount()-1; sal_uInt16 nTabSel = aLbTable.GetSelectEntryPos(); sal_uInt16 nTabLast = aLbTable.GetEntryCount()-1; nDocument = (nDocSel != nDocLast) ? nDocSel : SC_DOC_NEW; nTable = (nTabSel != nTabLast) ? static_cast(nTabSel) : SC_TAB_APPEND; bCopyTable = aBtnCopy.IsChecked(); EndDialog( RET_OK ); return 0; } //------------------------------------------------------------------------ IMPL_LINK( ScMoveTableDlg, SelHdl, ListBox *, pLb ) { if ( pLb == &aLbDoc ) { ScDocument* pDoc = (ScDocument*) aLbDoc.GetEntryData( aLbDoc.GetSelectEntryPos() ); SCTAB nLast = 0; String aName; aLbTable.Clear(); aLbTable.SetUpdateMode( sal_False ); if ( pDoc ) { nLast = pDoc->GetTableCount()-1; for ( SCTAB i=0; i<=nLast; i++ ) { pDoc->GetName( i, aName ); aLbTable.InsertEntry( aName, static_cast(i) ); } } aLbTable.InsertEntry( ScGlobal::GetRscString(STR_MOVE_TO_END) ); aLbTable.SetUpdateMode( sal_True ); aLbTable.SelectEntryPos( 0 ); } return 0; }