blob: 4bd6a6309af4add3b3469e3ef2db4f802eba68ae [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 "inscodlg.hxx"
#include "scresid.hxx"
#include "miscdlgs.hrc"
//==================================================================
sal_Bool ScInsertContentsDlg::bPreviousAllCheck = sal_False;
sal_uInt16 ScInsertContentsDlg::nPreviousChecks = (IDF_VALUE | IDF_DATETIME | IDF_STRING);
sal_uInt16 ScInsertContentsDlg::nPreviousFormulaChecks = PASTE_NOFUNC;
sal_uInt16 ScInsertContentsDlg::nPreviousChecks2 = 0;
sal_uInt16 ScInsertContentsDlg::nPreviousMoveMode = INS_NONE; // enum InsCellCmd
//-----------------------------------------------------------------------
ScInsertContentsDlg::ScInsertContentsDlg( Window* pParent,
sal_uInt16 nCheckDefaults,
const String* pStrTitle )
: ModalDialog ( pParent, ScResId( RID_SCDLG_INSCONT ) ),
//
aFlFrame ( this, ScResId( FL_FRAME ) ),
aBtnInsAll ( this, ScResId( BTN_INSALL ) ),
aBtnInsStrings ( this, ScResId( BTN_INSSTRINGS ) ),
aBtnInsNumbers ( this, ScResId( BTN_INSNUMBERS ) ),
aBtnInsDateTime ( this, ScResId( BTN_INSDATETIME ) ),
aBtnInsFormulas ( this, ScResId( BTN_INSFORMULAS ) ),
aBtnInsNotes ( this, ScResId( BTN_INSNOTES ) ),
aBtnInsAttrs ( this, ScResId( BTN_INSATTRS ) ),
aBtnInsObjects ( this, ScResId( BTN_INSOBJECTS ) ),
aFlSep1 ( this, ScResId( FL_SEP1 ) ),
aFlOptions ( this, ScResId( FL_OPTIONS ) ),
aBtnSkipEmptyCells( this, ScResId(BTN_SKIP_EMPTY ) ),
aBtnTranspose ( this, ScResId( BTN_TRANSPOSE ) ),
aBtnLink ( this, ScResId( BTN_LINK ) ),
aFlOperation ( this, ScResId( FL_OPERATION ) ),
aRbNoOp ( this, ScResId( BTN_OP_NOOP ) ),
aRbAdd ( this, ScResId( BTN_OP_ADD ) ),
aRbSub ( this, ScResId( BTN_OP_SUB ) ),
aRbMul ( this, ScResId( BTN_OP_MUL ) ),
aRbDiv ( this, ScResId( BTN_OP_DIV ) ),
aFlSep2 ( this, ScResId( FL_SEP2 ) ),
aFlMove ( this, ScResId( FL_MOVE ) ),
aRbMoveNone ( this, ScResId( BTN_MV_NONE ) ),
aRbMoveDown ( this, ScResId( BTN_MV_DOWN ) ),
aRbMoveRight ( this, ScResId( BTN_MV_RIGHT ) ),
aBtnOk ( this, ScResId( BTN_OK ) ),
aBtnCancel ( this, ScResId( BTN_CANCEL ) ),
aBtnHelp ( this, ScResId( BTN_HELP ) ),
bOtherDoc ( sal_False ),
bFillMode ( sal_False ),
bChangeTrack ( sal_False ),
bMoveDownDisabled( sal_False ),
bMoveRightDisabled( sal_False )
{
if ( pStrTitle )
SetText( *pStrTitle );
if ( nCheckDefaults != 0 )
{
ScInsertContentsDlg::nPreviousChecks = nCheckDefaults;
ScInsertContentsDlg::bPreviousAllCheck = sal_False;
ScInsertContentsDlg::nPreviousChecks2 = 0;
}
aBtnInsAll.Check ( ScInsertContentsDlg::bPreviousAllCheck );
aBtnInsStrings.Check ( IS_SET( IDF_STRING,
ScInsertContentsDlg::nPreviousChecks ) );
aBtnInsNumbers.Check ( IS_SET( IDF_VALUE,
ScInsertContentsDlg::nPreviousChecks ) );
aBtnInsDateTime.Check( IS_SET( IDF_DATETIME,
ScInsertContentsDlg::nPreviousChecks ) );
aBtnInsFormulas.Check( IS_SET( IDF_FORMULA,
ScInsertContentsDlg::nPreviousChecks ) );
aBtnInsNotes.Check ( IS_SET( IDF_NOTE,
ScInsertContentsDlg::nPreviousChecks ) );
aBtnInsAttrs.Check ( IS_SET( IDF_ATTRIB,
ScInsertContentsDlg::nPreviousChecks ) );
aBtnInsObjects.Check ( IS_SET( IDF_OBJECTS,
ScInsertContentsDlg::nPreviousChecks ) );
switch( ScInsertContentsDlg::nPreviousFormulaChecks )
{
case PASTE_NOFUNC: aRbNoOp.Check(sal_True); break;
case PASTE_ADD: aRbAdd.Check(sal_True); break;
case PASTE_SUB: aRbSub.Check(sal_True); break;
case PASTE_MUL: aRbMul.Check(sal_True); break;
case PASTE_DIV: aRbDiv.Check(sal_True); break;
}
switch( ScInsertContentsDlg::nPreviousMoveMode )
{
case INS_NONE: aRbMoveNone.Check(sal_True); break;
case INS_CELLSDOWN: aRbMoveDown.Check(sal_True); break;
case INS_CELLSRIGHT: aRbMoveRight.Check(sal_True); break;
}
aBtnSkipEmptyCells.Check( ( ScInsertContentsDlg::nPreviousChecks2 & INS_CONT_NOEMPTY ) != 0);
aBtnTranspose.Check( ( ScInsertContentsDlg::nPreviousChecks2 & INS_CONT_TRANS ) != 0);
aBtnLink.Check( ( ScInsertContentsDlg::nPreviousChecks2 & INS_CONT_LINK ) != 0);
DisableChecks( aBtnInsAll.IsChecked() );
aFlSep1.SetStyle( aFlSep1.GetStyle() | WB_VERT );
aFlSep2.SetStyle( aFlSep2.GetStyle() | WB_VERT );
aBtnInsAll.SetClickHdl( LINK( this, ScInsertContentsDlg, InsAllHdl ) );
aBtnLink.SetClickHdl( LINK( this, ScInsertContentsDlg, LinkBtnHdl ) );
//-------------
FreeResource();
}
//------------------------------------------------------------------------
sal_uInt16 ScInsertContentsDlg::GetInsContentsCmdBits() const
{
ScInsertContentsDlg::nPreviousChecks = 0;
if ( aBtnInsStrings.IsChecked() )
ScInsertContentsDlg::nPreviousChecks = IDF_STRING;
if ( aBtnInsNumbers.IsChecked() )
ScInsertContentsDlg::nPreviousChecks |= IDF_VALUE;
if ( aBtnInsDateTime.IsChecked())
ScInsertContentsDlg::nPreviousChecks |= IDF_DATETIME;
if ( aBtnInsFormulas.IsChecked())
ScInsertContentsDlg::nPreviousChecks |= IDF_FORMULA;
if ( aBtnInsNotes.IsChecked() )
ScInsertContentsDlg::nPreviousChecks |= IDF_NOTE;
if ( aBtnInsAttrs.IsChecked() )
ScInsertContentsDlg::nPreviousChecks |= IDF_ATTRIB;
if ( aBtnInsObjects.IsChecked() )
ScInsertContentsDlg::nPreviousChecks |= IDF_OBJECTS;
ScInsertContentsDlg::bPreviousAllCheck = aBtnInsAll.IsChecked();
return ( (ScInsertContentsDlg::bPreviousAllCheck)
? IDF_ALL
: ScInsertContentsDlg::nPreviousChecks );
}
//------------------------------------------------------------------------
InsCellCmd ScInsertContentsDlg::GetMoveMode()
{
if ( aRbMoveDown.IsChecked() )
return INS_CELLSDOWN;
if ( aRbMoveRight.IsChecked() )
return INS_CELLSRIGHT;
return INS_NONE;
}
//------------------------------------------------------------------------
void ScInsertContentsDlg::DisableChecks( sal_Bool bInsAllChecked )
{
if ( bInsAllChecked )
{
aBtnInsStrings.Disable();
aBtnInsNumbers.Disable();
aBtnInsDateTime.Disable();
aBtnInsFormulas.Disable();
aBtnInsNotes.Disable();
aBtnInsAttrs.Disable();
aBtnInsObjects.Disable();
}
else
{
aBtnInsStrings.Enable();
aBtnInsNumbers.Enable();
aBtnInsDateTime.Enable();
aBtnInsFormulas.Enable();
aBtnInsNotes.Enable();
aBtnInsAttrs.Enable();
// "Objects" is disabled for "Fill Tables"
if ( bFillMode )
aBtnInsObjects.Disable();
else
aBtnInsObjects.Enable();
}
}
// Link in anderes Dokument -> alles andere disabled
void ScInsertContentsDlg::TestModes()
{
if ( bOtherDoc && aBtnLink.IsChecked() )
{
aBtnSkipEmptyCells.Disable();
aBtnTranspose.Disable();
aRbNoOp.Disable();
aRbAdd.Disable();
aRbSub.Disable();
aRbMul.Disable();
aRbDiv.Disable();
aFlOperation.Disable();
aRbMoveNone.Disable();
aRbMoveDown.Disable();
aRbMoveRight.Disable();
aFlMove.Disable();
aFlFrame.Disable();
aBtnInsAll.Disable();
DisableChecks(sal_True);
}
else
{
aBtnSkipEmptyCells.Enable();
aBtnTranspose.Enable(!bFillMode);
aRbNoOp.Enable();
aRbAdd.Enable();
aRbSub.Enable();
aRbMul.Enable();
aRbDiv.Enable();
aFlOperation.Enable();
aRbMoveNone.Enable(!bFillMode && !bChangeTrack && !(bMoveDownDisabled && bMoveRightDisabled));
aRbMoveDown.Enable(!bFillMode && !bChangeTrack && !bMoveDownDisabled);
aRbMoveRight.Enable(!bFillMode && !bChangeTrack && !bMoveRightDisabled);
aFlMove.Enable(!bFillMode && !bChangeTrack && !(bMoveDownDisabled && bMoveRightDisabled));
aFlFrame.Enable();
aBtnInsAll.Enable();
DisableChecks( aBtnInsAll.IsChecked() );
}
}
void ScInsertContentsDlg::SetOtherDoc( sal_Bool bSet )
{
if ( bSet != bOtherDoc )
{
bOtherDoc = bSet;
TestModes();
if ( bSet )
aRbMoveNone.Check(sal_True);
}
}
void ScInsertContentsDlg::SetFillMode( sal_Bool bSet )
{
if ( bSet != bFillMode )
{
bFillMode = bSet;
TestModes();
if ( bSet )
aRbMoveNone.Check(sal_True);
}
}
void ScInsertContentsDlg::SetChangeTrack( sal_Bool bSet )
{
if ( bSet != bChangeTrack )
{
bChangeTrack = bSet;
TestModes();
if ( bSet )
aRbMoveNone.Check(sal_True);
}
}
void ScInsertContentsDlg::SetCellShiftDisabled( int nDisable )
{
sal_Bool bDown = ((nDisable & SC_CELL_SHIFT_DISABLE_DOWN) != 0);
sal_Bool bRight = ((nDisable & SC_CELL_SHIFT_DISABLE_RIGHT) != 0);
if ( bDown != bMoveDownDisabled || bRight != bMoveRightDisabled )
{
bMoveDownDisabled = bDown;
bMoveRightDisabled = bRight;
TestModes();
if ( bMoveDownDisabled && aRbMoveDown.IsChecked() )
aRbMoveNone.Check(sal_True);
if ( bMoveRightDisabled && aRbMoveRight.IsChecked() )
aRbMoveNone.Check(sal_True);
}
}
//------------------------------------------------------------------------
IMPL_LINK( ScInsertContentsDlg, InsAllHdl, void*, EMPTYARG )
{
DisableChecks( aBtnInsAll.IsChecked() );
return 0;
}
IMPL_LINK( ScInsertContentsDlg, LinkBtnHdl, void*, EMPTYARG )
{
TestModes();
return 0;
}
__EXPORT ScInsertContentsDlg::~ScInsertContentsDlg()
{
ScInsertContentsDlg::nPreviousChecks2 = 0;
if(aBtnSkipEmptyCells.IsChecked())
ScInsertContentsDlg::nPreviousChecks2 |= INS_CONT_NOEMPTY;
if( aBtnTranspose.IsChecked())
ScInsertContentsDlg::nPreviousChecks2 |= INS_CONT_TRANS;
if( aBtnLink.IsChecked() )
ScInsertContentsDlg::nPreviousChecks2 |= INS_CONT_LINK;
if (!bFillMode) // im FillMode ist None gecheckt und alle 3 disabled
{
if ( aRbMoveNone.IsChecked() )
ScInsertContentsDlg::nPreviousMoveMode = INS_NONE;
else if ( aRbMoveDown.IsChecked() )
ScInsertContentsDlg::nPreviousMoveMode = INS_CELLSDOWN;
else if ( aRbMoveRight.IsChecked() )
ScInsertContentsDlg::nPreviousMoveMode = INS_CELLSRIGHT;
}
}
sal_uInt16 ScInsertContentsDlg::GetFormulaCmdBits() const
{
ScInsertContentsDlg::nPreviousFormulaChecks = PASTE_NOFUNC;
if(aRbAdd.IsChecked())
ScInsertContentsDlg::nPreviousFormulaChecks = PASTE_ADD;
else if(aRbSub.IsChecked())
ScInsertContentsDlg::nPreviousFormulaChecks = PASTE_SUB;
else if(aRbMul.IsChecked())
ScInsertContentsDlg::nPreviousFormulaChecks = PASTE_MUL;
else if(aRbDiv.IsChecked())
ScInsertContentsDlg::nPreviousFormulaChecks = PASTE_DIV;
// Bits fuer Checkboxen ausblenden
return ScInsertContentsDlg::nPreviousFormulaChecks;
}