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