LibreOffice Module sc (master)  1
viewutil.cxx
Go to the documentation of this file.
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /*
3  * This file is part of the LibreOffice project.
4  *
5  * This Source Code Form is subject to the terms of the Mozilla Public
6  * License, v. 2.0. If a copy of the MPL was not distributed with this
7  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8  *
9  * This file incorporates work covered by the following license notice:
10  *
11  * Licensed to the Apache Software Foundation (ASF) under one or more
12  * contributor license agreements. See the NOTICE file distributed
13  * with this work for additional information regarding copyright
14  * ownership. The ASF licenses this file to you under the Apache
15  * License, Version 2.0 (the "License"); you may not use this file
16  * except in compliance with the License. You may obtain a copy of
17  * the License at http://www.apache.org/licenses/LICENSE-2.0 .
18  */
19 
20 #include <scitems.hxx>
21 #include <sfx2/bindings.hxx>
22 #include <sfx2/viewsh.hxx>
23 #include <sfx2/dispatch.hxx>
24 #include <editeng/fontitem.hxx>
25 #include <editeng/langitem.hxx>
27 #include <svl/itempool.hxx>
28 #include <svl/itemset.hxx>
29 #include <svl/cjkoptions.hxx>
30 #include <svl/ctloptions.hxx>
31 #include <vcl/svapp.hxx>
32 #include <vcl/settings.hxx>
33 #include <vcl/window.hxx>
34 #include <sfx2/objsh.hxx>
35 #include <sfx2/viewfrm.hxx>
36 #include <svl/eitem.hxx>
37 #include <osl/diagnose.h>
38 
39 #include <viewutil.hxx>
40 #include <chgtrack.hxx>
41 #include <chgviset.hxx>
42 #include <markdata.hxx>
43 #include <document.hxx>
44 
45 #include <svx/svxdlg.hxx>
46 #include <svx/svxids.hrc>
47 #include <memory>
48 
49 void ScViewUtil::PutItemScript( SfxItemSet& rShellSet, const SfxItemSet& rCoreSet,
50  sal_uInt16 nWhichId, SvtScriptType nScript )
51 {
52  // take the effective item from rCoreSet according to nScript
53  // and put in rShellSet under the (base) nWhichId
54 
55  SfxItemPool& rPool = *rShellSet.GetPool();
56  SvxScriptSetItem aSetItem( rPool.GetSlotId(nWhichId), rPool );
57  // use PutExtended with eDefaultAs = SfxItemState::SET, so defaults from rCoreSet
58  // (document pool) are read and put into rShellSet (MessagePool)
59  aSetItem.GetItemSet().PutExtended( rCoreSet, SfxItemState::DONTCARE, SfxItemState::SET );
60  const SfxPoolItem* pI = aSetItem.GetItemOfScript( nScript );
61  if (pI)
62  {
63  rShellSet.Put( pI->CloneSetWhich(nWhichId) );
64  }
65  else
66  rShellSet.InvalidateItem( nWhichId );
67 }
68 
70 {
71  // used for thesaurus
72 
73  SvtScriptType nScript = rDoc.GetScriptType(rPos.Col(), rPos.Row(), rPos.Tab());
74  sal_uInt16 nWhich = ( nScript == SvtScriptType::ASIAN ) ? ATTR_CJK_FONT_LANGUAGE :
75  ( ( nScript == SvtScriptType::COMPLEX ) ? ATTR_CTL_FONT_LANGUAGE : ATTR_FONT_LANGUAGE );
76  const SfxPoolItem* pItem = rDoc.GetAttr( rPos.Col(), rPos.Row(), rPos.Tab(), nWhich);
77  const SvxLanguageItem* pLangIt = dynamic_cast<const SvxLanguageItem*>( pItem );
78  LanguageType eLnge;
79  if (pLangIt)
80  {
81  eLnge = pLangIt->GetValue();
82  if (eLnge == LANGUAGE_DONTKNOW)
83  {
84  LanguageType eLatin, eCjk, eCtl;
85  rDoc.GetLanguage( eLatin, eCjk, eCtl );
86  eLnge = ( nScript == SvtScriptType::ASIAN ) ? eCjk :
87  ( ( nScript == SvtScriptType::COMPLEX ) ? eCtl : eLatin );
88  }
89  }
90  else
91  eLnge = LANGUAGE_ENGLISH_US;
92  if ( eLnge == LANGUAGE_SYSTEM )
93  eLnge = Application::GetSettings().GetLanguageTag().getLanguageType(); // never use SYSTEM for spelling
94 
95  return eLnge;
96 }
97 
99 {
100  TransliterationFlags nType = TransliterationFlags::NONE;
101  switch ( nSlotID )
102  {
103  case SID_TRANSLITERATE_SENTENCE_CASE:
104  nType = TransliterationFlags::SENTENCE_CASE;
105  break;
106  case SID_TRANSLITERATE_TITLE_CASE:
107  nType = TransliterationFlags::TITLE_CASE;
108  break;
109  case SID_TRANSLITERATE_TOGGLE_CASE:
110  nType = TransliterationFlags::TOGGLE_CASE;
111  break;
112  case SID_TRANSLITERATE_UPPER:
113  nType = TransliterationFlags::LOWERCASE_UPPERCASE;
114  break;
115  case SID_TRANSLITERATE_LOWER:
116  nType = TransliterationFlags::UPPERCASE_LOWERCASE;
117  break;
118  case SID_TRANSLITERATE_HALFWIDTH:
119  nType = TransliterationFlags::FULLWIDTH_HALFWIDTH;
120  break;
121  case SID_TRANSLITERATE_FULLWIDTH:
122  nType = TransliterationFlags::HALFWIDTH_FULLWIDTH;
123  break;
124  case SID_TRANSLITERATE_HIRAGANA:
125  nType = TransliterationFlags::KATAKANA_HIRAGANA;
126  break;
127  case SID_TRANSLITERATE_KATAKANA:
128  nType = TransliterationFlags::HIRAGANA_KATAKANA;
129  break;
130  }
131  return nType;
132 }
133 
135  const ScChangeViewSettings& rSettings,
136  ScDocument& rDocument )
137 {
138  // discarded are displayed as inverted accepted action, because of this
139  // order of ShowRejected/ShowAccepted is important
140 
141  if ( !rSettings.IsShowRejected() && rAction.IsRejecting() )
142  return false;
143 
144  if ( !rSettings.IsShowAccepted() && rAction.IsAccepted() && !rAction.IsRejecting() )
145  return false;
146 
147  if ( rSettings.HasAuthor() && rAction.GetUser() != rSettings.GetTheAuthorToShow() )
148  return false;
149 
150  if ( rSettings.HasComment() )
151  {
152  OUString aTmp;
153  rAction.GetDescription(aTmp, rDocument);
154  OUString aComStr = rAction.GetComment() + " (" + aTmp + ")";
155 
156  if(!rSettings.IsValidComment(&aComStr))
157  return false;
158  }
159 
160  if ( rSettings.HasRange() )
161  if ( !rSettings.GetTheRangeList().Intersects( rAction.GetBigRange().MakeRange() ) )
162  return false;
163 
164  if (rSettings.HasDate() && rSettings.GetTheDateMode() != SvxRedlinDateMode::NONE)
165  {
166  DateTime aDateTime = rAction.GetDateTime();
167  const DateTime& rFirst = rSettings.GetTheFirstDateTime();
168  const DateTime& rLast = rSettings.GetTheLastDateTime();
169  switch ( rSettings.GetTheDateMode() )
170  { // corresponds with ScHighlightChgDlg::OKBtnHdl
171  case SvxRedlinDateMode::BEFORE:
172  if ( aDateTime > rFirst )
173  return false;
174  break;
175 
176  case SvxRedlinDateMode::SINCE:
177  if ( aDateTime < rFirst )
178  return false;
179  break;
180 
181  case SvxRedlinDateMode::EQUAL:
182  case SvxRedlinDateMode::BETWEEN:
183  if ( aDateTime < rFirst || aDateTime > rLast )
184  return false;
185  break;
186 
187  case SvxRedlinDateMode::NOTEQUAL:
188  if ( aDateTime >= rFirst && aDateTime <= rLast )
189  return false;
190  break;
191 
192  case SvxRedlinDateMode::SAVE:
193  {
194  ScChangeTrack* pTrack = rDocument.GetChangeTrack();
195  if ( !pTrack || pTrack->GetLastSavedActionNumber() >=
196  rAction.GetActionNumber() )
197  return false;
198  }
199  break;
200 
201  default:
202  {
203  // added to avoid warnings
204  }
205  }
206  }
207 
208  if ( rSettings.HasActionRange() )
209  {
210  sal_uLong nAction = rAction.GetActionNumber();
211  sal_uLong nFirstAction;
212  sal_uLong nLastAction;
213  rSettings.GetTheActionRange( nFirstAction, nLastAction );
214  if ( nAction < nFirstAction || nAction > nLastAction )
215  {
216  return false;
217  }
218  }
219 
220  return true;
221 }
222 
224 {
225  rMark.MarkToMulti();
226 
227  ScRange aMultiArea;
228  rMark.GetMultiMarkArea( aMultiArea );
229  SCCOL nStartCol = aMultiArea.aStart.Col();
230  SCROW nStartRow = aMultiArea.aStart.Row();
231  SCCOL nEndCol = aMultiArea.aEnd.Col();
232  SCROW nEndRow = aMultiArea.aEnd.Row();
233 
234  bool bChanged = false;
235  for (const SCTAB& nTab : rMark)
236  {
237  for (SCROW nRow = nStartRow; nRow <= nEndRow; ++nRow)
238  {
239  SCROW nLastRow = nRow;
240  if (rDoc.RowFiltered(nRow, nTab, nullptr, &nLastRow))
241  {
242  // use nStartCol/nEndCol, so the multi mark area isn't extended to all columns
243  // (visible in repaint for indentation)
244  rMark.SetMultiMarkArea(
245  ScRange(nStartCol, nRow, nTab, nEndCol, nLastRow, nTab), false);
246  bChanged = true;
247  nRow = nLastRow;
248  }
249  }
250  }
251 
252  if ( bChanged && !rMark.HasAnyMultiMarks() )
253  rMark.ResetMark();
254 
255  rMark.MarkToSimple();
256 }
257 
258 bool ScViewUtil::FitToUnfilteredRows( ScRange & rRange, const ScDocument& rDoc, size_t nRows )
259 {
260  SCTAB nTab = rRange.aStart.Tab();
261  bool bOneTabOnly = (nTab == rRange.aEnd.Tab());
262  // Always fit the range on its first sheet.
263  OSL_ENSURE( bOneTabOnly, "ScViewUtil::ExtendToUnfilteredRows: works only on one sheet");
264  SCROW nStartRow = rRange.aStart.Row();
265  SCROW nLastRow = rDoc.LastNonFilteredRow(nStartRow, rDoc.MaxRow(), nTab);
266  if (rDoc.ValidRow(nLastRow))
267  rRange.aEnd.SetRow(nLastRow);
268  SCROW nCount = rDoc.CountNonFilteredRows(nStartRow, rDoc.MaxRow(), nTab);
269  return static_cast<size_t>(nCount) == nRows && bOneTabOnly;
270 }
271 
272 bool ScViewUtil::HasFiltered( const ScRange& rRange, const ScDocument& rDoc )
273 {
274  SCROW nStartRow = rRange.aStart.Row();
275  SCROW nEndRow = rRange.aEnd.Row();
276  for (SCTAB nTab=rRange.aStart.Tab(); nTab<=rRange.aEnd.Tab(); nTab++)
277  {
278  if (rDoc.HasFilteredRows(nStartRow, nEndRow, nTab))
279  return true;
280  }
281 
282  return false;
283 }
284 
285 void ScViewUtil::HideDisabledSlot( SfxItemSet& rSet, SfxBindings& rBindings, sal_uInt16 nSlotId )
286 {
287  SvtCJKOptions aCJKOptions;
288  SvtCTLOptions aCTLOptions;
289  bool bEnabled = true;
290 
291  switch( nSlotId )
292  {
293  case SID_CHINESE_CONVERSION:
294  case SID_HANGUL_HANJA_CONVERSION:
295  bEnabled = aCJKOptions.IsAnyEnabled();
296  break;
297 
298  case SID_TRANSLITERATE_HALFWIDTH:
299  case SID_TRANSLITERATE_FULLWIDTH:
300  case SID_TRANSLITERATE_HIRAGANA:
301  case SID_TRANSLITERATE_KATAKANA:
302  bEnabled = aCJKOptions.IsChangeCaseMapEnabled();
303  break;
304 
305  case SID_INSERT_RLM:
306  case SID_INSERT_LRM:
307  bEnabled = aCTLOptions.IsCTLFontEnabled();
308  break;
309 
310  default:
311  OSL_FAIL( "ScViewUtil::HideDisabledSlot - unknown slot ID" );
312  return;
313  }
314 
315  rBindings.SetVisibleState( nSlotId, bEnabled );
316  if( !bEnabled )
317  rSet.DisableItem( nSlotId );
318 }
319 
321  SfxViewFrame& rFrame )
322 {
324  SfxAllItemSet aSet( rFrame.GetObjectShell()->GetPool() );
325  aSet.Put( SfxBoolItem( FN_PARAM_1, false ) );
326  aSet.Put( SvxFontItem( rOldFont.GetFamily(), rOldFont.GetFamilyName(), rOldFont.GetStyleName(), rOldFont.GetPitch(), rOldFont.GetCharSet(), aSet.GetPool()->GetWhich( SID_ATTR_CHAR_FONT ) ) );
327  auto xFrame = rFrame.GetFrame().GetFrameInterface();
329  pDlg->Execute();
330 }
331 
332 bool ScViewUtil::IsFullScreen( const SfxViewShell& rViewShell )
333 {
334  SfxBindings& rBindings = rViewShell.GetViewFrame()->GetBindings();
335  std::unique_ptr<SfxPoolItem> pItem;
336  bool bIsFullScreen = false;
337 
338  if (rBindings.QueryState( SID_WIN_FULLSCREEN, pItem ) >= SfxItemState::DEFAULT)
339  bIsFullScreen = static_cast< SfxBoolItem* >( pItem.get() )->GetValue();
340 
341  return bIsFullScreen;
342 }
343 
344 void ScViewUtil::SetFullScreen( const SfxViewShell& rViewShell, bool bSet )
345 {
346  if( IsFullScreen( rViewShell ) != bSet )
347  {
348  SfxBoolItem aItem( SID_WIN_FULLSCREEN, bSet );
349  rViewShell.GetDispatcher()->ExecuteList(SID_WIN_FULLSCREEN,
350  SfxCallMode::RECORD, { &aItem });
351  }
352 }
353 
355  : nNewStartX(0)
356  , nNewStartY(0)
357  , nNewEndX(0)
358  , nNewEndY(0)
359 {
360  PutInOrder( nX1, nX2 );
361  PutInOrder( nY1, nY2 );
362 
363  nOldStartX = nX1;
364  nOldStartY = nY1;
365  nOldEndX = nX2;
366  nOldEndY = nY2;
367 }
368 
369 void ScUpdateRect::SetNew( SCCOL nX1, SCROW nY1, SCCOL nX2, SCROW nY2 )
370 {
371  PutInOrder( nX1, nX2 );
372  PutInOrder( nY1, nY2 );
373 
374  nNewStartX = nX1;
375  nNewStartY = nY1;
376  nNewEndX = nX2;
377  nNewEndY = nY2;
378 }
379 
380 bool ScUpdateRect::GetDiff( SCCOL& rX1, SCROW& rY1, SCCOL& rX2, SCROW& rY2 )
381 {
382  if ( nNewStartX == nOldStartX && nNewEndX == nOldEndX &&
384  {
385  rX1 = nNewStartX;
386  rY1 = nNewStartY;
387  rX2 = nNewStartX;
388  rY2 = nNewStartY;
389  return false;
390  }
391 
392  rX1 = std::min(nNewStartX,nOldStartX);
393  rY1 = std::min(nNewStartY,nOldStartY);
394  rX2 = std::max(nNewEndX,nOldEndX);
395  rY2 = std::max(nNewEndY,nOldEndY);
396 
397  if ( nNewStartX == nOldStartX && nNewEndX == nOldEndX )
398  {
399  if ( nNewStartY == nOldStartY )
400  {
401  rY1 = std::min( nNewEndY, nOldEndY );
402  rY2 = std::max( nNewEndY, nOldEndY );
403  }
404  else if ( nNewEndY == nOldEndY )
405  {
406  rY1 = std::min( nNewStartY, nOldStartY );
407  rY2 = std::max( nNewStartY, nOldStartY );
408  }
409  }
410  else if ( nNewStartY == nOldStartY && nNewEndY == nOldEndY )
411  {
412  if ( nNewStartX == nOldStartX )
413  {
414  rX1 = std::min( nNewEndX, nOldEndX );
415  rX2 = std::max( nNewEndX, nOldEndX );
416  }
417  else if ( nNewEndX == nOldEndX )
418  {
419  rX1 = std::min( nNewStartX, nOldStartX );
420  rX2 = std::max( nNewStartX, nOldStartX );
421  }
422  }
423 
424  return true;
425 }
426 
427 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
SfxViewFrame * GetViewFrame() const
const SfxPoolItem * ExecuteList(sal_uInt16 nSlot, SfxCallMode nCall, std::initializer_list< SfxPoolItem const * > args, std::initializer_list< SfxPoolItem const * > internalargs=std::initializer_list< SfxPoolItem const * >())
bool Intersects(const ScRange &) const
Definition: rangelst.cxx:1084
static void HideDisabledSlot(SfxItemSet &rSet, SfxBindings &rBindings, sal_uInt16 nSlotId)
Definition: viewutil.cxx:285
ScAddress aStart
Definition: address.hxx:500
bool HasComment() const
Definition: chgviset.hxx:99
todo: It should be possible to have MarkArrays for each table, in order to enable "search all" across...
Definition: markdata.hxx:43
bool IsAnyEnabled() const
static bool IsActionShown(const ScChangeAction &rAction, const ScChangeViewSettings &rSettings, ScDocument &rDocument)
Definition: viewutil.cxx:134
SCROW Row() const
Definition: address.hxx:262
ScUpdateRect(SCCOL nX1, SCROW nY1, SCCOL nX2, SCROW nY2)
Definition: viewutil.cxx:354
#define LANGUAGE_ENGLISH_US
static void PutItemScript(SfxItemSet &rShellSet, const SfxItemSet &rCoreSet, sal_uInt16 nWhichId, SvtScriptType nScript)
Definition: viewutil.cxx:49
void MarkToMulti()
Definition: markdata.cxx:224
SCCOL nOldStartX
Definition: viewutil.hxx:75
constexpr TypedWhichId< SvxLanguageItem > ATTR_CJK_FONT_LANGUAGE(115)
std::string GetValue
LanguageType getLanguageType(bool bResolveSystem=true) const
void GetTheActionRange(sal_uLong &nFirst, sal_uLong &nLast) const
Definition: chgviset.hxx:126
static SvxAbstractDialogFactory * Create()
sal_uIntPtr sal_uLong
SCROW nNewStartY
Definition: viewutil.hxx:80
Reference< XFrame > xFrame
constexpr TypedWhichId< SvxLanguageItem > ATTR_FONT_LANGUAGE(110)
static const AllSettings & GetSettings()
bool IsShowRejected() const
Definition: chgviset.hxx:116
void InvalidateItem(sal_uInt16 nWhich)
SCROW nOldStartY
Definition: viewutil.hxx:76
ScAddress aEnd
Definition: address.hxx:501
static bool IsFullScreen(const SfxViewShell &rViewShell)
Returns true, if the passed view shell is in full screen mode.
Definition: viewutil.cxx:332
bool IsCTLFontEnabled() const
virtual SfxObjectShell * GetObjectShell() override
FontPitch GetPitch() const
static bool FitToUnfilteredRows(ScRange &rRange, const ScDocument &rDoc, size_t nRows)
Fit a range to cover nRows number of unfiltered rows.
Definition: viewutil.cxx:258
FontFamily GetFamily() const
SCCOL nOldEndX
Definition: viewutil.hxx:77
SCROW nOldEndY
Definition: viewutil.hxx:78
static void SetFullScreen(const SfxViewShell &rViewShell, bool bSet)
Enters or leaves full screen mode at the passed view shell.
Definition: viewutil.cxx:344
weld::Window * GetFrameWeld() const
virtual void GetDescription(OUString &rStr, ScDocument &rDoc, bool bSplitRange=false, bool bWarning=true) const
Definition: chgtrack.cxx:427
vcl::Window & GetWindow() const
SC_DLLPUBLIC SCROW MaxRow() const
Definition: document.hxx:873
SvxRedlinDateMode GetTheDateMode() const
Definition: chgviset.hxx:85
rtl_TextEncoding GetCharSet() const
SfxFrame & GetFrame() const
int nCount
void SetNew(SCCOL nX1, SCROW nY1, SCCOL nX2, SCROW nY2)
Definition: viewutil.cxx:369
SCTAB Tab() const
Definition: address.hxx:271
void SetRow(SCROW nRowP)
Definition: address.hxx:275
sal_uLong GetLastSavedActionNumber() const
Definition: chgtrack.cxx:2190
ScChangeTrack * GetChangeTrack() const
Definition: document.hxx:2392
TransliterationFlags
SC_DLLPUBLIC const SfxPoolItem * GetAttr(SCCOL nCol, SCROW nRow, SCTAB nTab, sal_uInt16 nWhich) const
Definition: document.cxx:4714
SfxItemPool & GetPool() const
const OUString & GetStyleName() const
bool IsChangeCaseMapEnabled() const
const LanguageTag & GetLanguageTag() const
void PutInOrder(T &nStart, T &nEnd)
Definition: address.hxx:954
SvtScriptType
SCROW CountNonFilteredRows(SCROW nStartRow, SCROW nEndRow, SCTAB nTab) const
Definition: document.cxx:4547
SC_DLLPUBLIC bool IsAccepted() const
Definition: chgtrack.cxx:134
static bool HasFiltered(const ScRange &rRange, const ScDocument &rDoc)
Definition: viewutil.cxx:272
const ScRangeList & GetTheRangeList() const
Definition: chgviset.hxx:110
bool HasDate() const
Definition: chgviset.hxx:81
SfxDispatcher * GetDispatcher() const
bool GetDiff(SCCOL &rX1, SCROW &rY1, SCCOL &rX2, SCROW &rY2)
Definition: viewutil.cxx:380
bool RowFiltered(SCROW nRow, SCTAB nTab, SCROW *pFirstRow=nullptr, SCROW *pLastRow=nullptr) const
Definition: document.cxx:4499
#define LANGUAGE_SYSTEM
sal_Int16 SCCOL
Definition: types.hxx:22
bool HasRange() const
Definition: chgviset.hxx:107
const OUString & GetTheAuthorToShow() const
Definition: chgviset.hxx:96
SCCOL nNewStartX
Definition: viewutil.hxx:79
const OUString & GetComment() const
Definition: chgtrack.hxx:353
SfxBindings & GetBindings()
#define LANGUAGE_DONTKNOW
ScBigRange & GetBigRange()
Definition: chgtrack.hxx:232
SfxItemState QueryState(sal_uInt16 nSID, std::unique_ptr< SfxPoolItem > &rpState)
virtual VclPtr< SfxAbstractDialog > CreateCharMapDialog(weld::Window *pParent, const SfxItemSet &rAttr, const css::uno::Reference< css::frame::XFrame > &rFrame)=0
sal_uInt16 GetSlotId(sal_uInt16 nWhich) const
static void UnmarkFiltered(ScMarkData &rMark, const ScDocument &rDoc)
Definition: viewutil.cxx:223
std::unique_ptr< SfxPoolItem > CloneSetWhich(sal_uInt16 nNewWhich) const
SfxItemPool * GetPool() const
bool HasFilteredRows(SCROW nStartRow, SCROW nEndRow, SCTAB nTab) const
Definition: document.cxx:4507
const css::uno::Reference< css::frame::XFrame > & GetFrameInterface() const
SCCOL Col() const
Definition: address.hxx:267
bool HasActionRange() const
Definition: chgviset.hxx:124
sal_uLong GetActionNumber() const
Definition: chgtrack.hxx:320
constexpr TypedWhichId< SvxLanguageItem > ATTR_CTL_FONT_LANGUAGE(120)
const OUString & GetFamilyName() const
ScRange MakeRange() const
Definition: bigrange.hxx:137
const SfxPoolItem * Put(const SfxPoolItem &rItem, sal_uInt16 nWhich)
sal_Int32 SCROW
Definition: types.hxx:18
bool ValidRow(SCROW nRow) const
Definition: document.hxx:876
void DisableItem(sal_uInt16 nWhich)
const DateTime & GetTheLastDateTime() const
Definition: chgviset.hxx:91
static TransliterationFlags GetTransliterationType(sal_uInt16 nSlotID)
Definition: viewutil.cxx:98
bool IsRejecting() const
Definition: chgtrack.cxx:144
bool HasAuthor() const
Definition: chgviset.hxx:93
SC_DLLPUBLIC SvtScriptType GetScriptType(SCCOL nCol, SCROW nRow, SCTAB nTab, const ScRefCellValue *pCell=nullptr)
Definition: documen6.cxx:132
QPRO_FUNC_TYPE nType
Definition: qproform.cxx:401
const DateTime & GetTheFirstDateTime() const
Definition: chgviset.hxx:88
static void ExecuteCharMap(const SvxFontItem &rOldFont, SfxViewFrame &rFrame)
Definition: viewutil.cxx:320
const OUString & GetUser() const
Definition: chgtrack.hxx:352
SCROW nNewEndY
Definition: viewutil.hxx:82
void SetVisibleState(sal_uInt16 nId, bool bShow)
void GetMultiMarkArea(ScRange &rRange) const
Definition: markdata.cxx:117
bool IsValidComment(const OUString *pCommentStr) const
Definition: chgviset.cxx:79
SCROW LastNonFilteredRow(SCROW nStartRow, SCROW nEndRow, SCTAB nTab) const
Definition: document.cxx:4539
static LanguageType GetEffLanguage(ScDocument &rDoc, const ScAddress &rPos)
Definition: viewutil.cxx:69
SC_DLLPUBLIC void GetLanguage(LanguageType &rLatin, LanguageType &rCjk, LanguageType &rCtl) const
Definition: documen3.cxx:1949
SCCOL nNewEndX
Definition: viewutil.hxx:81
SC_DLLPUBLIC DateTime GetDateTime() const
Definition: chgtrack.cxx:413
sal_Int16 SCTAB
Definition: types.hxx:23
bool IsShowAccepted() const
Definition: chgviset.hxx:113