32#include <document.hxx>
41#define RD_SPECIAL_NONE 0
42#define RD_SPECIAL_CONTENT 1
43#define RD_SPECIAL_VISCONTENT 2
73 "svx/ui/acceptrejectchangesdialog.ui",
"AcceptRejectChangesDialog")
74 , aSelectionIdle(
"ScAcceptChgDlg aSelectionIdle" )
75 , aReOpenIdle(
"ScAcceptChgDlg ReOpenIdle")
76 , pViewData( ptrViewData )
77 , pDoc( &ptrViewData->GetDocument() )
78 , aStrInsertCols(
ScResId(STR_CHG_INSERT_COLS))
79 , aStrInsertRows(
ScResId(STR_CHG_INSERT_ROWS))
80 , aStrInsertTabs(
ScResId(STR_CHG_INSERT_TABS))
81 , aStrDeleteCols(
ScResId(STR_CHG_DELETE_COLS))
82 , aStrDeleteRows(
ScResId(STR_CHG_DELETE_ROWS))
83 , aStrDeleteTabs(
ScResId(STR_CHG_DELETE_TABS))
84 , aStrMove(
ScResId(STR_CHG_MOVE))
85 , aStrContent(
ScResId(STR_CHG_CONTENT))
86 , aStrReject(
ScResId(STR_CHG_REJECT))
87 , aStrAllAccepted(
ScResId(STR_CHG_ACCEPTED))
88 , aStrAllRejected(
ScResId(STR_CHG_REJECTED))
89 , aStrNoEntry(
ScResId(STR_CHG_NO_ENTRY))
90 , aStrContentWithChild(
ScResId(STR_CHG_CONTENT_WITH_CHILD))
91 , aStrChildContent(
ScResId(STR_CHG_CHILD_CONTENT))
92 , aStrChildOrgContent(
ScResId(STR_CHG_CHILD_ORGCONTENT))
93 , aStrEmpty(
ScResId(STR_CHG_EMPTY))
97 , bHasFilterEntry(false)
99 , m_xContentArea(
m_xDialog->weld_content_area())
100 , m_xPopup(m_xBuilder->weld_menu(
"calcmenu"))
101 , m_xSortMenu(m_xBuilder->weld_menu(
"calcsortmenu"))
140 std::unique_ptr<weld::TreeIter> xEntry(rTreeView.
make_iterator());
142 rTreeView.
select(*xEntry);
185 OSL_ENSURE(
pViewData &&
pDoc,
"ViewData or Document not found!" );
189 if(pChanges!=
nullptr)
195 for (
const auto& rItem : rUserColl)
200 if ( pViewSettings!=
nullptr )
210 if (aDateTime != aEmpty)
216 if (aDateTime != aEmpty)
228 if(!aString.isEmpty())
315 if(pScChangeAction==
nullptr)
return false;
320 OUString aUser=pScChangeAction->
GetUser();
326 OUString aComment = pScChangeAction->
GetComment().replaceAll(
"\n",
"");
336 if (!aDesc.isEmpty())
338 aComment +=
" (" + aDesc +
")";
367 if(pScChangeAction==
nullptr || pChanges==
nullptr)
return nullptr;
375 OUString aActionString;
381 std::unique_ptr<ScRedlinData> pNewData(
new ScRedlinData);
384 pNewData->bIsAcceptable=pScChangeAction->
IsClickable();
385 pNewData->bIsRejectable=pScChangeAction->
IsRejectable();
386 pNewData->bDisabled=!pNewData->bIsAcceptable || bDisabled;
387 pNewData->aDateTime=aDateTime;
398 pNewData->bIsRejectable=
false;
399 pNewData->bIsAcceptable=
false;
414 pNewData->bDisabled=
true;
415 pNewData->bIsRejectable=
false;
424 bool bIsGenerated =
false;
428 aUser = pScChangeAction->
GetUser();
430 bIsGenerated =
false;
437 OUString aComment = pScChangeAction->
GetComment().replaceAll(
"\n",
"");
439 if (!aDesc.isEmpty())
441 aComment +=
" (" + aDesc +
")";
461 else if(!bIsGenerated)
470 std::unique_ptr<weld::TreeIter> xEntry(rTreeView.
make_iterator());
472 rTreeView.
insert(pParent, -1, &aActionString, &
sId,
nullptr,
nullptr, bCreateOnDemand, xEntry.get());
473 rTreeView.
set_text( *xEntry, aRefStr, 1);
474 if (!aUser.isEmpty())
475 rTreeView.
set_text( *xEntry, aUser, 2);
476 if (!aDate.isEmpty())
477 rTreeView.
set_text( *xEntry, aDate, 3);
478 if (!aComment.isEmpty())
479 rTreeView.
set_text( *xEntry, aComment, 4);
488 std::unique_ptr<weld::TreeIter> xExpEntry(rTreeView.
make_iterator(pParent));
504 bool bCreateOnDemand,
509 if(pScChangeAction==
nullptr || pChanges==
nullptr)
return nullptr;
516 OUString aUser=pScChangeAction->
GetUser();
528 if( pScChangeAction->
GetState()==eState )
534 else if(pScChangeAction->
GetState()==eState && !bIsGenerated)
538 std::unique_ptr<weld::TreeIter> xEntry;
542 OUString aActionString;
545 std::unique_ptr<ScRedlinData> pNewData(
new ScRedlinData);
548 pNewData->bIsAcceptable=pScChangeAction->
IsClickable();
549 pNewData->bIsRejectable=pScChangeAction->
IsRejectable();
550 pNewData->bDisabled=!pNewData->bIsAcceptable || bDisabled;
551 pNewData->aDateTime=aDateTime;
562 pNewData->bIsRejectable=
false;
563 pNewData->bIsAcceptable=
false;
578 pNewData->bDisabled=
true;
579 pNewData->bIsRejectable=
false;
587 OUString aComment = pScChangeAction->
GetComment().replaceAll(
"\n",
"");
588 if (!aDesc.isEmpty())
590 aComment +=
" (" + aDesc +
")";
597 rTreeView.
insert(pParent, -1, &aActionString, &
sId,
nullptr,
nullptr, bCreateOnDemand, xEntry.get());
600 rTreeView.
set_text(*xEntry, aRefStr, 1);
604 rTreeView.
set_text(*xEntry, aUser, 2);
606 rTreeView.
set_text(*xEntry, sDate, 3);
609 rTreeView.
set_text(*xEntry, aComment, 4);
620 if(pScChangeAction==
nullptr || pChanges==
nullptr)
return nullptr;
627 OUString aUser=pScChangeAction->
GetUser();
644 else if(!bIsGenerated)
656 if (aContent.isEmpty())
666 aContent =
"\'" + aTmp +
"\'";
682 OUString aComment = pScChangeAction->
GetComment().replaceAll(
"\n",
"");
686 aComment +=
" (" + aDesc +
")";
689 std::unique_ptr<ScRedlinData> pNewData(
new ScRedlinData);
690 pNewData->nInfo=nSpecial;
693 pNewData->bIsAcceptable=pScChangeAction->
IsClickable();
694 pNewData->bIsRejectable=
false;
695 pNewData->bDisabled=!pNewData->bIsAcceptable;
696 pNewData->aDateTime=aDateTime;
702 std::unique_ptr<weld::TreeIter> xEntry(rTreeView.
make_iterator());
704 rTreeView.
insert(&rParent, -1, &aContent, &
sId,
nullptr,
nullptr,
false, xEntry.get());
705 rTreeView.
set_text( *xEntry, aRefStr, 1);
706 if (!aUser.isEmpty())
707 rTreeView.
set_text( *xEntry, aUser, 2);
708 if (!aDate.isEmpty())
709 rTreeView.
set_text( *xEntry, aDate, 3);
710 if (!aComment.isEmpty())
711 rTreeView.
set_text( *xEntry, aComment, 4);
723 std::unique_ptr<weld::TreeIter> xParent;
737 if(pChanges!=
nullptr)
738 pScChangeAction=pChanges->
GetFirst();
740 bool bTheFlag =
false;
742 while(pScChangeAction!=
nullptr)
745 switch (pScChangeAction->
GetState())
751 bool bOnDemandChildren = !bFilterFlag && pScChangeAction->
IsDialogParent();
778 if (
Expand(pChanges, pScChangeAction, *xParent, !bTestFlag) && !bTestFlag)
779 rTreeView.
remove(*xParent);
782 pScChangeAction=pScChangeAction->
GetNext();
799 std::unique_ptr<weld::TreeIter> xEntry(rTreeView.
make_iterator());
801 rTreeView.
select(*xEntry);
806 sal_uInt16
nId =ScSimpleRefDlgWrapper::GetChildWindowId();
815 sal_uInt16 nAcceptId=ScAcceptChgDlgWrapper::GetChildWindowId();
829 sal_uInt16
nId = ScAcceptChgDlgWrapper::GetChildWindowId();
836 pTPFilter->SetRange(*pResult);
837 FilterHandle(pTPFilter);
852 aRangeList.RemoveAll();
853 aRangeList.Parse(pTPFilter->GetRange(), *pDoc);
874 pViewData->SetTabNo(0);
875 pChanges->
Reject(pScChangeAction);
915 pChanges->
Accept(pScChangeAction);
932 if(
pDoc==
nullptr)
return;
936 if(pChanges!=
nullptr)
938 pScChangeAction=pChanges->
GetLast();
941 while(pScChangeAction!=
nullptr)
947 pScChangeAction=pScChangeAction->
GetPrev();
952 if(
pDoc==
nullptr)
return;
956 if(pChanges!=
nullptr)
957 pScChangeAction=pChanges->
GetLast();
959 while(pScChangeAction!=
nullptr)
965 pScChangeAction=pScChangeAction->
GetPrev();
974 if(pChanges!=
nullptr)
976 if(pTPFilter->IsDate()||pTPFilter->IsAuthor()||pTPFilter->IsRange()||pTPFilter->IsComment())
981 pViewData->SetTabNo(0);
1002 if(pChanges!=
nullptr)
1004 if(pTPFilter->IsDate()||pTPFilter->IsAuthor()||pTPFilter->IsRange()||pTPFilter->IsComment())
1024 aSelectionIdle.Start();
1036 std::unique_ptr<weld::TreeIter> xParent(rTreeView.
make_iterator(&rEntry));
1042 if(pParentAction!=pScChangeAction)
1056 bool bTheTestFlag =
true;
1060 bool bParentInserted =
false;
1069 pActionMap->insert( ::std::make_pair( pScChangeAction->
GetActionNumber(),
1071 bParentInserted =
true;
1074 ScChangeActionMap::iterator itChangeAction = std::find_if(pActionMap->begin(), pActionMap->end(),
1075 [](
const std::pair<sal_uLong, ScChangeAction*>& rEntry) { return rEntry.second->GetState() == SC_CAS_VIRGIN; });
1077 if( itChangeAction == pActionMap->end() )
1087 ScRedlinData *pParentData = weld::fromId<ScRedlinData*>(rTreeView.
get_id(*xOriginal));
1094 while( itChangeAction != pActionMap->end() )
1098 std::unique_ptr<weld::TreeIter> xEntry =
1108 if ( !bParentInserted )
1110 std::unique_ptr<weld::TreeIter> xEntry =
1126 return bTheTestFlag;
1132 bool bTheTestFlag =
true;
1136 OUString aString = rTreeView.
get_text(rParent, 0);
1148 while (pScChangeAction)
1150 if (pScChangeAction->
GetState()==eState &&
1153 pScChangeAction=pScChangeAction->
GetNext();
1155 return bTheTestFlag;
1161 bool bTheTestFlag =
true;
1163 for(
const auto& rChangeAction : *pActionMap )
1165 std::unique_ptr<weld::TreeIter> xEntry =
AppendChangeAction(rChangeAction.second,
false, &rParent,
false,
true);
1177 if (rChangeAction.second->IsDialogParent())
1178 Expand(pChanges, rChangeAction.second, *xEntry);
1181 return bTheTestFlag;
1188 bool bTheTestFlag =
true;
1189 std::unique_ptr<weld::TreeIter> xEntry;
1191 for(
const auto& rChangeAction : *pActionMap )
1194 if( pScChangeAction != rChangeAction.second )
1209 if (rChangeAction.second->IsDialogParent())
1210 Expand(pChanges, rChangeAction.second, *xEntry);
1213 return bTheTestFlag;
1219 bool bTheTestFlag =
true;
1221 if (pChanges && pScChangeAction)
1227 switch(pScChangeAction->
GetType())
1252 return bTheTestFlag;
1266 bool bTheTestFlag =
true;
1272 GetDependents(pScChangeAction, aActionMap, rEntry);
1274 switch (pScChangeAction->
GetType())
1278 bTheTestFlag = InsertContentChildren( &aActionMap, rEntry );
1285 bTheTestFlag = InsertDeletedChildren( pScChangeAction, &aActionMap, rEntry );
1290 bTheTestFlag = InsertChildren( &aActionMap, rEntry );
1299 bTheTestFlag = InsertAcceptedORejected(rEntry);
1303 std::unique_ptr<weld::TreeIter> xEntry(rTreeView.
make_iterator());
1304 rTreeView.
insert(&rEntry, -1, &aStrNoEntry,
nullptr,
nullptr,
nullptr,
false, xEntry.get());
1316 if(pChanges==
nullptr)
1319 std::unique_ptr<weld::TreeIter> xParent;
1324 bool bTheFlag =
false;
1334 if(pScChangeAction==
nullptr)
continue;
1336 switch (pScChangeAction->
GetState())
1342 bool bOnDemandChildren = !bFilterFlag && pScChangeAction->
IsDialogParent();
1369 if (
Expand(pChanges,pScChangeAction,*xParent,!bTestFlag)&&!bTestFlag)
1370 rTreeView.
remove(*xParent);
1391 std::unique_ptr<weld::TreeIter> xEntry(rTreeView.
make_iterator());
1393 pEntryData = weld::fromId<ScRedlinData*>(rTreeView.
get_id(*xEntry));
1402 if (nAction>=nStartAction && nAction<=nEndAction)
1405 std::vector<OUString> aIdsToRemove;
1409 OUString
sId(rTreeView.
get_id(*xEntry));
1410 pEntryData = weld::fromId<ScRedlinData*>(
sId);
1414 if (nStartAction <= nAction && nAction <= nEndAction)
1416 aIdsToRemove.push_back(
sId);
1426 for (
auto it = aIdsToRemove.rbegin(); it != aIdsToRemove.rend(); ++it)
1437 std::unique_ptr<weld::TreeIter> xEntry(rTreeView.
make_iterator());
1438 std::unique_ptr<weld::TreeIter> xLastEntry(rTreeView.
make_iterator());
1439 std::unique_ptr<weld::TreeIter> xNextEntry(rTreeView.
make_iterator());
1442 bool bLastEntry =
false;
1446 bool bRemove =
false;
1455 if(nStartAction<=nAction && nAction<=nEndAction) bRemove=
true;
1461 rTreeView.
remove(*xEntry);
1469 bNextEntry = rTreeView.
iter_next(*xNextEntry);
1485 bNextEntry = rTreeView.
iter_next(*xNextEntry);
1489 bEntry = bNextEntry;
1504 for (
const auto& rMsg : aMsgQueue)
1506 nStartAction = rMsg.nStartAction;
1507 nEndAction = rMsg.nEndAction;
1513 switch(rMsg.eMsgType)
1516 AppendChanges(&rChgTrack,nStartAction,nEndAction);
1519 RemoveEntries(nStartAction,nEndAction);
1523 UpdateEntries(&rChgTrack,nStartAction,nEndAction);
1525 default: assert(
false);
break;
1536 m_xAcceptChgCtr->ShowFilterPage();
1542 ScTabView* pTabView = pViewData->GetView();
1544 bool bAcceptFlag =
true;
1545 bool bRejectFlag =
true;
1549 std::vector<const ScChangeAction*> aActions;
1561 aActions.push_back(pScChangeAction);
1566 bAcceptFlag =
false;
1567 bRejectFlag =
false;
1572 bool bContMark =
false;
1575 const ScBigRange& rBigRange = aActions[
i]->GetBigRange();
1578 bool bSetCursor =
i ==
nCount - 1;
1585 bool bEnable = pDoc->IsDocEditable() && pChanges && !pChanges->
IsProtected();
1586 pTPView->EnableAccept( bAcceptFlag && bEnable );
1587 pTPView->EnableReject( bRejectFlag && bEnable );
1592 if (rCEvt.GetCommand() != CommandEventId::ContextMenu)
1596 std::unique_ptr<weld::TreeIter> xEntry(rTreeView.
make_iterator());
1597 bool bEntry = rTreeView.
get_cursor(xEntry.get());
1599 rTreeView.
select(*xEntry);
1602 for (sal_Int32
i = 0;
i < 5; ++
i)
1603 m_xSortMenu->set_active(
"calcsort" + OUString::number(
i),
i == nSortedCol);
1605 m_xPopup->set_sensitive(
"calcedit",
false);
1607 if (pDoc->IsDocEditable() && bEntry)
1614 m_xPopup->set_sensitive(
"calcedit",
true);
1618 OUString sCommand = m_xPopup->popup_at_rect(&rTreeView,
tools::Rectangle(rCEvt.GetMousePosPixel(),
Size(1,1)));
1620 if (!sCommand.isEmpty())
1622 if (sCommand ==
"calcedit")
1630 pViewData->GetDocShell()->ExecuteChangeCommentDialog(pScChangeAction,
m_xDialog.get(),
false);
1637 pTheView->HeaderBarClick(nDialogCol);
1648 OUString lcl_StripAcceptChgDat(OUString &rExtraString)
1653 sal_Int32
nPos = rExtraString.indexOf(
"AcceptChgDat:");
1658 sal_Int32
n1 = rExtraString.indexOf(
'(', nPos);
1661 sal_Int32
n2 = rExtraString.indexOf(
')', n1);
1665 aStr = rExtraString.copy(nPos, n2 - nPos + 1);
1666 rExtraString = rExtraString.replaceAt(nPos, n2 - nPos + 1, u
"");
1690 std::vector<int> aEndPos;
1694 sal_Int32
n1 =
aStr.indexOf(
';');
1696 aEndPos.push_back(
aStr.toInt32());
1699 std::vector<int> aWidths;
1701 aWidths.push_back(aEndPos[
i] - aEndPos[
i - 1]);
1716 const int nTabCount = 5;
1722 std::vector<int> aWidths;
1727 for (
int i = 0;
i < nTabCount - 1; ++
i)
1730 for (
auto a : aWidths)
1745 sal_Int32 nCompare = 0;
1750 RedlinData *pLeftData = weld::fromId<RedlinData*>(rTreeView.
get_id(rLeft));
1751 RedlinData *pRightData = weld::fromId<RedlinData*>(rTreeView.
get_id(rRight));
1752 if (pLeftData && pRightData)
1765 if (pLeftData && pRightData)
1773 if(pLeftData->
nRow < pRightData->
nRow)
1775 else if(pLeftData->
nRow == pRightData->
nRow)
1777 if(pLeftData->
nCol < pRightData->
nCol)
1779 else if(pLeftData->
nCol == pRightData->
nCol)
1789 rTreeView.
get_text(rRight, nSortCol));
#define RD_SPECIAL_VISCONTENT
IMPL_LINK_NOARG(ScAcceptChgDlg, RefHandle, SvxTPFilter *, void)
IMPL_LINK(ScAcceptChgDlg, RefInfoHandle, const OUString *, pResult, void)
#define RD_SPECIAL_CONTENT
Reference< XExecutableDialog > m_xDialog
std::map< sal_uLong, ScChangeAction * > ScChangeActionMap
std::vector< ScChangeTrackMsgInfo > ScChangeTrackMsgQueue
sal_Int32 compareString(const OUString &s1, const OUString &s2) const
OUString getDate(const Date &rDate) const
OUString getTime(const tools::Time &rTime, bool bSec=true, bool b100Sec=false) const
bool InsertDeletedChildren(const ScChangeAction *pChangeAction, ScChangeActionMap *pActionMap, const weld::TreeIter &rParent)
SvxRedlinTable * pTheView
std::unique_ptr< weld::Container > m_xContentArea
void UpdateEntries(const ScChangeTrack *pChgTrack, sal_uLong nStartAction, sal_uLong nEndAction)
void RemoveEntries(sal_uLong nStartAction, sal_uLong nEndAction)
std::unique_ptr< weld::TreeIter > InsertChangeActionContent(const ScChangeActionContent *pScChangeAction, const weld::TreeIter &rParent, sal_uLong nSpecial)
void AppendChanges(const ScChangeTrack *pChanges, sal_uLong nStartAction, sal_uLong nEndAction)
virtual void FillInfo(SfxChildWinInfo &) const override
bool IsValidAction(const ScChangeAction *pScChangeAction)
void GetDependents(const ScChangeAction *pScChangeAction, ScChangeActionMap &aActionMap, const weld::TreeIter &rEntry)
bool InsertAcceptedORejected(const weld::TreeIter &rParent)
OUString * MakeTypeString(ScChangeActionType eType)
std::unique_ptr< weld::TreeIter > AppendChangeAction(const ScChangeAction *pScChangeAction, bool bCreateOnDemand, const weld::TreeIter *pParent=nullptr, bool bDelMaster=false, bool bDisabled=false)
OUString aStrChildOrgContent
std::unique_ptr< SvxAcceptChgCtr > m_xAcceptChgCtr
OUString aStrChildContent
OUString aStrContentWithChild
bool InsertContentChildren(ScChangeActionMap *pActionMap, const weld::TreeIter &rParent)
bool Expand(const ScChangeTrack *pChanges, const ScChangeAction *pScChangeAction, const weld::TreeIter &rEntry, bool bFilter=false)
ScAcceptChgDlg(SfxBindings *pB, SfxChildWindow *pCW, weld::Window *pParent, ScViewData *ptrViewData)
bool InsertChildren(ScChangeActionMap *pActionMap, const weld::TreeIter &rParent)
void ReInit(ScViewData *ptrViewData)
int ColCompareHdl(const weld::TreeIter &rLeft, const weld::TreeIter &rRight) const
void Initialize(SfxChildWinInfo *pInfo)
ScChangeViewSettings aChangeViewSet
std::unique_ptr< weld::TreeIter > AppendFilteredAction(const ScChangeAction *pScChangeAction, ScChangeActionState eState, bool bCreateOnDemand, const weld::TreeIter *pParent=nullptr, bool bDelMaster=false, bool bDisabled=false)
virtual ~ScAcceptChgDlg() override
bool IsValid(const ScDocument &rDoc) const
ScRange MakeRange(const ScDocument &rDoc) const
virtual OUString GetRefString(ScDocument &rDoc, bool bFlag3D=false) const override
OUString GetOldString(const ScDocument *pDoc) const
OUString GetNewString(const ScDocument *pDoc) const
const OUString & GetComment() const
ScBigRange & GetBigRange()
bool IsMasterDelete() const
bool IsDialogRoot() const
bool IsDialogParent() const
sal_uLong GetActionNumber() const
ScChangeActionType GetType() const
bool IsRejectable() const
virtual OUString GetDescription(ScDocument &rDoc, bool bSplitRange=false, bool bWarning=true) const
ScChangeAction * GetNext() const
ScChangeAction * GetPrev() const
SC_DLLPUBLIC DateTime GetDateTime() const
OUString GetRefString(const ScBigRange &rRange, const ScDocument &rDoc, bool bFlag3D=false) const
ScChangeActionState GetState() const
const OUString & GetUser() const
const std::set< OUString > & GetUserCollection() const
bool SelectContent(ScChangeAction *, bool bOldest=false)
ScChangeAction * GetLast() const
SC_DLLPUBLIC ScChangeAction * GetAction(sal_uLong nAction) const
void SetModifiedLink(const Link< ScChangeTrack &, void > &r)
SC_DLLPUBLIC void GetDependents(ScChangeAction *, ScChangeActionMap &, bool bListMasterDelete=false, bool bAllFlat=false) const
SC_DLLPUBLIC bool Accept(ScChangeAction *)
bool IsGenerated(sal_uLong nAction) const
bool Reject(ScChangeAction *, ScChangeActionMap *, bool bRecursion)
const OUString & GetUser() const
ScChangeAction * GetFirst() const
const ScRangeList & GetTheRangeList() const
const OUString & GetTheComment() const
const DateTime & GetTheFirstDateTime() const
SvxRedlinDateMode GetTheDateMode() const
void SetTheAuthorToShow(const OUString &aString)
const DateTime & GetTheLastDateTime() const
void AdjustDateMode(const ScDocument &rDoc)
Adjust dates according to selected DateMode.
const OUString & GetTheAuthorToShow() const
void SetDocumentModified()
virtual SfxUndoManager * GetUndoManager() override
bool IsDocEditable() const
ScChangeViewSettings * GetChangeViewSettings() const
ScChangeTrack * GetChangeTrack() const
static SC_DLLPUBLIC const LocaleDataWrapper & getLocaleData()
static CollatorWrapper & GetCaseCollator()
case-sensitive collator
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...
bool Intersects(const ScRange &rRange) const
virtual ~ScRedlinData() override
void SetCloseHdl(const Link< const OUString *, void > &rLink)
void SetRefString(const OUString &rStr)
static void SetAutoReOpen(bool bFlag)
void DoneBlockMode(bool bContinue=false)
void MarkRange(const ScRange &rRange, bool bSetCursor=true, bool bContinue=false)
ScDocument & GetDocument() const
std::shared_ptr< SfxDialogController > & GetController()
virtual void FillInfo(SfxChildWinInfo &) const
void Initialize(SfxChildWinInfo const *pInfo)
SfxViewShell * GetViewShell() const
void SetChildWindow(sal_uInt16 nId, bool bVisible, bool bSetFocus=true)
SfxChildWindow * GetChildWindow(sal_uInt16)
void ShowChildWindow(sal_uInt16, bool bVisible=true)
SfxViewFrame & GetViewFrame() const
void SetFilterAuthor(bool bFlag)
void SetDateTimeMode(SvxRedlinDateMode nMode)
void SetAuthor(const OUString &)
void SetFirstTime(const tools::Time &)
void SetLastDate(const Date &)
void SetCommentParams(const utl::SearchParam *pSearchPara)
void SetFirstDate(const Date &)
void SetLastTime(const tools::Time &)
bool IsValidEntry(std::u16string_view rAuthor, const DateTime &rDateTime, const OUString &rComment)
void SetFilterDate(bool bFlag)
bool IsValidComment(const OUString &rComment)
void SetFilterComment(bool bFlag)
weld::TreeView & GetWidget()
void CheckComment(bool bFlag)
void SetFirstTime(const tools::Time &aTime)
void HideRange(bool bHide=true)
void SelectedAuthorPos(sal_Int32 nPos)
OUString GetSelectedAuthor() const
Date GetFirstDate() const
void SetLastTime(const tools::Time &aTime)
void SetFirstDate(const Date &aDate)
void CheckDate(bool bFlag)
void SetRefHdl(const Link< SvxTPFilter *, void > &rLink)
OUString GetComment() const
SvxRedlinDateMode GetDateMode() const
void SetComment(const OUString &rComment)
void InsertAuthor(const OUString &rString)
void SetReadyHdl(const Link< SvxTPFilter *, void > &rLink)
void CheckAuthor(bool bFlag)
void CheckRange(bool bFlag)
void SetRange(const OUString &rString)
sal_Int32 SelectAuthor(const OUString &aString)
void SetDateMode(sal_uInt16 nMode)
tools::Time GetLastTime() const
void SetLastDate(const Date &aDate)
tools::Time GetFirstTime() const
void EnableRejectAll(bool bFlag)
void EnableAccept(bool bFlag)
void EnableClearFormat(bool bFlag)
SvxRedlinTable * GetTableControl()
void SetRejectClickHdl(const Link< SvxTPView *, void > &rLink)
void EnableAcceptAll(bool bFlag)
void SetRejectAllClickHdl(const Link< SvxTPView *, void > &rLink)
void SetAcceptClickHdl(const Link< SvxTPView *, void > &rLink)
void EnableReject(bool bFlag)
void SetAcceptAllClickHdl(const Link< SvxTPView *, void > &rLink)
void EnableClearFormatAll(bool bFlag)
void SetInvokeHandler(const Link< Timer *, void > &rLink)
virtual std::unique_ptr< TreeIter > make_iterator(const TreeIter *pOrig=nullptr) const=0
virtual void connect_popup_menu(const Link< const CommandEvent &, bool > &rLink)
virtual void set_font_color(int pos, const Color &rColor)=0
virtual void expand_row(const TreeIter &rIter)=0
virtual void set_text(int row, const OUString &rText, int col=-1)=0
virtual bool get_row_expanded(const TreeIter &rIter) const=0
virtual OUString get_text(int row, int col=-1) const=0
void remove_id(const OUString &rText)
int get_checkbox_column_width() const
virtual void set_selection_mode(SelectionMode eMode)=0
virtual int get_sort_column() const=0
virtual void insert(const TreeIter *pParent, int pos, const OUString *pStr, const OUString *pId, const OUString *pIconName, VirtualDevice *pImageSurface, bool bChildrenOnDemand, TreeIter *pRet)=0
virtual void selected_foreach(const std::function< bool(TreeIter &)> &func)=0
void connect_changed(const Link< TreeView &, void > &rLink)
void connect_expanding(const Link< const TreeIter &, bool > &rLink)
virtual bool get_iter_first(TreeIter &rIter) const=0
virtual void copy_iterator(const TreeIter &rSource, TreeIter &rDest) const=0
virtual void remove(int pos)=0
virtual void select(int pos)=0
virtual bool iter_parent(TreeIter &rIter) const=0
virtual void set_sort_func(const std::function< int(const weld::TreeIter &, const weld::TreeIter &)> &func)
virtual void set_column_fixed_widths(const std::vector< int > &rWidths)=0
virtual bool iter_next(TreeIter &rIter) const=0
virtual bool iter_has_child(const TreeIter &rIter) const=0
virtual bool get_cursor(TreeIter *pIter) const=0
virtual int get_column_width(int nCol) const=0
virtual void set_cursor(int pos)=0
virtual int get_iter_depth(const TreeIter &rIter) const=0
virtual void all_foreach(const std::function< bool(TreeIter &)> &func)=0
virtual OUString get_id(int pos) const=0
constexpr ::Color COL_GRAY(0x80, 0x80, 0x80)
constexpr ::Color COL_GREEN(0x00, 0x80, 0x00)
constexpr ::Color COL_LIGHTBLUE(0x00, 0x00, 0xFF)
#define LINK(Instance, Class, Member)
sal_Int32 toInt32(std::u16string_view str, sal_Int16 radix=10)
OUString toId(const void *pValue)
OUString ScResId(TranslateId aId)