summaryrefslogtreecommitdiff
path: root/chart2
diff options
context:
space:
mode:
authorMike Kaganski <mike.kaganski@collabora.com>2022-10-27 22:36:46 +0300
committerMike Kaganski <mike.kaganski@collabora.com>2022-10-28 06:31:54 +0200
commit876d9d6d333cafc0649abebc757f397faf86fc4d (patch)
treeffc26d1e8d3357a3116354f98be410273d98fb64 /chart2
parent16e98d669f2d1dd36c39007daab05a8696b08ebb (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.hxx10
-rw-r--r--chart2/source/controller/main/ChartController.cxx18
-rw-r--r--chart2/source/controller/main/ChartFrameloader.cxx15
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 );
}