cui/source/dialogs/zoom.cxx | 293 ++++++++++++----------- cui/source/inc/zoom.hxx | 56 ++-- include/sfx2/infobar.hxx | 36 +- include/sfx2/viewfrm.hxx | 5 sfx2/source/dialog/infobar.cxx | 409 +++++++++++++++------------------ sfx2/source/view/sfxbasecontroller.cxx | 5 sfx2/source/view/viewfrm.cxx | 52 +--- 7 files changed, 432 insertions(+), 424 deletions(-)
New commits: commit 1049511c0c5d881df4ba8042744d63d37878296f Author: Tomaž Vajngerl <[email protected]> Date: Tue Jan 13 21:43:27 2015 +0900 infobar: add buttons one by one with addButton Change-Id: I5c9da630fe800df8da8ff32d7bb3e6b19fc37a8d diff --git a/include/sfx2/infobar.hxx b/include/sfx2/infobar.hxx index ee92d39..14c680f 100644 --- a/include/sfx2/infobar.hxx +++ b/include/sfx2/infobar.hxx @@ -51,15 +51,19 @@ class SfxInfoBarWindow : public vcl::Window boost::ptr_vector<PushButton> m_aActionBtns; public: - SfxInfoBarWindow( vcl::Window* parent, const OUString& sId, - const OUString& sMessage, - std::vector< PushButton* > aButtons ); + SfxInfoBarWindow(vcl::Window* parent, const OUString& sId, const OUString& sMessage); virtual ~SfxInfoBarWindow( ); virtual const OUString& getId() const { return m_sId; } virtual void Paint( const Rectangle& ) SAL_OVERRIDE; virtual void Resize( ) SAL_OVERRIDE; + /** Add button to Infobar. + * Infobar takes ownership of the button so the button is + * destroyed when the infobar gets destroyed. + */ + void addButton(PushButton* pButton); + private: DECL_LINK( CloseHandler, void* ); }; @@ -71,14 +75,14 @@ class SfxInfoBarContainerWindow : public vcl::Window boost::ptr_vector<SfxInfoBarWindow> m_pInfoBars; public: - SfxInfoBarContainerWindow( SfxInfoBarContainerChild* pChildWin ); + SfxInfoBarContainerWindow(SfxInfoBarContainerChild* pChildWin); virtual ~SfxInfoBarContainerWindow( ); - void appendInfoBar( const OUString& sId, const OUString& sMessage, std::vector< PushButton* > aButtons ); - SfxInfoBarWindow* getInfoBar( const OUString& sId ); - void removeInfoBar( SfxInfoBarWindow* pInfoBar ); + SfxInfoBarWindow* appendInfoBar(const OUString& sId, const OUString& sMessage); + SfxInfoBarWindow* getInfoBar(const OUString& sId); + void removeInfoBar(SfxInfoBarWindow* pInfoBar); - virtual void Resize( ) SAL_OVERRIDE; + virtual void Resize() SAL_OVERRIDE; }; diff --git a/include/sfx2/viewfrm.hxx b/include/sfx2/viewfrm.hxx index 1d043fc..ec5ef13 100644 --- a/include/sfx2/viewfrm.hxx +++ b/include/sfx2/viewfrm.hxx @@ -47,6 +47,7 @@ class Fraction; class Point; class Size; class SfxChildWindow; +class SfxInfoBarWindow; namespace sfx2 { @@ -191,8 +192,8 @@ public: The buttons will be added from Right to Left at the right of the info bar. The parent, size and position of each button will be changed: only the width will remain unchanged. */ - void AppendInfoBar( const OUString& sId, const OUString& sMessage, std::vector< PushButton* > aButtons = std::vector< PushButton* >() ); - void RemoveInfoBar( const OUString& sId ); + SfxInfoBarWindow* AppendInfoBar(const OUString& sId, const OUString& sMessage); + void RemoveInfoBar(const OUString& sId); SAL_DLLPRIVATE void SetDowning_Impl(); SAL_DLLPRIVATE void GetDocNumber_Impl(); diff --git a/sfx2/source/dialog/infobar.cxx b/sfx2/source/dialog/infobar.cxx index 7cd0ebe..f530456 100644 --- a/sfx2/source/dialog/infobar.cxx +++ b/sfx2/source/dialog/infobar.cxx @@ -115,7 +115,7 @@ void SfxCloseButton::Paint(const Rectangle&) } // anonymous namespace SfxInfoBarWindow::SfxInfoBarWindow(vcl::Window* pParent, const OUString& sId, - const OUString& sMessage, vector<PushButton*> aButtons) : + const OUString& sMessage) : Window(pParent, 0), m_sId(sId), m_pMessage(new FixedText(this, 0)), @@ -133,22 +133,19 @@ SfxInfoBarWindow::SfxInfoBarWindow(vcl::Window* pParent, const OUString& sId, m_pCloseBtn->SetClickHdl(LINK(this, SfxInfoBarWindow, CloseHandler)); m_pCloseBtn->Show(); - // Reparent the buttons and place them on the right of the bar - vector<PushButton*>::iterator it; - for (it = aButtons.begin(); it != aButtons.end(); ++it) - { - PushButton* pButton = *it; - pButton->SetParent(this); - pButton->Show(); - m_aActionBtns.push_back(pButton); - } - Resize(); } SfxInfoBarWindow::~SfxInfoBarWindow() {} +void SfxInfoBarWindow::addButton(PushButton* pButton) { + pButton->SetParent(this); + pButton->Show(); + m_aActionBtns.push_back(pButton); + Resize(); +} + void SfxInfoBarWindow::Paint(const Rectangle& rPaintRect) { const ViewInformation2D aNewViewInfos; @@ -238,18 +235,19 @@ SfxInfoBarContainerWindow::~SfxInfoBarContainerWindow() { } -void SfxInfoBarContainerWindow::appendInfoBar(const OUString& sId, const OUString& sMessage, vector<PushButton*> aButtons) +SfxInfoBarWindow* SfxInfoBarContainerWindow::appendInfoBar(const OUString& sId, const OUString& sMessage) { - Size aSize = GetSizePixel( ); + Size aSize = GetSizePixel(); - SfxInfoBarWindow* pInfoBar = new SfxInfoBarWindow(this, sId, sMessage, aButtons); - pInfoBar->SetPosPixel(Point( 0, aSize.getHeight())); + SfxInfoBarWindow* pInfoBar = new SfxInfoBarWindow(this, sId, sMessage); + pInfoBar->SetPosPixel(Point(0, aSize.getHeight())); pInfoBar->Show(); m_pInfoBars.push_back(pInfoBar); long nHeight = pInfoBar->GetSizePixel().getHeight(); aSize.setHeight(aSize.getHeight() + nHeight); SetSizePixel(aSize); + return pInfoBar; } SfxInfoBarWindow* SfxInfoBarContainerWindow::getInfoBar(const OUString& sId) diff --git a/sfx2/source/view/sfxbasecontroller.cxx b/sfx2/source/view/sfxbasecontroller.cxx index 943f60d..5ea8ebe 100644 --- a/sfx2/source/view/sfxbasecontroller.cxx +++ b/sfx2/source/view/sfxbasecontroller.cxx @@ -1448,11 +1448,10 @@ void SfxBaseController::ShowInfoBars( ) { // Get the Frame and show the InfoBar if not checked out SfxViewFrame* pViewFrame = m_pData->m_pViewShell->GetFrame(); - std::vector< PushButton* > aButtons; PushButton* pBtn = new PushButton( &pViewFrame->GetWindow(), SfxResId( BT_CHECKOUT ) ); pBtn->SetClickHdl( LINK( this, SfxBaseController, CheckOutHandler ) ); - aButtons.push_back( pBtn ); - pViewFrame->AppendInfoBar( "checkout", SfxResId( STR_NONCHECKEDOUT_DOCUMENT ), aButtons ); + SfxInfoBarWindow* pInfoBar = pViewFrame->AppendInfoBar( "checkout", SfxResId( STR_NONCHECKEDOUT_DOCUMENT ) ); + pInfoBar->addButton(pBtn); } } } diff --git a/sfx2/source/view/viewfrm.cxx b/sfx2/source/view/viewfrm.cxx index 3c9a9df..5ba7ef1 100644 --- a/sfx2/source/view/viewfrm.cxx +++ b/sfx2/source/view/viewfrm.cxx @@ -1379,11 +1379,11 @@ void SfxViewFrame::Notify( SfxBroadcaster& /*rBC*/, const SfxHint& rHint ) } else { - std::vector< PushButton* > aButtons; + SfxInfoBarWindow* pInfoBar = AppendInfoBar("readonly", SfxResId(STR_READONLY_DOCUMENT)); + PushButton* pBtn = new PushButton( &GetWindow(), SfxResId(BT_READONLY_EDIT)); pBtn->SetClickHdl(LINK(this, SfxViewFrame, SwitchReadOnlyHandler)); - aButtons.push_back( pBtn ); - AppendInfoBar("readonly", SfxResId(STR_READONLY_DOCUMENT), aButtons); + pInfoBar->addButton(pBtn); } break; @@ -3357,28 +3357,23 @@ void SfxViewFrame::ActivateToolPanel_Impl( const OUString& i_rPanelURL ) pPanelAccess->ActivateToolPanel( i_rPanelURL ); } -void SfxViewFrame::AppendInfoBar( const OUString& sId, const OUString& sMessage, std::vector< PushButton* > aButtons ) +SfxInfoBarWindow* SfxViewFrame::AppendInfoBar( const OUString& sId, const OUString& sMessage ) { const sal_uInt16 nId = SfxInfoBarContainerChild::GetChildWindowId(); // Make sure the InfoBar container is visible - if ( !HasChildWindow( nId ) ) - ToggleChildWindow( nId ); - SfxChildWindow* pChild = GetChildWindow( nId ); - if ( pChild ) - { - SfxInfoBarContainerWindow* pInfoBars = static_cast<SfxInfoBarContainerWindow*>( pChild->GetWindow() ); - pInfoBars->appendInfoBar( sId, sMessage, aButtons ); - ShowChildWindow( nId ); - } - else + if (!HasChildWindow(nId)) + ToggleChildWindow(nId); + + SfxChildWindow* pChild = GetChildWindow(nId); + if (pChild) { - SAL_WARN( "sfx.view", "No consumer for InfoBar buttons, so deleting them instead" ); - for (std::vector< PushButton* >::iterator it = aButtons.begin(); it != aButtons.end(); ++it) - { - delete *it; - } + SfxInfoBarContainerWindow* pInfoBarContainer = static_cast<SfxInfoBarContainerWindow*>(pChild->GetWindow()); + SfxInfoBarWindow* pInfoBar = pInfoBarContainer->appendInfoBar(sId, sMessage); + ShowChildWindow(nId); + return pInfoBar; } + return NULL; } void SfxViewFrame::RemoveInfoBar( const OUString& sId ) @@ -3386,15 +3381,16 @@ void SfxViewFrame::RemoveInfoBar( const OUString& sId ) const sal_uInt16 nId = SfxInfoBarContainerChild::GetChildWindowId(); // Make sure the InfoBar container is visible - if ( !HasChildWindow( nId ) ) - ToggleChildWindow( nId ); - SfxChildWindow* pChild = GetChildWindow( nId ); - if ( pChild ) - { - SfxInfoBarContainerWindow* pInfoBars = static_cast<SfxInfoBarContainerWindow*>( pChild->GetWindow() ); - SfxInfoBarWindow* pInfoBar = pInfoBars->getInfoBar( sId ); - pInfoBars->removeInfoBar( pInfoBar ); - ShowChildWindow( nId ); + if (!HasChildWindow(nId)) + ToggleChildWindow(nId); + + SfxChildWindow* pChild = GetChildWindow(nId); + if (pChild) + { + SfxInfoBarContainerWindow* pInfoBarContainer = static_cast<SfxInfoBarContainerWindow*>(pChild->GetWindow()); + SfxInfoBarWindow* pInfoBar = pInfoBarContainer->getInfoBar(sId); + pInfoBarContainer->removeInfoBar(pInfoBar); + ShowChildWindow(nId); } } commit 1149232c70d3f0383984091df597f3419045ba19 Author: Tomaž Vajngerl <[email protected]> Date: Tue Jan 13 14:11:09 2015 +0900 infobar: reuse gathering the dark/light colors from settings Change-Id: I923221f502c4efd200f77d5c73f03d124490ee39 diff --git a/sfx2/source/dialog/infobar.cxx b/sfx2/source/dialog/infobar.cxx index 70e75e5..7cd0ebe 100644 --- a/sfx2/source/dialog/infobar.cxx +++ b/sfx2/source/dialog/infobar.cxx @@ -37,6 +37,21 @@ const long INFO_BAR_BASE_HEIGHT = 40; const BColor constLightColor(1.0, 1.0, 191.0 / 255.0); const BColor constDarkColor(217.0 / 255.0, 217.0 / 255.0, 78.0 / 255.0); +void lclDetermineLightDarkColor(BColor& rLightColor, BColor& rDarkColor) +{ + const StyleSettings& rSettings = Application::GetSettings().GetStyleSettings(); + if (rSettings.GetHighContrastMode()) + { + rLightColor = rSettings.GetLightColor().getBColor(); + rDarkColor = rSettings.GetDialogTextColor().getBColor(); + } + else + { + rLightColor = constLightColor; + rDarkColor = constDarkColor; + } +} + class SfxCloseButton : public PushButton { public: @@ -58,15 +73,9 @@ void SfxCloseButton::Paint(const Rectangle&) Primitive2DSequence aSeq(2); - BColor aLightColor(constLightColor); - BColor aDarkColor(constDarkColor); - - const StyleSettings& rSettings = Application::GetSettings().GetStyleSettings(); - if (rSettings.GetHighContrastMode()) - { - aLightColor = rSettings.GetLightColor().getBColor(); - aDarkColor = rSettings.GetDialogTextColor().getBColor(); - } + BColor aLightColor; + BColor aDarkColor; + lclDetermineLightDarkColor(aLightColor, aDarkColor); // Light background B2DPolygon aPolygon; @@ -150,15 +159,9 @@ void SfxInfoBarWindow::Paint(const Rectangle& rPaintRect) Primitive2DSequence aSeq(2); - BColor aLightColor(constLightColor); - BColor aDarkColor(constDarkColor); - - const StyleSettings& rSettings = Application::GetSettings().GetStyleSettings(); - if (rSettings.GetHighContrastMode()) - { - aLightColor = rSettings.GetLightColor().getBColor(); - aDarkColor = rSettings.GetDialogTextColor().getBColor(); - } + BColor aLightColor; + BColor aDarkColor; + lclDetermineLightDarkColor(aLightColor, aDarkColor); // Update the label background color m_pMessage->SetBackground(Wallpaper(Color(aLightColor))); commit dc265e3b104de6a3882d25b7b808daf99425d9ee Author: Tomaž Vajngerl <[email protected]> Date: Tue Jan 13 14:04:29 2015 +0900 infobar: combine anon. namespace, light/dark color to constant Change-Id: Ie22c9b2997031146ee3a25ad55b2198ed50ee028 diff --git a/sfx2/source/dialog/infobar.cxx b/sfx2/source/dialog/infobar.cxx index 1455559..70e75e5 100644 --- a/sfx2/source/dialog/infobar.cxx +++ b/sfx2/source/dialog/infobar.cxx @@ -31,78 +31,77 @@ using namespace basegfx; namespace { - class SfxCloseButton : public PushButton - { - public: - SfxCloseButton(vcl::Window* pParent) : PushButton(pParent, 0) - { - } - virtual ~SfxCloseButton() {} +const long INFO_BAR_BASE_HEIGHT = 40; - virtual void Paint(const Rectangle& rRect) SAL_OVERRIDE; - }; +const BColor constLightColor(1.0, 1.0, 191.0 / 255.0); +const BColor constDarkColor(217.0 / 255.0, 217.0 / 255.0, 78.0 / 255.0); - void SfxCloseButton::Paint(const Rectangle&) - { - const ViewInformation2D aNewViewInfos; - const unique_ptr<BaseProcessor2D> pProcessor( - createBaseProcessor2DFromOutputDevice(*this, aNewViewInfos)); +class SfxCloseButton : public PushButton +{ +public: + SfxCloseButton(vcl::Window* pParent) : PushButton(pParent, 0) + {} - const Rectangle aRect(Point(0, 0), PixelToLogic(GetSizePixel())); + virtual ~SfxCloseButton() {} - Primitive2DSequence aSeq(2); + virtual void Paint(const Rectangle& rRect) SAL_OVERRIDE; +}; - BColor aLightColor(1.0, 1.0, 191.0 / 255.0); - BColor aDarkColor(217.0 / 255.0, 217.0 / 255.0, 78.0 / 255.0); +void SfxCloseButton::Paint(const Rectangle&) +{ + const ViewInformation2D aNewViewInfos; + const unique_ptr<BaseProcessor2D> pProcessor( + createBaseProcessor2DFromOutputDevice(*this, aNewViewInfos)); - const StyleSettings& rSettings = Application::GetSettings().GetStyleSettings(); - if (rSettings.GetHighContrastMode()) - { - aLightColor = rSettings.GetLightColor().getBColor(); - aDarkColor = rSettings.GetDialogTextColor().getBColor(); - } + const Rectangle aRect(Point(0, 0), PixelToLogic(GetSizePixel())); - // Light background - B2DPolygon aPolygon; - aPolygon.append(B2DPoint(aRect.Left(), aRect.Top())); - aPolygon.append(B2DPoint(aRect.Right(), aRect.Top())); - aPolygon.append(B2DPoint(aRect.Right(), aRect.Bottom())); - aPolygon.append(B2DPoint(aRect.Left(), aRect.Bottom())); - aPolygon.setClosed(true); + Primitive2DSequence aSeq(2); - PolyPolygonColorPrimitive2D* pBack = - new PolyPolygonColorPrimitive2D(B2DPolyPolygon(aPolygon), aLightColor); - aSeq[0] = pBack; + BColor aLightColor(constLightColor); + BColor aDarkColor(constDarkColor); + + const StyleSettings& rSettings = Application::GetSettings().GetStyleSettings(); + if (rSettings.GetHighContrastMode()) + { + aLightColor = rSettings.GetLightColor().getBColor(); + aDarkColor = rSettings.GetDialogTextColor().getBColor(); + } - LineAttribute aLineAttribute(aDarkColor, 2.0); + // Light background + B2DPolygon aPolygon; + aPolygon.append(B2DPoint(aRect.Left(), aRect.Top())); + aPolygon.append(B2DPoint(aRect.Right(), aRect.Top())); + aPolygon.append(B2DPoint(aRect.Right(), aRect.Bottom())); + aPolygon.append(B2DPoint(aRect.Left(), aRect.Bottom())); + aPolygon.setClosed(true); - // Cross - B2DPolyPolygon aCross; + PolyPolygonColorPrimitive2D* pBack = + new PolyPolygonColorPrimitive2D(B2DPolyPolygon(aPolygon), aLightColor); + aSeq[0] = pBack; - B2DPolygon aLine1; - aLine1.append(B2DPoint(aRect.Left(), aRect.Top())); - aLine1.append(B2DPoint(aRect.Right(), aRect.Bottom())); - aCross.append(aLine1); + LineAttribute aLineAttribute(aDarkColor, 2.0); - B2DPolygon aLine2; - aLine2.append(B2DPoint(aRect.Right(), aRect.Top())); - aLine2.append(B2DPoint(aRect.Left(), aRect.Bottom())); - aCross.append(aLine2); + // Cross + B2DPolyPolygon aCross; - PolyPolygonStrokePrimitive2D* pCross = - new PolyPolygonStrokePrimitive2D(aCross, aLineAttribute, StrokeAttribute()); + B2DPolygon aLine1; + aLine1.append(B2DPoint(aRect.Left(), aRect.Top())); + aLine1.append(B2DPoint(aRect.Right(), aRect.Bottom())); + aCross.append(aLine1); - aSeq[1] = pCross; + B2DPolygon aLine2; + aLine2.append(B2DPoint(aRect.Right(), aRect.Top())); + aLine2.append(B2DPoint(aRect.Left(), aRect.Bottom())); + aCross.append(aLine2); - pProcessor->process(aSeq); - } -} + PolyPolygonStrokePrimitive2D* pCross = + new PolyPolygonStrokePrimitive2D(aCross, aLineAttribute, StrokeAttribute()); -namespace -{ + aSeq[1] = pCross; -const long INFO_BAR_BASE_HEIGHT = 40; + pProcessor->process(aSeq); +} } // anonymous namespace @@ -119,7 +118,7 @@ SfxInfoBarWindow::SfxInfoBarWindow(vcl::Window* pParent, const OUString& sId, SetPosSizePixel(Point(0, 0), Size(nWidth, INFO_BAR_BASE_HEIGHT * nScaleFactor)); m_pMessage->SetText(sMessage); - m_pMessage->SetBackground(Wallpaper(Color(255, 255, 191))); + m_pMessage->SetBackground(Wallpaper(Color(constLightColor))); m_pMessage->Show(); m_pCloseBtn->SetClickHdl(LINK(this, SfxInfoBarWindow, CloseHandler)); @@ -151,8 +150,8 @@ void SfxInfoBarWindow::Paint(const Rectangle& rPaintRect) Primitive2DSequence aSeq(2); - BColor aLightColor(1.0, 1.0, 191.0 / 255.0); - BColor aDarkColor(217.0 / 255.0, 217.0 / 255.0, 78.0 / 255.0); + BColor aLightColor(constLightColor); + BColor aDarkColor(constDarkColor); const StyleSettings& rSettings = Application::GetSettings().GetStyleSettings(); if (rSettings.GetHighContrastMode()) commit 8cd86d5e27b2ba0b4621474007eea1dea9957e8b Author: Tomaž Vajngerl <[email protected]> Date: Tue Jan 13 13:57:55 2015 +0900 Scale the infobar controls correctly with DPI scale factor Change-Id: I7d5b3daf4ae4da05bb7f09e80e790edae24e0eaf diff --git a/sfx2/source/dialog/infobar.cxx b/sfx2/source/dialog/infobar.cxx index cf8e6df..1455559 100644 --- a/sfx2/source/dialog/infobar.cxx +++ b/sfx2/source/dialog/infobar.cxx @@ -99,6 +99,13 @@ namespace } } +namespace +{ + +const long INFO_BAR_BASE_HEIGHT = 40; + +} // anonymous namespace + SfxInfoBarWindow::SfxInfoBarWindow(vcl::Window* pParent, const OUString& sId, const OUString& sMessage, vector<PushButton*> aButtons) : Window(pParent, 0), @@ -107,8 +114,9 @@ SfxInfoBarWindow::SfxInfoBarWindow(vcl::Window* pParent, const OUString& sId, m_pCloseBtn(new SfxCloseButton(this)), m_aActionBtns() { + sal_Int32 nScaleFactor = GetDPIScaleFactor(); long nWidth = pParent->GetSizePixel().getWidth(); - SetPosSizePixel(Point(0, 0), Size(nWidth, 40)); + SetPosSizePixel(Point(0, 0), Size(nWidth, INFO_BAR_BASE_HEIGHT * nScaleFactor)); m_pMessage->SetText(sMessage); m_pMessage->SetBackground(Wallpaper(Color(255, 255, 191))); @@ -187,22 +195,28 @@ void SfxInfoBarWindow::Paint(const Rectangle& rPaintRect) void SfxInfoBarWindow::Resize() { + sal_Int32 nScaleFactor = GetDPIScaleFactor(); + long nWidth = GetSizePixel().getWidth(); - m_pCloseBtn->SetPosSizePixel(Point(nWidth - 25, 15), Size(10, 10)); + m_pCloseBtn->SetPosSizePixel(Point(nWidth - 25 * nScaleFactor, 15 * nScaleFactor), Size(10 * nScaleFactor, 10 * nScaleFactor)); // Reparent the buttons and place them on the right of the bar - long nX = m_pCloseBtn->GetPosPixel().getX() - 15; - long nBtnGap = 5; + long nX = m_pCloseBtn->GetPosPixel().getX() - 15 * nScaleFactor; + long nButtonGap = 5 * nScaleFactor; + boost::ptr_vector<PushButton>::iterator it; for (it = m_aActionBtns.begin(); it != m_aActionBtns.end(); ++it) { - long nBtnWidth = it->GetSizePixel().getWidth(); - nX -= nBtnWidth; - it->SetPosSizePixel(Point(nX, 5), Size(nBtnWidth, 30)); - nX -= nBtnGap; + long nButtonWidth = it->GetSizePixel().getWidth(); + nX -= nButtonWidth; + it->SetPosSizePixel(Point(nX, 5 * nScaleFactor), Size(nButtonWidth, 30 * nScaleFactor)); + nX -= nButtonGap; } - m_pMessage->SetPosSizePixel(Point(10, 10), Size(nX - 20, 20)); + Point aMessagePosition(10 * nScaleFactor, 10 * nScaleFactor); + Size aMessageSize(nX - 20 * nScaleFactor, 20 * nScaleFactor); + + m_pMessage->SetPosSizePixel(aMessagePosition, aMessageSize); } IMPL_LINK_NOARG(SfxInfoBarWindow, CloseHandler) commit f78d0b2e7c9a5ef3afdc4057938b1992a2a6da95 Author: Tomaž Vajngerl <[email protected]> Date: Tue Jan 13 13:25:42 2015 +0900 Further cleanup style in infobar, remove basegfx namespace in code Change-Id: I0201d87d631413fc75230535e25c8eac189ede10 diff --git a/sfx2/source/dialog/infobar.cxx b/sfx2/source/dialog/infobar.cxx index a2b2cd7..cf8e6df 100644 --- a/sfx2/source/dialog/infobar.cxx +++ b/sfx2/source/dialog/infobar.cxx @@ -27,22 +27,23 @@ using namespace drawinglayer::processor2d; using namespace drawinglayer::primitive2d; using namespace drawinglayer::attribute; using namespace drawinglayer::geometry; +using namespace basegfx; namespace { class SfxCloseButton : public PushButton { public: - SfxCloseButton( vcl::Window* pParent ) : PushButton( pParent, 0 ) + SfxCloseButton(vcl::Window* pParent) : PushButton(pParent, 0) { } - virtual ~SfxCloseButton( ) { } + virtual ~SfxCloseButton() {} - virtual void Paint( const Rectangle& rRect ) SAL_OVERRIDE; + virtual void Paint(const Rectangle& rRect) SAL_OVERRIDE; }; - void SfxCloseButton::Paint( const Rectangle& ) + void SfxCloseButton::Paint(const Rectangle&) { const ViewInformation2D aNewViewInfos; const unique_ptr<BaseProcessor2D> pProcessor( @@ -52,42 +53,44 @@ namespace Primitive2DSequence aSeq(2); - basegfx::BColor aLightColor(1.0, 1.0, 191.0 / 255.0); - basegfx::BColor aDarkColor(217.0 / 255.0, 217.0 / 255.0, 78.0 / 255.0); + BColor aLightColor(1.0, 1.0, 191.0 / 255.0); + BColor aDarkColor(217.0 / 255.0, 217.0 / 255.0, 78.0 / 255.0); const StyleSettings& rSettings = Application::GetSettings().GetStyleSettings(); - if ( rSettings.GetHighContrastMode() ) + if (rSettings.GetHighContrastMode()) { - aLightColor = rSettings.GetLightColor( ).getBColor( ); - aDarkColor = rSettings.GetDialogTextColor( ).getBColor( ); - + aLightColor = rSettings.GetLightColor().getBColor(); + aDarkColor = rSettings.GetDialogTextColor().getBColor(); } // Light background - basegfx::B2DPolygon aPolygon; - aPolygon.append( basegfx::B2DPoint( aRect.Left( ), aRect.Top( ) ) ); - aPolygon.append( basegfx::B2DPoint( aRect.Right( ), aRect.Top( ) ) ); - aPolygon.append( basegfx::B2DPoint( aRect.Right( ), aRect.Bottom( ) ) ); - aPolygon.append( basegfx::B2DPoint( aRect.Left( ), aRect.Bottom( ) ) ); - aPolygon.setClosed( true ); - PolyPolygonColorPrimitive2D* pBack = new PolyPolygonColorPrimitive2D( - basegfx::B2DPolyPolygon( aPolygon ), aLightColor ); + B2DPolygon aPolygon; + aPolygon.append(B2DPoint(aRect.Left(), aRect.Top())); + aPolygon.append(B2DPoint(aRect.Right(), aRect.Top())); + aPolygon.append(B2DPoint(aRect.Right(), aRect.Bottom())); + aPolygon.append(B2DPoint(aRect.Left(), aRect.Bottom())); + aPolygon.setClosed(true); + + PolyPolygonColorPrimitive2D* pBack = + new PolyPolygonColorPrimitive2D(B2DPolyPolygon(aPolygon), aLightColor); aSeq[0] = pBack; LineAttribute aLineAttribute(aDarkColor, 2.0); // Cross - basegfx::B2DPolyPolygon aCross; - basegfx::B2DPolygon aLine1; - aLine1.append( basegfx::B2DPoint( aRect.Left(), aRect.Top( ) ) ); - aLine1.append( basegfx::B2DPoint( aRect.Right(), aRect.Bottom( ) ) ); - aCross.append( aLine1 ); - basegfx::B2DPolygon aLine2; - aLine2.append( basegfx::B2DPoint( aRect.Right(), aRect.Top( ) ) ); - aLine2.append( basegfx::B2DPoint( aRect.Left(), aRect.Bottom( ) ) ); - aCross.append( aLine2 ); - - PolyPolygonStrokePrimitive2D * pCross = + B2DPolyPolygon aCross; + + B2DPolygon aLine1; + aLine1.append(B2DPoint(aRect.Left(), aRect.Top())); + aLine1.append(B2DPoint(aRect.Right(), aRect.Bottom())); + aCross.append(aLine1); + + B2DPolygon aLine2; + aLine2.append(B2DPoint(aRect.Right(), aRect.Top())); + aLine2.append(B2DPoint(aRect.Left(), aRect.Bottom())); + aCross.append(aLine2); + + PolyPolygonStrokePrimitive2D* pCross = new PolyPolygonStrokePrimitive2D(aCross, aLineAttribute, StrokeAttribute()); aSeq[1] = pCross; @@ -96,8 +99,8 @@ namespace } } -SfxInfoBarWindow::SfxInfoBarWindow( vcl::Window* pParent, const OUString& sId, - const OUString& sMessage, vector<PushButton*> aButtons ) : +SfxInfoBarWindow::SfxInfoBarWindow(vcl::Window* pParent, const OUString& sId, + const OUString& sMessage, vector<PushButton*> aButtons) : Window(pParent, 0), m_sId(sId), m_pMessage(new FixedText(this, 0)), @@ -140,8 +143,8 @@ void SfxInfoBarWindow::Paint(const Rectangle& rPaintRect) Primitive2DSequence aSeq(2); - basegfx::BColor aLightColor(1.0, 1.0, 191.0 / 255.0); - basegfx::BColor aDarkColor(217.0 / 255.0, 217.0 / 255.0, 78.0 / 255.0); + BColor aLightColor(1.0, 1.0, 191.0 / 255.0); + BColor aDarkColor(217.0 / 255.0, 217.0 / 255.0, 78.0 / 255.0); const StyleSettings& rSettings = Application::GetSettings().GetStyleSettings(); if (rSettings.GetHighContrastMode()) @@ -154,25 +157,25 @@ void SfxInfoBarWindow::Paint(const Rectangle& rPaintRect) m_pMessage->SetBackground(Wallpaper(Color(aLightColor))); // Light background - basegfx::B2DPolygon aPolygon; - aPolygon.append( basegfx::B2DPoint( aRect.Left( ), aRect.Top( ) ) ); - aPolygon.append( basegfx::B2DPoint( aRect.Right( ), aRect.Top( ) ) ); - aPolygon.append( basegfx::B2DPoint( aRect.Right( ), aRect.Bottom( ) ) ); - aPolygon.append( basegfx::B2DPoint( aRect.Left( ), aRect.Bottom( ) ) ); + B2DPolygon aPolygon; + aPolygon.append(B2DPoint(aRect.Left(), aRect.Top())); + aPolygon.append(B2DPoint(aRect.Right(), aRect.Top())); + aPolygon.append(B2DPoint(aRect.Right(), aRect.Bottom())); + aPolygon.append(B2DPoint(aRect.Left(), aRect.Bottom())); aPolygon.setClosed(true); PolyPolygonColorPrimitive2D* pBack = - new PolyPolygonColorPrimitive2D(basegfx::B2DPolyPolygon(aPolygon), aLightColor); + new PolyPolygonColorPrimitive2D(B2DPolyPolygon(aPolygon), aLightColor); aSeq[0] = pBack; LineAttribute aLineAttribute(aDarkColor, 1.0); // Bottom dark line - basegfx::B2DPolygon aPolygonBottom; - aPolygonBottom.append( basegfx::B2DPoint( aRect.Left(), aRect.Bottom( ) ) ); - aPolygonBottom.append( basegfx::B2DPoint( aRect.Right(), aRect.Bottom( ) ) ); + B2DPolygon aPolygonBottom; + aPolygonBottom.append(B2DPoint(aRect.Left(), aRect.Bottom())); + aPolygonBottom.append(B2DPoint(aRect.Right(), aRect.Bottom())); - PolygonStrokePrimitive2D * pLineBottom = + PolygonStrokePrimitive2D* pLineBottom = new PolygonStrokePrimitive2D (aPolygonBottom, aLineAttribute); aSeq[1] = pLineBottom; @@ -185,7 +188,7 @@ void SfxInfoBarWindow::Paint(const Rectangle& rPaintRect) void SfxInfoBarWindow::Resize() { long nWidth = GetSizePixel().getWidth(); - m_pCloseBtn->SetPosSizePixel(Point( nWidth - 25, 15), Size(10, 10)); + m_pCloseBtn->SetPosSizePixel(Point(nWidth - 25, 15), Size(10, 10)); // Reparent the buttons and place them on the right of the bar long nX = m_pCloseBtn->GetPosPixel().getX() - 15; @@ -259,11 +262,11 @@ void SfxInfoBarContainerWindow::removeInfoBar(SfxInfoBarWindow* pInfoBar) long nY = 0; for (it = m_pInfoBars.begin(); it != m_pInfoBars.end(); ++it) { - it->SetPosPixel( Point( 0, nY ) ); - nY += it->GetSizePixel( ).getHeight( ); + it->SetPosPixel(Point(0, nY)); + nY += it->GetSizePixel().getHeight(); } - Size aSize = GetSizePixel( ); + Size aSize = GetSizePixel(); aSize.setHeight(nY); SetSizePixel(aSize); commit 274f497b2502db146f23eb72426ad38a70934540 Author: Tomaž Vajngerl <[email protected]> Date: Tue Jan 13 13:20:20 2015 +0900 Cleanup infobar Change-Id: I2479b8df69da3c05021a82d269925a6374709c72 diff --git a/sfx2/source/dialog/infobar.cxx b/sfx2/source/dialog/infobar.cxx index dc8a51b..a2b2cd7 100644 --- a/sfx2/source/dialog/infobar.cxx +++ b/sfx2/source/dialog/infobar.cxx @@ -48,12 +48,12 @@ namespace const unique_ptr<BaseProcessor2D> pProcessor( createBaseProcessor2DFromOutputDevice(*this, aNewViewInfos)); - const Rectangle aRect( Rectangle( Point( 0, 0 ), PixelToLogic( GetSizePixel() ) ) ); + const Rectangle aRect(Point(0, 0), PixelToLogic(GetSizePixel())); - Primitive2DSequence aSeq( 2 ); + Primitive2DSequence aSeq(2); - basegfx::BColor aLightColor( 1.0, 1.0, 191.0 / 255.0 ); - basegfx::BColor aDarkColor( 217.0 / 255.0, 217.0 / 255.0, 78.0 / 255.0 ); + basegfx::BColor aLightColor(1.0, 1.0, 191.0 / 255.0); + basegfx::BColor aDarkColor(217.0 / 255.0, 217.0 / 255.0, 78.0 / 255.0); const StyleSettings& rSettings = Application::GetSettings().GetStyleSettings(); if ( rSettings.GetHighContrastMode() ) @@ -98,22 +98,21 @@ namespace SfxInfoBarWindow::SfxInfoBarWindow( vcl::Window* pParent, const OUString& sId, const OUString& sMessage, vector<PushButton*> aButtons ) : - Window( pParent, 0 ), - m_sId( sId ), + Window(pParent, 0), + m_sId(sId), m_pMessage(new FixedText(this, 0)), m_pCloseBtn(new SfxCloseButton(this)), m_aActionBtns() { long nWidth = pParent->GetSizePixel().getWidth(); - SetPosSizePixel( Point( 0, 0 ), Size( nWidth, 40 ) ); + SetPosSizePixel(Point(0, 0), Size(nWidth, 40)); - m_pMessage->SetText( sMessage ); - m_pMessage->SetBackground( Wallpaper( Color( 255, 255, 191 ) ) ); - m_pMessage->Show( ); + m_pMessage->SetText(sMessage); + m_pMessage->SetBackground(Wallpaper(Color(255, 255, 191))); + m_pMessage->Show(); - m_pCloseBtn->SetPosSizePixel( Point( nWidth - 25, 15 ), Size( 10, 10 ) ); - m_pCloseBtn->SetClickHdl( LINK( this, SfxInfoBarWindow, CloseHandler ) ); - m_pCloseBtn->Show( ); + m_pCloseBtn->SetClickHdl(LINK(this, SfxInfoBarWindow, CloseHandler)); + m_pCloseBtn->Show(); // Reparent the buttons and place them on the right of the bar vector<PushButton*>::iterator it; @@ -128,31 +127,31 @@ SfxInfoBarWindow::SfxInfoBarWindow( vcl::Window* pParent, const OUString& sId, Resize(); } -SfxInfoBarWindow::~SfxInfoBarWindow( ) +SfxInfoBarWindow::~SfxInfoBarWindow() {} -void SfxInfoBarWindow::Paint( const Rectangle& rPaintRect ) +void SfxInfoBarWindow::Paint(const Rectangle& rPaintRect) { const ViewInformation2D aNewViewInfos; const unique_ptr<BaseProcessor2D> pProcessor( createBaseProcessor2DFromOutputDevice(*this, aNewViewInfos)); - const Rectangle aRect( Rectangle( Point( 0, 0 ), PixelToLogic( GetSizePixel() ) ) ); + const Rectangle aRect(Point(0, 0), PixelToLogic(GetSizePixel())); - Primitive2DSequence aSeq( 2 ); + Primitive2DSequence aSeq(2); - basegfx::BColor aLightColor( 1.0, 1.0, 191.0 / 255.0 ); - basegfx::BColor aDarkColor( 217.0 / 255.0, 217.0 / 255.0, 78.0 / 255.0 ); + basegfx::BColor aLightColor(1.0, 1.0, 191.0 / 255.0); + basegfx::BColor aDarkColor(217.0 / 255.0, 217.0 / 255.0, 78.0 / 255.0); const StyleSettings& rSettings = Application::GetSettings().GetStyleSettings(); - if ( rSettings.GetHighContrastMode() ) + if (rSettings.GetHighContrastMode()) { - aLightColor = rSettings.GetLightColor( ).getBColor( ); - aDarkColor = rSettings.GetDialogTextColor( ).getBColor( ); + aLightColor = rSettings.GetLightColor().getBColor(); + aDarkColor = rSettings.GetDialogTextColor().getBColor(); } // Update the label background color - m_pMessage->SetBackground( Wallpaper( Color( aLightColor ) ) ); + m_pMessage->SetBackground(Wallpaper(Color(aLightColor))); // Light background basegfx::B2DPolygon aPolygon; @@ -160,7 +159,7 @@ void SfxInfoBarWindow::Paint( const Rectangle& rPaintRect ) aPolygon.append( basegfx::B2DPoint( aRect.Right( ), aRect.Top( ) ) ); aPolygon.append( basegfx::B2DPoint( aRect.Right( ), aRect.Bottom( ) ) ); aPolygon.append( basegfx::B2DPoint( aRect.Left( ), aRect.Bottom( ) ) ); - aPolygon.setClosed( true ); + aPolygon.setClosed(true); PolyPolygonColorPrimitive2D* pBack = new PolyPolygonColorPrimitive2D(basegfx::B2DPolyPolygon(aPolygon), aLightColor); @@ -178,63 +177,63 @@ void SfxInfoBarWindow::Paint( const Rectangle& rPaintRect ) aSeq[1] = pLineBottom; - pProcessor->process( aSeq ); + pProcessor->process(aSeq); - Window::Paint( rPaintRect ); + Window::Paint(rPaintRect); } void SfxInfoBarWindow::Resize() { long nWidth = GetSizePixel().getWidth(); - m_pCloseBtn->SetPosSizePixel( Point( nWidth - 25, 15 ), Size( 10, 10 ) ); + m_pCloseBtn->SetPosSizePixel(Point( nWidth - 25, 15), Size(10, 10)); // Reparent the buttons and place them on the right of the bar - long nX = m_pCloseBtn->GetPosPixel( ).getX( ) - 15; + long nX = m_pCloseBtn->GetPosPixel().getX() - 15; long nBtnGap = 5; boost::ptr_vector<PushButton>::iterator it; for (it = m_aActionBtns.begin(); it != m_aActionBtns.end(); ++it) { - long nBtnWidth = it->GetSizePixel( ).getWidth(); + long nBtnWidth = it->GetSizePixel().getWidth(); nX -= nBtnWidth; - it->SetPosSizePixel( Point( nX, 5 ), Size( nBtnWidth, 30 ) ); + it->SetPosSizePixel(Point(nX, 5), Size(nBtnWidth, 30)); nX -= nBtnGap; } - m_pMessage->SetPosSizePixel( Point( 10, 10 ), Size( nX - 20, 20 ) ); + m_pMessage->SetPosSizePixel(Point(10, 10), Size(nX - 20, 20)); } -IMPL_LINK_NOARG( SfxInfoBarWindow, CloseHandler ) +IMPL_LINK_NOARG(SfxInfoBarWindow, CloseHandler) { - static_cast<SfxInfoBarContainerWindow*>(GetParent())->removeInfoBar( this ); + static_cast<SfxInfoBarContainerWindow*>(GetParent())->removeInfoBar(this); return 0; } -SfxInfoBarContainerWindow::SfxInfoBarContainerWindow( SfxInfoBarContainerChild* pChildWin ) : - Window( pChildWin->GetParent( ), 0 ), - m_pChildWin( pChildWin ), +SfxInfoBarContainerWindow::SfxInfoBarContainerWindow(SfxInfoBarContainerChild* pChildWin ) : + Window(pChildWin->GetParent(), 0), + m_pChildWin(pChildWin), m_pInfoBars() { } -SfxInfoBarContainerWindow::~SfxInfoBarContainerWindow( ) +SfxInfoBarContainerWindow::~SfxInfoBarContainerWindow() { } -void SfxInfoBarContainerWindow::appendInfoBar( const OUString& sId, const OUString& sMessage, vector< PushButton* > aButtons ) +void SfxInfoBarContainerWindow::appendInfoBar(const OUString& sId, const OUString& sMessage, vector<PushButton*> aButtons) { Size aSize = GetSizePixel( ); - SfxInfoBarWindow* pInfoBar = new SfxInfoBarWindow( this, sId, sMessage, aButtons ); - pInfoBar->SetPosPixel( Point( 0, aSize.getHeight( ) ) ); - pInfoBar->Show( ); - m_pInfoBars.push_back( pInfoBar ); + SfxInfoBarWindow* pInfoBar = new SfxInfoBarWindow(this, sId, sMessage, aButtons); + pInfoBar->SetPosPixel(Point( 0, aSize.getHeight())); + pInfoBar->Show(); + m_pInfoBars.push_back(pInfoBar); - long nHeight = pInfoBar->GetSizePixel( ).getHeight( ); - aSize.setHeight( aSize.getHeight() + nHeight ); - SetSizePixel( aSize ); + long nHeight = pInfoBar->GetSizePixel().getHeight(); + aSize.setHeight(aSize.getHeight() + nHeight); + SetSizePixel(aSize); } -SfxInfoBarWindow* SfxInfoBarContainerWindow::getInfoBar( const OUString& sId ) +SfxInfoBarWindow* SfxInfoBarContainerWindow::getInfoBar(const OUString& sId) { boost::ptr_vector<SfxInfoBarWindow>::iterator it; for (it = m_pInfoBars.begin(); it != m_pInfoBars.end(); ++it) @@ -245,7 +244,7 @@ SfxInfoBarWindow* SfxInfoBarContainerWindow::getInfoBar( const OUString& sId ) return NULL; } -void SfxInfoBarContainerWindow::removeInfoBar( SfxInfoBarWindow* pInfoBar ) +void SfxInfoBarContainerWindow::removeInfoBar(SfxInfoBarWindow* pInfoBar) { boost::ptr_vector<SfxInfoBarWindow>::iterator it; for (it = m_pInfoBars.begin(); it != m_pInfoBars.end(); ++it) @@ -265,56 +264,56 @@ void SfxInfoBarContainerWindow::removeInfoBar( SfxInfoBarWindow* pInfoBar ) } Size aSize = GetSizePixel( ); - aSize.setHeight( nY ); - SetSizePixel( aSize ); + aSize.setHeight(nY); + SetSizePixel(aSize); - m_pChildWin->Update( ); + m_pChildWin->Update(); } -void SfxInfoBarContainerWindow::Resize( ) +void SfxInfoBarContainerWindow::Resize() { // Only need to change the width of the infobars - long nWidth = GetSizePixel( ).getWidth( ); + long nWidth = GetSizePixel().getWidth(); boost::ptr_vector<SfxInfoBarWindow>::iterator it; for (it = m_pInfoBars.begin(); it != m_pInfoBars.end(); ++it) { - Size aSize = it->GetSizePixel( ); - aSize.setWidth( nWidth ); - it->SetSizePixel( aSize ); - it->Resize( ); + Size aSize = it->GetSizePixel(); + aSize.setWidth(nWidth); + it->SetSizePixel(aSize); + it->Resize(); } } -SFX_IMPL_POS_CHILDWINDOW_WITHID( SfxInfoBarContainerChild, SID_INFOBAR, SFX_OBJECTBAR_OBJECT ); +SFX_IMPL_POS_CHILDWINDOW_WITHID(SfxInfoBarContainerChild, SID_INFOBAR, SFX_OBJECTBAR_OBJECT); SfxInfoBarContainerChild::SfxInfoBarContainerChild( vcl::Window* _pParent, sal_uInt16 nId, SfxBindings* pBindings, SfxChildWinInfo* ) : - SfxChildWindow( _pParent, nId ), - m_pBindings( pBindings ) + SfxChildWindow(_pParent, nId), + m_pBindings(pBindings) { - pWindow = new SfxInfoBarContainerWindow( this ); - pWindow->SetPosSizePixel( Point( 0, 0 ), Size( _pParent->GetSizePixel( ).getWidth(), 0 ) ); - pWindow->Show( ); + pWindow = new SfxInfoBarContainerWindow(this); + pWindow->SetPosSizePixel(Point(0, 0), Size(_pParent->GetSizePixel().getWidth(), 0)); + pWindow->Show(); eChildAlignment = SFX_ALIGN_LOWESTTOP; } -SfxInfoBarContainerChild::~SfxInfoBarContainerChild( ) +SfxInfoBarContainerChild::~SfxInfoBarContainerChild() { } -SfxChildWinInfo SfxInfoBarContainerChild::GetInfo( ) const +SfxChildWinInfo SfxInfoBarContainerChild::GetInfo() const { SfxChildWinInfo aInfo = SfxChildWindow::GetInfo(); return aInfo; } -void SfxInfoBarContainerChild::Update( ) +void SfxInfoBarContainerChild::Update() { // Refresh the frame to take the infobars container height change into account const sal_uInt16 nId = GetChildWindowId(); - SfxViewFrame* pVFrame = m_pBindings->GetDispatcher( )->GetFrame( ); - pVFrame->ShowChildWindow( nId ); + SfxViewFrame* pVFrame = m_pBindings->GetDispatcher()->GetFrame(); + pVFrame->ShowChildWindow(nId); // Give the focus to the document view pVFrame->GetWindow().GrabFocusToDocument(); commit efd013f6fc9ff5e1cb13c23c60a7e4644c2d99de Author: Tomaž Vajngerl <[email protected]> Date: Tue Jan 13 13:13:20 2015 +0900 reuse Resize to set control size and placement in infobar Change-Id: I4e11cd8f02c41f73b2dda05effbcc17db036f3fc diff --git a/sfx2/source/dialog/infobar.cxx b/sfx2/source/dialog/infobar.cxx index fbc095f..dc8a51b 100644 --- a/sfx2/source/dialog/infobar.cxx +++ b/sfx2/source/dialog/infobar.cxx @@ -106,6 +106,7 @@ SfxInfoBarWindow::SfxInfoBarWindow( vcl::Window* pParent, const OUString& sId, { long nWidth = pParent->GetSizePixel().getWidth(); SetPosSizePixel( Point( 0, 0 ), Size( nWidth, 40 ) ); + m_pMessage->SetText( sMessage ); m_pMessage->SetBackground( Wallpaper( Color( 255, 255, 191 ) ) ); m_pMessage->Show( ); @@ -115,22 +116,16 @@ SfxInfoBarWindow::SfxInfoBarWindow( vcl::Window* pParent, const OUString& sId, m_pCloseBtn->Show( ); // Reparent the buttons and place them on the right of the bar - long nX = m_pCloseBtn->GetPosPixel( ).getX( ) - 15; - long nBtnGap = 5; vector<PushButton*>::iterator it; for (it = aButtons.begin(); it != aButtons.end(); ++it) { - PushButton* pBtn = *it; - pBtn->SetParent( this ); - long nBtnWidth = pBtn->GetSizePixel( ).getWidth(); - nX -= nBtnWidth; - pBtn->SetPosSizePixel( Point( nX, 5 ), Size( nBtnWidth, 30 ) ); - nX -= nBtnGap; - pBtn->Show( ); - m_aActionBtns.push_back(pBtn); + PushButton* pButton = *it; + pButton->SetParent(this); + pButton->Show(); + m_aActionBtns.push_back(pButton); } - m_pMessage->SetPosSizePixel( Point( 10, 10 ), Size( nX - 20, 20 ) ); + Resize(); } SfxInfoBarWindow::~SfxInfoBarWindow( ) @@ -166,6 +161,7 @@ void SfxInfoBarWindow::Paint( const Rectangle& rPaintRect ) aPolygon.append( basegfx::B2DPoint( aRect.Right( ), aRect.Bottom( ) ) ); aPolygon.append( basegfx::B2DPoint( aRect.Left( ), aRect.Bottom( ) ) ); aPolygon.setClosed( true ); + PolyPolygonColorPrimitive2D* pBack = new PolyPolygonColorPrimitive2D(basegfx::B2DPolyPolygon(aPolygon), aLightColor); aSeq[0] = pBack; @@ -187,7 +183,7 @@ void SfxInfoBarWindow::Paint( const Rectangle& rPaintRect ) Window::Paint( rPaintRect ); } -void SfxInfoBarWindow::Resize( ) +void SfxInfoBarWindow::Resize() { long nWidth = GetSizePixel().getWidth(); m_pCloseBtn->SetPosSizePixel( Point( nWidth - 25, 15 ), Size( 10, 10 ) ); commit 767ec4666f5edea8aa8e5c6aa299c1312973e5e7 Author: Tomaž Vajngerl <[email protected]> Date: Tue Jan 13 12:42:43 2015 +0900 Cleanup SfxZoomDialog, convert plain pointer to unique_ptr Change-Id: I50f16a6c2ec3dcbb12881ab42d0a2f9556cf7ec8 diff --git a/cui/source/dialogs/zoom.cxx b/cui/source/dialogs/zoom.cxx index 6fee5a5..5107c6e 100644 --- a/cui/source/dialogs/zoom.cxx +++ b/cui/source/dialogs/zoom.cxx @@ -31,27 +31,29 @@ #include <dialmgr.hxx> #include <svx/zoom_def.hxx> -// static ---------------------------------------------------------------- +namespace +{ -#define SPECIAL_FACTOR ((sal_uInt16)0xFFFF) +const sal_uInt16 SPECIAL_FACTOR = 0xFFFF; -// class SvxZoomDialog --------------------------------------------------- +} // anonymous namespace sal_uInt16 SvxZoomDialog::GetFactor() const { - if ( m_p100Btn->IsChecked() ) + if (m_p100Btn->IsChecked()) return 100; - if ( m_pUserBtn->IsChecked() ) - return (sal_uInt16)m_pUserEdit->GetValue(); + + if (m_pUserBtn->IsChecked()) + return static_cast<sal_uInt16>(m_pUserEdit->GetValue()); else return SPECIAL_FACTOR; } -void SvxZoomDialog::SetFactor( sal_uInt16 nNewFactor, sal_uInt16 nBtnId ) +void SvxZoomDialog::SetFactor(sal_uInt16 nNewFactor, sal_uInt16 nButtonId) { m_pUserEdit->Disable(); - if ( !nBtnId ) + if (!nButtonId) { if ( nNewFactor == 100 ) { @@ -62,35 +64,37 @@ void SvxZoomDialog::SetFactor( sal_uInt16 nNewFactor, sal_uInt16 nBtnId ) { m_pUserBtn->Check(); m_pUserEdit->Enable(); - m_pUserEdit->SetValue( (long)nNewFactor ); + m_pUserEdit->SetValue(static_cast<long>(nNewFactor)); m_pUserEdit->GrabFocus(); } } else { - m_pUserEdit->SetValue( (long)nNewFactor ); - - if ( ZOOMBTN_OPTIMAL == nBtnId ) - { - m_pOptimalBtn->Check(); - m_pOptimalBtn->GrabFocus(); - } - else if ( ZOOMBTN_PAGEWIDTH == nBtnId ) - { - m_pPageWidthBtn->Check(); - m_pPageWidthBtn->GrabFocus(); - } - else if ( ZOOMBTN_WHOLEPAGE == nBtnId ) + m_pUserEdit->SetValue(static_cast<long>(nNewFactor)); + switch(nButtonId) { - m_pWholePageBtn->Check(); - m_pWholePageBtn->GrabFocus(); + case ZOOMBTN_OPTIMAL: + { + m_pOptimalBtn->Check(); + m_pOptimalBtn->GrabFocus(); + } + case ZOOMBTN_PAGEWIDTH: + { + m_pPageWidthBtn->Check(); + m_pPageWidthBtn->GrabFocus(); + } + case ZOOMBTN_WHOLEPAGE: + { + m_pWholePageBtn->Check(); + m_pWholePageBtn->GrabFocus(); + } } } } -void SvxZoomDialog::HideButton( sal_uInt16 nBtnId ) +void SvxZoomDialog::HideButton(sal_uInt16 nButtonId) { - switch ( nBtnId ) + switch (nButtonId) { case ZOOMBTN_OPTIMAL: m_pOptimalBtn->Hide(); @@ -109,20 +113,25 @@ void SvxZoomDialog::HideButton( sal_uInt16 nBtnId ) } } -void SvxZoomDialog::SetLimits( sal_uInt16 nMin, sal_uInt16 nMax ) +void SvxZoomDialog::SetLimits(sal_uInt16 nMin, sal_uInt16 nMax) +{ + DBG_ASSERT(nMin < nMax, "invalid limits"); + m_pUserEdit->SetMin(nMin); + m_pUserEdit->SetFirst(nMin); + m_pUserEdit->SetMax(nMax); + m_pUserEdit->SetLast(nMax); +} + +const SfxItemSet* SvxZoomDialog::GetOutputItemSet() const { - DBG_ASSERT( nMin < nMax, "invalid limits" ); - m_pUserEdit->SetMin( nMin ); - m_pUserEdit->SetFirst( nMin ); - m_pUserEdit->SetMax( nMax ); - m_pUserEdit->SetLast( nMax ); + return mpOutSet.get(); } SvxZoomDialog::SvxZoomDialog( vcl::Window* pParent, const SfxItemSet& rCoreSet ) : SfxModalDialog(pParent, "ZoomDialog", "cui/ui/zoomdialog.ui") - , rSet(rCoreSet) - , pOutSet(NULL) - , bModified(false) + , mrSet(rCoreSet) + , mpOutSet() + , mbModified(false) { get(m_pOptimalBtn, "optimal"); @@ -138,26 +147,26 @@ SvxZoomDialog::SvxZoomDialog( vcl::Window* pParent, const SfxItemSet& rCoreSet ) get(m_pColumnsEdit, "columnssb"); get(m_pBookModeChk, "bookmode"); get(m_pOKBtn, "ok"); - Link aLink = LINK( this, SvxZoomDialog, UserHdl ); - m_p100Btn->SetClickHdl( aLink ); - m_pOptimalBtn->SetClickHdl( aLink ); - m_pPageWidthBtn->SetClickHdl( aLink ); - m_pWholePageBtn->SetClickHdl( aLink ); - m_pUserBtn->SetClickHdl( aLink ); + Link aLink = LINK(this, SvxZoomDialog, UserHdl); + m_p100Btn->SetClickHdl(aLink); + m_pOptimalBtn->SetClickHdl(aLink); + m_pPageWidthBtn->SetClickHdl(aLink); + m_pWholePageBtn->SetClickHdl(aLink); + m_pUserBtn->SetClickHdl(aLink); - Link aViewLayoutLink = LINK( this, SvxZoomDialog, ViewLayoutUserHdl ); - m_pAutomaticBtn->SetClickHdl( aViewLayoutLink ); - m_pSingleBtn->SetClickHdl( aViewLayoutLink ); - m_pColumnsBtn->SetClickHdl( aViewLayoutLink ); + Link aViewLayoutLink = LINK(this, SvxZoomDialog, ViewLayoutUserHdl); + m_pAutomaticBtn->SetClickHdl(aViewLayoutLink); + m_pSingleBtn->SetClickHdl(aViewLayoutLink); + m_pColumnsBtn->SetClickHdl(aViewLayoutLink); - Link aViewLayoutSpinLink = LINK( this, SvxZoomDialog, ViewLayoutSpinHdl ); - m_pColumnsEdit->SetModifyHdl( aViewLayoutSpinLink ); + Link aViewLayoutSpinLink = LINK(this, SvxZoomDialog, ViewLayoutSpinHdl); + m_pColumnsEdit->SetModifyHdl(aViewLayoutSpinLink); - Link aViewLayoutCheckLink = LINK( this, SvxZoomDialog, ViewLayoutCheckHdl ); - m_pBookModeChk->SetClickHdl( aViewLayoutCheckLink ); + Link aViewLayoutCheckLink = LINK(this, SvxZoomDialog, ViewLayoutCheckHdl); + m_pBookModeChk->SetClickHdl(aViewLayoutCheckLink); - m_pOKBtn->SetClickHdl( LINK( this, SvxZoomDialog, OKHdl ) ); - m_pUserEdit->SetModifyHdl( LINK( this, SvxZoomDialog, SpinHdl ) ); + m_pOKBtn->SetClickHdl(LINK(this, SvxZoomDialog, OKHdl)); + m_pUserEdit->SetModifyHdl(LINK(this, SvxZoomDialog, SpinHdl)); // default values sal_uInt16 nValue = 100; @@ -166,50 +175,48 @@ SvxZoomDialog::SvxZoomDialog( vcl::Window* pParent, const SfxItemSet& rCoreSet ) // maybe get the old value first const SfxUInt16Item* pOldUserItem = 0; - SfxObjectShell* pSh = SfxObjectShell::Current(); + SfxObjectShell* pShell = SfxObjectShell::Current(); - if ( pSh ) - pOldUserItem = static_cast<const SfxUInt16Item*>(pSh->GetItem( SID_ATTR_ZOOM_USER )); + if (pShell) + pOldUserItem = static_cast<const SfxUInt16Item*>(pShell->GetItem(SID_ATTR_ZOOM_USER)); - if ( pOldUserItem ) + if (pOldUserItem) nValue = pOldUserItem->GetValue(); // initialize UserEdit - if ( nMin > nValue ) + if (nMin > nValue) nMin = nValue; - if ( nMax < nValue ) + if (nMax < nValue) nMax = nValue; - m_pUserEdit->SetMin( nMin ); - m_pUserEdit->SetFirst( nMin ); - m_pUserEdit->SetMax( nMax ); - m_pUserEdit->SetLast( nMax ); - m_pUserEdit->SetValue( nValue ); + + SetLimits(nMin, nMax); + m_pUserEdit->SetValue(nValue); m_pUserEdit->SetAccessibleName(m_pUserBtn->GetText()); m_pColumnsEdit->SetAccessibleName(m_pColumnsBtn->GetText()); m_pColumnsEdit->SetAccessibleRelationMemberOf(m_pColumnsBtn); m_pBookModeChk->SetAccessibleRelationMemberOf(m_pColumnsBtn); - const SfxPoolItem& rItem = rSet.Get( rSet.GetPool()->GetWhich( SID_ATTR_ZOOM ) ); + const SfxPoolItem& rItem = mrSet.Get(mrSet.GetPool()->GetWhich(SID_ATTR_ZOOM)); - if ( rItem.ISA(SvxZoomItem) ) + if (rItem.ISA(SvxZoomItem)) { const SvxZoomItem& rZoomItem = static_cast<const SvxZoomItem&>(rItem); const sal_uInt16 nZoom = rZoomItem.GetValue(); const SvxZoomType eType = rZoomItem.GetType(); const sal_uInt16 nValSet = rZoomItem.GetValueSet(); - sal_uInt16 nBtnId = 0; + sal_uInt16 nButtonId = 0; - switch ( eType ) + switch (eType) { case SVX_ZOOM_OPTIMAL: - nBtnId = ZOOMBTN_OPTIMAL; + nButtonId = ZOOMBTN_OPTIMAL; break; case SVX_ZOOM_PAGEWIDTH: - nBtnId = ZOOMBTN_PAGEWIDTH; + nButtonId = ZOOMBTN_PAGEWIDTH; break; case SVX_ZOOM_WHOLEPAGE: - nBtnId = ZOOMBTN_WHOLEPAGE; + nButtonId = ZOOMBTN_WHOLEPAGE; break; case SVX_ZOOM_PERCENT: break; @@ -217,54 +224,56 @@ SvxZoomDialog::SvxZoomDialog( vcl::Window* pParent, const SfxItemSet& rCoreSet ) break; } - if ( !(SVX_ZOOM_ENABLE_100 & nValSet) ) + if (!(SVX_ZOOM_ENABLE_100 & nValSet)) m_p100Btn->Disable(); - if ( !(SVX_ZOOM_ENABLE_OPTIMAL & nValSet) ) + if (!(SVX_ZOOM_ENABLE_OPTIMAL & nValSet)) m_pOptimalBtn->Disable(); - if ( !(SVX_ZOOM_ENABLE_PAGEWIDTH & nValSet) ) + if (!(SVX_ZOOM_ENABLE_PAGEWIDTH & nValSet)) m_pPageWidthBtn->Disable(); - if ( !(SVX_ZOOM_ENABLE_WHOLEPAGE & nValSet) ) + if (!(SVX_ZOOM_ENABLE_WHOLEPAGE & nValSet)) m_pWholePageBtn->Disable(); - SetFactor( nZoom, nBtnId ); + + SetFactor(nZoom, nButtonId); } else { const sal_uInt16 nZoom = static_cast<const SfxUInt16Item&>(rItem).GetValue(); - SetFactor( nZoom ); + SetFactor(nZoom); } - const SfxPoolItem* pViewLayoutItem = 0; - if ( SfxItemState::SET == rSet.GetItemState( SID_ATTR_VIEWLAYOUT, false, &pViewLayoutItem ) ) + const SfxPoolItem* pPoolViewLayoutItem = NULL; + if (SfxItemState::SET == mrSet.GetItemState(SID_ATTR_VIEWLAYOUT, false, &pPoolViewLayoutItem)) { - const sal_uInt16 nColumns = static_cast<const SvxViewLayoutItem*>(pViewLayoutItem)->GetValue(); - const bool bBookMode = static_cast<const SvxViewLayoutItem*>(pViewLayoutItem)->IsBookMode(); + const SvxViewLayoutItem* pViewLayoutItem = static_cast<const SvxViewLayoutItem*>(pPoolViewLayoutItem); + const sal_uInt16 nColumns = pViewLayoutItem->GetValue(); + const bool bBookMode = pViewLayoutItem->IsBookMode(); - if ( 0 == nColumns ) + if (0 == nColumns) { m_pAutomaticBtn->Check(); - m_pColumnsEdit->SetValue( 2 ); + m_pColumnsEdit->SetValue(2); m_pColumnsEdit->Disable(); m_pBookModeChk->Disable(); } - else if ( 1 == nColumns) + else if (1 == nColumns) { m_pSingleBtn->Check(); - m_pColumnsEdit->SetValue( 2 ); + m_pColumnsEdit->SetValue(2); m_pColumnsEdit->Disable(); m_pBookModeChk->Disable(); } else { m_pColumnsBtn->Check(); - if ( !bBookMode ) + if (!bBookMode) { - m_pColumnsEdit->SetValue( nColumns ); - if ( 0 != nColumns % 2 ) + m_pColumnsEdit->SetValue(nColumns); + if (nColumns % 2 != 0) m_pBookModeChk->Disable(); } else { - m_pColumnsEdit->SetValue( nColumns ); + m_pColumnsEdit->SetValue(nColumns); m_pBookModeChk->Check(); } } @@ -277,52 +286,52 @@ SvxZoomDialog::SvxZoomDialog( vcl::Window* pParent, const SfxItemSet& rCoreSet ) } SvxZoomDialog::~SvxZoomDialog() -{ - delete pOutSet; - pOutSet = 0; -} +{} -IMPL_LINK( SvxZoomDialog, UserHdl, RadioButton *, pBtn ) +IMPL_LINK(SvxZoomDialog, UserHdl, RadioButton *, pButton) { - bModified = true; + mbModified = true; - if (pBtn == m_pUserBtn) + if (pButton == m_pUserBtn) { m_pUserEdit->Enable(); m_pUserEdit->GrabFocus(); } else + { m_pUserEdit->Disable(); + } return 0; } IMPL_LINK_NOARG(SvxZoomDialog, SpinHdl) { - if ( !m_pUserBtn->IsChecked() ) + if (!m_pUserBtn->IsChecked()) return 0; - bModified = true; + + mbModified = true; return 0; } -IMPL_LINK( SvxZoomDialog, ViewLayoutUserHdl, RadioButton *, pBtn ) +IMPL_LINK(SvxZoomDialog, ViewLayoutUserHdl, RadioButton*, pButton) { - bModified = true; + mbModified = true; - if (pBtn == m_pAutomaticBtn) + if (pButton == m_pAutomaticBtn) { m_pColumnsEdit->Disable(); m_pBookModeChk->Disable(); } - else if (pBtn == m_pSingleBtn) + else if (pButton == m_pSingleBtn) { m_pColumnsEdit->Disable(); m_pBookModeChk->Disable(); } - else if (pBtn == m_pColumnsBtn) + else if (pButton == m_pColumnsBtn) { m_pColumnsEdit->Enable(); m_pColumnsEdit->GrabFocus(); - if ( 0 == m_pColumnsEdit->GetValue() % 2 ) + if (m_pColumnsEdit->GetValue() % 2 == 0) m_pBookModeChk->Enable(); } else @@ -334,71 +343,75 @@ IMPL_LINK( SvxZoomDialog, ViewLayoutUserHdl, RadioButton *, pBtn ) return 0; } -IMPL_LINK( SvxZoomDialog, ViewLayoutSpinHdl, NumericField *, pEdt ) +IMPL_LINK(SvxZoomDialog, ViewLayoutSpinHdl, NumericField*, pEdit) { - if ( pEdt == m_pColumnsEdit && !m_pColumnsBtn->IsChecked() ) + if (pEdit == m_pColumnsEdit && !m_pColumnsBtn->IsChecked()) return 0; - if ( 0 == m_pColumnsEdit->GetValue() % 2 ) + if (m_pColumnsEdit->GetValue() % 2 == 0) + { m_pBookModeChk->Enable(); + } else { - m_pBookModeChk->Check( false ); + m_pBookModeChk->Check(false); m_pBookModeChk->Disable(); } - bModified = true; + mbModified = true; return 0; } -IMPL_LINK( SvxZoomDialog, ViewLayoutCheckHdl, CheckBox *, pChk ) +IMPL_LINK(SvxZoomDialog, ViewLayoutCheckHdl, CheckBox*, pCheckBox) { - if (pChk == m_pBookModeChk && !m_pColumnsBtn->IsChecked()) + if (pCheckBox == m_pBookModeChk && !m_pColumnsBtn->IsChecked()) return 0; - bModified = true; + mbModified = true; return 0; } -IMPL_LINK( SvxZoomDialog, OKHdl, Button *, pBtn ) +IMPL_LINK(SvxZoomDialog, OKHdl, Button*, pButton) { - if ( bModified || m_pOKBtn != pBtn ) + if (mbModified || m_pOKBtn != pButton) { - SvxZoomItem aZoomItem( SVX_ZOOM_PERCENT, 0, rSet.GetPool()->GetWhich( SID_ATTR_ZOOM ) ); - SvxViewLayoutItem aViewLayoutItem( 0, false, rSet.GetPool()->GetWhich( SID_ATTR_VIEWLAYOUT ) ); + SvxZoomItem aZoomItem(SVX_ZOOM_PERCENT, 0, mrSet.GetPool()->GetWhich(SID_ATTR_ZOOM)); + SvxViewLayoutItem aViewLayoutItem(0, false, mrSet.GetPool()->GetWhich(SID_ATTR_VIEWLAYOUT)); - if ( m_pOKBtn == pBtn ) + if (m_pOKBtn == pButton) { sal_uInt16 nFactor = GetFactor(); - if ( SPECIAL_FACTOR == nFactor ) + if (SPECIAL_FACTOR == nFactor) { - if ( m_pOptimalBtn->IsChecked() ) - aZoomItem.SetType( SVX_ZOOM_OPTIMAL ); - else if ( m_pPageWidthBtn->IsChecked() ) - aZoomItem.SetType( SVX_ZOOM_PAGEWIDTH ); - else if ( m_pWholePageBtn->IsChecked() ) - aZoomItem.SetType( SVX_ZOOM_WHOLEPAGE ); + if (m_pOptimalBtn->IsChecked()) + aZoomItem.SetType(SVX_ZOOM_OPTIMAL); + else if (m_pPageWidthBtn->IsChecked()) + aZoomItem.SetType(SVX_ZOOM_PAGEWIDTH); + else if (m_pWholePageBtn->IsChecked()) + aZoomItem.SetType(SVX_ZOOM_WHOLEPAGE); } else - aZoomItem.SetValue( nFactor ); + { + aZoomItem.SetValue(nFactor); + } - if ( m_pAutomaticBtn->IsChecked() ) + if (m_pAutomaticBtn->IsChecked()) { - aViewLayoutItem.SetValue( 0 ); - aViewLayoutItem.SetBookMode( false ); + aViewLayoutItem.SetValue(0); + aViewLayoutItem.SetBookMode(false); } - if ( m_pSingleBtn->IsChecked() ) + if (m_pSingleBtn->IsChecked()) { - aViewLayoutItem.SetValue( 1 ); - aViewLayoutItem.SetBookMode( false ); + aViewLayoutItem.SetValue(1); + aViewLayoutItem.SetBookMode(false); } - else if ( m_pColumnsBtn->IsChecked() ) + else if (m_pColumnsBtn->IsChecked()) { - aViewLayoutItem.SetValue( static_cast<sal_uInt16>(m_pColumnsEdit->GetValue()) ); - aViewLayoutItem.SetBookMode( m_pBookModeChk->IsChecked() ); + aViewLayoutItem.SetValue(static_cast<sal_uInt16>(m_pColumnsEdit->GetValue())); + aViewLayoutItem.SetBookMode(m_pBookModeChk->IsChecked()); } } else @@ -406,23 +419,27 @@ IMPL_LINK( SvxZoomDialog, OKHdl, Button *, pBtn ) OSL_FAIL("Wrong Button"); return 0; } - pOutSet = new SfxItemSet( rSet ); - pOutSet->Put( aZoomItem ); + mpOutSet.reset(new SfxItemSet(mrSet)); + mpOutSet->Put(aZoomItem); // don't set attribute in case the whole viewlayout stuff is disabled: if (m_pViewFrame->IsEnabled()) - pOutSet->Put(aViewLayoutItem); + mpOutSet->Put(aViewLayoutItem); // memorize value from the UserEdit beyond the dialog SfxObjectShell* pShell = SfxObjectShell::Current(); - if ( pShell ) - pShell->PutItem( SfxUInt16Item( SID_ATTR_ZOOM_USER, - (sal_uInt16)m_pUserEdit->GetValue() ) ); + if (pShell) + { + sal_uInt16 nZoomValue = static_cast<sal_uInt16>(m_pUserEdit->GetValue()); + pShell->PutItem(SfxUInt16Item(SID_ATTR_ZOOM_USER, nZoomValue)); + } EndDialog( RET_OK ); } else + { EndDialog( RET_CANCEL ); + } return 0; } diff --git a/cui/source/inc/zoom.hxx b/cui/source/inc/zoom.hxx index a8b3176..3cccace 100644 --- a/cui/source/inc/zoom.hxx +++ b/cui/source/inc/zoom.hxx @@ -27,44 +27,44 @@ class SvxZoomDialog : public SfxModalDialog { private: - RadioButton* m_pOptimalBtn; - RadioButton* m_pWholePageBtn; - RadioButton* m_pPageWidthBtn; - RadioButton* m_p100Btn; - RadioButton* m_pUserBtn; - MetricField* m_pUserEdit; + RadioButton* m_pOptimalBtn; + RadioButton* m_pWholePageBtn; + RadioButton* m_pPageWidthBtn; + RadioButton* m_p100Btn; + RadioButton* m_pUserBtn; + MetricField* m_pUserEdit; - VclContainer* m_pViewFrame; - RadioButton* m_pAutomaticBtn; - RadioButton* m_pSingleBtn; - RadioButton* m_pColumnsBtn; - NumericField* m_pColumnsEdit; - CheckBox* m_pBookModeChk; + VclContainer* m_pViewFrame; + RadioButton* m_pAutomaticBtn; + RadioButton* m_pSingleBtn; + RadioButton* m_pColumnsBtn; + NumericField* m_pColumnsEdit; + CheckBox* m_pBookModeChk; - OKButton* m_pOKBtn; + OKButton* m_pOKBtn; - const SfxItemSet& rSet; - SfxItemSet* pOutSet; - bool bModified; + const SfxItemSet& mrSet; + std::unique_ptr<SfxItemSet> mpOutSet; + bool mbModified; - DECL_LINK( UserHdl, RadioButton* ); - DECL_LINK(SpinHdl, void *); - DECL_LINK( ViewLayoutUserHdl, RadioButton* ); - DECL_LINK( ViewLayoutSpinHdl, NumericField* ); - DECL_LINK( ViewLayoutCheckHdl, CheckBox* ); - DECL_LINK( OKHdl, Button* ); + DECL_LINK(UserHdl, RadioButton*); + DECL_LINK(SpinHdl, void*); + DECL_LINK(ViewLayoutUserHdl, RadioButton*); + DECL_LINK(ViewLayoutSpinHdl, NumericField*); + DECL_LINK(ViewLayoutCheckHdl, CheckBox*); + DECL_LINK(OKHdl, Button*); public: - SvxZoomDialog( vcl::Window* pParent, const SfxItemSet& rCoreSet ); + SvxZoomDialog(vcl::Window* pParent, const SfxItemSet& rCoreSet); virtual ~SvxZoomDialog(); - const SfxItemSet* GetOutputItemSet() const { return pOutSet; } + const SfxItemSet* GetOutputItemSet() const; - sal_uInt16 GetFactor() const; - void SetFactor( sal_uInt16 nNewFactor, sal_uInt16 nBtnId = 0 ); + sal_uInt16 GetFactor() const; + void SetFactor(sal_uInt16 nNewFactor, sal_uInt16 nButtonId = 0); - void HideButton( sal_uInt16 nBtnId ); - void SetLimits( sal_uInt16 nMin, sal_uInt16 nMax ); + void HideButton(sal_uInt16 nButtonId); + void SetLimits(sal_uInt16 nMin, sal_uInt16 nMax); }; #endif commit 3b3eeff3fdf19833b8793e15c9a57ff3044d9118 Author: Tomaž Vajngerl <[email protected]> Date: Fri Jan 9 23:53:16 2015 +0900 infobar: unique_ptr and make more readable Change-Id: Iadaba3d9c16bdde3715d4836fa0d5661b90ccab4 diff --git a/sfx2/source/dialog/infobar.cxx b/sfx2/source/dialog/infobar.cxx index d49b5e2..fbc095f 100644 --- a/sfx2/source/dialog/infobar.cxx +++ b/sfx2/source/dialog/infobar.cxx @@ -22,6 +22,11 @@ #include <vcl/settings.hxx> using namespace std; +using namespace drawinglayer::geometry; +using namespace drawinglayer::processor2d; +using namespace drawinglayer::primitive2d; +using namespace drawinglayer::attribute; +using namespace drawinglayer::geometry; namespace { @@ -39,14 +44,13 @@ namespace void SfxCloseButton::Paint( const Rectangle& ) { - const drawinglayer::geometry::ViewInformation2D aNewViewInfos; - drawinglayer::processor2d::BaseProcessor2D * pProcessor = - drawinglayer::processor2d::createBaseProcessor2DFromOutputDevice( - *this, aNewViewInfos ); + const ViewInformation2D aNewViewInfos; + const unique_ptr<BaseProcessor2D> pProcessor( + createBaseProcessor2DFromOutputDevice(*this, aNewViewInfos)); const Rectangle aRect( Rectangle( Point( 0, 0 ), PixelToLogic( GetSizePixel() ) ) ); - drawinglayer::primitive2d::Primitive2DSequence aSeq( 2 ); + Primitive2DSequence aSeq( 2 ); basegfx::BColor aLightColor( 1.0, 1.0, 191.0 / 255.0 ); basegfx::BColor aDarkColor( 217.0 / 255.0, 217.0 / 255.0, 78.0 / 255.0 ); @@ -66,12 +70,11 @@ namespace aPolygon.append( basegfx::B2DPoint( aRect.Right( ), aRect.Bottom( ) ) ); aPolygon.append( basegfx::B2DPoint( aRect.Left( ), aRect.Bottom( ) ) ); aPolygon.setClosed( true ); - drawinglayer::primitive2d::PolyPolygonColorPrimitive2D* pBack = - new drawinglayer::primitive2d::PolyPolygonColorPrimitive2D( + PolyPolygonColorPrimitive2D* pBack = new PolyPolygonColorPrimitive2D( basegfx::B2DPolyPolygon( aPolygon ), aLightColor ); aSeq[0] = pBack; - drawinglayer::attribute::LineAttribute aLineAttribute( aDarkColor, 2.0 ); + LineAttribute aLineAttribute(aDarkColor, 2.0); // Cross basegfx::B2DPolyPolygon aCross; @@ -84,14 +87,12 @@ namespace aLine2.append( basegfx::B2DPoint( aRect.Left(), aRect.Bottom( ) ) ); aCross.append( aLine2 ); - drawinglayer::primitive2d::PolyPolygonStrokePrimitive2D * pCross = - new drawinglayer::primitive2d::PolyPolygonStrokePrimitive2D ( - aCross, aLineAttribute, drawinglayer::attribute::StrokeAttribute( ) ); + PolyPolygonStrokePrimitive2D * pCross = + new PolyPolygonStrokePrimitive2D(aCross, aLineAttribute, StrokeAttribute()); aSeq[1] = pCross; - pProcessor->process( aSeq ); - delete pProcessor; + pProcessor->process(aSeq); } } @@ -137,14 +138,13 @@ SfxInfoBarWindow::~SfxInfoBarWindow( ) void SfxInfoBarWindow::Paint( const Rectangle& rPaintRect ) { - const drawinglayer::geometry::ViewInformation2D aNewViewInfos; - drawinglayer::processor2d::BaseProcessor2D * pProcessor = - drawinglayer::processor2d::createBaseProcessor2DFromOutputDevice( - *this, aNewViewInfos ); + const ViewInformation2D aNewViewInfos; + const unique_ptr<BaseProcessor2D> pProcessor( + createBaseProcessor2DFromOutputDevice(*this, aNewViewInfos)); const Rectangle aRect( Rectangle( Point( 0, 0 ), PixelToLogic( GetSizePixel() ) ) ); - drawinglayer::primitive2d::Primitive2DSequence aSeq( 2 ); + Primitive2DSequence aSeq( 2 ); basegfx::BColor aLightColor( 1.0, 1.0, 191.0 / 255.0 ); basegfx::BColor aDarkColor( 217.0 / 255.0, 217.0 / 255.0, 78.0 / 255.0 ); @@ -166,26 +166,23 @@ void SfxInfoBarWindow::Paint( const Rectangle& rPaintRect ) aPolygon.append( basegfx::B2DPoint( aRect.Right( ), aRect.Bottom( ) ) ); aPolygon.append( basegfx::B2DPoint( aRect.Left( ), aRect.Bottom( ) ) ); aPolygon.setClosed( true ); - drawinglayer::primitive2d::PolyPolygonColorPrimitive2D* pBack = - new drawinglayer::primitive2d::PolyPolygonColorPrimitive2D( - basegfx::B2DPolyPolygon( aPolygon ), aLightColor ); + PolyPolygonColorPrimitive2D* pBack = + new PolyPolygonColorPrimitive2D(basegfx::B2DPolyPolygon(aPolygon), aLightColor); aSeq[0] = pBack; - drawinglayer::attribute::LineAttribute aLineAttribute( aDarkColor, 1.0 ); + LineAttribute aLineAttribute(aDarkColor, 1.0); // Bottom dark line basegfx::B2DPolygon aPolygonBottom; aPolygonBottom.append( basegfx::B2DPoint( aRect.Left(), aRect.Bottom( ) ) ); aPolygonBottom.append( basegfx::B2DPoint( aRect.Right(), aRect.Bottom( ) ) ); - drawinglayer::primitive2d::PolygonStrokePrimitive2D * pLineBottom = - new drawinglayer::primitive2d::PolygonStrokePrimitive2D ( - aPolygonBottom, aLineAttribute ); + PolygonStrokePrimitive2D * pLineBottom = + new PolygonStrokePrimitive2D (aPolygonBottom, aLineAttribute); aSeq[1] = pLineBottom; pProcessor->process( aSeq ); - delete pProcessor; Window::Paint( rPaintRect ); } commit 283170e7a37855b6902d3828e42f3265057d9c77 Author: Tomaž Vajngerl <[email protected]> Date: Fri Jan 9 23:43:31 2015 +0900 ptr_vector & unique_ptr for infobar Change-Id: Id0d9be65aff504ff6092fa64e8207ddb1b7aeea5 diff --git a/include/sfx2/infobar.hxx b/include/sfx2/infobar.hxx index 386e415..ee92d39 100644 --- a/include/sfx2/infobar.hxx +++ b/include/sfx2/infobar.hxx @@ -17,6 +17,8 @@ #include <sfx2/dllapi.h> #include <sfx2/childwin.hxx> +#include <boost/ptr_container/ptr_vector.hpp> + /** SfxChildWindow for positioning the InfoBar in the view. */ class SFX2_DLLPUBLIC SfxInfoBarContainerChild : public SfxChildWindow @@ -41,10 +43,12 @@ class SFX2_DLLPUBLIC SfxInfoBarContainerChild : public SfxChildWindow class SfxInfoBarWindow : public vcl::Window { private: - OUString m_sId; - FixedText* m_pMessage; - Button* m_pCloseBtn; - std::vector< PushButton* > m_aActionBtns; + OUString m_sId; + + std::unique_ptr<FixedText> m_pMessage; + std::unique_ptr<Button> m_pCloseBtn; + + boost::ptr_vector<PushButton> m_aActionBtns; public: SfxInfoBarWindow( vcl::Window* parent, const OUString& sId, @@ -63,8 +67,8 @@ class SfxInfoBarWindow : public vcl::Window class SfxInfoBarContainerWindow : public vcl::Window { private: - SfxInfoBarContainerChild* m_pChildWin; - std::vector< SfxInfoBarWindow* > m_pInfoBars; + SfxInfoBarContainerChild* m_pChildWin; + boost::ptr_vector<SfxInfoBarWindow> m_pInfoBars; public: SfxInfoBarContainerWindow( SfxInfoBarContainerChild* pChildWin ); diff --git a/sfx2/source/dialog/infobar.cxx b/sfx2/source/dialog/infobar.cxx index fdb37eb..d49b5e2 100644 --- a/sfx2/source/dialog/infobar.cxx +++ b/sfx2/source/dialog/infobar.cxx @@ -96,21 +96,19 @@ namespace } SfxInfoBarWindow::SfxInfoBarWindow( vcl::Window* pParent, const OUString& sId, - const OUString& sMessage, vector< PushButton* > aButtons ) : + const OUString& sMessage, vector<PushButton*> aButtons ) : Window( pParent, 0 ), m_sId( sId ), - m_pMessage( NULL ), - m_pCloseBtn( NULL ), - m_aActionBtns( aButtons ) + m_pMessage(new FixedText(this, 0)), + m_pCloseBtn(new SfxCloseButton(this)), + m_aActionBtns() { long nWidth = pParent->GetSizePixel().getWidth(); SetPosSizePixel( Point( 0, 0 ), Size( nWidth, 40 ) ); - m_pMessage = new FixedText( this, 0 ); m_pMessage->SetText( sMessage ); m_pMessage->SetBackground( Wallpaper( Color( 255, 255, 191 ) ) ); m_pMessage->Show( ); - m_pCloseBtn = new SfxCloseButton( this ); m_pCloseBtn->SetPosSizePixel( Point( nWidth - 25, 15 ), Size( 10, 10 ) ); m_pCloseBtn->SetClickHdl( LINK( this, SfxInfoBarWindow, CloseHandler ) ); m_pCloseBtn->Show( ); @@ -118,8 +116,8 @@ SfxInfoBarWindow::SfxInfoBarWindow( vcl::Window* pParent, const OUString& sId, // Reparent the buttons and place them on the right of the bar long nX = m_pCloseBtn->GetPosPixel( ).getX( ) - 15; long nBtnGap = 5; - for ( vector< PushButton* >::iterator it = m_aActionBtns.begin( ); - it != m_aActionBtns.end( ); ++it ) + vector<PushButton*>::iterator it; + for (it = aButtons.begin(); it != aButtons.end(); ++it) { PushButton* pBtn = *it; pBtn->SetParent( this ); @@ -128,23 +126,14 @@ SfxInfoBarWindow::SfxInfoBarWindow( vcl::Window* pParent, const OUString& sId, pBtn->SetPosSizePixel( Point( nX, 5 ), Size( nBtnWidth, 30 ) ); nX -= nBtnGap; pBtn->Show( ); + m_aActionBtns.push_back(pBtn); } m_pMessage->SetPosSizePixel( Point( 10, 10 ), Size( nX - 20, 20 ) ); } SfxInfoBarWindow::~SfxInfoBarWindow( ) -{ - delete m_pMessage; - delete m_pCloseBtn; - - for ( vector< PushButton* >::iterator it = m_aActionBtns.begin( ); - it != m_aActionBtns.end( ); ++it ) - { - delete *it; - } - m_aActionBtns.clear( ); -} +{} void SfxInfoBarWindow::Paint( const Rectangle& rPaintRect ) { @@ -209,13 +198,12 @@ void SfxInfoBarWindow::Resize( ) // Reparent the buttons and place them on the right of the bar long nX = m_pCloseBtn->GetPosPixel( ).getX( ) - 15; long nBtnGap = 5; - for ( vector< PushButton* >::iterator it = m_aActionBtns.begin( ); - it != m_aActionBtns.end( ); ++it ) + boost::ptr_vector<PushButton>::iterator it; + for (it = m_aActionBtns.begin(); it != m_aActionBtns.end(); ++it) { - PushButton* pBtn = *it; - long nBtnWidth = pBtn->GetSizePixel( ).getWidth(); + long nBtnWidth = it->GetSizePixel( ).getWidth(); nX -= nBtnWidth; - pBtn->SetPosSizePixel( Point( nX, 5 ), Size( nBtnWidth, 30 ) ); + it->SetPosSizePixel( Point( nX, 5 ), Size( nBtnWidth, 30 ) ); nX -= nBtnGap; } @@ -231,18 +219,12 @@ IMPL_LINK_NOARG( SfxInfoBarWindow, CloseHandler ) SfxInfoBarContainerWindow::SfxInfoBarContainerWindow( SfxInfoBarContainerChild* pChildWin ) : Window( pChildWin->GetParent( ), 0 ), m_pChildWin( pChildWin ), - m_pInfoBars( ) + m_pInfoBars() { } SfxInfoBarContainerWindow::~SfxInfoBarContainerWindow( ) { - for ( vector< SfxInfoBarWindow* >::iterator it = m_pInfoBars.begin( ); - it != m_pInfoBars.end( ); ++it ) - { - delete *it; - } - m_pInfoBars.clear( ); } void SfxInfoBarContainerWindow::appendInfoBar( const OUString& sId, const OUString& sMessage, vector< PushButton* > aButtons ) @@ -261,36 +243,32 @@ void SfxInfoBarContainerWindow::appendInfoBar( const OUString& sId, const OUStri SfxInfoBarWindow* SfxInfoBarContainerWindow::getInfoBar( const OUString& sId ) { - SfxInfoBarWindow* pRet = NULL; - for ( vector< SfxInfoBarWindow* >::iterator it = m_pInfoBars.begin( ); - it != m_pInfoBars.end( ) && pRet == NULL; ++it ) + boost::ptr_vector<SfxInfoBarWindow>::iterator it; + for (it = m_pInfoBars.begin(); it != m_pInfoBars.end(); ++it) { - SfxInfoBarWindow* pBar = *it; - if ( pBar->getId( ) == sId ) - pRet = pBar; + if (it->getId() == sId) + return &(*it); } - return pRet; + return NULL; } void SfxInfoBarContainerWindow::removeInfoBar( SfxInfoBarWindow* pInfoBar ) { - for ( vector< SfxInfoBarWindow* >::iterator it = m_pInfoBars.begin( ); - it != m_pInfoBars.end( ); ++it ) + boost::ptr_vector<SfxInfoBarWindow>::iterator it; + for (it = m_pInfoBars.begin(); it != m_pInfoBars.end(); ++it) { - if ( pInfoBar == *it ) + if (pInfoBar == &(*it)) { - m_pInfoBars.erase( it ); + m_pInfoBars.erase(it); break; } } - delete pInfoBar; long nY = 0; - for ( vector< SfxInfoBarWindow* >::iterator it = m_pInfoBars.begin( ); it != m_pInfoBars.end( ); ++it ) + for (it = m_pInfoBars.begin(); it != m_pInfoBars.end(); ++it) { - SfxInfoBarWindow* pBar = *it; - pBar->SetPosPixel( Point( 0, nY ) ); - nY += pBar->GetSizePixel( ).getHeight( ); + it->SetPosPixel( Point( 0, nY ) ); + nY += it->GetSizePixel( ).getHeight( ); } Size aSize = GetSizePixel( ); @@ -304,14 +282,14 @@ void SfxInfoBarContainerWindow::Resize( ) { // Only need to change the width of the infobars long nWidth = GetSizePixel( ).getWidth( ); - for ( vector< SfxInfoBarWindow * >::iterator it = m_pInfoBars.begin( ); - it != m_pInfoBars.end( ); ++it ) + + boost::ptr_vector<SfxInfoBarWindow>::iterator it; + for (it = m_pInfoBars.begin(); it != m_pInfoBars.end(); ++it) { - SfxInfoBarWindow* pInfoBar = *it; - Size aSize = pInfoBar->GetSizePixel( ); + Size aSize = it->GetSizePixel( ); aSize.setWidth( nWidth ); - pInfoBar->SetSizePixel( aSize ); - pInfoBar->Resize( ); + it->SetSizePixel( aSize ); + it->Resize( ); } }
_______________________________________________ Libreoffice-commits mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
