lok: enable transition repeat after x property
Change-Id: I61bd2ebaebfb19350aa3b3634f5877c0bfa05880 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/171773 Reviewed-by: Miklos Vajna <vmiklos@collabora.com> Tested-by: Jenkins
This commit is contained in:
committed by
Miklos Vajna
parent
f51bf81cfb
commit
feb80bccc3
@@ -368,6 +368,7 @@ SlideTransitionPane::SlideTransitionPane(
|
||||
mpDrawDoc( rBase.GetDocShell() ? rBase.GetDocShell()->GetDoc() : nullptr ),
|
||||
mxTransitionsIconView(m_xBuilder->weld_icon_view("transitions_icons")),
|
||||
mxTransitionsScrollWindow(m_xBuilder->weld_scrolled_window("transitions_icons_scrolled_window")),
|
||||
mxRepeatAutoFrame(m_xBuilder->weld_frame("repeat_after_frame")),
|
||||
mbHasSelection( false ),
|
||||
mbUpdatingControls( false ),
|
||||
mbIsMainViewChangePending( false ),
|
||||
@@ -392,6 +393,9 @@ void SlideTransitionPane::Initialize(SdDrawDocument* pDoc)
|
||||
mxRB_ADVANCE_ON_MOUSE = m_xBuilder->weld_radio_button(u"rb_mouse_click"_ustr);
|
||||
mxRB_ADVANCE_AUTO = m_xBuilder->weld_radio_button(u"rb_auto_after"_ustr);
|
||||
mxMF_ADVANCE_AUTO_AFTER = m_xBuilder->weld_metric_spin_button(u"auto_after_value"_ustr, FieldUnit::SECOND);
|
||||
mxRB_REPEAT_DISABLED = m_xBuilder->weld_radio_button(u"rb_disabled"_ustr);
|
||||
mxRB_REPEAT_AUTO = m_xBuilder->weld_radio_button(u"rb_auto_repeat"_ustr);
|
||||
mxMF_REPEAT_AUTO_AFTER = m_xBuilder->weld_metric_spin_button(u"rb_auto_repeat_value"_ustr, FieldUnit::SECOND);
|
||||
mxPB_APPLY_TO_ALL = m_xBuilder->weld_button(u"apply_to_all"_ustr);
|
||||
mxPB_PLAY = m_xBuilder->weld_button(u"play"_ustr);
|
||||
mxCB_AUTO_PREVIEW = m_xBuilder->weld_check_button(u"auto_preview"_ustr);
|
||||
@@ -401,6 +405,8 @@ void SlideTransitionPane::Initialize(SdDrawDocument* pDoc)
|
||||
int nWidthChars = mxMF_ADVANCE_AUTO_AFTER->get_width_chars();
|
||||
mxMF_ADVANCE_AUTO_AFTER->set_max(nMax, FieldUnit::SECOND);
|
||||
mxMF_ADVANCE_AUTO_AFTER->set_width_chars(nWidthChars);
|
||||
mxMF_REPEAT_AUTO_AFTER->set_max(nMax, FieldUnit::SECOND);
|
||||
mxMF_REPEAT_AUTO_AFTER->set_width_chars(nWidthChars);
|
||||
mxCBX_duration->set_width_chars(nWidthChars);
|
||||
|
||||
if( pDoc )
|
||||
@@ -430,9 +436,14 @@ void SlideTransitionPane::Initialize(SdDrawDocument* pDoc)
|
||||
mxRB_ADVANCE_ON_MOUSE->connect_toggled( LINK( this, SlideTransitionPane, AdvanceSlideRadioButtonToggled ));
|
||||
mxRB_ADVANCE_AUTO->connect_toggled( LINK( this, SlideTransitionPane, AdvanceSlideRadioButtonToggled ));
|
||||
mxMF_ADVANCE_AUTO_AFTER->connect_value_changed( LINK( this, SlideTransitionPane, AdvanceTimeModified ));
|
||||
mxRB_REPEAT_DISABLED->connect_toggled( LINK( this, SlideTransitionPane, RepeatAfterRadioButtonToggled ));
|
||||
mxRB_REPEAT_AUTO->connect_toggled( LINK( this, SlideTransitionPane, RepeatAfterRadioButtonToggled ));
|
||||
mxMF_REPEAT_AUTO_AFTER->connect_value_changed( LINK( this, SlideTransitionPane, RepeatAfterTimeModified ));
|
||||
mxCB_AUTO_PREVIEW->connect_toggled( LINK( this, SlideTransitionPane, AutoPreviewClicked ));
|
||||
addListener();
|
||||
|
||||
mxRB_REPEAT_DISABLED->set_active( true );
|
||||
|
||||
maLateInitTimer.SetTimeout(200);
|
||||
maLateInitTimer.SetInvokeHandler(LINK(this, SlideTransitionPane, LateInitCallback));
|
||||
maLateInitTimer.Start();
|
||||
@@ -444,6 +455,7 @@ SlideTransitionPane::~SlideTransitionPane()
|
||||
removeListener();
|
||||
mxTransitionsScrollWindow.reset();
|
||||
mxTransitionsIconView.reset();
|
||||
mxRepeatAutoFrame.reset();
|
||||
mxLB_VARIANT.reset();
|
||||
mxCBX_duration.reset();
|
||||
mxFT_SOUND.reset();
|
||||
@@ -452,6 +464,9 @@ SlideTransitionPane::~SlideTransitionPane()
|
||||
mxRB_ADVANCE_ON_MOUSE.reset();
|
||||
mxRB_ADVANCE_AUTO.reset();
|
||||
mxMF_ADVANCE_AUTO_AFTER.reset();
|
||||
mxRB_REPEAT_DISABLED.reset();
|
||||
mxRB_REPEAT_AUTO.reset();
|
||||
mxMF_REPEAT_AUTO_AFTER.reset();
|
||||
mxPB_APPLY_TO_ALL.reset();
|
||||
mxPB_PLAY.reset();
|
||||
mxCB_AUTO_PREVIEW.reset();
|
||||
@@ -593,6 +608,20 @@ void SlideTransitionPane::updateControls()
|
||||
mxMF_ADVANCE_AUTO_AFTER->set_value(aEffect.mfTime * 100.0, FieldUnit::SECOND);
|
||||
}
|
||||
|
||||
sd::PresentationSettings& rSettings = mpDrawDoc->getPresentationSettings();
|
||||
|
||||
if ( !rSettings.mbEndless )
|
||||
{
|
||||
mxRB_REPEAT_DISABLED->set_active( true );
|
||||
mxRB_REPEAT_AUTO->set_active( false );
|
||||
}
|
||||
else
|
||||
{
|
||||
mxRB_REPEAT_DISABLED->set_active( false );
|
||||
mxRB_REPEAT_AUTO->set_active( true );
|
||||
mxMF_REPEAT_AUTO_AFTER->set_value(rSettings.mnPauseTimeout, FieldUnit::SECOND);
|
||||
}
|
||||
|
||||
if (comphelper::LibreOfficeKit::isActive())
|
||||
{
|
||||
mxPB_PLAY->hide();
|
||||
@@ -604,6 +633,7 @@ void SlideTransitionPane::updateControls()
|
||||
}
|
||||
else
|
||||
{
|
||||
mxRepeatAutoFrame->hide();
|
||||
SdOptions* pOptions = SD_MOD()->GetSdOptions(DocumentType::Impress);
|
||||
mxCB_AUTO_PREVIEW->set_active( pOptions->IsPreviewTransitions() );
|
||||
}
|
||||
@@ -624,6 +654,9 @@ void SlideTransitionPane::updateControlState()
|
||||
mxRB_ADVANCE_ON_MOUSE->set_sensitive( mbHasSelection );
|
||||
mxRB_ADVANCE_AUTO->set_sensitive( mbHasSelection );
|
||||
mxMF_ADVANCE_AUTO_AFTER->set_sensitive( mbHasSelection && mxRB_ADVANCE_AUTO->get_active());
|
||||
mxRB_REPEAT_DISABLED->set_sensitive( mbHasSelection );
|
||||
mxRB_REPEAT_AUTO->set_sensitive( mbHasSelection );
|
||||
mxMF_REPEAT_AUTO_AFTER->set_sensitive( mbHasSelection && mxRB_REPEAT_AUTO->get_active());
|
||||
|
||||
mxPB_APPLY_TO_ALL->set_sensitive( mbHasSelection );
|
||||
mxPB_PLAY->set_sensitive( mbHasSelection );
|
||||
@@ -793,6 +826,27 @@ impl::TransitionEffect SlideTransitionPane::getTransitionEffectFromControls() co
|
||||
aResult.mbPresChangeAmbiguous = false;
|
||||
}
|
||||
|
||||
// transition repeat after
|
||||
if (mxRB_REPEAT_DISABLED->get_sensitive() && mxRB_REPEAT_AUTO->get_sensitive()
|
||||
&& (mxRB_REPEAT_DISABLED->get_active() || mxRB_REPEAT_AUTO->get_active()))
|
||||
{
|
||||
sd::PresentationSettings& rSettings = mpDrawDoc->getPresentationSettings();
|
||||
|
||||
if ( mxRB_REPEAT_DISABLED->get_active() )
|
||||
{
|
||||
rSettings.mbEndless = false;
|
||||
rSettings.mnPauseTimeout = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
if ( mxMF_REPEAT_AUTO_AFTER->get_sensitive() )
|
||||
{
|
||||
rSettings.mbEndless = true;
|
||||
rSettings.mnPauseTimeout = static_cast<sal_uInt32>(mxMF_REPEAT_AUTO_AFTER->get_value(FieldUnit::SECOND));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// sound
|
||||
if( mxLB_SOUND->get_sensitive())
|
||||
{
|
||||
@@ -1005,11 +1059,22 @@ IMPL_LINK_NOARG(SlideTransitionPane, AdvanceSlideRadioButtonToggled, weld::Toggl
|
||||
applyToSelectedPages(false);
|
||||
}
|
||||
|
||||
IMPL_LINK_NOARG(SlideTransitionPane, RepeatAfterRadioButtonToggled, weld::Toggleable&, void)
|
||||
{
|
||||
updateControlState();
|
||||
applyToSelectedPages(false);
|
||||
}
|
||||
|
||||
IMPL_LINK_NOARG(SlideTransitionPane, AdvanceTimeModified, weld::MetricSpinButton&, void)
|
||||
{
|
||||
applyToSelectedPages(false);
|
||||
}
|
||||
|
||||
IMPL_LINK_NOARG(SlideTransitionPane, RepeatAfterTimeModified, weld::MetricSpinButton&, void)
|
||||
{
|
||||
applyToSelectedPages(false);
|
||||
}
|
||||
|
||||
IMPL_LINK_NOARG(SlideTransitionPane, VariantListBoxSelected, weld::ComboBox&, void)
|
||||
{
|
||||
applyToSelectedPages();
|
||||
|
||||
@@ -94,7 +94,9 @@ private:
|
||||
|
||||
DECL_LINK( TransitionSelected, weld::IconView&, bool );
|
||||
DECL_LINK( AdvanceSlideRadioButtonToggled, weld::Toggleable&, void );
|
||||
DECL_LINK( RepeatAfterRadioButtonToggled, weld::Toggleable&, void );
|
||||
DECL_LINK( AdvanceTimeModified, weld::MetricSpinButton&, void );
|
||||
DECL_LINK( RepeatAfterTimeModified, weld::MetricSpinButton&, void );
|
||||
DECL_LINK( VariantListBoxSelected, weld::ComboBox&, void );
|
||||
DECL_LINK( DurationModifiedHdl, weld::MetricSpinButton&, void );
|
||||
DECL_LINK( DurationLoseFocusHdl, weld::Widget&, void );
|
||||
@@ -108,6 +110,7 @@ private:
|
||||
|
||||
std::unique_ptr<weld::IconView> mxTransitionsIconView;
|
||||
std::unique_ptr<weld::ScrolledWindow> mxTransitionsScrollWindow;
|
||||
std::unique_ptr<weld::Frame> mxRepeatAutoFrame;
|
||||
std::unique_ptr<weld::ComboBox> mxLB_VARIANT;
|
||||
std::unique_ptr<weld::MetricSpinButton> mxCBX_duration;
|
||||
std::unique_ptr<weld::Label> mxFT_SOUND;
|
||||
@@ -116,6 +119,9 @@ private:
|
||||
std::unique_ptr<weld::RadioButton> mxRB_ADVANCE_ON_MOUSE;
|
||||
std::unique_ptr<weld::RadioButton> mxRB_ADVANCE_AUTO;
|
||||
std::unique_ptr<weld::MetricSpinButton> mxMF_ADVANCE_AUTO_AFTER;
|
||||
std::unique_ptr<weld::RadioButton> mxRB_REPEAT_DISABLED;
|
||||
std::unique_ptr<weld::RadioButton> mxRB_REPEAT_AUTO;
|
||||
std::unique_ptr<weld::MetricSpinButton> mxMF_REPEAT_AUTO_AFTER;
|
||||
std::unique_ptr<weld::Button> mxPB_APPLY_TO_ALL;
|
||||
std::unique_ptr<weld::Button> mxPB_PLAY;
|
||||
std::unique_ptr<weld::CheckButton> mxCB_AUTO_PREVIEW;
|
||||
|
||||
@@ -4378,6 +4378,16 @@ OString SdXImpressDocument::getPresentationInfo() const
|
||||
aJsonWriter.put("nextSlideDuration", fSlideDuration * 1000);
|
||||
}
|
||||
}
|
||||
|
||||
sd::PresentationSettings const& rSettings = mpDoc->getPresentationSettings();
|
||||
|
||||
const bool bIsEndless = rSettings.mbEndless;
|
||||
aJsonWriter.put("isEndless", bIsEndless);
|
||||
|
||||
if (bIsEndless) {
|
||||
const sal_Int32 nPauseTimeout = rSettings.mnPauseTimeout;
|
||||
aJsonWriter.put("loopAndRepeatDuration", nPauseTimeout);
|
||||
}
|
||||
}
|
||||
|
||||
AnimationsExporter aAnimationExporter(aJsonWriter, pSlide);
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- Generated with glade 3.40.0 -->
|
||||
<!-- Generated with glade 3.38.2 -->
|
||||
<interface domain="sd">
|
||||
<requires lib="gtk+" version="3.20"/>
|
||||
<object class="GtkAdjustment" id="adjustment1">
|
||||
@@ -332,6 +332,106 @@
|
||||
<property name="position">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkFrame" id="repeat_after_frame">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="label-xalign">0</property>
|
||||
<property name="shadow-type">none</property>
|
||||
<child>
|
||||
<!-- n-columns=2 n-rows=2 -->
|
||||
<object class="GtkGrid" id="grid3">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="margin-start">12</property>
|
||||
<property name="margin-top">3</property>
|
||||
<property name="row-spacing">6</property>
|
||||
<property name="column-spacing">12</property>
|
||||
<child>
|
||||
<object class="GtkRadioButton" id="rb_disabled">
|
||||
<property name="label" translatable="yes" context="slidetransitionspanel|rb_disabled">Disabled</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">True</property>
|
||||
<property name="receives-default">False</property>
|
||||
<property name="use-underline">True</property>
|
||||
<property name="active">True</property>
|
||||
<property name="draw-indicator">True</property>
|
||||
<child internal-child="accessible">
|
||||
<object class="AtkObject" id="rb_disabled-atkobject">
|
||||
<property name="AtkObject::accessible-description" translatable="yes" context="slidetransitionspanel|extended_tip|rb_disabled">Select to advance to the next slide on a mouse click.</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left-attach">0</property>
|
||||
<property name="top-attach">0</property>
|
||||
<property name="width">2</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkRadioButton" id="rb_auto_repeat">
|
||||
<property name="label" translatable="yes" context="slidetransitionspanel|rb_auto_repeat">After Slideshow:</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">True</property>
|
||||
<property name="receives-default">False</property>
|
||||
<property name="use-underline">True</property>
|
||||
<property name="draw-indicator">True</property>
|
||||
<property name="group">rb_disabled</property>
|
||||
<accessibility>
|
||||
<relation type="label-for" target="rb_auto_repeat_value"/>
|
||||
</accessibility>
|
||||
<child internal-child="accessible">
|
||||
<object class="AtkObject" id="rb_auto_repeat-atkobject">
|
||||
<property name="AtkObject::accessible-description" translatable="yes" context="slidetransitionspanel|extended_tip|rb_auto_repeat">Select to advance to the next slide after a number of seconds. Enter the seconds in the numerical field next to the spin button, or click the spin button.</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left-attach">0</property>
|
||||
<property name="top-attach">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkSpinButton" id="rb_auto_repeat_value">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">True</property>
|
||||
<property name="hexpand">True</property>
|
||||
<property name="truncate-multiline">True</property>
|
||||
<property name="adjustment">adjustment1</property>
|
||||
<property name="digits">2</property>
|
||||
<accessibility>
|
||||
<relation type="labelled-by" target="rb_auto_repeat"/>
|
||||
</accessibility>
|
||||
<child internal-child="accessible">
|
||||
<object class="AtkObject" id="rb_auto_repeat_value-atkobject">
|
||||
<property name="AtkObject::accessible-description" translatable="yes" context="slidetransitionspanel|extended_tip|rb_auto_repeat_value">Select to advance to the next slide after a number of seconds. Enter the seconds in the numerical field next to the spin button, or click the spin button.</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="left-attach">1</property>
|
||||
<property name="top-attach">1</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child type="label">
|
||||
<object class="GtkLabel" id="lable3">
|
||||
<property name="visible">True</property>
|
||||
<property name="can-focus">False</property>
|
||||
<property name="label" translatable="yes" context="slidetransitionspanel|rb_auto_repeat">Repeat After</property>
|
||||
<attributes>
|
||||
<attribute name="weight" value="bold"/>
|
||||
</attributes>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">3</property>
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkBox" id="box2">
|
||||
<property name="visible">True</property>
|
||||
@@ -439,7 +539,7 @@
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">True</property>
|
||||
<property name="position">3</property>
|
||||
<property name="position">4</property>
|
||||
</packing>
|
||||
</child>
|
||||
</object>
|
||||
@@ -461,6 +561,7 @@
|
||||
<widget name="sound_label"/>
|
||||
<widget name="variant_label"/>
|
||||
<widget name="rb_auto_after"/>
|
||||
<widget name="rb_auto_repeat"/>
|
||||
</widgets>
|
||||
</object>
|
||||
</interface>
|
||||
|
||||
Reference in New Issue
Block a user