[Libreoffice-commits] core.git: Branch 'feature/chart-style-experiment-markus' - 2 commits - chart2/source
Markus Mohrhard (via logerrit)
logerrit at kemper.freedesktop.org
Sun Aug 11 19:32:15 UTC 2019
chart2/source/chartcore.component | 4
chart2/source/inc/ChartStyle.hxx | 22 ++++-
chart2/source/model/main/ChartModel.cxx | 5 -
chart2/source/tools/ChartStyle.cxx | 129 ++++++++++++++++++++++++++++++--
chart2/source/view/main/VTitle.cxx | 3
5 files changed, 148 insertions(+), 15 deletions(-)
New commits:
commit 4bf7014ba4b265fa0947bf4e6cc8bbee8f2ab94f
Author: Markus Mohrhard <markus.mohrhard at googlemail.com>
AuthorDate: Mon Aug 12 03:27:52 2019 +0800
Commit: Markus Mohrhard <markus.mohrhard at googlemail.com>
CommitDate: Mon Aug 12 03:27:52 2019 +0800
tdf#126837: fix incorrect handling of visible flag for chart titles
Change-Id: Idb8dfa18e924324dcf27339fd18ff90616651d40
diff --git a/chart2/source/view/main/VTitle.cxx b/chart2/source/view/main/VTitle.cxx
index d0633263f8af..967edd72f55a 100644
--- a/chart2/source/view/main/VTitle.cxx
+++ b/chart2/source/view/main/VTitle.cxx
@@ -113,6 +113,9 @@ void VTitle::createShapes(
m_nYPos = rPos.Y;
uno::Reference< beans::XPropertySet > xTitleProperties( m_xTitle, uno::UNO_QUERY );
+ sal_Bool bVisible = true;
+ if ((xTitleProperties->getPropertyValue("Visible") >>= bVisible) && !bVisible)
+ return;
try
{
commit 816332b04ded68f0729bef34dd8774cb8fdabaf1
Author: Markus Mohrhard <markus.mohrhard at googlemail.com>
AuthorDate: Mon Aug 12 02:32:09 2019 +0800
Commit: Markus Mohrhard <markus.mohrhard at googlemail.com>
CommitDate: Mon Aug 12 03:06:14 2019 +0800
implement a ChartStyles object
Change-Id: Id7992faa801816be99c47f2bea754108b0296da5
diff --git a/chart2/source/chartcore.component b/chart2/source/chartcore.component
index 4bb0f689c788..f58ba98ba3ac 100644
--- a/chart2/source/chartcore.component
+++ b/chart2/source/chartcore.component
@@ -256,8 +256,4 @@
constructor="com_sun_star_comp_chart2_ChartView_get_implementation">
<service name="com.sun.star.chart2.ChartView"/>
</implementation>
- <implementation name="com.sun.star.comp.chart2.ChartStyle"
- constructor="com_sun_star_comp_chart2_ChartStyle_get_implementation">
- <service name="com.sun.star.chart2.ChartStyle"/>
- </implementation>
</component>
diff --git a/chart2/source/inc/ChartStyle.hxx b/chart2/source/inc/ChartStyle.hxx
index c12441e1cd76..30ecdfe0a6b4 100644
--- a/chart2/source/inc/ChartStyle.hxx
+++ b/chart2/source/inc/ChartStyle.hxx
@@ -16,6 +16,7 @@
* except in compliance with the License. You may obtain a copy of
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
+
#ifndef INCLUDED_CHART2_SOURCE_INC_CHARTSTYLE_HXX
#define INCLUDED_CHART2_SOURCE_INC_CHARTSTYLE_HXX
@@ -25,13 +26,14 @@
#include <com/sun/star/chart2/XChartStyle.hpp>
#include <com/sun/star/lang/XServiceInfo.hpp>
#include <com/sun/star/style/XStyle.hpp>
+#include <com/sun/star/container/XNameContainer.hpp>
#include <map>
#include "PropertyHelper.hxx"
#include "OPropertySet.hxx"
#include "MutexContainer.hxx"
-namespace chart2
+namespace chart
{
namespace impl
{
@@ -77,7 +79,8 @@ private:
css::uno::Reference<css::beans::XPropertySetInfo> mxPropSetInfo;
};
-class ChartStyle : public cppu::WeakImplHelper<css::chart2::XChartStyle, css::lang::XServiceInfo>
+class ChartStyle : public cppu::WeakImplHelper<css::chart2::XChartStyle, css::lang::XServiceInfo,
+ css::style::XStyle>
{
public:
explicit ChartStyle();
@@ -94,15 +97,28 @@ public:
virtual void SAL_CALL
applyStyleToDiagram(const css::uno::Reference<css::chart2::XDiagram>& xDiagram);
+ // XStyle
+ virtual sal_Bool SAL_CALL isUserDefined() override;
+ virtual sal_Bool SAL_CALL isInUse() override;
+ virtual OUString SAL_CALL getParentStyle() override;
+ virtual void setParentStyle(const OUString& rParentStyle) override;
+
+ // XNamed
+ virtual OUString SAL_CALL getName() override;
+ virtual void SAL_CALL setName(const OUString& rName) override;
+
private:
sal_Int16 m_nNumObjects;
+ OUString maName;
std::map<sal_Int16, css::uno::Reference<css::beans::XPropertySet>> m_xChartStyle;
void register_styles();
};
-} // namespace chart2
+css::uno::Reference<css::container::XNameContainer> getChartStyles();
+
+} // namespace chart
// INCLUDED_CHART2_SOURCE_INC_CHARTSTYLE_HXX
#endif
diff --git a/chart2/source/model/main/ChartModel.cxx b/chart2/source/model/main/ChartModel.cxx
index ba5a5d399445..7c500abd4a07 100644
--- a/chart2/source/model/main/ChartModel.cxx
+++ b/chart2/source/model/main/ChartModel.cxx
@@ -31,6 +31,7 @@
#include <ChartView.hxx>
#include <PopupRequest.hxx>
#include <ModifyListenerHelper.hxx>
+#include <ChartStyle.hxx>
#include <com/sun/star/chart/ChartDataRowSource.hpp>
#include <com/sun/star/chart2/data/XPivotTableDataProvider.hpp>
@@ -110,8 +111,8 @@ ChartModel::ChartModel(uno::Reference<uno::XComponentContext > const & xContext)
ModifyListenerHelper::addListener( m_xPageBackground, this );
m_xChartTypeManager.set( xContext->getServiceManager()->createInstanceWithContext(
"com.sun.star.chart2.ChartTypeManager", m_xContext ), uno::UNO_QUERY );
- m_xChartStyle.set( xContext->getServiceManager()->createInstanceWithContext(
- "com.sun.star.chart2.ChartStyle" , m_xContext ), uno::UNO_QUERY );
+
+ ::chart::getChartStyles()->getByName("Default") >>= m_xChartStyle;
}
osl_atomic_decrement(&m_refCount);
}
diff --git a/chart2/source/tools/ChartStyle.cxx b/chart2/source/tools/ChartStyle.cxx
index 71e94867dc3a..b2ccf466fcfd 100644
--- a/chart2/source/tools/ChartStyle.cxx
+++ b/chart2/source/tools/ChartStyle.cxx
@@ -22,6 +22,7 @@
#include <com/sun/star/drawing/FillStyle.hpp>
#include <com/sun/star/drawing/LineStyle.hpp>
#include <cppuhelper/supportsservice.hxx>
+#include <rtl/instance.hxx>
#include <vector>
#include <Legend.hxx>
@@ -49,7 +50,7 @@ class XComponentContext;
}
}
-namespace chart2
+namespace chart
{
ChartObjectStyle::ChartObjectStyle(css::uno::Reference<css::beans::XPropertySetInfo> xPropSetInfo,
::cppu::IPropertyArrayHelper& rArrayHelper,
@@ -208,19 +209,135 @@ ChartStyle::applyStyleToDiagram(const css::uno::Reference<css::chart2::XDiagram>
}
}
+sal_Bool ChartStyle::isUserDefined() { return false; }
+
+sal_Bool ChartStyle::isInUse() { return true; }
+
+OUString ChartStyle::getParentStyle() { return ""; }
+
+void ChartStyle::setParentStyle(const OUString&) {}
+
+void ChartStyle::setName(const OUString& rName) { maName = rName; }
+
+OUString ChartStyle::getName() { return maName; }
+
+class ChartStyles : public cppu::WeakImplHelper<css::container::XNameContainer>
+{
+public:
+ ChartStyles();
+ virtual ~ChartStyles();
+
+ // XNameContainer
+ virtual void SAL_CALL insertByName(const OUString& rName, const css::uno::Any& rStyle);
+ virtual void SAL_CALL removeByName(const OUString& rName);
+ virtual void SAL_CALL replaceByName(const OUString& rName, const css::uno::Any& rStyle);
+
+ virtual css::uno::Any SAL_CALL getByName(const OUString& rName);
+ virtual css::uno::Sequence<OUString> SAL_CALL getElementNames();
+ virtual sal_Bool SAL_CALL hasByName(const OUString& rName);
+ virtual sal_Bool SAL_CALL hasElements();
+ virtual css::uno::Type SAL_CALL getElementType();
+
+private:
+ void addInitialStyles();
+
+ std::map<OUString, css::uno::Reference<css::chart2::XChartStyle>> maChartStyles;
+};
+
+ChartStyles::ChartStyles() { addInitialStyles(); }
+
+ChartStyles::~ChartStyles() {}
+
+void ChartStyles::addInitialStyles()
+{
+ css::uno::Any aDefaultStyle;
+ css::uno::Reference<css::chart2::XChartStyle> xChartStyle = new ChartStyle;
+ aDefaultStyle <<= xChartStyle;
+ insertByName("Default", aDefaultStyle);
+}
+
+void ChartStyles::insertByName(const OUString& rName, const css::uno::Any& rStyle)
+{
+ css::uno::Reference<css::chart2::XChartStyle> xChartStyle;
+ if (!(rStyle >>= xChartStyle))
+ throw css::lang::IllegalArgumentException();
+
+ maChartStyles[rName] = xChartStyle;
+}
+
+void ChartStyles::removeByName(const OUString& rName)
+{
+ auto itr = maChartStyles.find(rName);
+ if (itr == maChartStyles.end())
+ throw css::lang::IllegalArgumentException();
+
+ maChartStyles.erase(itr);
+}
+
+void ChartStyles::replaceByName(const OUString& rName, const css::uno::Any& rStyle)
+{
+ css::uno::Reference<css::chart2::XChartStyle> xChartStyle;
+ if (!(rStyle >>= xChartStyle))
+ throw css::lang::IllegalArgumentException();
+
+ auto itr = maChartStyles.find(rName);
+ if (itr == maChartStyles.end())
+ throw css::lang::IllegalArgumentException();
+
+ maChartStyles[rName] = xChartStyle;
+}
+
+css::uno::Any ChartStyles::getByName(const OUString& rName)
+{
+ auto itr = maChartStyles.find(rName);
+ if (itr == maChartStyles.end())
+ throw css::lang::IllegalArgumentException();
+
+ css::uno::Any aRet;
+ aRet <<= itr->second;
+
+ return aRet;
+}
+
+css::uno::Sequence<OUString> ChartStyles::getElementNames()
+{
+ return css::uno::Sequence<OUString>();
+}
+
+sal_Bool ChartStyles::hasByName(const OUString& rName)
+{
+ auto itr = maChartStyles.find(rName);
+ if (itr == maChartStyles.end())
+ return false;
+
+ return true;
+}
+
+sal_Bool ChartStyles::hasElements() { return !maChartStyles.empty(); }
+
+css::uno::Type ChartStyles::getElementType() { return css::uno::Type(); }
+
//
// needed by MSC compiler
using impl::ChartObjectStyle_Base;
IMPLEMENT_FORWARD_XINTERFACE2(ChartObjectStyle, ChartObjectStyle_Base, ::property::OPropertySet)
-} // namespace chart2
+namespace
+{
+struct theChartStyles
+ : public rtl::StaticWithInit<css::uno::Reference<css::container::XNameContainer>,
+ theChartStyles>
+{
+ css::uno::Reference<css::container::XNameContainer> operator()() { return new ChartStyles; }
+};
+}
-extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface*
-com_sun_star_comp_chart2_ChartStyle_get_implementation(css::uno::XComponentContext*,
- css::uno::Sequence<css::uno::Any> const&)
+css::uno::Reference<css::container::XNameContainer> getChartStyles()
{
- return cppu::acquire(new chart2::ChartStyle);
+ return theChartStyles::get();
}
+} // namespace chart
+
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
More information about the Libreoffice-commits
mailing list