20 #ifdef SC_DLLIMPLEMENTATION
21 #undef SC_DLLIMPLEMENTATION
25 #include <globstr.hrc>
29 #include <com/sun/star/sheet/DataPilotFieldGroupBy.hpp>
35 const sal_Int32 spnDateParts[] =
37 css::sheet::DataPilotFieldGroupBy::SECONDS,
38 css::sheet::DataPilotFieldGroupBy::MINUTES,
39 css::sheet::DataPilotFieldGroupBy::HOURS,
40 css::sheet::DataPilotFieldGroupBy::DAYS,
41 css::sheet::DataPilotFieldGroupBy::MONTHS,
42 css::sheet::DataPilotFieldGroupBy::QUARTERS,
43 css::sheet::DataPilotFieldGroupBy::YEARS
46 const char* aDatePartResIds[] =
48 STR_DPFIELD_GROUP_BY_SECONDS,
49 STR_DPFIELD_GROUP_BY_MINUTES,
50 STR_DPFIELD_GROUP_BY_HOURS,
51 STR_DPFIELD_GROUP_BY_DAYS,
52 STR_DPFIELD_GROUP_BY_MONTHS,
53 STR_DPFIELD_GROUP_BY_QUARTERS,
54 STR_DPFIELD_GROUP_BY_YEARS
98 if (&rButton == &mrRbAuto)
101 mrEdValue.set_sensitive(
false);
103 else if (&rButton == &mrRbMan)
106 mrEdValue.set_sensitive(
true);
107 mrEdValue.grab_focus();
114 , mrEdValue(rEdValue)
131 , mrEdValue(rEdValue)
132 , maNullDate(rNullDate)
150 : GenericDialogController(pParent,
"modules/scalc/ui/groupbynumber.ui",
"PivotTableGroupByNumber")
151 , mxRbAutoStart(m_xBuilder->weld_radio_button(
"auto_start"))
152 , mxRbManStart(m_xBuilder->weld_radio_button(
"manual_start"))
153 , mxEdStart(new
ScDoubleField(m_xBuilder->weld_entry(
"edit_start")))
154 , mxRbAutoEnd(m_xBuilder->weld_radio_button(
"auto_end"))
155 , mxRbManEnd(m_xBuilder->weld_radio_button(
"manual_end"))
156 , mxEdEnd(new
ScDoubleField(m_xBuilder->weld_entry(
"edit_end")))
157 , mxEdBy(new
ScDoubleField(m_xBuilder->weld_entry(
"edit_by")))
158 , maStartHelper(*mxRbAutoStart, *mxRbManStart, *mxEdStart)
159 , maEndHelper(*mxRbAutoEnd, *mxRbManEnd, *mxEdEnd)
169 else if (
mxEdEnd->get_sensitive())
201 : GenericDialogController(pParent,
"modules/scalc/ui/groupbydate.ui",
"PivotTableGroupByDate")
202 , mxRbAutoStart(m_xBuilder->weld_radio_button(
"auto_start"))
203 , mxRbManStart(m_xBuilder->weld_radio_button(
"manual_start"))
204 , mxEdStart(new
SvtCalendarBox(m_xBuilder->weld_menu_button(
"start_date")))
205 , mxRbAutoEnd(m_xBuilder->weld_radio_button(
"auto_end"))
206 , mxRbManEnd(m_xBuilder->weld_radio_button(
"manual_end"))
207 , mxEdEnd(new
SvtCalendarBox(m_xBuilder->weld_menu_button(
"end_date")))
208 , mxRbNumDays(m_xBuilder->weld_radio_button(
"days"))
209 , mxRbUnits(m_xBuilder->weld_radio_button(
"intervals"))
210 , mxEdNumDays(m_xBuilder->weld_spin_button(
"days_value"))
211 , mxLbUnits(m_xBuilder->weld_tree_view(
"interval_list"))
212 , mxBtnOk(m_xBuilder->weld_button(
"ok"))
213 , maStartHelper(*mxRbAutoStart, *mxRbManStart, *mxEdStart, rNullDate)
214 , maEndHelper(*mxRbAutoEnd, *mxRbManEnd, *mxEdEnd, rNullDate)
222 nDatePart = css::sheet::DataPilotFieldGroupBy::MONTHS;
223 for (
size_t nIdx = 0; nIdx <
SAL_N_ELEMENTS(aDatePartResIds); ++nIdx)
235 double fNumDays = rInfo.
mfStep;
238 else if( fNumDays > 32767.0 )
252 else if(
mxEdEnd->get_sensitive() )
292 return css::sheet::DataPilotFieldGroupBy::DAYS;
295 sal_Int32 nDatePart = 0;
298 nDatePart |= spnDateParts[ nIdx ];
304 if (&rButton == mxRbNumDays.get())
306 mxLbUnits->set_sensitive(
false);
308 mxEdNumDays->set_sensitive(
true);
309 mxEdNumDays->grab_focus();
310 mxBtnOk->set_sensitive(
true);
312 else if (&rButton == mxRbUnits.get())
314 mxEdNumDays->set_sensitive(
false);
316 mxLbUnits->set_sensitive(
true);
317 mxLbUnits->grab_focus();
#define LINK(Instance, Class, Member)
ScDPDateGroupEditHelper maEndHelper
virtual bool ImplGetValue(double &rfValue) const override
virtual ~ScDPNumGroupDlg() override
ScDPNumGroupInfo GetGroupInfo() const
virtual ~ScDPDateGroupDlg() override
ScDPNumGroupEditHelper maEndHelper
ScDPNumGroupEditHelper maStartHelper
ScDoubleField & mrEdValue
std::unique_ptr< ScDoubleField > mxEdStart
ScDPDateGroupEditHelper maStartHelper
ScDPNumGroupDlg(weld::Window *pParent, const ScDPNumGroupInfo &rInfo)
virtual bool ImplGetValue(double &rfValue) const =0
IMPL_LINK_NOARG(ScDPDateGroupDlg, CheckHdl, const weld::TreeView::iter_col &, void)
bool GetValue(double &rfValue) const
std::unique_ptr< weld::RadioButton > mxRbUnits
ScDPDateGroupEditHelper(weld::RadioButton &rRbAuto, weld::RadioButton &rRbMan, SvtCalendarBox &rEdValue, const Date &rNullDate)
std::unique_ptr< weld::SpinButton > mxEdNumDays
void SetValue(bool bAuto, double fValue)
virtual TriState get_toggle(int row, int col=-1) const =0
std::unique_ptr< ScDoubleField > mxEdEnd
void SetValue(double fValue, sal_Int32 nDecPlaces=12)
ScDPDateGroupDlg(weld::Window *pParent, const ScDPNumGroupInfo &rInfo, sal_Int32 nDatePart, const Date &rNullDate)
sal_Int32 GetDatePart() const
std::pair< const TreeIter &, int > iter_col
virtual int n_children() const =0
virtual void ImplSetValue(double fValue)=0
std::unique_ptr< SvtCalendarBox > mxEdStart
#define SAL_N_ELEMENTS(arr)
weld::RadioButton & mrRbAuto
ScDPGroupEditHelper(weld::RadioButton &rRbAuto, weld::RadioButton &rRbMan, weld::Widget &rEdValue)
ScDPNumGroupEditHelper(weld::RadioButton &rRbAuto, weld::RadioButton &rRbMan, ScDoubleField &rEdValue)
void set_date(const Date &rDate)
weld::RadioButton & mrRbMan
An edit control that contains a double precision floating-point value.
OUString ScResId(const char *pId)
void AddDays(sal_Int32 nAddDays)
std::unique_ptr< SvtCalendarBox > mxEdEnd
std::unique_ptr< weld::TreeView > mxLbUnits
ScDPNumGroupInfo GetGroupInfo() const
virtual void ImplSetValue(double fValue) override
std::unique_ptr< weld::Button > mxBtnOk
std::unique_ptr< weld::RadioButton > mxRbNumDays
virtual bool ImplGetValue(double &rfValue) const override
std::unique_ptr< ScDoubleField > mxEdBy
virtual void ImplSetValue(double fValue) override
IMPL_LINK(ScDPGroupEditHelper, ClickHdl, weld::Button &, rButton, void)
SvtCalendarBox & mrEdValue