22#include <com/sun/star/beans/XPropertySet.hpp>
23#include <com/sun/star/container/XContainerListener.hpp>
24#include <com/sun/star/report/GroupOn.hpp>
25#include <com/sun/star/sdbc/DataType.hpp>
28#include <rptui_slotid.hrc>
29#include <core_resource.hxx>
33#include <UndoActions.hxx>
47#define FIELD_EXPRESSION 1
48#define GROUPS_START_LEN 5
59 const uno::Sequence< OUString >
aEntries = i_xColumns->getElementNames();
60 for (
const OUString& rEntry :
aEntries )
62 uno::Reference< beans::XPropertySet>
xColumn(i_xColumns->getByName(rEntry),uno::UNO_QUERY_THROW);
66 o_aColumnList.emplace_back(rEntry,sLabel );
67 if ( !sLabel.isEmpty() )
77class OFieldExpressionControl;
81class OFieldExpressionControlContainerListener :
public ::cppu::WeakImplHelper< container::XContainerListener >
88 virtual void SAL_CALL disposing(
const css::lang::EventObject& Source)
override;
90 virtual void SAL_CALL
elementInserted(
const css::container::ContainerEvent& rEvent)
override;
91 virtual void SAL_CALL
elementReplaced(
const css::container::ContainerEvent& rEvent)
override;
92 virtual void SAL_CALL
elementRemoved(
const css::container::ContainerEvent& rEvent)
override;
113 virtual void dispose()
override;
119 void elementRemoved(
const css::container::ContainerEvent& rEvent);
123 void fillColumns(
const uno::Reference< container::XNameAccess>& _xColumns);
136 void moveGroups(
const uno::Sequence<uno::Any>& _aGroups,sal_Int32 _nRow,
bool _bSelect =
true);
138 virtual bool CursorMoving(sal_Int32 nNewRow, sal_uInt16 nNewCol)
override;
139 using ::svt::EditBrowseBox::GetRowCount;
141 virtual bool IsTabAllowed(
bool bForward)
const override;
144 virtual ::svt::CellController*
GetController( sal_Int32 nRow, sal_uInt16 nCol )
override;
146 virtual bool SeekRow( sal_Int32 nRow )
override;
148 virtual OUString
GetCellText( sal_Int32 nRow, sal_uInt16 nColId )
const override;
172void OFieldExpressionControlContainerListener::disposing(
const css::lang::EventObject& )
175void OFieldExpressionControlContainerListener::elementInserted(
const css::container::ContainerEvent& rEvent)
176{
mpParent->elementInserted(rEvent); }
178void OFieldExpressionControlContainerListener::elementReplaced(
const css::container::ContainerEvent& )
181void OFieldExpressionControlContainerListener::elementRemoved(
const css::container::ContainerEvent& rEvent)
182{
mpParent->elementRemoved(rEvent); }
189 ,m_pComboCell(nullptr)
192 ,m_nDeleteEvent(nullptr)
193 ,m_pParent(pParentDialog)
194 ,m_bIgnoreEvent(false)
195 ,aContainerListener(new OFieldExpressionControlContainerListener(this))
197 SetBorderStyle(WindowBorderStyle::MONO);
221 uno::Sequence<uno::Any> aList;
222 ::std::vector<uno::Any> vClipboardList;
226 sal_Int32
nCount = xGroups->getCount();
238 vClipboardList.push_back(
uno::Any(xOrgGroup) );
241 catch(uno::Exception&)
243 OSL_FAIL(
"Can not access group!");
246 if ( !vClipboardList.empty() )
247 aList = uno::Sequence< uno::Any >(vClipboardList.data(), vClipboardList.size());
258 if( aClipboardList.hasElements() )
294 uno::Sequence< uno::Any > aGroups;
296 if ( aGroups.hasElements() )
307 if ( !_aGroups.hasElements() )
312 sal_Int32 nRow = _nRow;
313 const OUString sUndoAction(
RptResId(RID_STR_UNDO_MOVE_GROUP));
317 for(
const uno::Any& rGroup : _aGroups)
319 uno::Reference< report::XGroup> xGroup(rGroup,uno::UNO_QUERY);
327 auto pArgs = aArgs.getArray();
328 if ( nRow > xGroups->getCount() )
329 nRow = xGroups->getCount();
333 pArgs[1].Value <<= nRow;
347 if ( _xColumns.is() )
354 sal_Int32 nGroupsCount = xGroups->getCount();
357 for (sal_Int32
i = 0;
i < nGroupsCount; ++
i,++aIter)
383 BrowserMode nMode(BrowserMode::COLUMNSELECTION | BrowserMode::MULTISELECTION | BrowserMode::KEEPHIGHLIGHT |
384 BrowserMode::HLINES | BrowserMode::VLINES | BrowserMode::AUTOSIZE_LASTCOL | BrowserMode::AUTO_VSCROLL | BrowserMode::AUTO_HSCROLL);
386 nMode |= BrowserMode::HIDECURSOR;
415 bool bAppend =
false;
416 uno::Reference< report::XGroup> xGroup;
420 OUString sUndoAction(
RptResId(RID_STR_UNDO_APPEND_GROUP));
423 xGroup->setHeaderOn(
true);
426 sal_Int32 nGroupPos = 0;
428 ::std::vector<sal_Int32>::const_iterator aEnd =
m_aGroupPositions.begin() + nRow;
429 for(;aIter != aEnd;++aIter)
431 nGroupPos = *aIter + 1;
432 uno::Sequence< beans::PropertyValue > aArgs{
439 OSL_ENSURE(*aIter ==
NO_GROUP ,
"Illegal iterator!");
440 *aIter++ = nGroupPos;
443 for(;aIter != aEnd;++aIter)
453 OUString sExpression;
460 xGroup->setExpression( sExpression );
479 catch(uno::Exception&)
495 OUString sExpression = xGroup->getExpression();
498 [&sExpression](
const ColumnInfo& rColumnInfo) { return rColumnInfo.sColumnName == sExpression; });
499 if (aIter !=
m_aColumnInfo.end() && !aIter->sLabel.isEmpty())
500 sExpression = aIter->sLabel;
503 catch (
const uno::Exception&)
505 TOOLS_WARN_EXCEPTION(
"reportdesign",
"Exception caught while getting expression value from the group");
536 return pCellController;
554 if( aPos.
X() < rRect.
Left() || aPos.
X() + aTextSize.
Width() > rRect.
Right() ||
575 catch(uno::Exception&)
590 ::osl::MutexGuard aGuard(
m_aMutex );
591 sal_Int32 nGroupPos = 0;
592 if ( !(evt.Accessor >>= nGroupPos) )
599 for (sal_Int32
i = 0;
i < nAddedRows; ++
i)
617 for(++aFind;aFind != aEnd;++aFind)
628 ::osl::MutexGuard aGuard(
m_aMutex );
633 sal_Int32 nGroupPos = 0;
634 if ( !(evt.Accessor >>= nGroupPos) )
638 std::vector<sal_Int32>::iterator aFind = std::find(
m_aGroupPositions.begin(), aEnd, nGroupPos);
642 for(++aFind;aFind != aEnd;++aFind)
673 case CommandEventId::ContextMenu:
685 bool bEnable =
false;
697 std::unique_ptr<weld::Menu> xContextMenu(xBuilder->weld_menu(
"menu"));
699 if (!xContextMenu->popup_at_rect(pPopupParent, aRect).isEmpty())
727 bool bFirstTime =
true;
738 OUString sUndoAction(
RptResId(RID_STR_UNDO_REMOVE_SELECTION));
750 std::vector<sal_Int32>::iterator aFind = std::find(
m_aGroupPositions.begin(), aEnd, nGroupPos);
754 for(++aFind;aFind != aEnd;++aFind)
776 m_nDeleteEvent =
nullptr;
782 return LogicToPixel(
Size(106, 75),
MapMode(MapUnit::MapAppFont));
787 : GenericDialogController(pParent,
"modules/dbreport/ui/floatingsort.ui",
"FloatingSort")
789 , m_pController(pController)
790 , m_xGroups(m_pController->getReportDefinition()->getGroups())
792 , m_xToolBox(m_xBuilder->weld_toolbar(
"toolbox"))
793 , m_xProperties(m_xBuilder->weld_widget(
"properties"))
794 , m_xOrderLst(m_xBuilder->weld_combo_box(
"sorting"))
795 , m_xHeaderLst(m_xBuilder->weld_combo_box(
"header"))
796 , m_xFooterLst(m_xBuilder->weld_combo_box(
"footer"))
797 , m_xGroupOnLst(m_xBuilder->weld_combo_box(
"group"))
798 , m_xGroupIntervalEd(m_xBuilder->weld_spin_button(
"interval"))
799 , m_xKeepTogetherLst(m_xBuilder->weld_combo_box(
"keep"))
800 , m_xHelpWindow(m_xBuilder->weld_label(
"helptext"))
801 , m_xBox(m_xBuilder->weld_container(
"box"))
802 , m_xTableCtrlParent(m_xBox->CreateChildFrame())
805 m_xHelpWindow->set_size_request(-1, m_xHelpWindow->get_text_height() * 4);
806 m_xFieldExpression->set_hexpand(
true);
807 m_xFieldExpression->set_vexpand(
true);
809 weld::Widget* pControlsLst[] = { m_xHeaderLst.get(), m_xFooterLst.get(), m_xGroupOnLst.get(),
810 m_xKeepTogetherLst.get(), m_xOrderLst.get(), m_xGroupIntervalEd.get() };
813 i->connect_focus_in(
LINK(
this, OGroupsSortingDialog, OnWidgetFocusGot));
817 m_xGroupIntervalEd->connect_focus_out(
LINK(
this, OGroupsSortingDialog, OnWidgetFocusLost));
822 m_pReportListener =
new OPropertyChangeMultiplexer(
this, m_pController->getReportDefinition());
826 m_xFieldExpression->lateInit();
828 Size aPrefSize = m_xFieldExpression->GetOptimalSize();
829 m_xBox->set_size_request(aPrefSize.
Width(), aPrefSize.
Height());
830 m_xFieldExpression->Show();
832 m_xToolBox->connect_clicked(
LINK(
this, OGroupsSortingDialog, OnFormatAction));
859 const bool bEmpty = nGroupPos ==
NO_GROUP;
869 uno::Reference< report::XGroup> xGroup =
getGroup(nGroupPos);
885 uno::Reference< report::XGroup> xGroup =
getGroup(nGroupPos);
895 xGroup->setGroupOn( nGroupOn );
903 xGroup->setSortAscending(
m_xOrderLst->get_active() == 0 );
908 pControl->save_value();
913 sal_Int32
nDataType = sdbc::DataType::VARCHAR;
920 uno::Reference< beans::XPropertySet>
xColumn(
m_xColumns->getByName(_sColumnName),uno::UNO_QUERY);
925 catch(uno::Exception&)
935 m_xHelpWindow->set_label(
RptResId(STR_RPT_HELP_FIELD));
940 const std::pair<weld::Widget*, TranslateId> pControls[] = {
941 { m_xHeaderLst.get(), STR_RPT_HELP_HEADER },
942 { m_xFooterLst.get(), STR_RPT_HELP_FOOTER },
943 { m_xGroupOnLst.get(), STR_RPT_HELP_GROUPON },
944 { m_xGroupIntervalEd.get(), STR_RPT_HELP_INTERVAL },
945 { m_xKeepTogetherLst.get(), STR_RPT_HELP_KEEP },
946 { m_xOrderLst.get(), STR_RPT_HELP_SORT }
950 if (&rControl == pControls[
i].
first)
959 m_xHelpWindow->set_label(
RptResId(pControls[
i].second));
967 if (m_xFieldExpression)
969 if (m_xGroupIntervalEd->get_value_changed_from_saved())
970 SaveData(m_xFieldExpression->GetCurRow());
976 if ( !m_xFieldExpression )
980 sal_Int32 nGroupPos = m_xFieldExpression->getGroupPosition(
nIndex);
981 uno::Sequence<uno::Any> aClipboardList;
984 aClipboardList = { m_xGroups->getByIndex(nGroupPos) };
986 if (rCommand ==
"up")
990 if (rCommand ==
"down")
994 if (rCommand ==
"delete")
1000 if (
nIndex >= 0 && aClipboardList.hasElements() )
1002 m_xFieldExpression->SetNoSelection();
1003 m_xFieldExpression->moveGroups(aClipboardList,
nIndex,
false);
1004 m_xFieldExpression->DeactivateCell();
1005 m_xFieldExpression->GoToRow(
nIndex);
1006 m_xFieldExpression->ActivateCell(
nIndex, m_xFieldExpression->GetCurColumnId());
1014 if ( !rListBox.get_value_changed_from_saved() )
1017 sal_Int32 nRow = m_xFieldExpression->GetCurRow();
1018 sal_Int32 nGroupPos = m_xFieldExpression->getGroupPosition(nRow);
1019 if (&rListBox != m_xHeaderLst.get() && &rListBox != m_xFooterLst.get())
1021 if ( rListBox.get_value_changed_from_saved() )
1023 if ( &rListBox == m_xGroupOnLst.get() )
1024 m_xGroupIntervalEd->set_sensitive(rListBox.get_active() != 0);
1028 uno::Reference< report::XGroup> xGroup = getGroup(nGroupPos);
1029 const OUString aHeaderFooterOnName(( m_xHeaderLst.get() == &rListBox )
1032 uno::Sequence< beans::PropertyValue > aArgs{
1036 m_pController->executeChecked(m_xHeaderLst.get() == &rListBox ? SID_GROUPHEADER : SID_GROUPFOOTER, aArgs);
1037 m_xFieldExpression->InvalidateHandleColumn();
1043 uno::Reference< report::XGroup > xGroup(_rEvent.Source,uno::UNO_QUERY);
1058 m_xHeaderLst->set_active(_xGroup->getHeaderOn() ? 0 : 1 );
1059 m_xFooterLst->set_active(_xGroup->getFooterOn() ? 0 : 1 );
1070 case sdbc::DataType::LONGVARCHAR:
1071 case sdbc::DataType::VARCHAR:
1072 case sdbc::DataType::CHAR:
1073 m_xGroupOnLst->append(OUString::number(report::GroupOn::PREFIX_CHARACTERS),
RptResId(STR_RPT_PREFIXCHARS));
1075 case sdbc::DataType::DATE:
1076 case sdbc::DataType::TIME:
1077 case sdbc::DataType::TIMESTAMP:
1079 const TranslateId aIds[] = { STR_RPT_YEAR, STR_RPT_QUARTER,STR_RPT_MONTH,STR_RPT_WEEK,STR_RPT_DAY,STR_RPT_HOUR,STR_RPT_MINUTE };
1091 switch(_xGroup->getGroupOn())
1093 case report::GroupOn::DEFAULT:
1096 case report::GroupOn::PREFIX_CHARACTERS:
1099 case report::GroupOn::YEAR:
1102 case report::GroupOn::QUARTAL:
1105 case report::GroupOn::MONTH:
1108 case report::GroupOn::WEEK:
1111 case report::GroupOn::DAY:
1114 case report::GroupOn::HOUR:
1117 case report::GroupOn::MINUTE:
1120 case report::GroupOn::INTERVAL:
1131 m_xOrderLst->set_active(_xGroup->getSortAscending() ? 0 : 1);
1136 pControl->save_value();
1146 sal_Int32 nGroupCount =
m_xGroups->getCount();
1148 bool bEnabled = nGroupCount > 1;
1150 if (bEnabled && _nRow > 0 )
1158 if (bEnabled && _nRow < (nRowCount - 1) )
1160 m_xToolBox->set_item_sensitive(
"down",
true);
1164 m_xToolBox->set_item_sensitive(
"down",
false);
1170 bool bEnableDelete = nGroupCount > 0;
1171 m_xToolBox->set_item_sensitive(
"delete", bEnableDelete);
1175 m_xToolBox->set_item_sensitive(
"delete",
false);
VclPtr< OFieldExpressionControl > mpParent
constexpr sal_Int32 BROWSER_ENDOFSELECTION
static ImplSVEvent * PostUserEvent(const Link< void *, void > &rLink, void *pCaller=nullptr, bool bReferenceLink=false)
static std::unique_ptr< weld::Builder > CreateBuilder(weld::Widget *pParent, const OUString &rUIFile, bool bMobile=false, sal_uInt64 nLOKWindowId=0)
static void RemoveUserEvent(ImplSVEvent *nUserEvent)
bool IsDropFormatSupported(SotClipboardFormatId nFormat) const
void RowRemoved(sal_Int32 nRow, sal_Int32 nNumRows=1, bool bDoPaint=true)
sal_uInt16 GetColumnId(sal_uInt16 nPos) const
virtual void Command(const CommandEvent &rEvt) override
BrowserDataWin & GetDataWindow() const
void InsertDataColumn(sal_uInt16 nItemId, const OUString &rText, tools::Long nSize, HeaderBarItemBits nBits=HeaderBarItemBits::STDSTYLE, sal_uInt16 nPos=HEADERBAR_APPEND)
virtual sal_Int8 ExecuteDrop(const ExecuteDropEvent &rEvt) override
bool GoToRow(sal_Int32 nRow)
sal_Int32 GetCurRow() const
virtual sal_Int8 AcceptDrop(const AcceptDropEvent &rEvt) override
sal_Int32 GetRowAtYPosPixel(tools::Long nY, bool bRelToBrowser=true) const
sal_uInt16 ColCount() const
void InsertHandleColumn(sal_uLong nWidth)
void SetFont(const vcl::Font &rNewFont)
void SetMode(BrowserMode nMode)
sal_Int32 GetSelectRowCount() const
const vcl::Font & GetFont() const
void RowInserted(sal_Int32 nRow, sal_Int32 nNumRows=1, bool bDoPaint=true, bool bKeepSelection=false)
sal_uInt16 GetColumnAtXPosPixel(tools::Long nX) const
sal_Int32 FirstSelectedRow()
virtual sal_Int32 GetRowCount() const override
virtual void SetNoSelection() override
virtual void SelectRow(sal_Int32 nRow, bool _bSelect=true, bool bExpand=true) override
sal_Int32 NextSelectedRow()
vcl::Window * GetWindow() const
CommandEventId GetCommand() const
const Point & GetMousePosPixel() const
bool IsMouseEvent() const
const vcl::KeyCode & GetKeyCode() const
bool IsClipRegion() const
void DrawText(const Point &rStartPt, const OUString &rStr, sal_Int32 nIndex=0, sal_Int32 nLen=-1, std::vector< tools::Rectangle > *pVector=nullptr, OUString *pDisplayText=nullptr, const SalLayoutGlyphs *pLayoutCache=nullptr)
constexpr tools::Long Y() const
constexpr tools::Long X() const
virtual void EnterListAction(const OUString &rComment, const OUString &rRepeatComment, sal_uInt16 nId, ViewShellId nViewShellId)
constexpr tools::Long Height() const
constexpr tools::Long Width() const
css::uno::Any GetAny(SotClipboardFormatId nFormat, const OUString &rDestDoc) const
static VclPtr< reference_type > Create(Arg &&... arg)
friend friend class OPropertyChangeMultiplexer
virtual void StartDrag(sal_Int8 nAction, const Point &rPosPixel) override
DECL_LINK(DelayedDelete, void *, void)
OFieldExpressionControl(OGroupsSortingDialog *pParentDialog, const css::uno::Reference< css::awt::XWindow > &rParent)
sal_Int32 getGroupPosition(sal_Int32 _nRow) const
void fillColumns(const uno::Reference< container::XNameAccess > &_xColumns)
VclPtr< ::svt::ComboBoxControl > m_pComboCell
virtual bool SaveModified() override
virtual ::svt::CellController * GetController(sal_Int32 nRow, sal_uInt16 nCol) override
virtual void dispose() override
::std::vector< sal_Int32 > m_aGroupPositions
DECL_LINK(CBChangeHdl, weld::ComboBox &, void)
virtual OUString GetCellText(sal_Int32 nRow, sal_uInt16 nColId) const override
virtual sal_Int8 ExecuteDrop(const BrowserExecuteDropEvent &rEvt) override
virtual bool CursorMoving(sal_Int32 nNewRow, sal_uInt16 nNewCol) override
virtual sal_Int8 AcceptDrop(const BrowserAcceptDropEvent &rEvt) override
virtual bool IsTabAllowed(bool bForward) const override
uno::Sequence< uno::Any > fillSelectedGroups()
returns the sequence with the selected groups
virtual void InitController(::svt::CellControllerRef &rController, sal_Int32 nRow, sal_uInt16 nCol) override
virtual bool SeekRow(sal_Int32 nRow) override
bool IsDeleteAllowed() const
ImplSVEvent * m_nDeleteEvent
void elementRemoved(const css::container::ContainerEvent &rEvent)
virtual void Command(const CommandEvent &rEvt) override
virtual Size GetOptimalSize() const override
virtual RowStatus GetRowStatus(sal_Int32 nRow) const override
virtual void PaintCell(OutputDevice &rDev, const tools::Rectangle &rRect, sal_uInt16 nColId) const override
virtual void KeyInput(const KeyEvent &rEvt) override
void elementInserted(const css::container::ContainerEvent &rEvent)
void moveGroups(const uno::Sequence< uno::Any > &_aGroups, sal_Int32 _nRow, bool _bSelect=true)
move groups given by _aGroups
virtual ~OFieldExpressionControl() override
::std::vector< ColumnInfo > m_aColumnInfo
OGroupsSortingDialog * m_pParent
rtl::Reference< OFieldExpressionControlContainerListener > aContainerListener
clipboard class for group rows in the groups and sorting dialog
static SotClipboardFormatId getReportGroupId()
OGroupsSortingDialog(OGroupsSortingDialog const &)=delete
bool isReadOnly() const
returns <TRUE> when the dialog should be read only
::rptui::OReportController * m_pController
void SaveData(sal_Int32 _nRow)
saves the values from the listboxes into the group at position _nRow
std::unique_ptr< weld::Widget > m_xProperties
VclPtr< OFieldExpressionControl > m_xFieldExpression
std::unique_ptr< weld::ComboBox > m_xOrderLst
std::unique_ptr< weld::ComboBox > m_xGroupOnLst
virtual ~OGroupsSortingDialog() override
std::unique_ptr< weld::Toolbar > m_xToolBox
virtual void _propertyChanged(const css::beans::PropertyChangeEvent &_rEvent) override
std::unique_ptr< weld::SpinButton > m_xGroupIntervalEd
std::unique_ptr< weld::ComboBox > m_xKeepTogetherLst
void DisplayData(sal_Int32 _nRow)
updates the listboxes with the new group properties
css::uno::Reference< css::report::XGroup > getGroup(sal_Int32 _nPos)
css::uno::Reference< css::report::XGroups > m_xGroups
std::unique_ptr< weld::ComboBox > m_xFooterLst
void fillColumns()
clears the m_xColumns member and reset the fields
void checkButtons(sal_Int32 _nRow)
enables or disables the up and down button
css::uno::Reference< css::container::XNameAccess > m_xColumns
sal_Int32 getColumnDataType(const OUString &_sColumnName)
returns the data type for the given column name
std::unique_ptr< weld::ComboBox > m_xHeaderLst
void displayGroup(const css::uno::Reference< css::report::XGroup > &_xGroup)
display the group props
css::uno::Reference< css::awt::XWindow > m_xTableCtrlParent
::rtl::Reference< comphelper::OPropertyChangeMultiplexer > m_pCurrentGroupListener
::rtl::Reference< comphelper::OPropertyChangeMultiplexer > m_pReportListener
css::uno::Reference< css::report::XGroups > & getGroups()
returns the groups
SfxUndoManager & getUndoManager() const
css::uno::Reference< css::container::XNameAccess > const & getColumns() const
weld::ComboBox & GetComboBox() const
virtual void DeactivateCell(bool bUpdate=true)
const CellControllerRef & Controller() const
virtual void KeyInput(const KeyEvent &rEvt) override
virtual bool CursorMoving(sal_Int32 nNewRow, sal_uInt16 nNewCol)
void InvalidateStatusCell(sal_Int32 nRow)
virtual bool SeekRow(sal_Int32 nRow) override
virtual void dispose() override
void SetWeight(FontWeight)
sal_uInt16 GetCode() const
virtual OUString get_active_text() const=0
virtual void set_entry_editable(bool bEditable)=0
virtual void set_entry_text(const OUString &rStr)=0
void append_text(const OUString &rStr)
virtual int get_active() const=0
void connect_changed(const Link< ComboBox &, void > &rLink)
OUString RptResId(TranslateId aId)
#define TOOLS_WARN_EXCEPTION(area, stream)
ScXMLEditAttributeMap::Entry const aEntries[]
constexpr OUStringLiteral HID_RPT_FIELDEXPRESSION
constexpr sal_uInt16 KEY_DELETE
#define LINK(Instance, Class, Member)
void SAL_CALL elementReplaced(const css::container::ContainerEvent &Event) override
#define SAL_N_ELEMENTS(arr)
std::unique_ptr< sal_Int32[]> pData
#define SFX_ENDOFSELECTION
css::beans::PropertyValue makePropertyValue(const OUString &rName, T &&rValue)
constexpr OUStringLiteral first
static void lcl_addToList_throw(weld::ComboBox &_rListBox, ::std::vector< ColumnInfo > &o_aColumnList, const uno::Reference< container::XNameAccess > &i_xColumns)
IMPL_LINK_NOARG(OAddFieldWindow, FocusChangeHdl, weld::Container &, void)
void adjustSectionName(const css::uno::Reference< css::report::XGroup > &_xGroup, sal_Int32 _nPos)
set the name of the header and footer of the group by the expression appended by the localized name o...
IMPL_LINK(OAddFieldWindow, DragBeginHdl, bool &, rUnsetDragIcon, bool)
weld::Window * GetPopupParent(vcl::Window &rOutWin, tools::Rectangle &rRect)
constexpr OUStringLiteral PROPERTY_LABEL
constexpr OUStringLiteral PROPERTY_GROUP
constexpr OUStringLiteral PROPERTY_TYPE
constexpr OUStringLiteral PROPERTY_HEADERON
constexpr OUStringLiteral PROPERTY_COMMAND
constexpr OUStringLiteral PROPERTY_POSITIONY
constexpr OUStringLiteral PROPERTY_FOOTERON
constexpr OUStringLiteral PROPERTY_COMMANDTYPE