diff options
author | Vasily Melenchuk <Vasily.Melenchuk@cib.de> | 2017-11-10 18:37:25 +0300 |
---|---|---|
committer | Thorsten Behrens <Thorsten.Behrens@CIB.de> | 2018-01-10 01:24:06 +0100 |
commit | 0074951704022d173a5fdb9df933f47be1dcbb91 (patch) | |
tree | 73503c1938be3b4757ecaa082f6307396f296b8b /sc | |
parent | 8c15140f92a0dff2aa7cc9e1f8bb5d8a0df34bf8 (diff) |
tdf#113572: allow switching to data range in copypasted chart
- enable data range toolbar button for charts with internal
data table and possiblilty to switch to data range
- show warning before destoying data table
- recreation of data provider
Change-Id: I2a08b723be80d411e970bfe2ee53dee7d3d52faa
Reviewed-on: https://gerrit.libreoffice.org/44605
Reviewed-by: Katarina Behrens <Katarina.Behrens@cib.de>
Reviewed-by: Thorsten Behrens <Thorsten.Behrens@CIB.de>
Tested-by: Thorsten Behrens <Thorsten.Behrens@CIB.de>
Diffstat (limited to 'sc')
-rw-r--r-- | sc/inc/docuno.hxx | 7 | ||||
-rw-r--r-- | sc/source/ui/unoobj/docuno.cxx | 14 |
2 files changed, 20 insertions, 1 deletions
diff --git a/sc/inc/docuno.hxx b/sc/inc/docuno.hxx index ecb7cf494763..aa55a1ad4c35 100644 --- a/sc/inc/docuno.hxx +++ b/sc/inc/docuno.hxx @@ -37,6 +37,8 @@ #include <com/sun/star/sheet/XSpreadsheetDocument.hpp> #include <com/sun/star/sheet/XSpreadsheets2.hpp> #include <com/sun/star/sheet/XDocumentAuditing.hpp> +#include <com/sun/star/chart2/data/XDataProvider.hpp> +#include <com/sun/star/chart2/XDataProviderAccess.hpp> #include <com/sun/star/lang/XServiceInfo.hpp> #include <com/sun/star/util/XProtectable.hpp> #include <com/sun/star/container/XEnumerationAccess.hpp> @@ -86,6 +88,7 @@ class SC_DLLPUBLIC ScModelObj : public SfxBaseModel, public SvxFmMSFactory, ///< derived from XMultiServiceFactory public css::lang::XServiceInfo, public css::util::XChangesNotifier, + public css::chart2::XDataProviderAccess, public css::sheet::opencl::XOpenCLSelection { private: @@ -156,6 +159,10 @@ public: virtual css::uno::Reference< css::sheet::XSpreadsheets > SAL_CALL getSheets() override; + /// XDataProviderAccess + virtual ::css::uno::Reference< css::chart2::data::XDataProvider > SAL_CALL + createDataProvider() override; + /// XStyleFamiliesSupplier virtual css::uno::Reference< css::container::XNameAccess > SAL_CALL getStyleFamilies() override; diff --git a/sc/source/ui/unoobj/docuno.cxx b/sc/source/ui/unoobj/docuno.cxx index d5560485bc62..901e34a86a31 100644 --- a/sc/source/ui/unoobj/docuno.cxx +++ b/sc/source/ui/unoobj/docuno.cxx @@ -228,6 +228,7 @@ using sc::TwipsToHMM; #define SCMODELOBJ_SERVICE "com.sun.star.sheet.SpreadsheetDocument" #define SCDOCSETTINGS_SERVICE "com.sun.star.sheet.SpreadsheetDocumentSettings" #define SCDOC_SERVICE "com.sun.star.document.OfficeDocument" +#define SCDATAPROVIDERACCESS_SERVICE "com.sun.star.chart2.XDataProviderAccess" SC_SIMPLE_SERVICE_INFO( ScAnnotationsObj, "ScAnnotationsObj", "com.sun.star.sheet.CellAnnotations" ) SC_SIMPLE_SERVICE_INFO( ScDrawPagesObj, "ScDrawPagesObj", "com.sun.star.drawing.DrawPages" ) @@ -1192,6 +1193,7 @@ uno::Any SAL_CALL ScModelObj::queryInterface( const uno::Type& rType ) SC_QUERYINTERFACE( lang::XServiceInfo ) SC_QUERYINTERFACE( util::XChangesNotifier ) SC_QUERYINTERFACE( sheet::opencl::XOpenCLSelection ) + SC_QUERYINTERFACE( chart2::XDataProviderAccess ) uno::Any aRet(SfxBaseModel::queryInterface( rType )); if ( !aRet.hasValue() @@ -1338,6 +1340,16 @@ uno::Reference<sheet::XSpreadsheets> SAL_CALL ScModelObj::getSheets() return nullptr; } +css::uno::Reference< ::css::chart2::data::XDataProvider > SAL_CALL ScModelObj::createDataProvider() +{ + if (pDocShell) + { + return css::uno::Reference< ::css::chart2::data::XDataProvider > ( + ScServiceProvider::MakeInstance(ScServiceProvider::Type::CHDATAPROV, pDocShell), uno::UNO_QUERY); + } + return nullptr; +} + // XStyleFamiliesSupplier uno::Reference<container::XNameAccess> SAL_CALL ScModelObj::getStyleFamilies() @@ -2847,7 +2859,7 @@ sal_Bool SAL_CALL ScModelObj::supportsService( const OUString& rServiceName ) uno::Sequence<OUString> SAL_CALL ScModelObj::getSupportedServiceNames() { - return {SCMODELOBJ_SERVICE, SCDOCSETTINGS_SERVICE, SCDOC_SERVICE}; + return {SCMODELOBJ_SERVICE, SCDOCSETTINGS_SERVICE, SCDOC_SERVICE, SCDATAPROVIDERACCESS_SERVICE}; } // XUnoTunnel |