add methods to add random controllers to sidebar
Change-Id: Ia3e80cc63491f1edd49eaf86cc8c25d67e4a8b28
diff --git a/include/sfx2/sidebar/SidebarController.hxx b/include/sfx2/sidebar/SidebarController.hxx
index 78a0478..6d88767 100644
--- a/include/sfx2/sidebar/SidebarController.hxx
+++ b/include/sfx2/sidebar/SidebarController.hxx
@@ -89,6 +89,10 @@ public:
static SidebarController* GetSidebarControllerForFrame (
const css::uno::Reference<css::frame::XFrame>& rxFrame);
static void registerSidebarForFrame(SidebarController* pController, css::uno::Reference<css::frame::XController> xFrame);
static void unregisterSidebarForFrame(SidebarController* pController, css::uno::Reference<css::frame::XController> xFrame);
// ui::XContextChangeEventListener
virtual void SAL_CALL notifyContextChangeEvent (const css::ui::ContextChangeEventObject& rEvent)
throw(css::uno::RuntimeException, std::exception) SAL_OVERRIDE;
diff --git a/sfx2/source/sidebar/SidebarController.cxx b/sfx2/source/sidebar/SidebarController.cxx
index d98a5b5..61492ce 100644
--- a/sfx2/source/sidebar/SidebarController.cxx
+++ b/sfx2/source/sidebar/SidebarController.cxx
@@ -124,15 +124,7 @@ SidebarController::SidebarController (
// Decks and panel collections for this sidebar
mpResourceManager = std::unique_ptr<ResourceManager>(new ResourceManager());
// Listen for context change events.
css::uno::Reference<css::ui::XContextChangeEventMultiplexer> xMultiplexer (
css::ui::ContextChangeEventMultiplexer::get(
::comphelper::getProcessComponentContext()));
if (xMultiplexer.is())
xMultiplexer->addContextChangeEventListener(
static_cast<css::ui::XContextChangeEventListener*>(this),
mxFrame->getController());
registerSidebarForFrame(this, mxFrame->getController());
// Listen for window events.
mpParentWindow->AddEventListener(LINK(this, SidebarController, WindowEventHandler));
@@ -149,12 +141,6 @@ SidebarController::SidebarController (
mxReadOnlyModeDispatch->addStatusListener(this, aURL);
SwitchToDeck(gsDefaultDeckId);
WeakReference<SidebarController> xWeakController (this);
maSidebarControllerContainer.insert(
SidebarControllerContainer::value_type(
rxFrame->getController(),
xWeakController));
}
SidebarController::~SidebarController()
@@ -175,6 +161,39 @@ SidebarController* SidebarController::GetSidebarControllerForFrame (
return dynamic_cast<SidebarController*>(xController.get());
}
void SidebarController::registerSidebarForFrame(SidebarController* pController, css::uno::Reference<css::frame::XController> xController)
{
// Listen for context change events.
css::uno::Reference<css::ui::XContextChangeEventMultiplexer> xMultiplexer (
css::ui::ContextChangeEventMultiplexer::get(
::comphelper::getProcessComponentContext()));
if (xMultiplexer.is())
xMultiplexer->addContextChangeEventListener(
static_cast<css::ui::XContextChangeEventListener*>(pController),
xController);
WeakReference<SidebarController> xWeakController (pController);
maSidebarControllerContainer.insert(
SidebarControllerContainer::value_type(
xController,
xWeakController));
}
void SidebarController::unregisterSidebarForFrame(SidebarController* pController, css::uno::Reference<css::frame::XController> xController)
{
SidebarControllerContainer::iterator iEntry (maSidebarControllerContainer.find(xController));
if (iEntry != maSidebarControllerContainer.end())
maSidebarControllerContainer.erase(iEntry);
css::uno::Reference<css::ui::XContextChangeEventMultiplexer> xMultiplexer (
css::ui::ContextChangeEventMultiplexer::get(
::comphelper::getProcessComponentContext()));
if (xMultiplexer.is())
xMultiplexer->removeContextChangeEventListener(
static_cast<css::ui::XContextChangeEventListener*>(pController),
xController);
}
void SAL_CALL SidebarController::disposing()
{
mpCloseIndicator.disposeAndClear();