diff options
Diffstat (limited to 'chart2/source/controller/sidebar/ChartAreaPanel.cxx')
-rw-r--r-- | chart2/source/controller/sidebar/ChartAreaPanel.cxx | 85 |
1 files changed, 42 insertions, 43 deletions
diff --git a/chart2/source/controller/sidebar/ChartAreaPanel.cxx b/chart2/source/controller/sidebar/ChartAreaPanel.cxx index 55a756c6edf3..cb660661c140 100644 --- a/chart2/source/controller/sidebar/ChartAreaPanel.cxx +++ b/chart2/source/controller/sidebar/ChartAreaPanel.cxx @@ -14,11 +14,11 @@ #include "ChartAreaPanel.hxx" #include <ChartController.hxx> +#include <ChartModel.hxx> #include <ViewElementListProvider.hxx> #include <PropertyHelper.hxx> #include <chartview/DrawModelWrapper.hxx> -#include <com/sun/star/util/XModifyBroadcaster.hpp> #include <com/sun/star/chart2/XDiagram.hpp> #include <sfx2/weldutils.hxx> @@ -41,7 +41,7 @@ SvxColorToolBoxControl* getColorToolBoxControl(const ToolbarUnoDispatcher& rColo return pToolBoxColorControl; } -OUString getCID(const css::uno::Reference<css::frame::XModel>& xModel) +OUString getCID(const rtl::Reference<::chart::ChartModel>& xModel) { css::uno::Reference<css::frame::XController> xController(xModel->getCurrentController()); css::uno::Reference<css::view::XSelectionSupplier> xSelectionSupplier(xController, css::uno::UNO_QUERY); @@ -55,7 +55,7 @@ OUString getCID(const css::uno::Reference<css::frame::XModel>& xModel) ChartController* pController = dynamic_cast<ChartController*>(xController.get()); if (pController) { - pController->select( css::uno::Any( ObjectIdentifier::createClassifiedIdentifier( OBJECTTYPE_PAGE, OUString() ) ) ); + pController->select( css::uno::Any( ObjectIdentifier::createClassifiedIdentifier( OBJECTTYPE_PAGE, u"" ) ) ); xSelectionSupplier = css::uno::Reference<css::view::XSelectionSupplier>(xController, css::uno::UNO_QUERY); if (xSelectionSupplier.is()) aAny = xSelectionSupplier->getSelection(); @@ -72,7 +72,7 @@ OUString getCID(const css::uno::Reference<css::frame::XModel>& xModel) } css::uno::Reference<css::beans::XPropertySet> getPropSet( - const css::uno::Reference<css::frame::XModel>& xModel) + const rtl::Reference<::chart::ChartModel>& xModel) { OUString aCID = getCID(xModel); css::uno::Reference<css::beans::XPropertySet> xPropSet = @@ -256,8 +256,8 @@ private: } -VclPtr<vcl::Window> ChartAreaPanel::Create( - vcl::Window* pParent, +std::unique_ptr<PanelLayout> ChartAreaPanel::Create( + weld::Widget* pParent, const css::uno::Reference<css::frame::XFrame>& rxFrame, ChartController* pController) { @@ -266,15 +266,14 @@ VclPtr<vcl::Window> ChartAreaPanel::Create( if (!rxFrame.is()) throw css::lang::IllegalArgumentException("no XFrame given to ChartAxisPanel::Create", nullptr, 1); - return VclPtr<ChartAreaPanel>::Create( - pParent, rxFrame, pController); + return std::make_unique<ChartAreaPanel>(pParent, rxFrame, pController); } -ChartAreaPanel::ChartAreaPanel(vcl::Window* pParent, +ChartAreaPanel::ChartAreaPanel(weld::Widget* pParent, const css::uno::Reference<css::frame::XFrame>& rxFrame, ChartController* pController): svx::sidebar::AreaPropertyPanelBase(pParent, rxFrame), - mxModel(pController->getModel()), + mxModel(pController->getChartModel()), mxListener(new ChartSidebarModifyListener(this)), mxSelectionListener(new ChartSidebarSelectionListener(this)), mbUpdate(true), @@ -284,35 +283,22 @@ ChartAreaPanel::ChartAreaPanel(vcl::Window* pParent, std::vector<ObjectType> aAcceptedTypes { OBJECTTYPE_PAGE, OBJECTTYPE_DIAGRAM, OBJECTTYPE_DATA_SERIES, OBJECTTYPE_DATA_POINT, OBJECTTYPE_TITLE, OBJECTTYPE_LEGEND}; - mxSelectionListener->setAcceptedTypes(aAcceptedTypes); + mxSelectionListener->setAcceptedTypes(std::move(aAcceptedTypes)); Initialize(); } ChartAreaPanel::~ChartAreaPanel() { - disposeOnce(); -} - -void ChartAreaPanel::dispose() -{ - css::uno::Reference<css::util::XModifyBroadcaster> xBroadcaster(mxModel, css::uno::UNO_QUERY_THROW); - xBroadcaster->removeModifyListener(mxListener); - - css::uno::Reference<css::view::XSelectionSupplier> xSelectionSupplier(mxModel->getCurrentController(), css::uno::UNO_QUERY); - if (xSelectionSupplier.is()) - xSelectionSupplier->removeSelectionChangeListener(mxSelectionListener.get()); - - AreaPropertyPanelBase::dispose(); + doUpdateModel(nullptr); } void ChartAreaPanel::Initialize() { - css::uno::Reference<css::util::XModifyBroadcaster> xBroadcaster(mxModel, css::uno::UNO_QUERY_THROW); - xBroadcaster->addModifyListener(mxListener); + mxModel->addModifyListener(mxListener); css::uno::Reference<css::view::XSelectionSupplier> xSelectionSupplier(mxModel->getCurrentController(), css::uno::UNO_QUERY); if (xSelectionSupplier.is()) - xSelectionSupplier->addSelectionChangeListener(mxSelectionListener.get()); + xSelectionSupplier->addSelectionChangeListener(mxSelectionListener); SvxColorToolBoxControl* pToolBoxColor = getColorToolBoxControl(*mxColorDispatch); pToolBoxColor->setColorSelectFunction(maFillColorWrapper); @@ -347,7 +333,7 @@ void ChartAreaPanel::setFillFloatTransparence( const OUString& aName = rItem.GetName(); css::uno::Any aGradientVal; rItem.QueryValue(aGradientVal, MID_FILLGRADIENT); - OUString aNewName = PropertyHelper::addTransparencyGradientUniqueNameToTable(aGradientVal, css::uno::Reference<css::lang::XMultiServiceFactory>(mxModel, css::uno::UNO_QUERY_THROW), aName); + OUString aNewName = PropertyHelper::addTransparencyGradientUniqueNameToTable(aGradientVal, mxModel, aName); xPropSet->setPropertyValue("FillTransparenceGradientName", css::uno::Any(aNewName)); } @@ -387,7 +373,7 @@ void ChartAreaPanel::setFillStyleAndGradient(const XFillStyleItem* pStyleItem, const OUString& aName = rGradientItem.GetName(); css::uno::Any aGradientVal; rGradientItem.QueryValue(aGradientVal, MID_FILLGRADIENT); - OUString aNewName = PropertyHelper::addGradientUniqueNameToTable(aGradientVal, css::uno::Reference<css::lang::XMultiServiceFactory>(mxModel, css::uno::UNO_QUERY_THROW), aName); + OUString aNewName = PropertyHelper::addGradientUniqueNameToTable(aGradientVal, mxModel, aName); xPropSet->setPropertyValue("FillGradientName", css::uno::Any(aNewName)); } @@ -418,10 +404,16 @@ void ChartAreaPanel::setFillStyleAndBitmap(const XFillStyleItem* pStyleItem, css::uno::Any aBitmap; rBitmapItem.QueryValue(aBitmap, MID_BITMAP); const OUString& aPreferredName = rBitmapItem.GetName(); - aBitmap <<= PropertyHelper::addBitmapUniqueNameToTable(aBitmap, css::uno::Reference<css::lang::XMultiServiceFactory>(mxModel, css::uno::UNO_QUERY_THROW), aPreferredName); + aBitmap <<= PropertyHelper::addBitmapUniqueNameToTable(aBitmap, mxModel, aPreferredName); xPropSet->setPropertyValue("FillBitmapName", aBitmap); } +void ChartAreaPanel::setFillUseBackground(const XFillStyleItem* pStyleItem, + const XFillUseSlideBackgroundItem& /*rItem*/) +{ + setFillStyle(*pStyleItem); +} + void ChartAreaPanel::updateData() { if (!mbUpdate || !mbModelValid) @@ -520,30 +512,37 @@ void ChartAreaPanel::selectionChanged(bool bCorrectType) updateData(); } -void ChartAreaPanel::updateModel( - css::uno::Reference<css::frame::XModel> xModel) +void ChartAreaPanel::doUpdateModel(const rtl::Reference<::chart::ChartModel>& xModel) { if (mbModelValid) { - css::uno::Reference<css::util::XModifyBroadcaster> xBroadcaster(mxModel, css::uno::UNO_QUERY_THROW); - xBroadcaster->removeModifyListener(mxListener); - } + mxModel->removeModifyListener(mxListener); - css::uno::Reference<css::view::XSelectionSupplier> oldSelectionSupplier( - mxModel->getCurrentController(), css::uno::UNO_QUERY); - if (oldSelectionSupplier.is()) { - oldSelectionSupplier->removeSelectionChangeListener(mxSelectionListener.get()); + css::uno::Reference<css::view::XSelectionSupplier> oldSelectionSupplier( + mxModel->getCurrentController(), css::uno::UNO_QUERY); + if (oldSelectionSupplier.is()) { + oldSelectionSupplier->removeSelectionChangeListener(mxSelectionListener); + } } mxModel = xModel; - mbModelValid = true; + mbModelValid = mxModel.is(); + + if (!mbModelValid) + return; - css::uno::Reference<css::util::XModifyBroadcaster> xBroadcasterNew(mxModel, css::uno::UNO_QUERY_THROW); - xBroadcasterNew->addModifyListener(mxListener); + mxModel->addModifyListener(mxListener); css::uno::Reference<css::view::XSelectionSupplier> xSelectionSupplier(mxModel->getCurrentController(), css::uno::UNO_QUERY); if (xSelectionSupplier.is()) - xSelectionSupplier->addSelectionChangeListener(mxSelectionListener.get()); + xSelectionSupplier->addSelectionChangeListener(mxSelectionListener); +} + +void ChartAreaPanel::updateModel( css::uno::Reference<css::frame::XModel> xModel) +{ + ::chart::ChartModel* pModel = dynamic_cast<::chart::ChartModel*>(xModel.get()); + assert(!xModel || pModel); + doUpdateModel(pModel); } |