blob: 4960da412d358431cd95a58095b5b1225372c0f2 [file] [log] [blame]
/**************************************************************
*
* 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_sc.hxx"
#undef SC_DLLIMPLEMENTATION
//------------------------------------------------------------------
#include <vcl/msgbox.hxx>
#include "mvtabdlg.hxx"
#include "document.hxx"
#include "docsh.hxx"
#include "miscdlgs.hrc"
#include "global.hxx"
#include "scresid.hxx"
#include "globstr.hrc"
#include <layout/layout-pre.hxx>
#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<SCTAB>(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<sal_uInt16>(i) );
}
}
aLbTable.InsertEntry( ScGlobal::GetRscString(STR_MOVE_TO_END) );
aLbTable.SetUpdateMode( sal_True );
aLbTable.SelectEntryPos( 0 );
}
return 0;
}