LibreOffice Module sc (master)  1
viewfun6.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 <formula/token.hxx>
21 #include <svx/svdocapt.hxx>
22 #include <sfx2/bindings.hxx>
23 #include <sfx2/dispatch.hxx>
24 #include <svl/stritem.hxx>
25 #include <svl/numformat.hxx>
26 #include <svl/zforlist.hxx>
27 #include <svl/zformat.hxx>
28 #include <vcl/uitest/logger.hxx>
30 #include <editeng/editview.hxx>
31 #include <rtl/math.hxx>
32 #include <sal/log.hxx>
33 
34 #include <viewfunc.hxx>
35 #include <viewdata.hxx>
36 #include <drwlayer.hxx>
37 #include <docsh.hxx>
38 #include <futext.hxx>
39 #include <docfunc.hxx>
40 #include <sc.hrc>
41 #include <fusel.hxx>
42 #include <reftokenhelper.hxx>
43 #include <externalrefmgr.hxx>
44 #include <markdata.hxx>
45 #include <drawview.hxx>
46 #include <inputhdl.hxx>
47 #include <tabvwsh.hxx>
48 #include <scmod.hxx>
49 #include <postit.hxx>
50 
51 #include <vector>
52 
53 namespace
54 {
55 
56 void collectUIInformation( const OUString& aevent )
57 {
58  EventDescription aDescription;
59  aDescription.aID = "grid_window";
60  aDescription.aParameters = {{ aevent , ""}};
61  aDescription.aAction = "COMMENT";
62  aDescription.aParent = "MainWindow";
63  aDescription.aKeyWord = "ScGridWinUIObject";
64  UITestLogger::getInstance().logEvent(aDescription);
65 }
66 
67 }
68 
69 using ::std::vector;
70 
72 {
73  ScDocShell* pDocSh = GetViewData().GetDocShell();
74  pDocSh->GetDocFunc().DetectiveAddPred( GetViewData().GetCurPos() );
75  RecalcPPT();
76 }
77 
79 {
80  ScDocShell* pDocSh = GetViewData().GetDocShell();
81  pDocSh->GetDocFunc().DetectiveDelPred( GetViewData().GetCurPos() );
82  RecalcPPT();
83 }
84 
86 {
87  ScDocShell* pDocSh = GetViewData().GetDocShell();
88  pDocSh->GetDocFunc().DetectiveAddSucc( GetViewData().GetCurPos() );
89  RecalcPPT();
90 }
91 
93 {
94  ScDocShell* pDocSh = GetViewData().GetDocShell();
95  pDocSh->GetDocFunc().DetectiveDelSucc( GetViewData().GetCurPos() );
96  RecalcPPT();
97 }
98 
100 {
101  ScDocShell* pDocSh = GetViewData().GetDocShell();
102  pDocSh->GetDocFunc().DetectiveAddError( GetViewData().GetCurPos() );
103  RecalcPPT();
104 }
105 
107 {
108  ScDocShell* pDocSh = GetViewData().GetDocShell();
109  pDocSh->GetDocFunc().DetectiveDelAll( GetViewData().GetTabNo() );
110  RecalcPPT();
111 }
112 
114 {
115  ScDocShell* pDocSh = GetViewData().GetDocShell();
116  pDocSh->GetDocFunc().DetectiveMarkInvalid( GetViewData().GetTabNo() );
117  RecalcPPT();
118 }
119 
121 {
122  ScDocShell* pDocSh = GetViewData().GetDocShell();
123  pDocSh->GetDocFunc().DetectiveRefresh();
124  RecalcPPT();
125 }
126 
127 static void lcl_jumpToRange(const ScRange& rRange, ScViewData* pView, const ScDocument& rDoc)
128 {
129  OUString aAddrText(rRange.Format(rDoc, ScRefFlags::RANGE_ABS_3D));
130  SfxStringItem aPosItem(SID_CURRENTCELL, aAddrText);
131  SfxBoolItem aUnmarkItem(FN_PARAM_1, true); // remove existing selection
132  pView->GetDispatcher().ExecuteList(
133  SID_CURRENTCELL, SfxCallMode::SYNCHRON | SfxCallMode::RECORD,
134  { &aPosItem, &aUnmarkItem });
135 }
136 
138 {
139  ScViewData& rView = GetViewData();
140  ScDocShell* pDocSh = rView.GetDocShell();
141 
142  ScRangeList aRanges(rRanges);
143  ScRangeList aRangesToMark;
144  ScAddress aCurPos = rView.GetCurPos();
145  size_t ListSize = aRanges.size();
146  for ( size_t i = 0; i < ListSize; ++i )
147  {
148  const ScRange & r = aRanges[i];
149  // Collect only those ranges that are on the same sheet as the current
150  // cursor.
151  if (r.aStart.Tab() == aCurPos.Tab())
152  aRangesToMark.push_back(r);
153  }
154 
155  if (aRangesToMark.empty())
156  return;
157 
158  // Jump to the first range of all precedent ranges.
159  const ScRange & r = aRangesToMark.front();
160  lcl_jumpToRange(r, &rView, pDocSh->GetDocument());
161 
162  ListSize = aRangesToMark.size();
163  for ( size_t i = 0; i < ListSize; ++i )
164  {
165  MarkRange(aRangesToMark[i], false, true);
166  }
167 }
168 
170 {
171  ScViewData& rView = GetViewData();
172  ScDocShell* pDocSh = rView.GetDocShell();
173  ScDocument& rDoc = pDocSh->GetDocument();
174  ScMarkData& rMarkData = rView.GetMarkData();
175  ScAddress aCurPos = rView.GetCurPos();
176  ScRangeList aRanges;
177  if (rMarkData.IsMarked() || rMarkData.IsMultiMarked())
178  rMarkData.FillRangeListWithMarks(&aRanges, false);
179  else
180  aRanges.push_back(aCurPos);
181 
182  vector<ScTokenRef> aRefTokens;
183  pDocSh->GetDocFunc().DetectiveCollectAllPreds(aRanges, aRefTokens);
184 
185  if (aRefTokens.empty())
186  // No precedents found. Nothing to do.
187  return;
188 
189  ScTokenRef p = aRefTokens.front();
191  {
192  // This is external. Open the external document if available, and
193  // jump to the destination.
194 
195  sal_uInt16 nFileId = p->GetIndex();
197  const OUString* pPath = pRefMgr->getExternalFileName(nFileId);
198 
199  ScRange aRange;
200  if (pPath && ScRefTokenHelper::getRangeFromToken(&rDoc, aRange, p, aCurPos, true))
201  {
202  OUString aTabName = p->GetString().getString();
203  OUString aRangeStr(aRange.Format(rDoc, ScRefFlags::VALID));
204  OUString sUrl =
205  *pPath +
206  "#" +
207  aTabName +
208  "." +
209  aRangeStr;
210 
211  ScGlobal::OpenURL(sUrl, OUString());
212  }
213  return;
214  }
215  else
216  {
217  ScRange aRange;
218  ScRefTokenHelper::getRangeFromToken(&rDoc, aRange, p, aCurPos);
219  if (aRange.aStart.Tab() != aCurPos.Tab())
220  {
221  // The first precedent range is on a different sheet. Jump to it
222  // immediately and forget the rest.
223  lcl_jumpToRange(aRange, &rView, rDoc);
224  return;
225  }
226  }
227 
228  ScRangeList aDestRanges;
229  ScRefTokenHelper::getRangeListFromTokens(&rDoc, aDestRanges, aRefTokens, aCurPos);
230  MarkAndJumpToRanges(aDestRanges);
231 }
232 
234 {
235  ScViewData& rView = GetViewData();
236  ScDocShell* pDocSh = rView.GetDocShell();
237  ScMarkData& rMarkData = rView.GetMarkData();
238  ScAddress aCurPos = rView.GetCurPos();
239  ScRangeList aRanges;
240  if (rMarkData.IsMarked() || rMarkData.IsMultiMarked())
241  rMarkData.FillRangeListWithMarks(&aRanges, false);
242  else
243  aRanges.push_back(aCurPos);
244 
245  vector<ScTokenRef> aRefTokens;
246  pDocSh->GetDocFunc().DetectiveCollectAllSuccs(aRanges, aRefTokens);
247 
248  if (aRefTokens.empty())
249  // No dependents found. Nothing to do.
250  return;
251 
252  ScRangeList aDestRanges;
253  ScRefTokenHelper::getRangeListFromTokens(&rView.GetDocument(), aDestRanges, aRefTokens, aCurPos);
254  MarkAndJumpToRanges(aDestRanges);
255 }
256 
273 void ScViewFunc::InsertCurrentTime(SvNumFormatType nReqFmt, const OUString& rUndoStr)
274 {
275  ScViewData& rViewData = GetViewData();
276 
277  ScInputHandler* pInputHdl = SC_MOD()->GetInputHdl( rViewData.GetViewShell());
278  bool bInputMode = (pInputHdl && pInputHdl->IsInputMode());
279 
280  ScDocShell* pDocSh = rViewData.GetDocShell();
281  ScDocument& rDoc = pDocSh->GetDocument();
282  ScAddress aCurPos = rViewData.GetCurPos();
283  const sal_uInt32 nCurNumFormat = rDoc.GetNumberFormat(aCurPos);
284  SvNumberFormatter* pFormatter = rDoc.GetFormatTable();
285  const SvNumberformat* pCurNumFormatEntry = pFormatter->GetEntry(nCurNumFormat);
286  const SvNumFormatType nCurNumFormatType = (pCurNumFormatEntry ?
287  pCurNumFormatEntry->GetMaskedType() : SvNumFormatType::UNDEFINED);
288 
289  if (bInputMode)
290  {
291  double fVal = 0.0;
292  sal_uInt32 nFormat = 0;
293  switch (nReqFmt)
294  {
295  case SvNumFormatType::DATE:
296  {
297  Date aActDate( Date::SYSTEM );
298  fVal = aActDate - pFormatter->GetNullDate();
299  if (nCurNumFormatType == SvNumFormatType::DATE)
300  nFormat = nCurNumFormat;
301  }
302  break;
303  case SvNumFormatType::TIME:
304  {
305  tools::Time aActTime( tools::Time::SYSTEM );
306  fVal = aActTime.GetTimeInDays();
307  if (nCurNumFormatType == SvNumFormatType::TIME)
308  nFormat = nCurNumFormat;
309  }
310  break;
311  default:
312  SAL_WARN("sc.ui","unhandled current date/time request");
313  nReqFmt = SvNumFormatType::DATETIME;
314  [[fallthrough]];
315  case SvNumFormatType::DATETIME:
316  {
317  DateTime aActDateTime( DateTime::SYSTEM );
318  fVal = aActDateTime - DateTime( pFormatter->GetNullDate());
319  if (nCurNumFormatType == SvNumFormatType::DATETIME)
320  nFormat = nCurNumFormat;
321  }
322  break;
323  }
324 
325  if (!nFormat)
326  {
327  const LanguageType nLang = (pCurNumFormatEntry ? pCurNumFormatEntry->GetLanguage() : ScGlobal::eLnge);
328  nFormat = pFormatter->GetStandardFormat( nReqFmt, nLang);
329  // This would return a more precise format with seconds and 100th
330  // seconds for a time request.
331  //nFormat = pFormatter->GetStandardFormat( fVal, nFormat, nReqFmt, nLang);
332  }
333  OUString aString;
334  const Color* pColor;
335  pFormatter->GetOutputString( fVal, nFormat, aString, &pColor);
336 
337  pInputHdl->DataChanging();
338  EditView* pTopView = pInputHdl->GetTopView();
339  if (pTopView)
340  pTopView->InsertText( aString);
341  EditView* pTableView = pInputHdl->GetTableView();
342  if (pTableView)
343  pTableView->InsertText( aString);
344  pInputHdl->DataChanged();
345  }
346  else
347  {
348  // Clear "Enter pastes" mode.
349  rViewData.SetPasteMode( ScPasteFlags::NONE );
350  // Clear CopySourceOverlay in each window of a split/frozen tabview.
351  rViewData.GetViewShell()->UpdateCopySourceOverlay();
352 
353  bool bForceReqFmt = false;
354  const double fCell = rDoc.GetValue( aCurPos);
355  // Combine requested date/time stamp with existing cell time/date, if any.
356  switch (nReqFmt)
357  {
358  case SvNumFormatType::DATE:
359  switch (nCurNumFormatType)
360  {
361  case SvNumFormatType::TIME:
362  // An empty cell formatted as time (or 00:00 time) shall
363  // not result in the current date with 00:00 time, but only
364  // in current date.
365  if (fCell != 0.0)
366  nReqFmt = SvNumFormatType::DATETIME;
367  break;
368  case SvNumFormatType::DATETIME:
369  {
370  // Force to only date if the existing date+time is the
371  // current date. This way inserting current date twice
372  // on an existing date+time cell can be used to force
373  // date, which otherwise would only be possible by
374  // applying a date format.
375  double fDate = rtl::math::approxFloor( fCell);
376  if (fDate == (Date( Date::SYSTEM) - pFormatter->GetNullDate()))
377  bForceReqFmt = true;
378  }
379  break;
380  default: break;
381  }
382  break;
383  case SvNumFormatType::TIME:
384  switch (nCurNumFormatType)
385  {
386  case SvNumFormatType::DATE:
387  // An empty cell formatted as date shall not result in the
388  // null date and current time, but only in current time.
389  if (fCell != 0.0)
390  nReqFmt = SvNumFormatType::DATETIME;
391  break;
392  case SvNumFormatType::DATETIME:
393  // Requesting current time on an empty date+time cell
394  // inserts both current date+time.
395  if (fCell == 0.0)
396  nReqFmt = SvNumFormatType::DATETIME;
397  else
398  {
399  // Add current time to an existing date+time where time is
400  // zero and date is current date, else force time only.
401  double fDate = rtl::math::approxFloor( fCell);
402  double fTime = fCell - fDate;
403  if (fTime == 0.0 && fDate == (Date( Date::SYSTEM) - pFormatter->GetNullDate()))
404  nReqFmt = SvNumFormatType::DATETIME;
405  else
406  bForceReqFmt = true;
407  }
408  break;
409  default: break;
410  }
411  break;
412  default:
413  SAL_WARN("sc.ui","unhandled current date/time request");
414  nReqFmt = SvNumFormatType::DATETIME;
415  [[fallthrough]];
416  case SvNumFormatType::DATETIME:
417  break;
418  }
419  double fVal = 0.0;
420  switch (nReqFmt)
421  {
422  case SvNumFormatType::DATE:
423  {
424  Date aActDate( Date::SYSTEM );
425  fVal = aActDate - pFormatter->GetNullDate();
426  }
427  break;
428  case SvNumFormatType::TIME:
429  {
430  tools::Time aActTime( tools::Time::SYSTEM );
431  fVal = aActTime.GetTimeInDays();
432  }
433  break;
434  case SvNumFormatType::DATETIME:
435  switch (nCurNumFormatType)
436  {
437  case SvNumFormatType::DATE:
438  {
439  double fDate = rtl::math::approxFloor( fCell);
440  tools::Time aActTime( tools::Time::SYSTEM );
441  fVal = fDate + aActTime.GetTimeInDays();
442  }
443  break;
444  case SvNumFormatType::TIME:
445  {
446  double fTime = fCell - rtl::math::approxFloor( fCell);
447  Date aActDate( Date::SYSTEM );
448  fVal = (aActDate - pFormatter->GetNullDate()) + fTime;
449  }
450  break;
451  default:
452  {
453  DateTime aActDateTime( DateTime::SYSTEM );
454  // Converting the null date to DateTime forces the
455  // correct operator-() to be used, resulting in a
456  // fractional date+time instead of only date value.
457  fVal = aActDateTime - DateTime( pFormatter->GetNullDate());
458  }
459  }
460  break;
461  default: break;
462 
463  }
464 
465  SfxUndoManager* pUndoMgr = pDocSh->GetUndoManager();
466  pUndoMgr->EnterListAction(rUndoStr, rUndoStr, 0, rViewData.GetViewShell()->GetViewShellId());
467 
468  pDocSh->GetDocFunc().SetValueCell(aCurPos, fVal, true);
469 
470  // Set the new cell format only when it differs from the current cell
471  // format type. Preserve a date+time format unless we force a format
472  // through.
473  if (bForceReqFmt || (nReqFmt != nCurNumFormatType && nCurNumFormatType != SvNumFormatType::DATETIME))
474  SetNumberFormat(nReqFmt);
475  else
476  rViewData.UpdateInputHandler(); // update input bar with new value
477 
478  pUndoMgr->LeaveListAction();
479  }
480 }
481 
482 void ScViewFunc::ShowNote( bool bShow )
483 {
484  if( bShow )
485  HideNoteMarker();
486  const ScViewData& rViewData = GetViewData();
487  ScAddress aPos( rViewData.GetCurX(), rViewData.GetCurY(), rViewData.GetTabNo() );
488  // show note moved to ScDocFunc, to be able to use it in notesuno.cxx
489  rViewData.GetDocShell()->GetDocFunc().ShowNote( aPos, bShow );
490 }
491 
493 {
494  // for editing display and activate
495 
496  ScDocShell* pDocSh = GetViewData().GetDocShell();
497  ScDocument& rDoc = pDocSh->GetDocument();
498  SCCOL nCol = GetViewData().GetCurX();
499  SCROW nRow = GetViewData().GetCurY();
500  SCTAB nTab = GetViewData().GetTabNo();
501  ScAddress aPos( nCol, nRow, nTab );
502 
503  // start drawing undo to catch undo action for insertion of the caption object
504  pDocSh->MakeDrawLayer();
505  ScDrawLayer* pDrawLayer = rDoc.GetDrawLayer();
506  pDrawLayer->BeginCalcUndo(true);
507  // generated undo action is processed in FuText::StopEditMode
508 
509  // get existing note or create a new note (including caption drawing object)
510  ScPostIt* pNote = rDoc.GetOrCreateNote( aPos );
511  if(!pNote)
512  return;
513 
514  // hide temporary note caption
515  HideNoteMarker();
516  // show caption object without changing internal visibility state
517  pNote->ShowCaptionTemp( aPos );
518 
519  /* Drawing object has been created in ScDocument::GetOrCreateNote() or
520  in ScPostIt::ShowCaptionTemp(), so ScPostIt::GetCaption() should
521  return a caption object. */
522  SdrCaptionObj* pCaption = pNote->GetCaption();
523  if( !pCaption )
524  return;
525 
526  if ( ScDrawView* pScDrawView = GetScDrawView() )
527  pScDrawView->SyncForGrid( pCaption );
528  // #i33764# enable the resize handles before starting edit mode
529  if( FuPoor* pDraw = GetDrawFuncPtr() )
530  static_cast< FuSelection* >( pDraw )->ActivateNoteHandles( pCaption );
531 
532  // activate object (as in FuSelection::TestComment)
533  GetViewData().GetDispatcher().Execute( SID_DRAW_NOTEEDIT, SfxCallMode::SYNCHRON | SfxCallMode::RECORD );
534  // now get the created FuText and set into EditMode
535  FuText* pFuText = dynamic_cast<FuText*>(GetDrawFuncPtr());
536  if (pFuText)
537  {
538  ScrollToObject( pCaption ); // make object fully visible
539  pFuText->SetInEditMode( pCaption );
540 
542  }
543  collectUIInformation("OPEN");
544 }
545 
546 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
void BeginCalcUndo(bool bDisableTextEditUsesCommonUndoManager)
Definition: drwlayer.cxx:1426
ScMarkData & GetMarkData()
Definition: viewdata.cxx:3135
void DetectiveMarkInvalid()
Definition: viewfun6.cxx:113
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 * >())
ScAddress aStart
Definition: address.hxx:497
ScDocShell * GetDocShell() const
Definition: viewdata.hxx:354
todo: It should be possible to have MarkArrays for each table, in order to enable "search all" across...
Definition: markdata.hxx:42
bool SC_DLLPUBLIC isExternalRef(const ScTokenRef &pToken)
void MarkRange(const ScRange &rRange, bool bSetCursor=true, bool bContinue=false)
Definition: tabview3.cxx:1689
bool DataChanging(sal_Unicode cTyped=0, bool bFromCommand=false)
Definition: inputhdl.cxx:2676
bool IsInputMode() const
Definition: inputhdl.hxx:185
void getRangeListFromTokens(const ScDocument *pDoc, ScRangeList &rRangeList, const ::std::vector< ScTokenRef > &pTokens, const ScAddress &rPos)
void SetPasteMode(ScPasteFlags nFlags)
Definition: viewdata.hxx:448
void HideNoteMarker()
Definition: tabview2.cxx:1420
SCROW GetCurY() const
Definition: viewdata.hxx:402
void FillRangeListWithMarks(ScRangeList *pList, bool bClear, SCTAB nForTab=-1) const
Create a range list of marks.
Definition: markdata.cxx:372
static void OpenURL(const OUString &rURL, const OUString &rTarget, bool bIgnoreSettings=false)
Open the specified URL.
Definition: global.cxx:770
SCTAB GetTabNo() const
Definition: viewdata.hxx:395
SC_DLLPUBLIC bool ShowNote(const ScAddress &rPos, bool bShow)
Definition: docfunc.cxx:1288
ScDocument & GetDocument() const
Definition: viewdata.hxx:380
Base class for all functions.
Definition: fusel.hxx:27
EditView * GetTableView()
Definition: inputhdl.hxx:237
void DetectiveMarkPred()
Definition: viewfun6.cxx:169
const OUString * getExternalFileName(sal_uInt16 nFileId, bool bForceOriginal=false)
It returns a pointer to the name of the URI associated with a given external file ID...
virtual SfxUndoManager * GetUndoManager() override
Definition: docsh.cxx:2932
static UITestLogger & getInstance()
void UpdateCopySourceOverlay()
Definition: tabview2.cxx:1014
void logEvent(const EventDescription &rDescription)
void UpdateInputHandler(bool bForce=false)
Definition: viewdata.cxx:4009
void DetectiveCollectAllSuccs(const ScRangeList &rSrcRanges,::std::vector< ScTokenRef > &rRefTokens)
Definition: docfunc.cxx:578
void DetectiveCollectAllPreds(const ScRangeList &rSrcRanges,::std::vector< ScTokenRef > &rRefTokens)
Definition: docfunc.cxx:573
Additional class containing cell annotation data.
Definition: postit.hxx:160
bool IsMultiMarked() const
Definition: markdata.hxx:81
SC_DLLPUBLIC ScExternalRefManager * GetExternalRefManager() const
Definition: documen3.cxx:627
void push_back(const ScRange &rRange)
Definition: rangelst.cxx:1137
bool DetectiveRefresh(bool bAutomatic=false)
Definition: docfunc.cxx:476
SCTAB Tab() const
Definition: address.hxx:283
double GetTimeInDays() const
void RecalcPPT()
Definition: tabview3.cxx:2779
void DetectiveDelSucc()
Definition: viewfun6.cxx:92
ScDrawLayer * MakeDrawLayer()
Definition: docsh2.cxx:172
ScViewData & GetViewData()
Definition: tabview.hxx:333
void ScrollToObject(const SdrObject *pDrawObj)
Definition: tabview5.cxx:549
void ShowCaptionTemp(const ScAddress &rPos, bool bShow=true)
Shows or hides the caption temporarily (does not change internal visibility state).
Definition: postit.cxx:996
bool empty() const
Definition: rangelst.hxx:88
Base class for Text functions.
Definition: futext.hxx:27
SC_DLLPUBLIC double GetValue(const ScAddress &rPos) const
Definition: document.cxx:3663
ScTabViewShell * GetViewShell() const
Definition: viewdata.hxx:357
bool SetValueCell(const ScAddress &rPos, double fVal, bool bInteraction)
Definition: docfunc.cxx:867
SC_DLLPUBLIC ScPostIt * GetOrCreateNote(const ScAddress &rPos)
Definition: document.cxx:6824
SC_DLLPUBLIC ScDrawLayer * GetDrawLayer()
Definition: document.hxx:1081
void DetectiveAddPred()
Definition: viewfun6.cxx:71
SC_DLLPUBLIC SvNumberFormatter * GetFormatTable() const
Definition: documen2.cxx:459
bool IsMarked() const
Definition: markdata.hxx:80
int i
sal_Int16 SCCOL
Definition: types.hxx:21
#define SC_MOD()
Definition: scmod.hxx:249
void DetectiveAddSucc()
Definition: viewfun6.cxx:85
OUString Format(const ScDocument &rDocument, ScRefFlags nFlags=ScRefFlags::ZERO, const ScAddress::Details &rDetails=ScAddress::detailsOOOa1, bool bFullAddressNotation=false) const
Returns string with formatted cell range from aStart to aEnd, according to provided address conventio...
Definition: address.cxx:2170
size_t size() const
Definition: rangelst.hxx:89
void MarkAndJumpToRanges(const ScRangeList &rRanges)
Definition: viewfun6.cxx:137
SvNumFormatType
void DetectiveAddError()
Definition: viewfun6.cxx:99
bool DetectiveAddPred(const ScAddress &rPos)
Definition: docfunc.cxx:209
bool DetectiveAddError(const ScAddress &rPos)
Definition: docfunc.cxx:360
void SetNumberFormat(SvNumFormatType nFormatType, sal_uLong nAdd=0)
Definition: viewfunc.cxx:2630
static SC_DLLPUBLIC LanguageType eLnge
Definition: global.hxx:545
Base class for all functions.
Definition: fupoor.hxx:39
void DetectiveDelPred()
Definition: viewfun6.cxx:78
size_t LeaveListAction()
static void lcl_jumpToRange(const ScRange &rRange, ScViewData *pView, const ScDocument &rDoc)
Definition: viewfun6.cxx:127
void InsertText(const OUString &rNew, bool bSelect=false, bool bLOKShowSelect=true)
ScAddress GetCurPos() const
Definition: viewdata.cxx:4121
void InsertCurrentTime(SvNumFormatType nCellFmt, const OUString &rUndoStr)
Insert date or time into current cell.
Definition: viewfun6.cxx:273
void DetectiveDelAll()
Definition: viewfun6.cxx:106
sal_Int32 SCROW
Definition: types.hxx:17
SdrCaptionObj * GetCaption() const
Returns an existing note caption object.
Definition: postit.hxx:237
void ShowNote(bool bShow)
Definition: viewfun6.cxx:482
ScDrawView * GetScDrawView()
Definition: tabview.hxx:341
void DetectiveRefresh()
Definition: viewfun6.cxx:120
const SvNumberformat * GetEntry(sal_uInt32 nKey) const
bool DetectiveDelSucc(const ScAddress &rPos)
Definition: docfunc.cxx:321
sal_uInt32 GetStandardFormat(SvNumFormatType eType, LanguageType eLnge=LANGUAGE_DONTKNOW)
SfxDispatcher & GetDispatcher()
Definition: viewdata.cxx:3129
FuPoor * GetDrawFuncPtr()
Definition: tabview.hxx:321
void DetectiveMarkSucc()
Definition: viewfun6.cxx:233
::boost::intrusive_ptr< formula::FormulaToken > ScTokenRef
Definition: types.hxx:29
virtual void EnterListAction(const OUString &rComment, const OUString &rRepeatComment, sal_uInt16 nId, ViewShellId nViewShellId)
SvNumFormatType GetMaskedType() const
void * p
static void OnLOKNoteStateChanged(const ScPostIt *pNote)
Definition: tabview5.cxx:663
const ScDocument & GetDocument() const
Definition: docsh.hxx:220
void DataChanged(bool bFromTopNotify=false, bool bSetModified=true)
Definition: inputhdl.cxx:2688
ScRange & front()
Definition: rangelst.hxx:92
#define SAL_WARN(area, stream)
void SetInEditMode(SdrObject *pObj=nullptr, const Point *pMousePixel=nullptr, bool bCursorToEnd=false, const KeyEvent *pInitialKey=nullptr)
Definition: futext.cxx:533
bool DetectiveAddSucc(const ScAddress &rPos)
Definition: docfunc.cxx:284
ScDocFunc & GetDocFunc()
Definition: docsh.hxx:222
const SfxPoolItem * Execute(sal_uInt16 nSlot, SfxCallMode nCall=SfxCallMode::SLOT, const SfxPoolItem **pArgs=nullptr, sal_uInt16 nModi=0, const SfxPoolItem **pInternalArgs=nullptr)
bool DetectiveDelAll(SCTAB nTab)
Definition: docfunc.cxx:436
std::map< OUString, OUString > aParameters
bool getRangeFromToken(const ScDocument *pDoc, ScRange &rRange, const ScTokenRef &pToken, const ScAddress &rPos, bool bExternal=false)
void EditNote()
Definition: viewfun6.cxx:492
const Date & GetNullDate() const
bool DetectiveDelPred(const ScAddress &rPos)
Definition: docfunc.cxx:245
bool DetectiveMarkInvalid(SCTAB nTab)
Definition: docfunc.cxx:397
EditView * GetTopView()
Definition: inputhdl.hxx:238
void GetOutputString(const double &fOutNumber, sal_uInt32 nFIndex, OUString &sOutString, const Color **ppColor, bool bUseStarFormat=false)
LanguageType GetLanguage() const
sal_Int16 SCTAB
Definition: types.hxx:22
SCCOL GetCurX() const
Definition: viewdata.hxx:401
ViewShellId GetViewShellId() const override
SC_DLLPUBLIC sal_uInt32 GetNumberFormat(SCCOL nCol, SCROW nRow, SCTAB nTab) const
Definition: document.cxx:3677