[Libreoffice-commits] core.git: compilerplugins/clang extensions/source include/sfx2 include/svx include/vcl sd/source sfx2/source svx/source vcl/inc vcl/source vcl/unx
Caolán McNamara (via logerrit)
logerrit at kemper.freedesktop.org
Wed Jul 15 13:01:49 UTC 2020
compilerplugins/clang/constantparam.booleans.results | 4 -
extensions/source/propctrlr/commoncontrol.cxx | 2
extensions/source/propctrlr/commoncontrol.hxx | 2
extensions/source/propctrlr/propcontroller.cxx | 2
extensions/source/propctrlr/standardcontrol.cxx | 20 +++--
extensions/source/propctrlr/standardcontrol.hxx | 11 +-
include/sfx2/dinfdlg.hxx | 18 +++-
include/svx/ctredlin.hxx | 13 ++-
include/vcl/formatter.hxx | 4 -
include/vcl/weld.hxx | 71 ------------------
include/vcl/weldutils.hxx | 19 +++--
sd/source/filter/html/pubdlg.cxx | 12 +--
sd/source/ui/dlg/animobjs.cxx | 23 +++---
sd/source/ui/dlg/present.cxx | 16 ++--
sd/source/ui/inc/animobjs.hxx | 6 +
sd/source/ui/inc/present.hxx | 6 +
sd/source/ui/inc/pubdlg.hxx | 4 -
sfx2/source/dialog/dinfdlg.cxx | 28 ++++++-
svx/source/dialog/ctredlin.cxx | 60 ++++++++-------
vcl/inc/salvtables.hxx | 4 -
vcl/source/app/salvtables.cxx | 34 ++++++--
vcl/source/app/weldutils.cxx | 14 +++
vcl/source/window/builder.cxx | 72 -------------------
vcl/unx/gtk3/gtk3gtkinst.cxx | 6 -
24 files changed, 196 insertions(+), 255 deletions(-)
New commits:
commit 299e128b5175f4c3d794848ab51e81d14385a547
Author: Caolán McNamara <caolanm at redhat.com>
AuthorDate: Tue Jul 14 16:45:39 2020 +0100
Commit: Caolán McNamara <caolanm at redhat.com>
CommitDate: Wed Jul 15 15:00:56 2020 +0200
replace TimeSpinButton with FormattedSpinButton
with a TimeFormatter rather than have duplicate functionality
Change-Id: I99f1f2aabee5f81485f97755ba3675870317cfb9
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/98791
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm at redhat.com>
diff --git a/compilerplugins/clang/constantparam.booleans.results b/compilerplugins/clang/constantparam.booleans.results
index 141f31665d5f..c93c2533270a 100644
--- a/compilerplugins/clang/constantparam.booleans.results
+++ b/compilerplugins/clang/constantparam.booleans.results
@@ -1842,10 +1842,6 @@ include/vcl/weld.hxx:2282
class std::unique_ptr<class weld::FormattedSpinButton, struct std::default_delete<class weld::FormattedSpinButton> > weld::Builder::weld_formatted_spin_button(const class rtl::OString &,_Bool)
_Bool bTakeOwnership
0
-include/vcl/weld.hxx:2284
- class std::unique_ptr<class weld::TimeSpinButton, struct std::default_delete<class weld::TimeSpinButton> > weld::Builder::weld_time_spin_button(const class rtl::OString &,enum TimeFieldFormat,_Bool)
- _Bool bTakeOwnership
- 0
include/vcl/weld.hxx:2286
class std::unique_ptr<class weld::ComboBox, struct std::default_delete<class weld::ComboBox> > weld::Builder::weld_combo_box(const class rtl::OString &,_Bool)
_Bool bTakeOwnership
diff --git a/extensions/source/propctrlr/commoncontrol.cxx b/extensions/source/propctrlr/commoncontrol.cxx
index 02f52a6ecd80..243bbd813b57 100644
--- a/extensions/source/propctrlr/commoncontrol.cxx
+++ b/extensions/source/propctrlr/commoncontrol.cxx
@@ -93,7 +93,7 @@ namespace pcr
setModified();
}
- IMPL_LINK_NOARG( CommonBehaviourControlHelper, TimeModifiedHdl, weld::TimeSpinButton&, void )
+ IMPL_LINK_NOARG( CommonBehaviourControlHelper, TimeModifiedHdl, weld::FormattedSpinButton&, void )
{
setModified();
}
diff --git a/extensions/source/propctrlr/commoncontrol.hxx b/extensions/source/propctrlr/commoncontrol.hxx
index 2097a88df3ff..919a7747c48c 100644
--- a/extensions/source/propctrlr/commoncontrol.hxx
+++ b/extensions/source/propctrlr/commoncontrol.hxx
@@ -91,7 +91,7 @@ namespace pcr
DECL_LINK( EditModifiedHdl, weld::Entry&, void );
DECL_LINK( MetricModifiedHdl, weld::MetricSpinButton&, void );
DECL_LINK( FormattedModifiedHdl, weld::FormattedSpinButton&, void );
- DECL_LINK( TimeModifiedHdl, weld::TimeSpinButton&, void );
+ DECL_LINK( TimeModifiedHdl, weld::FormattedSpinButton&, void );
DECL_LINK( DateModifiedHdl, SvtCalendarBox&, void );
DECL_LINK( GetFocusHdl, weld::Widget&, void );
DECL_LINK( LoseFocusHdl, weld::Widget&, void );
diff --git a/extensions/source/propctrlr/propcontroller.cxx b/extensions/source/propctrlr/propcontroller.cxx
index d75c117a3e20..76e92f064638 100644
--- a/extensions/source/propctrlr/propcontroller.cxx
+++ b/extensions/source/propctrlr/propcontroller.cxx
@@ -790,7 +790,7 @@ namespace pcr
case PropertyControlType::TimeField:
{
std::unique_ptr<weld::Builder> xBuilder(PropertyHandlerHelper::makeBuilder("modules/spropctrlr/ui/timefield.ui", m_xContext));
- auto pTimeSpinButton = xBuilder->weld_time_spin_button("timefield", TimeFieldFormat::F_SEC);
+ auto pTimeSpinButton = xBuilder->weld_formatted_spin_button("timefield");
auto pControl = new OTimeControl(std::move(pTimeSpinButton), std::move(xBuilder), bCreateReadOnly);
pControl->SetModifyHandler();
xControl = pControl;
diff --git a/extensions/source/propctrlr/standardcontrol.cxx b/extensions/source/propctrlr/standardcontrol.cxx
index dc1891eab122..2084a9dae6bf 100644
--- a/extensions/source/propctrlr/standardcontrol.cxx
+++ b/extensions/source/propctrlr/standardcontrol.cxx
@@ -53,9 +53,11 @@ namespace pcr
using namespace ::com::sun::star::inspection;
//= OTimeControl
- OTimeControl::OTimeControl(std::unique_ptr<weld::TimeSpinButton> xWidget, std::unique_ptr<weld::Builder> xBuilder, bool bReadOnly)
+ OTimeControl::OTimeControl(std::unique_ptr<weld::FormattedSpinButton> xWidget, std::unique_ptr<weld::Builder> xBuilder, bool bReadOnly)
: OTimeControl_Base(PropertyControlType::TimeField, std::move(xBuilder), std::move(xWidget), bReadOnly)
+ , m_xFormatter(new weld::TimeFormatter(*getTypedControlWindow()))
{
+ m_xFormatter->SetExtFormat(ExtTimeFieldFormat::LongDuration);
}
void SAL_CALL OTimeControl::setValue( const Any& _rValue )
@@ -64,11 +66,11 @@ namespace pcr
if ( !( _rValue >>= aUNOTime ) )
{
getTypedControlWindow()->set_text("");
- getTypedControlWindow()->set_value(tools::Time(tools::Time::EMPTY));
+ m_xFormatter->SetTime(tools::Time(tools::Time::EMPTY));
}
else
{
- getTypedControlWindow()->set_value(::tools::Time(aUNOTime));
+ m_xFormatter->SetTime(::tools::Time(aUNOTime));
}
}
@@ -77,7 +79,7 @@ namespace pcr
Any aPropValue;
if ( !getTypedControlWindow()->get_text().isEmpty() )
{
- aPropValue <<= getTypedControlWindow()->get_value().GetUNOTime();
+ aPropValue <<= m_xFormatter->GetTime().GetUNOTime();
}
return aPropValue;
}
@@ -205,8 +207,10 @@ namespace pcr
ODateTimeControl::ODateTimeControl(std::unique_ptr<weld::Container> xWidget, std::unique_ptr<weld::Builder> xBuilder, bool bReadOnly)
: ODateTimeControl_Base(PropertyControlType::DateTimeField, std::move(xBuilder), std::move(xWidget), bReadOnly)
, m_xDate(std::make_unique<SvtCalendarBox>(m_xBuilder->weld_menu_button("datefield")))
- , m_xTime(m_xBuilder->weld_time_spin_button("timefield", TimeFieldFormat::F_SEC))
+ , m_xTime(m_xBuilder->weld_formatted_spin_button("timefield"))
+ , m_xFormatter(new weld::TimeFormatter(*m_xTime))
{
+ m_xFormatter->SetExtFormat(ExtTimeFieldFormat::LongDuration);
}
void SAL_CALL ODateTimeControl::setValue( const Any& _rValue )
@@ -215,7 +219,7 @@ namespace pcr
{
m_xDate->set_date(::Date(::Date::SYSTEM));
m_xTime->set_text("");
- m_xTime->set_value(tools::Time(tools::Time::EMPTY));
+ m_xFormatter->SetTime(tools::Time(tools::Time::EMPTY));
}
else
{
@@ -226,7 +230,7 @@ namespace pcr
::utl::typeConvert( aUNODateTime, aDateTime );
m_xDate->set_date(aDateTime);
- m_xTime->set_value(aDateTime);
+ m_xFormatter->SetTime(aDateTime);
}
}
@@ -235,7 +239,7 @@ namespace pcr
Any aPropValue;
if (!m_xTime->get_text().isEmpty())
{
- ::DateTime aDateTime(m_xDate->get_date(), m_xTime->get_value());
+ ::DateTime aDateTime(m_xDate->get_date(), m_xFormatter->GetTime());
util::DateTime aUNODateTime;
::utl::typeConvert( aDateTime, aUNODateTime );
diff --git a/extensions/source/propctrlr/standardcontrol.hxx b/extensions/source/propctrlr/standardcontrol.hxx
index 1b4fd2fd08dc..1eccceb9451e 100644
--- a/extensions/source/propctrlr/standardcontrol.hxx
+++ b/extensions/source/propctrlr/standardcontrol.hxx
@@ -35,11 +35,12 @@ namespace pcr
//= OTimeControl
- typedef CommonBehaviourControl<css::inspection::XPropertyControl, weld::TimeSpinButton> OTimeControl_Base;
+ typedef CommonBehaviourControl<css::inspection::XPropertyControl, weld::FormattedSpinButton> OTimeControl_Base;
class OTimeControl : public OTimeControl_Base
{
+ std::unique_ptr<weld::TimeFormatter> m_xFormatter;
public:
- OTimeControl(std::unique_ptr<weld::TimeSpinButton> xWidget, std::unique_ptr<weld::Builder> xBuilder, bool bReadOnly);
+ OTimeControl(std::unique_ptr<weld::FormattedSpinButton> xWidget, std::unique_ptr<weld::Builder> xBuilder, bool bReadOnly);
// XPropertyControl
virtual css::uno::Any SAL_CALL getValue() override;
@@ -52,7 +53,7 @@ namespace pcr
getTypedControlWindow()->connect_value_changed( LINK( this, CommonBehaviourControlHelper, TimeModifiedHdl ) );
}
- virtual weld::Widget* getWidget() override { return &getTypedControlWindow()->get_widget(); }
+ virtual weld::Widget* getWidget() override { return getTypedControlWindow(); }
};
//= ODateControl
@@ -108,7 +109,8 @@ namespace pcr
{
private:
std::unique_ptr<SvtCalendarBox> m_xDate;
- std::unique_ptr<weld::TimeSpinButton> m_xTime;
+ std::unique_ptr<weld::FormattedSpinButton> m_xTime;
+ std::unique_ptr<weld::TimeFormatter> m_xFormatter;
public:
ODateTimeControl(std::unique_ptr<weld::Container> xWidget, std::unique_ptr<weld::Builder> xBuilder, bool bReadOnly);
@@ -126,6 +128,7 @@ namespace pcr
virtual void SAL_CALL disposing() override
{
+ m_xFormatter.reset();
m_xTime.reset();
m_xDate.reset();
ODateTimeControl_Base::disposing();
diff --git a/include/sfx2/dinfdlg.hxx b/include/sfx2/dinfdlg.hxx
index 09e2473b9ed0..5f1efdfe7b3c 100644
--- a/include/sfx2/dinfdlg.hxx
+++ b/include/sfx2/dinfdlg.hxx
@@ -248,16 +248,23 @@ public:
~CustomPropertiesDateField();
};
+namespace weld
+{
+ class TimeFormatter;
+}
+
class CustomPropertiesTimeField
{
public:
- std::unique_ptr<weld::TimeSpinButton> m_xTimeField;
+ std::unique_ptr<weld::FormattedSpinButton> m_xTimeField;
+ std::unique_ptr<weld::TimeFormatter> m_xFormatter;
bool m_isUTC;
- CustomPropertiesTimeField(std::unique_ptr<weld::TimeSpinButton> xTimeField);
+ CustomPropertiesTimeField(std::unique_ptr<weld::FormattedSpinButton> xTimeField);
void set_visible(bool bVisible) { m_xTimeField->set_visible(bVisible); }
- tools::Time get_value() const { return m_xTimeField->get_value(); }
- void set_value(const tools::Time& rTime) { m_xTimeField->set_value(rTime); }
+ tools::Time get_value() const;
+ void set_value(const tools::Time& rTime);
+
~CustomPropertiesTimeField();
};
@@ -459,7 +466,8 @@ struct CmisDateTime
std::unique_ptr<weld::Builder> m_xBuilder;
std::unique_ptr<weld::Frame> m_xFrame;
std::unique_ptr<SvtCalendarBox> m_xDateField;
- std::unique_ptr<weld::TimeSpinButton> m_xTimeField;
+ std::unique_ptr<weld::FormattedSpinButton> m_xTimeField;
+ std::unique_ptr<weld::TimeFormatter> m_xFormatter;
CmisDateTime(weld::Widget* pParent, const css::util::DateTime& rDateTime);
};
diff --git a/include/svx/ctredlin.hxx b/include/svx/ctredlin.hxx
index 55462c9dce28..b7d0f80ada23 100644
--- a/include/svx/ctredlin.hxx
+++ b/include/svx/ctredlin.hxx
@@ -144,6 +144,11 @@ public:
void Show() { m_xContainer->show(); }
};
+namespace weld
+{
+ class TimeFormatter;
+}
+
/// Tabpage with the filter text entries etc.
class SAL_WARN_UNUSED SVX_DLLPUBLIC SvxTPFilter final : public SvxTPage
{
@@ -156,11 +161,13 @@ class SAL_WARN_UNUSED SVX_DLLPUBLIC SvxTPFilter final : public SvxTPage
std::unique_ptr<weld::CheckButton> m_xCbDate;
std::unique_ptr<weld::ComboBox> m_xLbDate;
std::unique_ptr<SvtCalendarBox> m_xDfDate;
- std::unique_ptr<weld::TimeSpinButton> m_xTfDate;
+ std::unique_ptr<weld::FormattedSpinButton> m_xTfDate;
+ std::unique_ptr<weld::TimeFormatter> m_xTfDateFormatter;
std::unique_ptr<weld::Button> m_xIbClock;
std::unique_ptr<weld::Label> m_xFtDate2;
std::unique_ptr<SvtCalendarBox> m_xDfDate2;
- std::unique_ptr<weld::TimeSpinButton> m_xTfDate2;
+ std::unique_ptr<weld::FormattedSpinButton> m_xTfDate2;
+ std::unique_ptr<weld::TimeFormatter> m_xTfDate2Formatter;
std::unique_ptr<weld::Button> m_xIbClock2;
std::unique_ptr<weld::CheckButton> m_xCbAuthor;
std::unique_ptr<weld::ComboBox> m_xLbAuthor;
@@ -178,7 +185,7 @@ class SAL_WARN_UNUSED SVX_DLLPUBLIC SvxTPFilter final : public SvxTPage
DECL_LINK( ModifyHdl, weld::Entry&, void );
DECL_LINK( ModifyListBoxHdl, weld::ComboBox&, void );
DECL_LINK( ModifyDate, SvtCalendarBox&, void );
- DECL_LINK( ModifyTime, weld::TimeSpinButton&, void );
+ DECL_LINK( ModifyTime, weld::FormattedSpinButton&, void );
DECL_LINK( RefHandle, weld::Button&, void );
void EnableDateLine1(bool bFlag);
diff --git a/include/vcl/formatter.hxx b/include/vcl/formatter.hxx
index 4f9a016cc6da..fce7f5018aee 100644
--- a/include/vcl/formatter.hxx
+++ b/include/vcl/formatter.hxx
@@ -287,6 +287,8 @@ public:
void EntryLostFocus();
+ void ReFormat();
+
// any aspect of the current format has changed
virtual void FormatChanged(FORMAT_CHANGE_TYPE nWhat);
@@ -305,8 +307,6 @@ protected:
SvNumberFormatter* CreateFormatter() { SetFormatter(StandardFormatter()); return m_pFormatter; }
virtual void UpdateCurrentValue(double dCurrentValue) { m_dCurrentValue = dCurrentValue; }
-
- void ReFormat();
};
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/include/vcl/weld.hxx b/include/vcl/weld.hxx
index 0d8b702e5f20..7bd54920a0bc 100644
--- a/include/vcl/weld.hxx
+++ b/include/vcl/weld.hxx
@@ -1924,74 +1924,6 @@ public:
weld::SpinButton& get_widget() { return *m_xSpinButton; }
};
-class VCL_DLLPUBLIC TimeSpinButton final
-{
- TimeFieldFormat m_eFormat;
- std::unique_ptr<weld::SpinButton> m_xSpinButton;
- Link<TimeSpinButton&, void> m_aValueChangedHdl;
-
- DECL_LINK(spin_button_value_changed, weld::SpinButton&, void);
- DECL_LINK(spin_button_output, weld::SpinButton&, void);
- DECL_LINK(spin_button_input, int* result, bool);
- DECL_LINK(spin_button_cursor_position, weld::Entry&, void);
-
- void signal_value_changed() { m_aValueChangedHdl.Call(*this); }
-
- static tools::Time ConvertValue(int nValue);
- static int ConvertValue(const tools::Time& rTime);
- OUString format_number(int nValue) const;
- void update_width_chars();
-
-public:
- TimeSpinButton(std::unique_ptr<SpinButton> pSpinButton, TimeFieldFormat eFormat)
- : m_eFormat(eFormat)
- , m_xSpinButton(std::move(pSpinButton))
- {
- update_width_chars();
- m_xSpinButton->connect_output(LINK(this, TimeSpinButton, spin_button_output));
- m_xSpinButton->connect_input(LINK(this, TimeSpinButton, spin_button_input));
- m_xSpinButton->connect_value_changed(LINK(this, TimeSpinButton, spin_button_value_changed));
- m_xSpinButton->connect_cursor_position(
- LINK(this, TimeSpinButton, spin_button_cursor_position));
- spin_button_output(*m_xSpinButton);
- }
-
- void set_value(const tools::Time& rTime) { m_xSpinButton->set_value(ConvertValue(rTime)); }
-
- tools::Time get_value() const { return ConvertValue(m_xSpinButton->get_value()); }
-
- void connect_value_changed(const Link<TimeSpinButton&, void>& rLink)
- {
- m_aValueChangedHdl = rLink;
- }
-
- void set_sensitive(bool sensitive) { m_xSpinButton->set_sensitive(sensitive); }
- bool get_sensitive() const { return m_xSpinButton->get_sensitive(); }
- void set_visible(bool bShow) { m_xSpinButton->set_visible(bShow); }
- bool get_visible() const { return m_xSpinButton->get_visible(); }
- void grab_focus() { m_xSpinButton->grab_focus(); }
- bool has_focus() const { return m_xSpinButton->has_focus(); }
- void show() { m_xSpinButton->show(); }
- void hide() { m_xSpinButton->hide(); }
- void save_value() { m_xSpinButton->save_value(); }
- bool get_value_changed_from_saved() const
- {
- return m_xSpinButton->get_value_changed_from_saved();
- }
- void set_position(int nCursorPos) { m_xSpinButton->set_position(nCursorPos); }
- void set_text(const OUString& rText) { m_xSpinButton->set_text(rText); }
- OUString get_text() const { return m_xSpinButton->get_text(); }
- void connect_focus_in(const Link<Widget&, void>& rLink)
- {
- m_xSpinButton->connect_focus_in(rLink);
- }
- void connect_focus_out(const Link<Widget&, void>& rLink)
- {
- m_xSpinButton->connect_focus_out(rLink);
- }
- weld::SpinButton& get_widget() { return *m_xSpinButton; }
-};
-
class VCL_DLLPUBLIC Label : virtual public Widget
{
public:
@@ -2308,9 +2240,6 @@ public:
weld_metric_spin_button(const OString& id, FieldUnit eUnit, bool bTakeOwnership = false) = 0;
virtual std::unique_ptr<FormattedSpinButton>
weld_formatted_spin_button(const OString& id, bool bTakeOwnership = false) = 0;
- virtual std::unique_ptr<TimeSpinButton>
- weld_time_spin_button(const OString& id, TimeFieldFormat eFormat, bool bTakeOwnership = false)
- = 0;
virtual std::unique_ptr<ComboBox> weld_combo_box(const OString& id, bool bTakeOwnership = false)
= 0;
virtual std::unique_ptr<TreeView> weld_tree_view(const OString& id, bool bTakeOwnership = false)
diff --git a/include/vcl/weldutils.hxx b/include/vcl/weldutils.hxx
index e4faeea905a7..e1944cc41ee8 100644
--- a/include/vcl/weldutils.hxx
+++ b/include/vcl/weldutils.hxx
@@ -160,12 +160,6 @@ public:
EntryFormatter(weld::Entry& rEntry);
EntryFormatter(weld::FormattedSpinButton& rSpinButton);
- // EntryFormatter will set listeners to "changed" and "focus-out" of the
- // entry so users that want to add their own listeners to those must set
- // them through this formatter and not directly on the entry
- void connect_changed(const Link<weld::Entry&, void>& rLink) { m_aModifyHdl = rLink; }
- void connect_focus_out(const Link<weld::Widget&, void>& rLink) { m_aFocusOutHdl = rLink; }
-
weld::Entry& get_widget() { return m_rEntry; }
// public Formatter overrides, drives interactions with the Entry
@@ -186,6 +180,17 @@ public:
void SetEntrySelectionOptions(SelectionOptions eOptions) { m_eOptions = eOptions; }
+ /* EntryFormatter will set listeners to "changed" and "focus-out" of the
+ Entry so users that want to add their own listeners to those must set
+ them through this formatter and not directly on that entry.
+
+ If EntryFormatter is used with a weld::FormattedSpinButton this is
+ handled transparently by the FormattedSpinButton for the user and the
+ handlers can be set on the FormattedSpinButton
+ */
+ void connect_changed(const Link<weld::Entry&, void>& rLink) { m_aModifyHdl = rLink; }
+ void connect_focus_out(const Link<weld::Widget&, void>& rLink) { m_aFocusOutHdl = rLink; }
+
virtual ~EntryFormatter() override;
private:
@@ -247,6 +252,8 @@ public:
TimeFormatter(weld::FormattedSpinButton& rSpinButton);
void SetExtFormat(ExtTimeFieldFormat eFormat);
+ void SetDuration(bool bDuration);
+ void SetTimeFormat(TimeFieldFormat eTimeFormat);
void SetMin(const tools::Time& rNewMin);
void SetMax(const tools::Time& rNewMax);
diff --git a/sd/source/filter/html/pubdlg.cxx b/sd/source/filter/html/pubdlg.cxx
index 144797fd1a8e..0855240aac7d 100644
--- a/sd/source/filter/html/pubdlg.cxx
+++ b/sd/source/filter/html/pubdlg.cxx
@@ -532,7 +532,9 @@ void SdPublishingDlg::CreatePages()
m_xPage2_ChgDefault = m_xBuilder->weld_radio_button("chgDefaultRadiobutton");
m_xPage2_ChgAuto = m_xBuilder->weld_radio_button("chgAutoRadiobutton");
m_xPage2_Duration_txt = m_xBuilder->weld_label("durationTxtLabel");
- m_xPage2_Duration = m_xBuilder->weld_time_spin_button("durationSpinbutton", TimeFieldFormat::F_SEC);
+ m_xPage2_Duration = m_xBuilder->weld_formatted_spin_button("durationSpinbutton");
+ m_xFormatter.reset(new weld::TimeFormatter(*m_xPage2_Duration));
+ m_xFormatter->SetExtFormat(ExtTimeFieldFormat::LongDuration);
m_xPage2_Endless = m_xBuilder->weld_check_button("endlessCheckbutton");
aAssistentFunc.InsertControl(2, m_xPage2_Title_WebCast.get());
aAssistentFunc.InsertControl(2, m_xPage2_Index_txt.get());
@@ -547,7 +549,7 @@ void SdPublishingDlg::CreatePages()
aAssistentFunc.InsertControl(2, m_xPage2_ChgDefault.get());
aAssistentFunc.InsertControl(2, m_xPage2_ChgAuto.get());
aAssistentFunc.InsertControl(2, m_xPage2_Duration_txt.get());
- aAssistentFunc.InsertControl(2, &m_xPage2_Duration->get_widget());
+ aAssistentFunc.InsertControl(2, m_xPage2_Duration.get());
aAssistentFunc.InsertControl(2, m_xPage2_Endless.get());
// Page 3
@@ -712,7 +714,7 @@ void SdPublishingDlg::GetParameterSequence( Sequence< PropertyValue >& rParams )
if( m_xPage2_Kiosk->get_active() && m_xPage2_ChgAuto->get_active() )
{
aValue.Name = "KioskSlideDuration";
- aValue.Value <<= static_cast<sal_uInt32>(m_xPage2_Duration->get_value().GetMSFromTime()) / 1000;
+ aValue.Value <<= static_cast<sal_uInt32>(m_xFormatter->GetTime().GetMSFromTime()) / 1000;
aProps.push_back( aValue );
aValue.Name = "KioskEndless";
@@ -1281,7 +1283,7 @@ void SdPublishingDlg::SetDesign( SdPublishingDesign const * pDesign )
tools::Time aTime( tools::Time::EMPTY );
aTime.MakeTimeFromMS( pDesign->m_nSlideDuration * 1000 );
- m_xPage2_Duration->set_value(aTime);
+ m_xFormatter->SetTime(aTime);
m_xPage2_Endless->set_sensitive( pDesign->m_bEndless );
@@ -1385,7 +1387,7 @@ void SdPublishingDlg::GetDesign( SdPublishingDesign* pDesign )
pDesign->m_aURL = m_xPage2_URL->get_text();
pDesign->m_bAutoSlide = m_xPage2_ChgAuto->get_active();
- pDesign->m_nSlideDuration = static_cast<sal_uInt32>(m_xPage2_Duration->get_value().GetMSFromTime()) / 1000;
+ pDesign->m_nSlideDuration = static_cast<sal_uInt32>(m_xFormatter->GetTime().GetMSFromTime()) / 1000;
pDesign->m_bEndless = m_xPage2_Endless->get_active();
}
diff --git a/sd/source/ui/dlg/animobjs.cxx b/sd/source/ui/dlg/animobjs.cxx
index 7b11b240748e..830149e62a0a 100644
--- a/sd/source/ui/dlg/animobjs.cxx
+++ b/sd/source/ui/dlg/animobjs.cxx
@@ -132,7 +132,8 @@ AnimationWindow::AnimationWindow(SfxBindings* pInBindings, SfxChildWindow *pCW,
, m_xBtnPlay(m_xBuilder->weld_button("next"))
, m_xBtnLast(m_xBuilder->weld_button("last"))
, m_xNumFldBitmap(m_xBuilder->weld_spin_button("numbitmap"))
- , m_xTimeField(m_xBuilder->weld_time_spin_button("duration", TimeFieldFormat::F_SEC_CS))
+ , m_xTimeField(m_xBuilder->weld_formatted_spin_button("duration"))
+ , m_xFormatter(new weld::TimeFormatter(*m_xTimeField))
, m_xLbLoopCount(m_xBuilder->weld_combo_box("loopcount"))
, m_xBtnGetOneObject(m_xBuilder->weld_button("getone"))
, m_xBtnGetAllObjects(m_xBuilder->weld_button("getall"))
@@ -151,6 +152,10 @@ AnimationWindow::AnimationWindow(SfxBindings* pInBindings, SfxChildWindow *pCW,
{
SetText(SdResId(STR_ANIMATION_DIALOG_TITLE));
+ m_xFormatter->SetDuration(true);
+ m_xFormatter->SetTimeFormat(TimeFieldFormat::F_SEC_CS);
+ m_xFormatter->EnableEmptyField(false);
+
// create new document with page
pMyDoc.reset( new SdDrawDocument(DocumentType::Impress, nullptr) );
SdPage* pPage = pMyDoc->AllocSdPage(false);
@@ -207,6 +212,7 @@ void AnimationWindow::dispose()
m_xBtnPlay.reset();
m_xBtnLast.reset();
m_xNumFldBitmap.reset();
+ m_xFormatter.reset();
m_xTimeField.reset();
m_xLbLoopCount.reset();
m_xBtnGetOneObject.reset();
@@ -293,7 +299,7 @@ IMPL_LINK( AnimationWindow, ClickPlayHdl, weld::Button&, rButton, void )
{
::tools::Time const & rTime = m_FrameList[i].second;
- m_xTimeField->set_value( rTime );
+ m_xFormatter->SetTime( rTime );
sal_uLong nTime = rTime.GetMSFromTime();
WaitInEffect( nTime, nTmpTime, pProgress.get() );
@@ -369,7 +375,8 @@ IMPL_LINK_NOARG(AnimationWindow, ClickRbtHdl, weld::Button&, void)
if( n > 0 )
{
::tools::Time const & rTime = m_FrameList[n - 1].second;
- m_xTimeField->set_value( rTime );
+ m_xFormatter->SetTime( rTime );
+ m_xFormatter->ReFormat();
}
m_xTimeField->set_sensitive(true);
m_xLbLoopCount->set_sensitive(true);
@@ -486,13 +493,13 @@ IMPL_LINK_NOARG(AnimationWindow, ModifyBitmapHdl, weld::SpinButton&, void)
UpdateControl();
}
-IMPL_LINK_NOARG(AnimationWindow, ModifyTimeHdl, weld::TimeSpinButton&, void)
+IMPL_LINK_NOARG(AnimationWindow, ModifyTimeHdl, weld::FormattedSpinButton&, void)
{
sal_uLong nPos = m_xNumFldBitmap->get_value() - 1;
::tools::Time & rTime = m_FrameList[nPos].second;
- rTime = m_xTimeField->get_value();
+ rTime = m_xFormatter->GetTime();
}
void AnimationWindow::UpdateControl(bool const bDisableCtrls)
@@ -759,7 +766,7 @@ void AnimationWindow::AddObj (::sd::View& rView )
size_t nIndex = m_nCurrentFrame + 1;
m_FrameList.insert(
m_FrameList.begin() + nIndex,
- ::std::make_pair(aBitmapEx, m_xTimeField->get_value()));
+ ::std::make_pair(aBitmapEx, m_xFormatter->GetTime()));
// increment => next one inserted after this one
++m_nCurrentFrame;
@@ -777,7 +784,7 @@ void AnimationWindow::AddObj (::sd::View& rView )
{
BitmapEx aBitmapEx(rView.GetAllMarkedGraphic().GetBitmapEx());
- ::tools::Time aTime( m_xTimeField->get_value() );
+ ::tools::Time aTime( m_xFormatter->GetTime() );
size_t nIndex = m_nCurrentFrame + 1;
m_FrameList.insert(
@@ -808,7 +815,7 @@ void AnimationWindow::AddObj (::sd::View& rView )
size_t nIndex = m_nCurrentFrame + 1;
m_FrameList.insert(
m_FrameList.begin() + nIndex,
- ::std::make_pair(aBitmapEx, m_xTimeField->get_value()));
+ ::std::make_pair(aBitmapEx, m_xFormatter->GetTime()));
// increment => next one inserted after this one
++m_nCurrentFrame;
diff --git a/sd/source/ui/dlg/present.cxx b/sd/source/ui/dlg/present.cxx
index 244cfd218880..bd06661554cb 100644
--- a/sd/source/ui/dlg/present.cxx
+++ b/sd/source/ui/dlg/present.cxx
@@ -45,7 +45,8 @@ SdStartPresentationDlg::SdStartPresentationDlg(weld::Window* pWindow, const SfxI
, m_xRbtStandard(m_xBuilder->weld_radio_button("default"))
, m_xRbtWindow(m_xBuilder->weld_radio_button("window"))
, m_xRbtAuto(m_xBuilder->weld_radio_button("auto"))
- , m_xTmfPause(m_xBuilder->weld_time_spin_button("pauseduration", TimeFieldFormat::F_SEC))
+ , m_xTmfPause(m_xBuilder->weld_formatted_spin_button("pauseduration"))
+ , m_xFormatter(new weld::TimeFormatter(*m_xTmfPause))
, m_xCbxAutoLogo(m_xBuilder->weld_check_button("showlogo"))
, m_xCbxManuel(m_xBuilder->weld_check_button("manualslides"))
, m_xCbxMousepointer(m_xBuilder->weld_check_button("pointervisible"))
@@ -60,6 +61,9 @@ SdStartPresentationDlg::SdStartPresentationDlg(weld::Window* pWindow, const SfxI
, m_xMonitorExternal(m_xBuilder->weld_label("externalmonitor_str"))
, m_xExternal(m_xBuilder->weld_label("external_str"))
{
+ m_xFormatter->SetExtFormat(ExtTimeFieldFormat::LongDuration);
+ m_xFormatter->EnableEmptyField(false);
+
Link<weld::Button&,void> aLink( LINK( this, SdStartPresentationDlg, ChangeRangeHdl ) );
m_xRbtAll->connect_clicked( aLink );
@@ -113,7 +117,7 @@ SdStartPresentationDlg::SdStartPresentationDlg(weld::Window* pWindow, const SfxI
const bool bWindow = !static_cast<const SfxBoolItem&>( rOutAttrs.Get( ATTR_PRESENT_FULLSCREEN ) ).GetValue();
const long nPause = static_cast<const SfxUInt32Item&>( rOutAttrs.Get( ATTR_PRESENT_PAUSE_TIMEOUT ) ).GetValue();
- m_xTmfPause->set_value( tools::Time( 0, 0, nPause ) );
+ m_xFormatter->SetTime( tools::Time( 0, 0, nPause ) );
// set cursor in timefield to end
m_xTmfPause->set_position(-1);
@@ -258,7 +262,7 @@ void SdStartPresentationDlg::GetAttr( SfxItemSet& rAttr )
rAttr.Put( SfxBoolItem ( ATTR_PRESENT_ALWAYS_ON_TOP, m_xCbxAlwaysOnTop->get_active() ) );
rAttr.Put( SfxBoolItem ( ATTR_PRESENT_FULLSCREEN, !m_xRbtWindow->get_active() ) );
rAttr.Put( SfxBoolItem ( ATTR_PRESENT_ENDLESS, m_xRbtAuto->get_active() ) );
- rAttr.Put( SfxUInt32Item ( ATTR_PRESENT_PAUSE_TIMEOUT, m_xTmfPause->get_value().GetMSFromTime() / 1000 ) );
+ rAttr.Put( SfxUInt32Item ( ATTR_PRESENT_PAUSE_TIMEOUT, m_xFormatter->GetTime().GetMSFromTime() / 1000 ) );
rAttr.Put( SfxBoolItem ( ATTR_PRESENT_SHOW_PAUSELOGO, m_xCbxAutoLogo->get_active() ) );
int nPos = m_xLBMonitor->get_active();
@@ -289,7 +293,7 @@ IMPL_LINK_NOARG(SdStartPresentationDlg, ClickWindowPresentationHdl, weld::Button
// m_xFtPause.set_sensitive( bAuto );
m_xTmfPause->set_sensitive( bAuto );
- m_xCbxAutoLogo->set_sensitive( bAuto && ( m_xTmfPause->get_value().GetMSFromTime() > 0 ) );
+ m_xCbxAutoLogo->set_sensitive( bAuto && ( m_xFormatter->GetTime().GetMSFromTime() > 0 ) );
const bool bDisplay = !bWindow && ( mnMonitors > 1 );
m_xFtMonitor->set_sensitive( bDisplay );
@@ -307,14 +311,14 @@ IMPL_LINK_NOARG(SdStartPresentationDlg, ClickWindowPresentationHdl, weld::Button
/**
* Handler: Enabled/Disabled Checkbox "AlwaysOnTop"
*/
-IMPL_LINK_NOARG(SdStartPresentationDlg, ChangePauseHdl, weld::TimeSpinButton&, void)
+IMPL_LINK_NOARG(SdStartPresentationDlg, ChangePauseHdl, weld::FormattedSpinButton&, void)
{
ChangePause();
}
void SdStartPresentationDlg::ChangePause()
{
- m_xCbxAutoLogo->set_sensitive(m_xRbtAuto->get_active() && ( m_xTmfPause->get_value().GetMSFromTime() > 0 ));
+ m_xCbxAutoLogo->set_sensitive(m_xRbtAuto->get_active() && ( m_xFormatter->GetTime().GetMSFromTime() > 0 ));
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sd/source/ui/inc/animobjs.hxx b/sd/source/ui/inc/animobjs.hxx
index 34b48dbea665..1d3321e0dbb6 100644
--- a/sd/source/ui/inc/animobjs.hxx
+++ b/sd/source/ui/inc/animobjs.hxx
@@ -27,6 +27,7 @@
#include <misc/scopelock.hxx>
#include <vcl/customweld.hxx>
#include <vcl/weld.hxx>
+#include <vcl/weldutils.hxx>
class SdDrawDocument;
@@ -94,7 +95,8 @@ private:
std::unique_ptr<weld::Button> m_xBtnPlay;
std::unique_ptr<weld::Button> m_xBtnLast;
std::unique_ptr<weld::SpinButton> m_xNumFldBitmap;
- std::unique_ptr<weld::TimeSpinButton> m_xTimeField;
+ std::unique_ptr<weld::FormattedSpinButton> m_xTimeField;
+ std::unique_ptr<weld::TimeFormatter> m_xFormatter;
std::unique_ptr<weld::ComboBox> m_xLbLoopCount;
std::unique_ptr<weld::Button> m_xBtnGetOneObject;
std::unique_ptr<weld::Button> m_xBtnGetAllObjects;
@@ -131,7 +133,7 @@ private:
DECL_LINK( ClickHelpHdl, weld::Button&, void );
DECL_LINK( ClickCreateGroupHdl, weld::Button&, void );
DECL_LINK( ModifyBitmapHdl, weld::SpinButton&, void );
- DECL_LINK( ModifyTimeHdl, weld::TimeSpinButton&, void );
+ DECL_LINK( ModifyTimeHdl, weld::FormattedSpinButton&, void );
void UpdateControl(bool bDisableCtrls = false);
void ResetAttrs();
diff --git a/sd/source/ui/inc/present.hxx b/sd/source/ui/inc/present.hxx
index fc84f0e8cbb1..ef6523fd9b61 100644
--- a/sd/source/ui/inc/present.hxx
+++ b/sd/source/ui/inc/present.hxx
@@ -21,6 +21,7 @@
#define INCLUDED_SD_SOURCE_UI_INC_PRESENT_HXX
#include <vcl/weld.hxx>
+#include <vcl/weldutils.hxx>
class SfxItemSet;
class SdCustomShowList;
@@ -44,7 +45,8 @@ private:
std::unique_ptr<weld::RadioButton> m_xRbtStandard;
std::unique_ptr<weld::RadioButton> m_xRbtWindow;
std::unique_ptr<weld::RadioButton> m_xRbtAuto;
- std::unique_ptr<weld::TimeSpinButton> m_xTmfPause;
+ std::unique_ptr<weld::FormattedSpinButton> m_xTmfPause;
+ std::unique_ptr<weld::TimeFormatter> m_xFormatter;
std::unique_ptr<weld::CheckButton> m_xCbxAutoLogo;
std::unique_ptr<weld::CheckButton> m_xCbxManuel;
@@ -65,7 +67,7 @@ private:
DECL_LINK(ChangeRangeHdl, weld::Button&, void);
DECL_LINK(ClickWindowPresentationHdl, weld::Button&, void);
void ChangePause();
- DECL_LINK(ChangePauseHdl, weld::TimeSpinButton&, void);
+ DECL_LINK(ChangePauseHdl, weld::FormattedSpinButton&, void);
void InitMonitorSettings();
enum DisplayType {
diff --git a/sd/source/ui/inc/pubdlg.hxx b/sd/source/ui/inc/pubdlg.hxx
index 4b89a7cf3083..9556249c1135 100644
--- a/sd/source/ui/inc/pubdlg.hxx
+++ b/sd/source/ui/inc/pubdlg.hxx
@@ -22,6 +22,7 @@
#include <svtools/valueset.hxx>
#include <vcl/weld.hxx>
+#include <vcl/weldutils.hxx>
#include <pres.hxx>
#include "assclass.hxx"
@@ -86,7 +87,8 @@ private:
std::unique_ptr<weld::RadioButton> m_xPage2_ChgDefault;
std::unique_ptr<weld::RadioButton> m_xPage2_ChgAuto;
std::unique_ptr<weld::Label> m_xPage2_Duration_txt;
- std::unique_ptr<weld::TimeSpinButton> m_xPage2_Duration;
+ std::unique_ptr<weld::FormattedSpinButton> m_xPage2_Duration;
+ std::unique_ptr<weld::TimeFormatter> m_xFormatter;
std::unique_ptr<weld::CheckButton> m_xPage2_Endless;
// page 3 controls
diff --git a/sfx2/source/dialog/dinfdlg.cxx b/sfx2/source/dialog/dinfdlg.cxx
index 0d1fac1a9622..23774c4954da 100644
--- a/sfx2/source/dialog/dinfdlg.cxx
+++ b/sfx2/source/dialog/dinfdlg.cxx
@@ -23,6 +23,7 @@
#include <tools/urlobj.hxx>
#include <vcl/svapp.hxx>
#include <vcl/weld.hxx>
+#include <vcl/weldutils.hxx>
#include <unotools/datetime.hxx>
#include <unotools/localedatawrapper.hxx>
#include <unotools/cmdoptions.hxx>
@@ -1265,7 +1266,7 @@ CustomPropertyLine::CustomPropertyLine(CustomPropertiesWindow* pParent, weld::Wi
, m_xValueEdit(m_xBuilder->weld_entry("valueedit"))
, m_xDateTimeBox(m_xBuilder->weld_widget("datetimebox"))
, m_xDateField(new CustomPropertiesDateField(new SvtCalendarBox(m_xBuilder->weld_menu_button("date"))))
- , m_xTimeField(new CustomPropertiesTimeField(m_xBuilder->weld_time_spin_button("time", TimeFieldFormat::F_SEC)))
+ , m_xTimeField(new CustomPropertiesTimeField(m_xBuilder->weld_formatted_spin_button("time")))
, m_xDurationBox(m_xBuilder->weld_widget("durationbox"))
, m_xDurationField(new CustomPropertiesDurationField(m_xBuilder->weld_entry("duration"),
m_xBuilder->weld_button("durationbutton")))
@@ -1523,10 +1524,23 @@ Sequence< beans::PropertyValue > CustomPropertiesWindow::GetCustomProperties()
return aPropertiesSeq;
}
-CustomPropertiesTimeField::CustomPropertiesTimeField(std::unique_ptr<weld::TimeSpinButton> xTimeField)
+CustomPropertiesTimeField::CustomPropertiesTimeField(std::unique_ptr<weld::FormattedSpinButton> xTimeField)
: m_xTimeField(std::move(xTimeField))
+ , m_xFormatter(new weld::TimeFormatter(*m_xTimeField))
, m_isUTC(false)
{
+ m_xFormatter->SetExtFormat(ExtTimeFieldFormat::LongDuration);
+ m_xFormatter->EnableEmptyField(false);
+}
+
+tools::Time CustomPropertiesTimeField::get_value() const
+{
+ return m_xFormatter->GetTime();
+}
+
+void CustomPropertiesTimeField::set_value(const tools::Time& rTime)
+{
+ m_xFormatter->SetTime(rTime);
}
CustomPropertiesTimeField::~CustomPropertiesTimeField()
@@ -1964,12 +1978,16 @@ CmisDateTime::CmisDateTime(weld::Widget* pParent, const util::DateTime& aDateTim
: m_xBuilder(Application::CreateBuilder(pParent, "sfx/ui/cmisline.ui"))
, m_xFrame(m_xBuilder->weld_frame("CmisFrame"))
, m_xDateField(new SvtCalendarBox(m_xBuilder->weld_menu_button("date")))
- , m_xTimeField(m_xBuilder->weld_time_spin_button("time", TimeFieldFormat::F_SEC))
+ , m_xTimeField(m_xBuilder->weld_formatted_spin_button("time"))
+ , m_xFormatter(new weld::TimeFormatter(*m_xTimeField))
{
+ m_xFormatter->SetExtFormat(ExtTimeFieldFormat::LongDuration);
+ m_xFormatter->EnableEmptyField(false);
+
m_xDateField->show();
m_xTimeField->show();
m_xDateField->set_date(Date(aDateTime));
- m_xTimeField->set_value(tools::Time(aDateTime));
+ m_xFormatter->SetTime(tools::Time(aDateTime));
}
CmisYesNo::CmisYesNo(weld::Widget* pParent, bool bValue)
@@ -2185,7 +2203,7 @@ Sequence< document::CmisProperty > CmisPropertiesWindow::GetCmisProperties() con
for ( const auto& rxDateTime : pLine->m_aDateTimes )
{
Date aTmpDate = rxDateTime->m_xDateField->get_date();
- tools::Time aTmpTime = rxDateTime->m_xTimeField->get_value();
+ tools::Time aTmpTime = rxDateTime->m_xFormatter->GetTime();
util::DateTime aDateTime( aTmpTime.GetNanoSec(), aTmpTime.GetSec(),
aTmpTime.GetMin(), aTmpTime.GetHour(),
aTmpDate.GetDay(), aTmpDate.GetMonth(),
diff --git a/svx/source/dialog/ctredlin.cxx b/svx/source/dialog/ctredlin.cxx
index 3374efde51b5..3b07ab66fb9d 100644
--- a/svx/source/dialog/ctredlin.cxx
+++ b/svx/source/dialog/ctredlin.cxx
@@ -22,6 +22,7 @@
#include <i18nlangtag/languagetag.hxx>
#include <vcl/svapp.hxx>
#include <vcl/settings.hxx>
+#include <vcl/weldutils.hxx>
#include <svtools/ctrlbox.hxx>
#include <unotools/textsearch.hxx>
@@ -496,11 +497,13 @@ SvxTPFilter::SvxTPFilter(weld::Container* pParent)
, m_xCbDate(m_xBuilder->weld_check_button("date"))
, m_xLbDate(m_xBuilder->weld_combo_box("datecond"))
, m_xDfDate(new SvtCalendarBox(m_xBuilder->weld_menu_button("startdate")))
- , m_xTfDate(m_xBuilder->weld_time_spin_button("starttime", TimeFieldFormat::F_NONE))
+ , m_xTfDate(m_xBuilder->weld_formatted_spin_button("starttime"))
+ , m_xTfDateFormatter(new weld::TimeFormatter(*m_xTfDate))
, m_xIbClock(m_xBuilder->weld_button("startclock"))
, m_xFtDate2(m_xBuilder->weld_label("and"))
, m_xDfDate2(new SvtCalendarBox(m_xBuilder->weld_menu_button("enddate")))
- , m_xTfDate2(m_xBuilder->weld_time_spin_button("endtime", TimeFieldFormat::F_NONE))
+ , m_xTfDate2(m_xBuilder->weld_formatted_spin_button("endtime"))
+ , m_xTfDate2Formatter(new weld::TimeFormatter(*m_xTfDate2))
, m_xIbClock2(m_xBuilder->weld_button("endclock"))
, m_xCbAuthor(m_xBuilder->weld_check_button("author"))
, m_xLbAuthor(m_xBuilder->weld_combo_box("authorlist"))
@@ -512,6 +515,9 @@ SvxTPFilter::SvxTPFilter(weld::Container* pParent)
, m_xCbComment(m_xBuilder->weld_check_button("comment"))
, m_xEdComment(m_xBuilder->weld_entry("commentedit"))
{
+ m_xTfDateFormatter->EnableEmptyField(false);
+ m_xTfDate2Formatter->EnableEmptyField(false);
+
m_xLbDate->set_active(0);
m_xLbDate->connect_changed( LINK( this, SvxTPFilter, SelDateHdl ) );
m_xIbClock->connect_clicked( LINK( this, SvxTPFilter, TimeHdl) );
@@ -529,7 +535,7 @@ SvxTPFilter::SvxTPFilter(weld::Container* pParent)
m_xDfDate->connect_activated(a2Link);
m_xDfDate2->connect_activated(a2Link);
- Link<weld::TimeSpinButton&,void> a3Link=LINK(this, SvxTPFilter, ModifyTime);
+ Link<weld::FormattedSpinButton&,void> a3Link=LINK(this, SvxTPFilter, ModifyTime);
m_xTfDate->connect_value_changed(a3Link);
m_xTfDate2->connect_value_changed(a3Link);
@@ -545,11 +551,11 @@ SvxTPFilter::SvxTPFilter(weld::Container* pParent)
RowEnableHdl(*m_xCbAction);
RowEnableHdl(*m_xCbComment);
- DateTime aDateTime( DateTime::SYSTEM );
- m_xDfDate->set_date(aDateTime);
- m_xDfDate2->set_date(aDateTime);
- m_xTfDate->set_value(aDateTime);
- m_xTfDate2->set_value(aDateTime);
+ DateTime aDateTime(DateTime::SYSTEM);
+ SetFirstDate(aDateTime);
+ SetLastDate(aDateTime);
+ SetFirstTime(aDateTime);
+ SetLastTime(aDateTime);
HideRange();
ShowAction();
bModified=false;
@@ -611,12 +617,12 @@ void SvxTPFilter::SetFirstDate(const Date &aDate)
tools::Time SvxTPFilter::GetFirstTime() const
{
- return m_xTfDate->get_value();
+ return m_xTfDateFormatter->GetTime();
}
void SvxTPFilter::SetFirstTime(const tools::Time &aTime)
{
- m_xTfDate->set_value(aTime);
+ m_xTfDateFormatter->SetTime(aTime);
}
Date SvxTPFilter::GetLastDate() const
@@ -631,12 +637,12 @@ void SvxTPFilter::SetLastDate(const Date &aDate)
tools::Time SvxTPFilter::GetLastTime() const
{
- return m_xTfDate2->get_value();
+ return m_xTfDate2Formatter->GetTime();
}
void SvxTPFilter::SetLastTime(const tools::Time &aTime)
{
- m_xTfDate2->set_value(aTime);
+ m_xTfDate2Formatter->SetTime(aTime);
}
void SvxTPFilter::SetDateMode(sal_uInt16 nMode)
@@ -865,13 +871,13 @@ IMPL_LINK(SvxTPFilter, TimeHdl, weld::Button&, rIB, void)
DateTime aDateTime( DateTime::SYSTEM );
if (&rIB == m_xIbClock.get())
{
- m_xDfDate->set_date(aDateTime);
- m_xTfDate->set_value(aDateTime);
+ SetFirstDate(aDateTime);
+ SetFirstTime(aDateTime);
}
else if (&rIB == m_xIbClock2.get())
{
- m_xDfDate2->set_date(aDateTime);
- m_xTfDate2->set_value(aDateTime);
+ SetLastDate(aDateTime);
+ SetLastTime(aDateTime);
}
bModified=true;
}
@@ -894,10 +900,10 @@ void SvxTPFilter::DeactivatePage()
{
m_pRedlinTable->SetFilterDate(IsDate());
m_pRedlinTable->SetDateTimeMode(GetDateMode());
- m_pRedlinTable->SetFirstDate(m_xDfDate->get_date());
- m_pRedlinTable->SetLastDate(m_xDfDate2->get_date());
- m_pRedlinTable->SetFirstTime(m_xTfDate->get_value());
- m_pRedlinTable->SetLastTime(m_xTfDate2->get_value());
+ m_pRedlinTable->SetFirstDate(GetFirstDate());
+ m_pRedlinTable->SetLastDate(GetLastDate());
+ m_pRedlinTable->SetFirstTime(GetFirstTime());
+ m_pRedlinTable->SetLastTime(GetLastTime());
m_pRedlinTable->SetFilterAuthor(IsAuthor());
m_pRedlinTable->SetAuthor(GetSelectedAuthor());
@@ -950,24 +956,24 @@ IMPL_LINK(SvxTPFilter, ModifyDate, SvtCalendarBox&, rTF, void)
bModified=true;
}
-IMPL_LINK(SvxTPFilter, ModifyTime, weld::TimeSpinButton&, rTF, void)
+IMPL_LINK(SvxTPFilter, ModifyTime, weld::FormattedSpinButton&, rTF, void)
{
tools::Time aTime(0);
if (m_xTfDate.get() == &rTF)
{
if (m_xTfDate->get_text().isEmpty())
- m_xTfDate->set_value(aTime);
+ SetFirstTime(aTime);
- if(m_pRedlinTable!=nullptr)
- m_pRedlinTable->SetFirstTime(m_xTfDate->get_value());
+ if (m_pRedlinTable!=nullptr)
+ m_pRedlinTable->SetFirstTime(GetFirstTime());
}
else if (m_xTfDate2.get() == &rTF)
{
if (m_xTfDate2->get_text().isEmpty())
- m_xTfDate2->set_value(aTime);
+ SetLastTime(aTime);
- if(m_pRedlinTable!=nullptr)
- m_pRedlinTable->SetLastTime(m_xTfDate2->get_value());
+ if (m_pRedlinTable!=nullptr)
+ m_pRedlinTable->SetLastTime(GetLastTime());
}
bModified=true;
diff --git a/vcl/inc/salvtables.hxx b/vcl/inc/salvtables.hxx
index 062bf9bd66ee..1e2fa89786c6 100644
--- a/vcl/inc/salvtables.hxx
+++ b/vcl/inc/salvtables.hxx
@@ -117,10 +117,6 @@ public:
virtual std::unique_ptr<weld::FormattedSpinButton>
weld_formatted_spin_button(const OString& id, bool bTakeOwnership = false) override;
- virtual std::unique_ptr<weld::TimeSpinButton>
- weld_time_spin_button(const OString& id, TimeFieldFormat eFormat,
- bool bTakeOwnership = false) override;
-
virtual std::unique_ptr<weld::ComboBox> weld_combo_box(const OString& id,
bool bTakeOwnership = false) override;
diff --git a/vcl/source/app/salvtables.cxx b/vcl/source/app/salvtables.cxx
index 3c564aa5371c..a4f8fb427230 100644
--- a/vcl/source/app/salvtables.cxx
+++ b/vcl/source/app/salvtables.cxx
@@ -5343,12 +5343,14 @@ class SalInstanceFormattedSpinButton : public SalInstanceEntry,
{
private:
VclPtr<FormattedField> m_xButton;
+ weld::EntryFormatter* m_pFormatter;
public:
SalInstanceFormattedSpinButton(FormattedField* pButton, SalInstanceBuilder* pBuilder,
bool bTakeOwnership)
: SalInstanceEntry(pButton, pBuilder, bTakeOwnership)
, m_xButton(pButton)
+ , m_pFormatter(nullptr)
{
}
@@ -5359,8 +5361,29 @@ public:
enable_notify_events();
}
+ virtual void connect_changed(const Link<weld::Entry&, void>& rLink) override
+ {
+ if (!m_pFormatter) // once a formatter is set, it takes over "changed"
+ {
+ SalInstanceEntry::connect_changed(rLink);
+ return;
+ }
+ m_pFormatter->connect_changed(rLink);
+ }
+
+ virtual void connect_focus_out(const Link<weld::Widget&, void>& rLink) override
+ {
+ if (!m_pFormatter) // once a formatter is set, it takes over "focus-out"
+ {
+ SalInstanceEntry::connect_focus_out(rLink);
+ return;
+ }
+ m_pFormatter->connect_focus_out(rLink);
+ }
+
virtual void SetFormatter(weld::EntryFormatter* pFormatter) override
{
+ m_pFormatter = pFormatter;
m_xButton->SetFormatter(pFormatter);
}
@@ -6650,17 +6673,6 @@ SalInstanceBuilder::weld_formatted_spin_button(const OString& id, bool bTakeOwne
: nullptr;
}
-std::unique_ptr<weld::TimeSpinButton>
-SalInstanceBuilder::weld_time_spin_button(const OString& id, TimeFieldFormat eFormat,
- bool bTakeOwnership)
-{
- std::unique_ptr<weld::TimeSpinButton> pRet(
- new weld::TimeSpinButton(weld_spin_button(id, bTakeOwnership), eFormat));
- SalInstanceSpinButton& rButton = dynamic_cast<SalInstanceSpinButton&>(pRet->get_widget());
- rButton.DisableRemainderFactor(); //so with hh::mm::ss, incrementing mm will not reset ss
- return pRet;
-}
-
std::unique_ptr<weld::ComboBox> SalInstanceBuilder::weld_combo_box(const OString& id,
bool bTakeOwnership)
{
diff --git a/vcl/source/app/weldutils.cxx b/vcl/source/app/weldutils.cxx
index 21161e396db8..9efab321e91d 100644
--- a/vcl/source/app/weldutils.cxx
+++ b/vcl/source/app/weldutils.cxx
@@ -346,6 +346,8 @@ TimeFormatter::TimeFormatter(weld::FormattedSpinButton& rSpinButton)
void TimeFormatter::Init()
{
+ DisableRemainderFactor(); //so with hh::mm::ss, incrementing mm will not reset ss
+
SetOutputHdl(LINK(this, TimeFormatter, FormatOutputHdl));
SetInputHdl(LINK(this, TimeFormatter, ParseInputHdl));
@@ -407,6 +409,18 @@ void TimeFormatter::SetExtFormat(ExtTimeFieldFormat eFormat)
ReFormat();
}
+void TimeFormatter::SetDuration(bool bDuration)
+{
+ m_bDuration = bDuration;
+ ReFormat();
+}
+
+void TimeFormatter::SetTimeFormat(TimeFieldFormat eTimeFormat)
+{
+ m_eFormat = eTimeFormat;
+ ReFormat();
+}
+
TimeFormatter::~TimeFormatter() = default;
}
diff --git a/vcl/source/window/builder.cxx b/vcl/source/window/builder.cxx
index 368c4292fd06..6a02b7a9f86d 100644
--- a/vcl/source/window/builder.cxx
+++ b/vcl/source/window/builder.cxx
@@ -354,78 +354,6 @@ namespace weld
return bRet;
}
- IMPL_LINK_NOARG(TimeSpinButton, spin_button_cursor_position, Entry&, void)
- {
- int nStartPos, nEndPos;
- m_xSpinButton->get_selection_bounds(nStartPos, nEndPos);
-
- const LocaleDataWrapper& rLocaleData = Application::GetSettings().GetLocaleDataWrapper();
- const int nTimeArea = ::TimeFormatter::GetTimeArea(m_eFormat, m_xSpinButton->get_text(), nEndPos,
- rLocaleData);
-
- int nIncrements = 1;
-
- if (nTimeArea == 1)
- nIncrements = 1000 * 60 * 60;
- else if (nTimeArea == 2)
- nIncrements = 1000 * 60;
- else if (nTimeArea == 3)
- nIncrements = 1000;
-
- m_xSpinButton->set_increments(nIncrements, nIncrements * 10);
- }
-
- IMPL_LINK_NOARG(TimeSpinButton, spin_button_value_changed, SpinButton&, void)
- {
- signal_value_changed();
- }
-
- IMPL_LINK(TimeSpinButton, spin_button_output, SpinButton&, rSpinButton, void)
- {
- int nStartPos, nEndPos;
- rSpinButton.get_selection_bounds(nStartPos, nEndPos);
- rSpinButton.set_text(format_number(rSpinButton.get_value()));
- rSpinButton.set_position(nEndPos);
- }
-
- IMPL_LINK(TimeSpinButton, spin_button_input, int*, result, bool)
- {
- const LocaleDataWrapper& rLocaleData = Application::GetSettings().GetLocaleDataWrapper();
- tools::Time aResult(0);
- bool bRet = ::TimeFormatter::TextToTime(m_xSpinButton->get_text(), aResult, m_eFormat, true, rLocaleData);
- if (bRet)
- *result = ConvertValue(aResult);
- return bRet;
- }
-
- void TimeSpinButton::update_width_chars()
- {
- int min, max;
- m_xSpinButton->get_range(min, max);
- auto width = std::max(m_xSpinButton->get_pixel_size(format_number(min)).Width(),
- m_xSpinButton->get_pixel_size(format_number(max)).Width());
- int chars = ceil(width / m_xSpinButton->get_approximate_digit_width());
- m_xSpinButton->set_width_chars(chars);
- }
-
- tools::Time TimeSpinButton::ConvertValue(int nValue)
- {
- tools::Time aTime(0);
- aTime.MakeTimeFromMS(nValue);
- return aTime;
- }
-
- int TimeSpinButton::ConvertValue(const tools::Time& rTime)
- {
- return rTime.GetMSFromTime();
- }
-
- OUString TimeSpinButton::format_number(int nValue) const
- {
- const LocaleDataWrapper& rLocaleData = Application::GetSettings().GetLocaleDataWrapper();
- return ::TimeFormatter::FormatTime(ConvertValue(nValue), m_eFormat, TimeFormat::Hour24, true, rLocaleData);
- }
-
EntryTreeView::EntryTreeView(std::unique_ptr<Entry> xEntry, std::unique_ptr<TreeView> xTreeView)
: m_xEntry(std::move(xEntry))
, m_xTreeView(std::move(xTreeView))
diff --git a/vcl/unx/gtk3/gtk3gtkinst.cxx b/vcl/unx/gtk3/gtk3gtkinst.cxx
index 29199170b5f9..3b37ab24499a 100644
--- a/vcl/unx/gtk3/gtk3gtkinst.cxx
+++ b/vcl/unx/gtk3/gtk3gtkinst.cxx
@@ -15856,12 +15856,6 @@ public:
return std::make_unique<GtkInstanceFormattedSpinButton>(pSpinButton, this, bTakeOwnership);
}
- virtual std::unique_ptr<weld::TimeSpinButton> weld_time_spin_button(const OString& id, TimeFieldFormat eFormat,
- bool bTakeOwnership) override
- {
- return std::make_unique<weld::TimeSpinButton>(weld_spin_button(id, bTakeOwnership), eFormat);
- }
-
virtual std::unique_ptr<weld::ComboBox> weld_combo_box(const OString &id, bool bTakeOwnership) override
{
GtkComboBox* pComboBox = GTK_COMBO_BOX(gtk_builder_get_object(m_pBuilder, id.getStr()));
More information about the Libreoffice-commits
mailing list