fbc285d
From d6f5d4ee2cd0654497f1af37421d788411db762c Mon Sep 17 00:00:00 2001
fbc285d
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
fbc285d
Date: Thu, 8 May 2014 14:27:53 +0100
fbc285d
Subject: [PATCH] add a status bar icon to fit slide to window
fbc285d
fbc285d
Change-Id: I2c1d1fc7425b0aaad2a2445e0ac71ddc38410fdb
fbc285d
---
fbc285d
 icon-themes/galaxy/svx/res/zoom_page_statusbar.png | Bin 0 -> 418 bytes
fbc285d
 include/svx/dialogs.hrc                            |   6 ++-
fbc285d
 include/svx/zoomctrl.hxx                           |  15 ++++++-
fbc285d
 sd/source/ui/app/sddll.cxx                         |   1 +
fbc285d
 sd/uiconfig/simpress/statusbar/statusbar.xml       |   1 +
fbc285d
 svx/source/stbctrls/modctrl.cxx                    |   7 ----
fbc285d
 svx/source/stbctrls/stbctrls.src                   |  13 ++++++
fbc285d
 svx/source/stbctrls/zoomctrl.cxx                   |  46 +++++++++++++++++----
fbc285d
 8 files changed, 70 insertions(+), 19 deletions(-)
fbc285d
 create mode 100644 icon-themes/galaxy/svx/res/zoom_page_statusbar.png
fbc285d
fbc285d
diff --git a/icon-themes/galaxy/svx/res/zoom_page_statusbar.png b/icon-themes/galaxy/svx/res/zoom_page_statusbar.png
fbc285d
new file mode 100644
fbc285d
index 0000000000000000000000000000000000000000..5fb2d59cf7549dbb665e9efc81f7a94c0f4e4980
fbc285d
GIT binary patch
fbc285d
literal 418
fbc285d
zcmeAS@N?(olHy`uVBq!ia0vp^d>}Rl8<3oNC%zs?aTa()76ZkPfH31!Z9ZwBAbW|Y
fbc285d
zuPggKRt_Em37r=8g+L+M%#er@=ltB<)VvZPmw~~#C^fMpHASI3vm`^o-P1Q9MK6_|
fbc285d
zfq_xN)5S4F<9zQVMQ;~Jf#dbYn_qus^<|gZlVlLhn=WYb!{o$M=H~ea)HIsH)+Pzs
fbc285d
zA7O3wT
fbc285d
zBP$yYG;y3?)w5~73FFjRqO6}+&3XR1*2|{TW5xd8YXhd0oV`(6ZYBHdQ~vRt-H{3P
fbc285d
zO?(bLo2Cj)Kj7T+iE+x#cR@XuxEqyJ&pA!l`f-MH`F|l}t@3pYiCo3ckIt24FnsJV
fbc285d
zH9R!$%!)HFo`>b1UD040>XycHdeXZiA&sHNY`QYup??3pE~^|b;>byRP|ES8VP<`l
fbc285d
z`Gp^To!vF}*zE59-5A<;>sii
fbc285d
J);T3K0RSRFrP=@h
fbc285d
fbc285d
literal 0
fbc285d
HcmV?d00001
fbc285d
fbc285d
diff --git a/include/svx/dialogs.hrc b/include/svx/dialogs.hrc
fbc285d
index 4c3d681..797acfa 100644
fbc285d
--- a/include/svx/dialogs.hrc
fbc285d
+++ b/include/svx/dialogs.hrc
fbc285d
@@ -996,12 +996,14 @@
fbc285d
 #define RID_SVXSTR_DOC_LOAD              (SVX_OOO_BUILD_START + 6) // 1236
fbc285d
 #define RID_SVXSTR_ERR_OLD_PASSWD        (SVX_OOO_BUILD_START + 7) // 1237
fbc285d
 #define RID_SVXSTR_ERR_REPEAT_PASSWD     (SVX_OOO_BUILD_START + 8) // 1238
fbc285d
+#define RID_SVXBMP_ZOOM_PAGE             (SVX_OOO_BUILD_START + 9) // 1239
fbc285d
+#define RID_SVXSTR_FIT_SLIDE             (SVX_OOO_BUILD_START + 10) // 1240
fbc285d
 
fbc285d
 // sidebar-related resources (defined in the appropriate .hrc's)
fbc285d
-#define RID_SVX_SIDEBAR_BEGIN            (RID_SVX_START + 1240)
fbc285d
+#define RID_SVX_SIDEBAR_BEGIN            (RID_SVX_START + 1241)
fbc285d
 
fbc285d
 // !!! IMPORTANT: consider and update RID_SVXSTR_NEXTFREE when introducing new RIDs for Strings !!!
fbc285d
-#define RID_SVXSTR_NEXTFREE              (RID_SVX_START + 1270)
fbc285d
+#define RID_SVXSTR_NEXTFREE              (RID_SVX_START + 1271)
fbc285d
 
fbc285d
 // ----------------------------------------------------------------------------
fbc285d
 // if we have _a_lot_ time, we should group the resource ids by type, instead
fbc285d
diff --git a/include/svx/zoomctrl.hxx b/include/svx/zoomctrl.hxx
fbc285d
index 429ee9c..5d7950f 100644
fbc285d
--- a/include/svx/zoomctrl.hxx
fbc285d
+++ b/include/svx/zoomctrl.hxx
fbc285d
@@ -21,8 +21,7 @@
fbc285d
 
fbc285d
 #include <sfx2/stbitem.hxx>
fbc285d
 #include <svx/svxdllapi.h>
fbc285d
-
fbc285d
-// class SvxZoomToolBoxControl -------------------------------------------
fbc285d
+#include <vcl/image.hxx>
fbc285d
 
fbc285d
 class SVX_DLLPUBLIC SvxZoomStatusBarControl : public SfxStatusBarControl
fbc285d
 {
fbc285d
@@ -42,6 +41,18 @@ public:
fbc285d
 
fbc285d
 };
fbc285d
 
fbc285d
+class SVX_DLLPUBLIC SvxZoomPageStatusBarControl : public SfxStatusBarControl
fbc285d
+{
fbc285d
+private:
fbc285d
+    Image maImage;
fbc285d
+public:
fbc285d
+    virtual void    Paint( const UserDrawEvent& rEvt ) SAL_OVERRIDE;
bd9bac5
+    virtual sal_Bool MouseButtonDown( const MouseEvent & rEvt ) SAL_OVERRIDE;
fbc285d
+
fbc285d
+    SFX_DECL_STATUSBAR_CONTROL();
fbc285d
+
fbc285d
+    SvxZoomPageStatusBarControl(sal_uInt16 nSlotId, sal_uInt16 nId, StatusBar& rStb);
fbc285d
+};
fbc285d
 
fbc285d
 #endif
fbc285d
 
fbc285d
diff --git a/sd/source/ui/app/sddll.cxx b/sd/source/ui/app/sddll.cxx
fbc285d
index f7a27c0..b37d934 100644
fbc285d
--- a/sd/source/ui/app/sddll.cxx
fbc285d
+++ b/sd/source/ui/app/sddll.cxx
fbc285d
@@ -242,6 +242,7 @@ void SdDLL::RegisterControllers()
fbc285d
     SvxCTLTextTbxCtrl::RegisterControl(SID_ATTR_PARA_RIGHT_TO_LEFT, pMod);
fbc285d
 
fbc285d
     // register StatusBarControls
fbc285d
+    SvxZoomPageStatusBarControl::RegisterControl( SID_ZOOM_ENTIRE_PAGE, pMod );
fbc285d
     SvxZoomStatusBarControl::RegisterControl( SID_ATTR_ZOOM, pMod );
fbc285d
     SvxPosSizeStatusBarControl::RegisterControl( SID_ATTR_SIZE, pMod );
fbc285d
     SvxModifyControl::RegisterControl( SID_DOC_MODIFIED, pMod );
fbc285d
diff --git a/sd/uiconfig/simpress/statusbar/statusbar.xml b/sd/uiconfig/simpress/statusbar/statusbar.xml
fbc285d
index 24224fe..78042ef 100644
fbc285d
--- a/sd/uiconfig/simpress/statusbar/statusbar.xml
fbc285d
+++ b/sd/uiconfig/simpress/statusbar/statusbar.xml
fbc285d
@@ -24,6 +24,7 @@
fbc285d
  <statusbar:statusbaritem xlink:href=".uno:Signature" statusbar:align="center" statusbar:ownerdraw="true" statusbar:width="16"/>
fbc285d
  <statusbar:statusbaritem xlink:href=".uno:PageStatus" statusbar:align="left" statusbar:width="124"/>
fbc285d
  <statusbar:statusbaritem xlink:href=".uno:LayoutStatus" statusbar:align="left" statusbar:autosize="true" statusbar:width="54"/>
fbc285d
+ <statusbar:statusbaritem xlink:href=".uno:ZoomPage" statusbar:align="center" statusbar:ownerdraw="true" statusbar:width="9"/>
fbc285d
  <statusbar:statusbaritem xlink:href=".uno:ZoomSlider" statusbar:align="center" statusbar:ownerdraw="true" statusbar:width="130"/>
fbc285d
  <statusbar:statusbaritem xlink:href=".uno:Zoom" statusbar:align="center" statusbar:width="36"/>
fbc285d
 </statusbar:statusbar>
fbc285d
diff --git a/svx/source/stbctrls/modctrl.cxx b/svx/source/stbctrls/modctrl.cxx
fbc285d
index db94f49..aff7e75 100644
fbc285d
--- a/svx/source/stbctrls/modctrl.cxx
fbc285d
+++ b/svx/source/stbctrls/modctrl.cxx
fbc285d
@@ -137,8 +137,6 @@ void SvxModifyControl::_repaint()
fbc285d
 
fbc285d
 // -----------------------------------------------------------------------
fbc285d
 
fbc285d
-namespace {
fbc285d
-
fbc285d
 /**
fbc285d
  * Given a bounding rectangle and an image, determine the top-left position
fbc285d
  * of the image so that the image would look centered both horizontally and
fbc285d
@@ -160,9 +158,6 @@ Point centerImage(const Rectangle& rBoundingRect, const Image& rImg)
fbc285d
     return aPt;
fbc285d
 }
fbc285d
 
fbc285d
-}
fbc285d
-
fbc285d
-
fbc285d
 void SvxModifyControl::Paint( const UserDrawEvent& rUsrEvt )
fbc285d
 {
fbc285d
     OutputDevice*       pDev =  rUsrEvt.GetDevice();
fbc285d
diff --git a/svx/source/stbctrls/stbctrls.src b/svx/source/stbctrls/stbctrls.src
fbc285d
index 8d5beeb..5987d7a 100644
fbc285d
--- a/svx/source/stbctrls/stbctrls.src
fbc285d
+++ b/svx/source/stbctrls/stbctrls.src
fbc285d
@@ -120,6 +120,11 @@ String RID_SVXSTR_DOC_LOAD
fbc285d
     Text [ en-US ] = "Loading document...";
fbc285d
 };
fbc285d
 
fbc285d
+String RID_SVXSTR_FIT_SLIDE
fbc285d
+{
fbc285d
+    Text [ en-US ] = "Fit slide to current window.";
fbc285d
+};
fbc285d
+
fbc285d
  // PopupMenu -------------------------------------------------------------
fbc285d
 Menu RID_SVXMNU_ZOOM
fbc285d
 {
fbc285d
@@ -337,5 +342,13 @@ Image RID_SVXBMP_DOC_MODIFIED_FEEDBACK
fbc285d
     };
fbc285d
     MaskColor = STD_MASKCOLOR;
fbc285d
 };
fbc285d
+Image RID_SVXBMP_ZOOM_PAGE
fbc285d
+{
fbc285d
+    ImageBitmap = Bitmap
fbc285d
+    {
fbc285d
+        File = "zoom_page_statusbar.png" ;
fbc285d
+    };
fbc285d
+    MaskColor = STD_MASKCOLOR;
fbc285d
+};
fbc285d
 
fbc285d
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
fbc285d
diff --git a/svx/source/stbctrls/zoomctrl.cxx b/svx/source/stbctrls/zoomctrl.cxx
fbc285d
index b5be076..229f98d 100644
fbc285d
--- a/svx/source/stbctrls/zoomctrl.cxx
fbc285d
+++ b/svx/source/stbctrls/zoomctrl.cxx
fbc285d
@@ -25,7 +25,8 @@
fbc285d
 
fbc285d
 #include <svx/dialogs.hrc>
fbc285d
 
fbc285d
-#include "svx/zoomctrl.hxx"
fbc285d
+#include <svx/zoomctrl.hxx>
fbc285d
+#include <svx/zoomslideritem.hxx>
fbc285d
 #include <sfx2/zoomitem.hxx>
fbc285d
 #include "stbctrls.h"
fbc285d
 #include <svx/dialmgr.hxx>
fbc285d
@@ -95,7 +96,6 @@ void ZoomPopup_Impl::Select()
fbc285d
 }
fbc285d
 
fbc285d
 // class SvxZoomStatusBarControl ------------------------------------------
fbc285d
-
fbc285d
 SvxZoomStatusBarControl::SvxZoomStatusBarControl( sal_uInt16 _nSlotId,
fbc285d
                                                   sal_uInt16 _nId,
fbc285d
                                                   StatusBar& rStb ) :
fbc285d
@@ -183,5 +183,41 @@ void SvxZoomStatusBarControl::Command( const CommandEvent& rCEvt )
fbc285d
         SfxStatusBarControl::Command( rCEvt );
fbc285d
 }
fbc285d
 
fbc285d
+SFX_IMPL_STATUSBAR_CONTROL(SvxZoomPageStatusBarControl,SfxVoidItem);
fbc285d
+
fbc285d
+SvxZoomPageStatusBarControl::SvxZoomPageStatusBarControl(sal_uInt16 _nSlotId,
fbc285d
+    sal_uInt16 _nId, StatusBar& rStb)
fbc285d
+    : SfxStatusBarControl(_nSlotId, _nId, rStb)
fbc285d
+    , maImage(SVX_RES(RID_SVXBMP_ZOOM_PAGE))
fbc285d
+{
fbc285d
+    GetStatusBar().SetQuickHelpText(GetId(), SVX_RESSTR(RID_SVXSTR_FIT_SLIDE));
fbc285d
+}
fbc285d
+
fbc285d
+extern Point centerImage(const Rectangle& rBoundingRect, const Image& rImg);
fbc285d
+
fbc285d
+void SvxZoomPageStatusBarControl::Paint(const UserDrawEvent& rUsrEvt)
fbc285d
+{
fbc285d
+    OutputDevice* pDev = rUsrEvt.GetDevice();
fbc285d
+    Rectangle aRect = rUsrEvt.GetRect();
fbc285d
+    Point aPt = centerImage(aRect, maImage);
fbc285d
+    pDev->DrawImage(aPt, maImage);
fbc285d
+}
fbc285d
+
075709e
+sal_Bool SvxZoomPageStatusBarControl::MouseButtonDown(const MouseEvent&)
fbc285d
+{
fbc285d
+    SvxZoomItem aZoom( SVX_ZOOM_WHOLEPAGE, 0, GetId() );
fbc285d
+
fbc285d
+    ::com::sun::star::uno::Any a;
fbc285d
+    INetURLObject aObj( m_aCommandURL );
fbc285d
+
fbc285d
+    ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue > aArgs( 1 );
fbc285d
+    aArgs[0].Name  = aObj.GetURLPath();
fbc285d
+    aZoom.QueryValue( a );
fbc285d
+    aArgs[0].Value = a;
fbc285d
+
fbc285d
+    execute( aArgs );
fbc285d
+
fbc285d
+    return true;
fbc285d
+}
fbc285d
 
fbc285d
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
fbc285d