Kaydet (Commit) acd818d9 authored tarafından Markus Mohrhard's avatar Markus Mohrhard

update the color button when we select an object

Change-Id: Ib45a02248819c35844ef83435c33ab1c82f5c4dc
üst cf7db822
...@@ -25,6 +25,13 @@ namespace chart { namespace sidebar { ...@@ -25,6 +25,13 @@ namespace chart { namespace sidebar {
namespace { namespace {
SvxColorToolBoxControl* getColorToolBoxControl(sfx2::sidebar::SidebarToolBox* pToolBoxColor)
{
css::uno::Reference<css::frame::XToolbarController> xController = pToolBoxColor->GetFirstController();
SvxColorToolBoxControl* pToolBoxColorControl = dynamic_cast<SvxColorToolBoxControl*>(xController.get());
return pToolBoxColorControl;
}
OUString getCID(css::uno::Reference<css::frame::XModel> xModel) OUString getCID(css::uno::Reference<css::frame::XModel> xModel)
{ {
css::uno::Reference<css::frame::XController> xController(xModel->getCurrentController()); css::uno::Reference<css::frame::XController> xController(xModel->getCurrentController());
...@@ -240,7 +247,7 @@ ChartAreaPanel::ChartAreaPanel(vcl::Window* pParent, ...@@ -240,7 +247,7 @@ ChartAreaPanel::ChartAreaPanel(vcl::Window* pParent,
mxSelectionListener(new ChartSidebarSelectionListener(this)), mxSelectionListener(new ChartSidebarSelectionListener(this)),
mbUpdate(true), mbUpdate(true),
mbModelValid(true), mbModelValid(true),
maFillColorWrapper(mxModel) maFillColorWrapper(mxModel, getColorToolBoxControl(mpToolBoxColor.get()))
{ {
std::vector<ObjectType> aAcceptedTypes { OBJECTTYPE_PAGE, OBJECTTYPE_DIAGRAM, OBJECTTYPE_DATA_SERIES, OBJECTTYPE_TITLE, OBJECTTYPE_LEGEND}; std::vector<ObjectType> aAcceptedTypes { OBJECTTYPE_PAGE, OBJECTTYPE_DIAGRAM, OBJECTTYPE_DATA_SERIES, OBJECTTYPE_TITLE, OBJECTTYPE_LEGEND};
mxSelectionListener->setAcceptedTypes(aAcceptedTypes); mxSelectionListener->setAcceptedTypes(aAcceptedTypes);
...@@ -273,8 +280,7 @@ void ChartAreaPanel::Initialize() ...@@ -273,8 +280,7 @@ void ChartAreaPanel::Initialize()
if (xSelectionSupplier.is()) if (xSelectionSupplier.is())
xSelectionSupplier->addSelectionChangeListener(mxSelectionListener.get()); xSelectionSupplier->addSelectionChangeListener(mxSelectionListener.get());
css::uno::Reference<css::frame::XToolbarController> xController = mpToolBoxColor->GetFirstController(); SvxColorToolBoxControl* pToolBoxColor = getColorToolBoxControl(mpToolBoxColor.get());
SvxColorToolBoxControl* pToolBoxColor = dynamic_cast<SvxColorToolBoxControl*>(xController.get());
pToolBoxColor->setColorSelectFunction(maFillColorWrapper); pToolBoxColor->setColorSelectFunction(maFillColorWrapper);
updateData(); updateData();
...@@ -427,6 +433,8 @@ void ChartAreaPanel::updateData() ...@@ -427,6 +433,8 @@ void ChartAreaPanel::updateData()
xPropSet->getPropertyValue("FillTransparenceGradientName") >>= aFillFloatTransparenceName; xPropSet->getPropertyValue("FillTransparenceGradientName") >>= aFillFloatTransparenceName;
XFillFloatTransparenceItem aFillFloatTransparenceItem = getXTransparencyGradientForName(mxModel, aFillFloatTransparenceName); XFillFloatTransparenceItem aFillFloatTransparenceItem = getXTransparencyGradientForName(mxModel, aFillFloatTransparenceName);
updateFillFloatTransparence(false, true, &aFillFloatTransparenceItem); updateFillFloatTransparence(false, true, &aFillFloatTransparenceItem);
maFillColorWrapper.updateData();
} }
void ChartAreaPanel::modelInvalid() void ChartAreaPanel::modelInvalid()
......
...@@ -11,6 +11,10 @@ ...@@ -11,6 +11,10 @@
#include "ChartController.hxx" #include "ChartController.hxx"
#include <editeng/colritem.hxx>
#include <svx/tbcontrl.hxx>
#include <svx/svxids.hrc>
namespace chart { namespace sidebar { namespace chart { namespace sidebar {
namespace { namespace {
...@@ -56,13 +60,15 @@ css::uno::Reference<css::beans::XPropertySet> getPropSet( ...@@ -56,13 +60,15 @@ css::uno::Reference<css::beans::XPropertySet> getPropSet(
} }
ChartColorWrapper::ChartColorWrapper( ChartColorWrapper::ChartColorWrapper(
css::uno::Reference<css::frame::XModel> xModel): css::uno::Reference<css::frame::XModel> xModel,
SvxColorToolBoxControl* pControl):
mxModel(xModel), mxModel(xModel),
mpControl(pControl),
maPropertyName("FillColor") maPropertyName("FillColor")
{ {
} }
void ChartColorWrapper::operator()(const OUString& rCommand, const Color& rColor) void ChartColorWrapper::operator()(const OUString& , const Color& rColor)
{ {
css::uno::Reference<css::beans::XPropertySet> xPropSet = getPropSet(mxModel); css::uno::Reference<css::beans::XPropertySet> xPropSet = getPropSet(mxModel);
assert(xPropSet.is()); assert(xPropSet.is());
...@@ -75,6 +81,21 @@ void ChartColorWrapper::updateModel(css::uno::Reference<css::frame::XModel> xMod ...@@ -75,6 +81,21 @@ void ChartColorWrapper::updateModel(css::uno::Reference<css::frame::XModel> xMod
mxModel = xModel; mxModel = xModel;
} }
void ChartColorWrapper::updateData()
{
css::uno::Reference<css::beans::XPropertySet> xPropSet = getPropSet(mxModel);
if (!xPropSet.is())
return;
css::uno::Any aAny = xPropSet->getPropertyValue(maPropertyName);
sal_uInt32 nColor = 0;
aAny >>= nColor;
Color aColor(nColor);
SvxColorItem aItem(aColor, SID_ATTR_FILL_COLOR);
mpControl->StateChanged(SID_ATTR_FILL_COLOR, SfxItemState::SET, &aItem);
}
} } } }
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
...@@ -13,6 +13,8 @@ ...@@ -13,6 +13,8 @@
#include <com/sun/star/frame/XFramesSupplier.hpp> #include <com/sun/star/frame/XFramesSupplier.hpp>
#include <tools/color.hxx> #include <tools/color.hxx>
class SvxColorToolBoxControl;
namespace chart { namespace sidebar { namespace chart { namespace sidebar {
class ChartColorWrapper class ChartColorWrapper
...@@ -20,17 +22,21 @@ class ChartColorWrapper ...@@ -20,17 +22,21 @@ class ChartColorWrapper
private: private:
public: public:
ChartColorWrapper(css::uno::Reference<css::frame::XModel> xModel); ChartColorWrapper(css::uno::Reference<css::frame::XModel> xModel,
SvxColorToolBoxControl* pControl);
void operator()(const OUString& rCommand, const Color& rColor); void operator()(const OUString& rCommand, const Color& rColor);
void updateModel(css::uno::Reference<css::frame::XModel> xModel); void updateModel(css::uno::Reference<css::frame::XModel> xModel);
void updateData();
private: private:
// not the chart frame
// you need to get the chart frame through getActiveFrame
css::uno::Reference<css::frame::XModel> mxModel; css::uno::Reference<css::frame::XModel> mxModel;
SvxColorToolBoxControl* mpControl;
OUString maPropertyName; OUString maPropertyName;
}; };
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment