sc/source/ui/cctrl/tbzoomsliderctrl.cxx | 30 +++++++++++++++++++--------- sc/source/ui/inc/tbzoomsliderctrl.hxx | 5 ++++ sc/uiconfig/scalc/ui/zoombox.ui | 34 ++++++++++++++++++++++++++++---- 3 files changed, 56 insertions(+), 13 deletions(-)
New commits: commit 986b5bb3c183b038ecc1ce4e16cff1dca837932a Author: Sahil <me.sahilgau...@gmail.com> AuthorDate: Thu Jan 4 16:47:17 2024 +0530 Commit: Heiko Tietze <heiko.tie...@documentfoundation.org> CommitDate: Wed Jan 10 18:01:24 2024 +0100 tdf#42030 Add UI label for page preview zoom slider * Scale before the page preview zoom slider * zoom % after the page preview zoom slider Change-Id: I893852bf48e31b36a028f9ee282d47a627bb0086 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/159362 Tested-by: Jenkins Reviewed-by: Heiko Tietze <heiko.tie...@documentfoundation.org> diff --git a/sc/source/ui/cctrl/tbzoomsliderctrl.cxx b/sc/source/ui/cctrl/tbzoomsliderctrl.cxx index 4ec776de100c..d14dd1cb08c0 100644 --- a/sc/source/ui/cctrl/tbzoomsliderctrl.cxx +++ b/sc/source/ui/cctrl/tbzoomsliderctrl.cxx @@ -17,6 +17,8 @@ * the License at http://www.apache.org/licenses/LICENSE-2.0 . */ #include <tbzoomsliderctrl.hxx> +#include <i18nutil/unicode.hxx> +#include <vcl/svapp.hxx> #include <comphelper/propertyvalue.hxx> #include <utility> @@ -102,8 +104,7 @@ const tools::Long nSnappingPointsMinDist = nSnappingEpsilon; // minimum distance sal_uInt16 ScZoomSlider::Offset2Zoom( tools::Long nOffset ) const { - Size aSliderWindowSize = GetOutputSizePixel(); - const tools::Long nControlWidth = aSliderWindowSize.Width(); + const tools::Long nControlWidth = GetSliderLength(); sal_uInt16 nRet = 0; if( nOffset < nSliderXOffset ) @@ -154,8 +155,7 @@ sal_uInt16 ScZoomSlider::Offset2Zoom( tools::Long nOffset ) const tools::Long ScZoomSlider::Zoom2Offset( sal_uInt16 nCurrentZoom ) const { - Size aSliderWindowSize = GetOutputSizePixel(); - const tools::Long nControlWidth = aSliderWindowSize.Width(); + const tools::Long nControlWidth = GetSliderLength(); tools::Long nRect = nSliderXOffset; const tools::Long nHalfSliderWidth = nControlWidth/2 - nSliderXOffset; @@ -183,6 +183,8 @@ ScZoomSliderWnd::ScZoomSliderWnd( vcl::Window* pParent, sal_uInt16 nCurrentZoom ): InterimItemWindow(pParent, "modules/scalc/ui/zoombox.ui", "ZoomBox"), mxWidget(new ScZoomSlider(rDispatchProvider, nCurrentZoom)), + mxPercentage(m_xBuilder->weld_label("current_zoom")), + mxLabel(m_xBuilder->weld_label("zoom_label")), mxWeld(new weld::CustomWeld(*m_xBuilder, "zoom", *mxWidget)) { Size aLogicalSize( 115, 40 ); @@ -190,7 +192,14 @@ ScZoomSliderWnd::ScZoomSliderWnd( vcl::Window* pParent, Size aPreferredSize(aSliderSize.Width() * nSliderWidth-1, aSliderSize.Height() + nSliderHeight); mxWidget->GetDrawingArea()->set_size_request(aPreferredSize.Width(), aPreferredSize.Height()); mxWidget->SetOutputSizePixel(aPreferredSize); + mxWidget->SetSliderLength(aPreferredSize.Width() + nIncDecWidth); + + aPreferredSize.setWidth(aPreferredSize.Width() + mxLabel->get_pixel_size(mxLabel->get_label()).Width() + + mxPercentage->get_pixel_size(mxPercentage->get_label()).Width()); + SetSizePixel(aPreferredSize); + OUString sCurrentZoom(unicode::formatPercent(nCurrentZoom, Application::GetSettings().GetUILanguageTag())); + mxPercentage->set_label(sCurrentZoom); } ScZoomSliderWnd::~ScZoomSliderWnd() @@ -236,12 +245,12 @@ bool ScZoomSlider::MouseButtonDown( const MouseEvent& rMEvt ) mnCurrentZoom = mnCurrentZoom - 5; } // click to + button - else if ( aPoint.X() >= aSliderWindowSize.Width() - nSliderXOffset + nButtonLeftOffset && - aPoint.X() <= aSliderWindowSize.Width() - nSliderXOffset + nButtonRightOffset ) + else if ( aPoint.X() >= GetSliderLength() - nSliderXOffset + nButtonLeftOffset && + aPoint.X() <= GetSliderLength() - nSliderXOffset + nButtonRightOffset ) { mnCurrentZoom = mnCurrentZoom + 5; } - else if( aPoint.X() >= nSliderXOffset && aPoint.X() <= aSliderWindowSize.Width() - nSliderXOffset ) + else if( aPoint.X() >= nSliderXOffset && aPoint.X() <= GetSliderLength() - nSliderXOffset ) { mnCurrentZoom = Offset2Zoom( aPoint.X() ); } @@ -276,7 +285,7 @@ bool ScZoomSlider::MouseButtonDown( const MouseEvent& rMEvt ) bool ScZoomSlider::MouseMove( const MouseEvent& rMEvt ) { Size aSliderWindowSize = GetOutputSizePixel(); - const tools::Long nControlWidth = aSliderWindowSize.Width(); + const tools::Long nControlWidth = GetSliderLength(); const short nButtons = rMEvt.GetButtons(); // check mouse move with button pressed @@ -312,6 +321,8 @@ bool ScZoomSlider::MouseMove( const MouseEvent& rMEvt ) void ScZoomSliderWnd::UpdateFromItem( const SvxZoomSliderItem* pZoomSliderItem ) { + OUString sCurrentZoom(unicode::formatPercent(pZoomSliderItem->GetValue(), Application::GetSettings().GetUILanguageTag())); + mxPercentage->set_label(sCurrentZoom); mxWidget->UpdateFromItem(pZoomSliderItem); } @@ -377,6 +388,7 @@ void ScZoomSlider::DoPaint(vcl::RenderContext& rRenderContext) pVDev->SetOutputSizePixel(aSliderWindowSize); tools::Rectangle aSlider = aRect; + aSlider.setWidth(GetSliderLength()); aSlider.AdjustTop((aSliderWindowSize.Height() - nSliderHeight) / 2 - 1 ); aSlider.SetBottom( aSlider.Top() + nSliderHeight ); @@ -449,7 +461,7 @@ void ScZoomSlider::DoPaint(vcl::RenderContext& rRenderContext) pVDev->DrawImage(aImagePoint, maDecreaseButton); // draw increase button - aImagePoint.setX( aRect.Left() + aSliderWindowSize.Width() - nIncDecWidth - (nSliderXOffset - nIncDecWidth) / 2 ); + aImagePoint.setX( aRect.Left() + GetSliderLength() - nIncDecWidth - (nSliderXOffset - nIncDecWidth) / 2 ); pVDev->DrawImage(aImagePoint, maIncreaseButton); rRenderContext.DrawOutDev(Point(0, 0), aSliderWindowSize, Point(0, 0), aSliderWindowSize, *pVDev); diff --git a/sc/source/ui/inc/tbzoomsliderctrl.hxx b/sc/source/ui/inc/tbzoomsliderctrl.hxx index 93a3716f7a2f..c1c6e53dc363 100644 --- a/sc/source/ui/inc/tbzoomsliderctrl.hxx +++ b/sc/source/ui/inc/tbzoomsliderctrl.hxx @@ -43,6 +43,7 @@ public: class ScZoomSlider final : public weld::CustomWidgetController { private: + sal_uInt16 mnSliderLength; sal_uInt16 mnCurrentZoom; sal_uInt16 mnMinZoom; sal_uInt16 mnMaxZoom; @@ -64,6 +65,8 @@ public: void UpdateFromItem(const SvxZoomSliderItem* pZoomSliderItem); + void SetSliderLength(sal_uInt16 nLength) { mnSliderLength = nLength; } + sal_uInt16 GetSliderLength() const { return mnSliderLength; } virtual bool MouseButtonDown( const MouseEvent& rMEvt ) override; virtual bool MouseMove( const MouseEvent& rMEvt ) override; virtual void Paint(vcl::RenderContext& rRenderContext, const tools::Rectangle& rRect) override; @@ -73,6 +76,8 @@ class ScZoomSliderWnd final : public InterimItemWindow { private: std::unique_ptr<ScZoomSlider> mxWidget; + std::unique_ptr<weld::Label> mxPercentage; + std::unique_ptr<weld::Label> mxLabel; std::unique_ptr<weld::CustomWeld> mxWeld; public: diff --git a/sc/uiconfig/scalc/ui/zoombox.ui b/sc/uiconfig/scalc/ui/zoombox.ui index 764593b6ae73..ee7d893592ce 100644 --- a/sc/uiconfig/scalc/ui/zoombox.ui +++ b/sc/uiconfig/scalc/ui/zoombox.ui @@ -1,16 +1,29 @@ <?xml version="1.0" encoding="UTF-8"?> -<!-- Generated with glade 3.22.1 --> +<!-- Generated with glade 3.40.0 --> <interface domain="sc"> <requires lib="gtk+" version="3.20"/> <object class="GtkBox" id="ZoomBox"> <property name="visible">True</property> - <property name="can_focus">False</property> + <property name="can-focus">False</property> <property name="hexpand">True</property> <property name="spacing">6</property> + <child> + <object class="GtkLabel" id="zoom_label"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="label" translatable="yes" context="zoombox|zoom_label">Scale</property> + <property name="mnemonic_widget">zoom</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">0</property> + </packing> + </child> <child> <object class="GtkDrawingArea" id="zoom"> <property name="visible">True</property> - <property name="can_focus">True</property> + <property name="can-focus">True</property> <property name="events">GDK_BUTTON_MOTION_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_KEY_PRESS_MASK | GDK_KEY_RELEASE_MASK | GDK_FOCUS_CHANGE_MASK | GDK_STRUCTURE_MASK</property> <property name="hexpand">True</property> <property name="vexpand">True</property> @@ -18,7 +31,20 @@ <packing> <property name="expand">False</property> <property name="fill">True</property> - <property name="position">0</property> + <property name="position">1</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="current_zoom"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="label" translatable="no">percentage</property> + <property name="mnemonic_widget">zoom</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">2</property> </packing> </child> </object>