diff options
author | Mike Kaganski <mike.kaganski@collabora.com> | 2022-10-27 22:36:46 +0300 |
---|---|---|
committer | Mike Kaganski <mike.kaganski@collabora.com> | 2022-10-28 06:31:54 +0200 |
commit | 876d9d6d333cafc0649abebc757f397faf86fc4d (patch) | |
tree | ffc26d1e8d3357a3116354f98be410273d98fb64 /chart2 | |
parent | 16e98d669f2d1dd36c39007daab05a8696b08ebb (diff) |
Implement css::frame::XController2 in ChartController
... and use utl::ConnectModelViewController in ChartFrameLoader::load
Change-Id: I9f0dae1b530c05aefdbeeb6a3b3f28d85b0eb14c
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/141947
Tested-by: Jenkins
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
Diffstat (limited to 'chart2')
-rw-r--r-- | chart2/source/controller/inc/ChartController.hxx | 10 | ||||
-rw-r--r-- | chart2/source/controller/main/ChartController.cxx | 18 | ||||
-rw-r--r-- | chart2/source/controller/main/ChartFrameloader.cxx | 15 |
3 files changed, 29 insertions, 14 deletions
diff --git a/chart2/source/controller/inc/ChartController.hxx b/chart2/source/controller/inc/ChartController.hxx index ef229ad9abc8..f948e3bc6303 100644 --- a/chart2/source/controller/inc/ChartController.hxx +++ b/chart2/source/controller/inc/ChartController.hxx @@ -34,7 +34,7 @@ #include <com/sun/star/util/XModeChangeListener.hpp> #include <com/sun/star/util/XCloseListener.hpp> #include <com/sun/star/util/XModifyListener.hpp> -#include <com/sun/star/frame/XController.hpp> +#include <com/sun/star/frame/XController2.hpp> #include <com/sun/star/frame/XLayoutManagerListener.hpp> #include <com/sun/star/lang/XServiceInfo.hpp> #include <com/sun/star/lang/XMultiServiceFactory.hpp> @@ -94,7 +94,7 @@ enum ChartDrawMode { CHARTDRAW_INSERT, CHARTDRAW_SELECT }; class ChartController final : public ::cppu::WeakImplHelper < - css::frame::XController //comprehends XComponent (required interface) + css::frame::XController2 //comprehends XComponent (css::frame::XController is required interface) ,css::frame::XDispatchProvider //(required interface) ,css::view::XSelectionSupplier //(optional interface) ,css::ui::XContextMenuInterception //(optional interface) @@ -142,6 +142,12 @@ public: virtual sal_Bool SAL_CALL suspend( sal_Bool bSuspend ) override; + // css::frame::XController2 + virtual css::uno::Reference<css::awt::XWindow> SAL_CALL getComponentWindow() override; + virtual OUString SAL_CALL getViewControllerName() override; + virtual css::uno::Sequence<css::beans::PropertyValue> SAL_CALL getCreationArguments() override; + virtual css::uno::Reference<css::ui::XSidebarProvider> SAL_CALL getSidebar() override; + // css::lang::XComponent (base of XController) virtual void SAL_CALL dispose() override; diff --git a/chart2/source/controller/main/ChartController.cxx b/chart2/source/controller/main/ChartController.cxx index bac40f686d51..1a59bb161ec3 100644 --- a/chart2/source/controller/main/ChartController.cxx +++ b/chart2/source/controller/main/ChartController.cxx @@ -694,6 +694,24 @@ sal_Bool SAL_CALL ChartController::suspend( sal_Bool bSuspend ) return true; } +// css::frame::XController2 + +css::uno::Reference<css::awt::XWindow> SAL_CALL ChartController::getComponentWindow() +{ + // it is a special characteristic of ChartController + // that it simultaneously provides the XWindow functionality + return this; +} + +OUString SAL_CALL ChartController::getViewControllerName() { return {}; } + +css::uno::Sequence<css::beans::PropertyValue> SAL_CALL ChartController::getCreationArguments() +{ + return {}; +} + +css::uno::Reference<css::ui::XSidebarProvider> SAL_CALL ChartController::getSidebar() { return {}; } + void ChartController::impl_createDrawViewController() { SolarMutexGuard aGuard; diff --git a/chart2/source/controller/main/ChartFrameloader.cxx b/chart2/source/controller/main/ChartFrameloader.cxx index 4be01623f8a5..1a3fa8641a6c 100644 --- a/chart2/source/controller/main/ChartFrameloader.cxx +++ b/chart2/source/controller/main/ChartFrameloader.cxx @@ -23,6 +23,7 @@ #include <ChartController.hxx> #include <ChartModel.hxx> #include <unotools/mediadescriptor.hxx> +#include <unotools/mvc.hxx> #include <cppuhelper/supportsservice.hxx> #include <com/sun/star/frame/XLoadable.hpp> #include <com/sun/star/uno/XComponentContext.hpp> @@ -104,24 +105,13 @@ sal_Bool SAL_CALL ChartFrameLoader::load( const uno::Sequence< beans::PropertyVa //create the controller(+XWindow) rtl::Reference< ChartController > xController = new ChartController(m_xCC); - //!!!it is a special characteristic of the example application - //that the controller simultaneously provides the XWindow controller functionality - uno::Reference< awt::XWindow > xComponentWindow = xController; - if( impl_checkCancel() ) return false; //connect frame, controller and model one to each other: if(xModel.is()) { - xModel->connectController(xController); - xModel->setCurrentController(xController); - xController->attachModel(xModel); - if(xFrame.is()) - xFrame->setComponent(xComponentWindow,xController); - //creates the view and menu - //for correct menu creation the initialized component must be already set into the frame - xController->attachFrame(xFrame); + utl::ConnectModelViewController(xModel, xFrame, xController); } // call initNew() or load() at XLoadable @@ -160,6 +150,7 @@ sal_Bool SAL_CALL ChartFrameLoader::load( const uno::Sequence< beans::PropertyVa //resize standalone files to get correct size: if( aMDHelper.ISSET_FilterName && aMDHelper.FilterName == "StarChart 5.0" ) { + uno::Reference<awt::XWindow> xComponentWindow = xController->getComponentWindow(); awt::Rectangle aRect( xComponentWindow->getPosSize() ); xComponentWindow->setPosSize( aRect.X, aRect.Y, aRect.Width, aRect.Height, 0 ); } |