1*cdf0e10cSrcweir /************************************************************************* 2*cdf0e10cSrcweir * 3*cdf0e10cSrcweir * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4*cdf0e10cSrcweir * 5*cdf0e10cSrcweir * Copyright 2000, 2010 Oracle and/or its affiliates. 6*cdf0e10cSrcweir * 7*cdf0e10cSrcweir * OpenOffice.org - a multi-platform office productivity suite 8*cdf0e10cSrcweir * 9*cdf0e10cSrcweir * This file is part of OpenOffice.org. 10*cdf0e10cSrcweir * 11*cdf0e10cSrcweir * OpenOffice.org is free software: you can redistribute it and/or modify 12*cdf0e10cSrcweir * it under the terms of the GNU Lesser General Public License version 3 13*cdf0e10cSrcweir * only, as published by the Free Software Foundation. 14*cdf0e10cSrcweir * 15*cdf0e10cSrcweir * OpenOffice.org is distributed in the hope that it will be useful, 16*cdf0e10cSrcweir * but WITHOUT ANY WARRANTY; without even the implied warranty of 17*cdf0e10cSrcweir * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18*cdf0e10cSrcweir * GNU Lesser General Public License version 3 for more details 19*cdf0e10cSrcweir * (a copy is included in the LICENSE file that accompanied this code). 20*cdf0e10cSrcweir * 21*cdf0e10cSrcweir * You should have received a copy of the GNU Lesser General Public License 22*cdf0e10cSrcweir * version 3 along with OpenOffice.org. If not, see 23*cdf0e10cSrcweir * <http://www.openoffice.org/license.html> 24*cdf0e10cSrcweir * for a copy of the LGPLv3 License. 25*cdf0e10cSrcweir * 26*cdf0e10cSrcweir ************************************************************************/ 27*cdf0e10cSrcweir 28*cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove 29*cdf0e10cSrcweir #include "precompiled_sc.hxx" 30*cdf0e10cSrcweir 31*cdf0e10cSrcweir 32*cdf0e10cSrcweir 33*cdf0e10cSrcweir // INCLUDE --------------------------------------------------------------- 34*cdf0e10cSrcweir 35*cdf0e10cSrcweir #include <svx/svdtrans.hxx> 36*cdf0e10cSrcweir #include <unotools/localedatawrapper.hxx> 37*cdf0e10cSrcweir 38*cdf0e10cSrcweir #include "colrowba.hxx" 39*cdf0e10cSrcweir #include "document.hxx" 40*cdf0e10cSrcweir #include "scmod.hxx" 41*cdf0e10cSrcweir #include "tabvwsh.hxx" 42*cdf0e10cSrcweir #include "docsh.hxx" 43*cdf0e10cSrcweir #include "appoptio.hxx" 44*cdf0e10cSrcweir #include "globstr.hrc" 45*cdf0e10cSrcweir 46*cdf0e10cSrcweir // STATIC DATA ----------------------------------------------------------- 47*cdf0e10cSrcweir 48*cdf0e10cSrcweir //================================================================== 49*cdf0e10cSrcweir 50*cdf0e10cSrcweir String lcl_MetricString( long nTwips, const String& rText ) 51*cdf0e10cSrcweir { 52*cdf0e10cSrcweir if ( nTwips <= 0 ) 53*cdf0e10cSrcweir return ScGlobal::GetRscString(STR_TIP_HIDE); 54*cdf0e10cSrcweir else 55*cdf0e10cSrcweir { 56*cdf0e10cSrcweir FieldUnit eUserMet = SC_MOD()->GetAppOptions().GetAppMetric(); 57*cdf0e10cSrcweir 58*cdf0e10cSrcweir sal_Int64 nUserVal = MetricField::ConvertValue( nTwips*100, 1, 2, FUNIT_TWIP, eUserMet ); 59*cdf0e10cSrcweir 60*cdf0e10cSrcweir String aStr = rText; 61*cdf0e10cSrcweir aStr += ' '; 62*cdf0e10cSrcweir aStr += ScGlobal::pLocaleData->getNum( nUserVal, 2 ); 63*cdf0e10cSrcweir aStr += ' '; 64*cdf0e10cSrcweir aStr += SdrFormatter::GetUnitStr(eUserMet); 65*cdf0e10cSrcweir 66*cdf0e10cSrcweir return aStr; 67*cdf0e10cSrcweir } 68*cdf0e10cSrcweir } 69*cdf0e10cSrcweir 70*cdf0e10cSrcweir //================================================================== 71*cdf0e10cSrcweir 72*cdf0e10cSrcweir ScColBar::ScColBar( Window* pParent, ScViewData* pData, ScHSplitPos eWhichPos, 73*cdf0e10cSrcweir ScHeaderFunctionSet* pFunc, ScHeaderSelectionEngine* pEng ) : 74*cdf0e10cSrcweir ScHeaderControl( pParent, pEng, MAXCOL+1, HDR_HORIZONTAL ), 75*cdf0e10cSrcweir pViewData( pData ), 76*cdf0e10cSrcweir eWhich( eWhichPos ), 77*cdf0e10cSrcweir pFuncSet( pFunc ), 78*cdf0e10cSrcweir pSelEngine( pEng ) 79*cdf0e10cSrcweir { 80*cdf0e10cSrcweir Show(); 81*cdf0e10cSrcweir } 82*cdf0e10cSrcweir 83*cdf0e10cSrcweir ScColBar::~ScColBar() 84*cdf0e10cSrcweir { 85*cdf0e10cSrcweir } 86*cdf0e10cSrcweir 87*cdf0e10cSrcweir inline sal_Bool ScColBar::UseNumericHeader() const 88*cdf0e10cSrcweir { 89*cdf0e10cSrcweir return pViewData->GetDocument()->GetAddressConvention() == formula::FormulaGrammar::CONV_XL_R1C1; 90*cdf0e10cSrcweir } 91*cdf0e10cSrcweir 92*cdf0e10cSrcweir SCCOLROW ScColBar::GetPos() 93*cdf0e10cSrcweir { 94*cdf0e10cSrcweir return pViewData->GetPosX(eWhich); 95*cdf0e10cSrcweir } 96*cdf0e10cSrcweir 97*cdf0e10cSrcweir sal_uInt16 ScColBar::GetEntrySize( SCCOLROW nEntryNo ) 98*cdf0e10cSrcweir { 99*cdf0e10cSrcweir ScDocument* pDoc = pViewData->GetDocument(); 100*cdf0e10cSrcweir SCTAB nTab = pViewData->GetTabNo(); 101*cdf0e10cSrcweir SCCOL nLastCol = -1; 102*cdf0e10cSrcweir if (pDoc->ColHidden(static_cast<SCCOL>(nEntryNo), nTab, nLastCol)) 103*cdf0e10cSrcweir return 0; 104*cdf0e10cSrcweir else 105*cdf0e10cSrcweir return (sal_uInt16) ScViewData::ToPixel( pDoc->GetColWidth( static_cast<SCCOL>(nEntryNo), nTab ), pViewData->GetPPTX() ); 106*cdf0e10cSrcweir } 107*cdf0e10cSrcweir 108*cdf0e10cSrcweir String ScColBar::GetEntryText( SCCOLROW nEntryNo ) 109*cdf0e10cSrcweir { 110*cdf0e10cSrcweir return UseNumericHeader() 111*cdf0e10cSrcweir ? String::CreateFromInt32( nEntryNo + 1 ) 112*cdf0e10cSrcweir : ScColToAlpha( static_cast<SCCOL>(nEntryNo) ); 113*cdf0e10cSrcweir } 114*cdf0e10cSrcweir 115*cdf0e10cSrcweir void ScColBar::SetEntrySize( SCCOLROW nPos, sal_uInt16 nNewSize ) 116*cdf0e10cSrcweir { 117*cdf0e10cSrcweir sal_uInt16 nSizeTwips; 118*cdf0e10cSrcweir ScSizeMode eMode = SC_SIZE_DIRECT; 119*cdf0e10cSrcweir if (nNewSize>0 && nNewSize<10) nNewSize=10; // (Pixel) 120*cdf0e10cSrcweir 121*cdf0e10cSrcweir if ( nNewSize == HDR_SIZE_OPTIMUM ) 122*cdf0e10cSrcweir { 123*cdf0e10cSrcweir nSizeTwips = STD_EXTRA_WIDTH; 124*cdf0e10cSrcweir eMode = SC_SIZE_OPTIMAL; 125*cdf0e10cSrcweir } 126*cdf0e10cSrcweir else 127*cdf0e10cSrcweir nSizeTwips = (sal_uInt16) ( nNewSize / pViewData->GetPPTX() ); 128*cdf0e10cSrcweir 129*cdf0e10cSrcweir ScMarkData& rMark = pViewData->GetMarkData(); 130*cdf0e10cSrcweir // SCTAB nTab = pViewData->GetTabNo(); 131*cdf0e10cSrcweir 132*cdf0e10cSrcweir SCCOLROW* pRanges = new SCCOLROW[MAXCOL+1]; 133*cdf0e10cSrcweir SCCOL nRangeCnt = 0; 134*cdf0e10cSrcweir if ( rMark.IsColumnMarked( static_cast<SCCOL>(nPos) ) ) 135*cdf0e10cSrcweir { 136*cdf0e10cSrcweir SCCOL nStart = 0; 137*cdf0e10cSrcweir while (nStart<=MAXCOL) 138*cdf0e10cSrcweir { 139*cdf0e10cSrcweir while (nStart<MAXCOL && !rMark.IsColumnMarked(nStart)) 140*cdf0e10cSrcweir ++nStart; 141*cdf0e10cSrcweir if (rMark.IsColumnMarked(nStart)) 142*cdf0e10cSrcweir { 143*cdf0e10cSrcweir SCCOL nEnd = nStart; 144*cdf0e10cSrcweir while (nEnd<MAXCOL && rMark.IsColumnMarked(nEnd)) 145*cdf0e10cSrcweir ++nEnd; 146*cdf0e10cSrcweir if (!rMark.IsColumnMarked(nEnd)) 147*cdf0e10cSrcweir --nEnd; 148*cdf0e10cSrcweir pRanges[static_cast<size_t>(2*nRangeCnt) ] = nStart; 149*cdf0e10cSrcweir pRanges[static_cast<size_t>(2*nRangeCnt+1)] = nEnd; 150*cdf0e10cSrcweir ++nRangeCnt; 151*cdf0e10cSrcweir nStart = nEnd+1; 152*cdf0e10cSrcweir } 153*cdf0e10cSrcweir else 154*cdf0e10cSrcweir nStart = MAXCOL+1; 155*cdf0e10cSrcweir } 156*cdf0e10cSrcweir } 157*cdf0e10cSrcweir else 158*cdf0e10cSrcweir { 159*cdf0e10cSrcweir pRanges[0] = nPos; 160*cdf0e10cSrcweir pRanges[1] = nPos; 161*cdf0e10cSrcweir nRangeCnt = 1; 162*cdf0e10cSrcweir } 163*cdf0e10cSrcweir 164*cdf0e10cSrcweir pViewData->GetView()->SetWidthOrHeight( sal_True, nRangeCnt, pRanges, eMode, nSizeTwips ); 165*cdf0e10cSrcweir delete[] pRanges; 166*cdf0e10cSrcweir } 167*cdf0e10cSrcweir 168*cdf0e10cSrcweir void ScColBar::HideEntries( SCCOLROW nStart, SCCOLROW nEnd ) 169*cdf0e10cSrcweir { 170*cdf0e10cSrcweir SCCOLROW nRange[2]; 171*cdf0e10cSrcweir nRange[0] = nStart; 172*cdf0e10cSrcweir nRange[1] = nEnd; 173*cdf0e10cSrcweir pViewData->GetView()->SetWidthOrHeight( sal_True, 1, nRange, SC_SIZE_DIRECT, 0 ); 174*cdf0e10cSrcweir } 175*cdf0e10cSrcweir 176*cdf0e10cSrcweir void ScColBar::SetMarking( sal_Bool bSet ) 177*cdf0e10cSrcweir { 178*cdf0e10cSrcweir pViewData->GetMarkData().SetMarking( bSet ); 179*cdf0e10cSrcweir if (!bSet) 180*cdf0e10cSrcweir { 181*cdf0e10cSrcweir pViewData->GetView()->UpdateAutoFillMark(); 182*cdf0e10cSrcweir } 183*cdf0e10cSrcweir } 184*cdf0e10cSrcweir 185*cdf0e10cSrcweir void ScColBar::SelectWindow() 186*cdf0e10cSrcweir { 187*cdf0e10cSrcweir ScTabViewShell* pViewSh = pViewData->GetViewShell(); 188*cdf0e10cSrcweir 189*cdf0e10cSrcweir pViewSh->SetActive(); // Appear und SetViewFrame 190*cdf0e10cSrcweir pViewSh->DrawDeselectAll(); 191*cdf0e10cSrcweir 192*cdf0e10cSrcweir ScSplitPos eActive = pViewData->GetActivePart(); 193*cdf0e10cSrcweir if (eWhich==SC_SPLIT_LEFT) 194*cdf0e10cSrcweir { 195*cdf0e10cSrcweir if (eActive==SC_SPLIT_TOPRIGHT) eActive=SC_SPLIT_TOPLEFT; 196*cdf0e10cSrcweir if (eActive==SC_SPLIT_BOTTOMRIGHT) eActive=SC_SPLIT_BOTTOMLEFT; 197*cdf0e10cSrcweir } 198*cdf0e10cSrcweir else 199*cdf0e10cSrcweir { 200*cdf0e10cSrcweir if (eActive==SC_SPLIT_TOPLEFT) eActive=SC_SPLIT_TOPRIGHT; 201*cdf0e10cSrcweir if (eActive==SC_SPLIT_BOTTOMLEFT) eActive=SC_SPLIT_BOTTOMRIGHT; 202*cdf0e10cSrcweir } 203*cdf0e10cSrcweir pViewSh->ActivatePart( eActive ); 204*cdf0e10cSrcweir 205*cdf0e10cSrcweir pFuncSet->SetColumn( sal_True ); 206*cdf0e10cSrcweir pFuncSet->SetWhich( eActive ); 207*cdf0e10cSrcweir 208*cdf0e10cSrcweir pViewSh->ActiveGrabFocus(); 209*cdf0e10cSrcweir } 210*cdf0e10cSrcweir 211*cdf0e10cSrcweir sal_Bool ScColBar::IsDisabled() 212*cdf0e10cSrcweir { 213*cdf0e10cSrcweir ScModule* pScMod = SC_MOD(); 214*cdf0e10cSrcweir return pScMod->IsFormulaMode() || pScMod->IsModalMode(); 215*cdf0e10cSrcweir } 216*cdf0e10cSrcweir 217*cdf0e10cSrcweir sal_Bool ScColBar::ResizeAllowed() 218*cdf0e10cSrcweir { 219*cdf0e10cSrcweir return !pViewData->HasEditView( pViewData->GetActivePart() ) && 220*cdf0e10cSrcweir !pViewData->GetDocShell()->IsReadOnly(); 221*cdf0e10cSrcweir } 222*cdf0e10cSrcweir 223*cdf0e10cSrcweir void ScColBar::DrawInvert( long nDragPosP ) 224*cdf0e10cSrcweir { 225*cdf0e10cSrcweir Rectangle aRect( nDragPosP,0, nDragPosP+HDR_SLIDERSIZE-1,GetOutputSizePixel().Width()-1 ); 226*cdf0e10cSrcweir Update(); 227*cdf0e10cSrcweir Invert(aRect); 228*cdf0e10cSrcweir 229*cdf0e10cSrcweir pViewData->GetView()->InvertVertical(eWhich,nDragPosP); 230*cdf0e10cSrcweir } 231*cdf0e10cSrcweir 232*cdf0e10cSrcweir String ScColBar::GetDragHelp( long nVal ) 233*cdf0e10cSrcweir { 234*cdf0e10cSrcweir long nTwips = (long) ( nVal / pViewData->GetPPTX() ); 235*cdf0e10cSrcweir return lcl_MetricString( nTwips, ScGlobal::GetRscString(STR_TIP_WIDTH) ); 236*cdf0e10cSrcweir } 237*cdf0e10cSrcweir 238*cdf0e10cSrcweir sal_Bool ScColBar::IsLayoutRTL() // overloaded only for columns 239*cdf0e10cSrcweir { 240*cdf0e10cSrcweir return pViewData->GetDocument()->IsLayoutRTL( pViewData->GetTabNo() ); 241*cdf0e10cSrcweir } 242*cdf0e10cSrcweir 243*cdf0e10cSrcweir //================================================================== 244*cdf0e10cSrcweir 245*cdf0e10cSrcweir ScRowBar::ScRowBar( Window* pParent, ScViewData* pData, ScVSplitPos eWhichPos, 246*cdf0e10cSrcweir ScHeaderFunctionSet* pFunc, ScHeaderSelectionEngine* pEng ) : 247*cdf0e10cSrcweir ScHeaderControl( pParent, pEng, MAXROW+1, HDR_VERTICAL ), 248*cdf0e10cSrcweir pViewData( pData ), 249*cdf0e10cSrcweir eWhich( eWhichPos ), 250*cdf0e10cSrcweir pFuncSet( pFunc ), 251*cdf0e10cSrcweir pSelEngine( pEng ) 252*cdf0e10cSrcweir { 253*cdf0e10cSrcweir Show(); 254*cdf0e10cSrcweir } 255*cdf0e10cSrcweir 256*cdf0e10cSrcweir ScRowBar::~ScRowBar() 257*cdf0e10cSrcweir { 258*cdf0e10cSrcweir } 259*cdf0e10cSrcweir 260*cdf0e10cSrcweir SCCOLROW ScRowBar::GetPos() 261*cdf0e10cSrcweir { 262*cdf0e10cSrcweir return pViewData->GetPosY(eWhich); 263*cdf0e10cSrcweir } 264*cdf0e10cSrcweir 265*cdf0e10cSrcweir sal_uInt16 ScRowBar::GetEntrySize( SCCOLROW nEntryNo ) 266*cdf0e10cSrcweir { 267*cdf0e10cSrcweir ScDocument* pDoc = pViewData->GetDocument(); 268*cdf0e10cSrcweir SCTAB nTab = pViewData->GetTabNo(); 269*cdf0e10cSrcweir SCROW nLastRow = -1; 270*cdf0e10cSrcweir if (pDoc->RowHidden(nEntryNo, nTab, nLastRow)) 271*cdf0e10cSrcweir return 0; 272*cdf0e10cSrcweir else 273*cdf0e10cSrcweir return (sal_uInt16) ScViewData::ToPixel( pDoc->GetOriginalHeight( nEntryNo, 274*cdf0e10cSrcweir nTab ), pViewData->GetPPTY() ); 275*cdf0e10cSrcweir } 276*cdf0e10cSrcweir 277*cdf0e10cSrcweir String ScRowBar::GetEntryText( SCCOLROW nEntryNo ) 278*cdf0e10cSrcweir { 279*cdf0e10cSrcweir return String::CreateFromInt32( nEntryNo + 1 ); 280*cdf0e10cSrcweir } 281*cdf0e10cSrcweir 282*cdf0e10cSrcweir void ScRowBar::SetEntrySize( SCCOLROW nPos, sal_uInt16 nNewSize ) 283*cdf0e10cSrcweir { 284*cdf0e10cSrcweir sal_uInt16 nSizeTwips; 285*cdf0e10cSrcweir ScSizeMode eMode = SC_SIZE_DIRECT; 286*cdf0e10cSrcweir if (nNewSize>0 && nNewSize<10) nNewSize=10; // (Pixel) 287*cdf0e10cSrcweir 288*cdf0e10cSrcweir if ( nNewSize == HDR_SIZE_OPTIMUM ) 289*cdf0e10cSrcweir { 290*cdf0e10cSrcweir nSizeTwips = 0; 291*cdf0e10cSrcweir eMode = SC_SIZE_OPTIMAL; 292*cdf0e10cSrcweir } 293*cdf0e10cSrcweir else 294*cdf0e10cSrcweir nSizeTwips = (sal_uInt16) ( nNewSize / pViewData->GetPPTY() ); 295*cdf0e10cSrcweir 296*cdf0e10cSrcweir ScMarkData& rMark = pViewData->GetMarkData(); 297*cdf0e10cSrcweir // SCTAB nTab = pViewData->GetTabNo(); 298*cdf0e10cSrcweir 299*cdf0e10cSrcweir SCCOLROW* pRanges = new SCCOLROW[MAXROW+1]; 300*cdf0e10cSrcweir SCROW nRangeCnt = 0; 301*cdf0e10cSrcweir if ( rMark.IsRowMarked( nPos ) ) 302*cdf0e10cSrcweir { 303*cdf0e10cSrcweir SCROW nStart = 0; 304*cdf0e10cSrcweir while (nStart<=MAXROW) 305*cdf0e10cSrcweir { 306*cdf0e10cSrcweir while (nStart<MAXROW && !rMark.IsRowMarked(nStart)) 307*cdf0e10cSrcweir ++nStart; 308*cdf0e10cSrcweir if (rMark.IsRowMarked(nStart)) 309*cdf0e10cSrcweir { 310*cdf0e10cSrcweir SCROW nEnd = nStart; 311*cdf0e10cSrcweir while (nEnd<MAXROW && rMark.IsRowMarked(nEnd)) 312*cdf0e10cSrcweir ++nEnd; 313*cdf0e10cSrcweir if (!rMark.IsRowMarked(nEnd)) 314*cdf0e10cSrcweir --nEnd; 315*cdf0e10cSrcweir pRanges[static_cast<size_t>(2*nRangeCnt) ] = nStart; 316*cdf0e10cSrcweir pRanges[static_cast<size_t>(2*nRangeCnt+1)] = nEnd; 317*cdf0e10cSrcweir ++nRangeCnt; 318*cdf0e10cSrcweir nStart = nEnd+1; 319*cdf0e10cSrcweir } 320*cdf0e10cSrcweir else 321*cdf0e10cSrcweir nStart = MAXROW+1; 322*cdf0e10cSrcweir } 323*cdf0e10cSrcweir } 324*cdf0e10cSrcweir else 325*cdf0e10cSrcweir { 326*cdf0e10cSrcweir pRanges[0] = nPos; 327*cdf0e10cSrcweir pRanges[1] = nPos; 328*cdf0e10cSrcweir nRangeCnt = 1; 329*cdf0e10cSrcweir } 330*cdf0e10cSrcweir 331*cdf0e10cSrcweir pViewData->GetView()->SetWidthOrHeight( sal_False, nRangeCnt, pRanges, eMode, nSizeTwips ); 332*cdf0e10cSrcweir delete[] pRanges; 333*cdf0e10cSrcweir } 334*cdf0e10cSrcweir 335*cdf0e10cSrcweir void ScRowBar::HideEntries( SCCOLROW nStart, SCCOLROW nEnd ) 336*cdf0e10cSrcweir { 337*cdf0e10cSrcweir SCCOLROW nRange[2]; 338*cdf0e10cSrcweir nRange[0] = nStart; 339*cdf0e10cSrcweir nRange[1] = nEnd; 340*cdf0e10cSrcweir pViewData->GetView()->SetWidthOrHeight( sal_False, 1, nRange, SC_SIZE_DIRECT, 0 ); 341*cdf0e10cSrcweir } 342*cdf0e10cSrcweir 343*cdf0e10cSrcweir void ScRowBar::SetMarking( sal_Bool bSet ) 344*cdf0e10cSrcweir { 345*cdf0e10cSrcweir pViewData->GetMarkData().SetMarking( bSet ); 346*cdf0e10cSrcweir if (!bSet) 347*cdf0e10cSrcweir { 348*cdf0e10cSrcweir pViewData->GetView()->UpdateAutoFillMark(); 349*cdf0e10cSrcweir } 350*cdf0e10cSrcweir } 351*cdf0e10cSrcweir 352*cdf0e10cSrcweir void ScRowBar::SelectWindow() 353*cdf0e10cSrcweir { 354*cdf0e10cSrcweir ScTabViewShell* pViewSh = pViewData->GetViewShell(); 355*cdf0e10cSrcweir 356*cdf0e10cSrcweir pViewSh->SetActive(); // Appear und SetViewFrame 357*cdf0e10cSrcweir pViewSh->DrawDeselectAll(); 358*cdf0e10cSrcweir 359*cdf0e10cSrcweir ScSplitPos eActive = pViewData->GetActivePart(); 360*cdf0e10cSrcweir if (eWhich==SC_SPLIT_TOP) 361*cdf0e10cSrcweir { 362*cdf0e10cSrcweir if (eActive==SC_SPLIT_BOTTOMLEFT) eActive=SC_SPLIT_TOPLEFT; 363*cdf0e10cSrcweir if (eActive==SC_SPLIT_BOTTOMRIGHT) eActive=SC_SPLIT_TOPRIGHT; 364*cdf0e10cSrcweir } 365*cdf0e10cSrcweir else 366*cdf0e10cSrcweir { 367*cdf0e10cSrcweir if (eActive==SC_SPLIT_TOPLEFT) eActive=SC_SPLIT_BOTTOMLEFT; 368*cdf0e10cSrcweir if (eActive==SC_SPLIT_TOPRIGHT) eActive=SC_SPLIT_BOTTOMRIGHT; 369*cdf0e10cSrcweir } 370*cdf0e10cSrcweir pViewSh->ActivatePart( eActive ); 371*cdf0e10cSrcweir 372*cdf0e10cSrcweir pFuncSet->SetColumn( sal_False ); 373*cdf0e10cSrcweir pFuncSet->SetWhich( eActive ); 374*cdf0e10cSrcweir 375*cdf0e10cSrcweir pViewSh->ActiveGrabFocus(); 376*cdf0e10cSrcweir } 377*cdf0e10cSrcweir 378*cdf0e10cSrcweir sal_Bool ScRowBar::IsDisabled() 379*cdf0e10cSrcweir { 380*cdf0e10cSrcweir ScModule* pScMod = SC_MOD(); 381*cdf0e10cSrcweir return pScMod->IsFormulaMode() || pScMod->IsModalMode(); 382*cdf0e10cSrcweir } 383*cdf0e10cSrcweir 384*cdf0e10cSrcweir sal_Bool ScRowBar::ResizeAllowed() 385*cdf0e10cSrcweir { 386*cdf0e10cSrcweir return !pViewData->HasEditView( pViewData->GetActivePart() ) && 387*cdf0e10cSrcweir !pViewData->GetDocShell()->IsReadOnly(); 388*cdf0e10cSrcweir } 389*cdf0e10cSrcweir 390*cdf0e10cSrcweir void ScRowBar::DrawInvert( long nDragPosP ) 391*cdf0e10cSrcweir { 392*cdf0e10cSrcweir Rectangle aRect( 0,nDragPosP, GetOutputSizePixel().Width()-1,nDragPosP+HDR_SLIDERSIZE-1 ); 393*cdf0e10cSrcweir Update(); 394*cdf0e10cSrcweir Invert(aRect); 395*cdf0e10cSrcweir 396*cdf0e10cSrcweir pViewData->GetView()->InvertHorizontal(eWhich,nDragPosP); 397*cdf0e10cSrcweir } 398*cdf0e10cSrcweir 399*cdf0e10cSrcweir String ScRowBar::GetDragHelp( long nVal ) 400*cdf0e10cSrcweir { 401*cdf0e10cSrcweir long nTwips = (long) ( nVal / pViewData->GetPPTY() ); 402*cdf0e10cSrcweir return lcl_MetricString( nTwips, ScGlobal::GetRscString(STR_TIP_HEIGHT) ); 403*cdf0e10cSrcweir } 404*cdf0e10cSrcweir 405*cdf0e10cSrcweir // GetHiddenCount ist nur fuer Zeilen ueberladen 406*cdf0e10cSrcweir 407*cdf0e10cSrcweir SCROW ScRowBar::GetHiddenCount( SCROW nEntryNo ) 408*cdf0e10cSrcweir { 409*cdf0e10cSrcweir ScDocument* pDoc = pViewData->GetDocument(); 410*cdf0e10cSrcweir SCTAB nTab = pViewData->GetTabNo(); 411*cdf0e10cSrcweir return pDoc->GetHiddenRowCount( nEntryNo, nTab ); 412*cdf0e10cSrcweir } 413*cdf0e10cSrcweir 414*cdf0e10cSrcweir sal_Bool ScRowBar::IsMirrored() // overloaded only for rows 415*cdf0e10cSrcweir { 416*cdf0e10cSrcweir return pViewData->GetDocument()->IsLayoutRTL( pViewData->GetTabNo() ); 417*cdf0e10cSrcweir } 418*cdf0e10cSrcweir 419*cdf0e10cSrcweir 420