summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSusobhan Ghosh <susobhang70@gmail.com>2016-06-14 10:28:01 +0200
committerYousuf Philips <philipz85@hotmail.com>2016-06-18 09:20:35 +0000
commit9579fa7bddc11deeb00474cad2203ac613c1c3f8 (patch)
tree8f733b4a58e8d0902c44fc5f71b7dec36a628a4a
parent8389616baa8c03f878be5dfeb0a9f2db546bb66f (diff)
tdf#86759 and tdf#89466: Enable Page Background Panel for Draw
Rename Slide Background Panel to Slide in Impress. Reorder Properties Deck Reviewed-on: https://gerrit.libreoffice.org/26159 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Katarina Behrens <Katarina.Behrens@cib.de> Function to change sidebar panel title, via UNO API Change-Id: I49677f7642b962879107aed7289ba9066fb5ce0f Reviewed-on: https://gerrit.libreoffice.org/26243 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Katarina Behrens <Katarina.Behrens@cib.de> Reviewed-on: https://gerrit.libreoffice.org/26357 Reviewed-by: Yousuf Philips <philipz85@hotmail.com>
-rw-r--r--officecfg/registry/data/org/openoffice/Office/UI/Sidebar.xcu38
-rw-r--r--sd/source/ui/sidebar/SlideBackground.cxx67
-rw-r--r--sd/source/ui/sidebar/SlideBackground.hxx9
3 files changed, 94 insertions, 20 deletions
diff --git a/officecfg/registry/data/org/openoffice/Office/UI/Sidebar.xcu b/officecfg/registry/data/org/openoffice/Office/UI/Sidebar.xcu
index 80bfad72f216..b907f65b6e45 100644
--- a/officecfg/registry/data/org/openoffice/Office/UI/Sidebar.xcu
+++ b/officecfg/registry/data/org/openoffice/Office/UI/Sidebar.xcu
@@ -559,62 +559,62 @@
</prop>
</node>
- <node oor:name="SdLayoutsPanel" oor:op="replace">
+ <node oor:name="SlideBackgroundPanel" oor:op="replace">
<prop oor:name="Title" oor:type="xs:string">
- <value xml:lang="en-US">Layouts</value>
+ <value xml:lang="en-US">Slide</value>
</prop>
<prop oor:name="TitleBarIsOptional" oor:type="xs:boolean">
<value>false</value>
</prop>
<prop oor:name="Id" oor:type="xs:string">
- <value>SdLayoutsPanel</value>
+ <value>SlideBackgroundPanel</value>
</prop>
<prop oor:name="DeckId" oor:type="xs:string">
<value>PropertyDeck</value>
</prop>
<prop oor:name="ContextList">
<value oor:separator=";">
- Impress, DrawPage, visible ;
- Impress, default, visible ;
- Impress, HandoutPage, visible ;
- Impress, NotesPage, visible ;
- Impress, SlidesorterPage, visible ;
+ DrawImpress, DrawPage, visible, .uno:PageSetup ;
+ DrawImpress, default, visible, .uno:PageSetup ;
+ DrawImpress, HandoutPage, visible, .uno:PageSetup ;
+ DrawImpress, NotesPage, visible, .uno:PageSetup ;
+ DrawImpress, SlidesorterPage, visible, .uno:PageSetup ;
</value>
</prop>
<prop oor:name="ImplementationURL" oor:type="xs:string">
- <value>private:resource/toolpanel/SdPanelFactory/Layouts</value>
+ <value>private:resource/toolpanel/SdPanelFactory/SlideBackgroundPanel</value>
</prop>
<prop oor:name="OrderIndex" oor:type="xs:int">
<value>100</value>
</prop>
</node>
- <node oor:name="SlideBackgroundPanel" oor:op="replace">
+ <node oor:name="SdLayoutsPanel" oor:op="replace">
<prop oor:name="Title" oor:type="xs:string">
- <value xml:lang="en-US">Slide Background</value>
+ <value xml:lang="en-US">Layouts</value>
</prop>
<prop oor:name="TitleBarIsOptional" oor:type="xs:boolean">
<value>false</value>
</prop>
<prop oor:name="Id" oor:type="xs:string">
- <value>SlideBackgroundPanel</value>
+ <value>SdLayoutsPanel</value>
</prop>
<prop oor:name="DeckId" oor:type="xs:string">
<value>PropertyDeck</value>
</prop>
<prop oor:name="ContextList">
<value oor:separator=";">
- Impress, DrawPage, visible, .uno:PageSetup ;
- Impress, default, visible, .uno:PageSetup ;
- Impress, HandoutPage, visible, .uno:PageSetup ;
- Impress, NotesPage, visible, .uno:PageSetup ;
- Impress, SlidesorterPage, visible, .uno:PageSetup ;
+ Impress, DrawPage, visible ;
+ Impress, default, visible ;
+ Impress, HandoutPage, visible ;
+ Impress, NotesPage, visible ;
+ Impress, SlidesorterPage, visible ;
</value>
</prop>
<prop oor:name="ImplementationURL" oor:type="xs:string">
- <value>private:resource/toolpanel/SdPanelFactory/SlideBackgroundPanel</value>
+ <value>private:resource/toolpanel/SdPanelFactory/Layouts</value>
</prop>
<prop oor:name="OrderIndex" oor:type="xs:int">
- <value>100</value>
+ <value>200</value>
</prop>
</node>
<node oor:name="SdUsedMasterPagesPanel" oor:op="replace">
diff --git a/sd/source/ui/sidebar/SlideBackground.cxx b/sd/source/ui/sidebar/SlideBackground.cxx
index 087e1723a2ca..dfe65a2bdfb8 100644
--- a/sd/source/ui/sidebar/SlideBackground.cxx
+++ b/sd/source/ui/sidebar/SlideBackground.cxx
@@ -18,6 +18,8 @@
*/
#include <com/sun/star/animations/XAnimationNode.hpp>
+#include <com/sun/star/ui/XDeck.hpp>
+#include <com/sun/star/ui/XPanel.hpp>
#include "SlideBackground.hxx"
#include "TransitionPreset.hxx"
#include "sdresid.hxx"
@@ -61,6 +63,7 @@
#include <svx/dlgutil.hxx>
#include <algorithm>
#include "EventMultiplexer.hxx"
+#include "glob.hrc"
using namespace ::com::sun::star;
@@ -138,6 +141,9 @@ SlideBackground::SlideBackground(
mpGradientItem(),
mpHatchItem(),
mpBitmapItem(),
+ mxFrame(rxFrame),
+ maContext(),
+ mbTitle(false),
mpBindings(pBindings)
{
get(mpPaperSizeBox,"paperformat");
@@ -199,6 +205,14 @@ void SlideBackground::Initialize()
Update();
}
+void SlideBackground::HandleContextChange(
+ const ::sfx2::sidebar::EnumContext& rContext)
+{
+ if (maContext == rContext)
+ return;
+ maContext = rContext;
+}
+
void SlideBackground::Update()
{
const drawing::FillStyle eXFS = (drawing::FillStyle)mpFillStyle->GetSelectEntryPos();
@@ -298,6 +312,35 @@ void SlideBackground::Update()
}
}
+void SlideBackground::SetPanelTitle( const OUString& rTitle )
+{
+ Reference<frame::XController2> xController( mxFrame->getController(), uno::UNO_QUERY);
+ if ( !xController.is() )
+ return;
+
+ Reference<ui::XSidebarProvider> xSidebarProvider( xController->getSidebar(), uno::UNO_QUERY );
+ if ( !xSidebarProvider.is() )
+ return;
+
+ Reference<ui::XDecks> xDecks ( xSidebarProvider->getDecks(), uno::UNO_QUERY);
+ if ( !xDecks.is() )
+ return;
+
+ Reference<ui::XDeck> xDeck ( xDecks->getByName("PropertyDeck"), uno::UNO_QUERY);
+ if ( !xDeck.is() )
+ return;
+
+ Reference<ui::XPanels> xPanels ( xDeck->getPanels(), uno::UNO_QUERY);
+ if ( !xPanels.is() )
+ return;
+
+ Reference<ui::XPanel> xPanel ( xPanels->getByName("SlideBackgroundPanel"), uno::UNO_QUERY);
+ if ( !xPanels.is() )
+ return;
+
+ xPanel->setTitle( rTitle );
+}
+
void SlideBackground::addListener()
{
Link<tools::EventMultiplexerEvent&,void> aLink( LINK(this, SlideBackground, EventMultiplexerListener) );
@@ -305,7 +348,8 @@ void SlideBackground::addListener()
aLink,
tools::EventMultiplexerEvent::EID_CURRENT_PAGE |
tools::EventMultiplexerEvent::EID_MAIN_VIEW_ADDED |
- tools::EventMultiplexerEvent::EID_SHAPE_CHANGED );
+ tools::EventMultiplexerEvent::EID_SHAPE_CHANGED |
+ tools::EventMultiplexerEvent::EID_VIEW_ADDED);
}
void SlideBackground::removeListener()
@@ -353,6 +397,27 @@ IMPL_LINK_TYPED(SlideBackground, EventMultiplexerListener,
GetBindings()->Invalidate( SidArray );
}
break;
+ case tools::EventMultiplexerEvent::EID_VIEW_ADDED:
+ {
+ if(!mbTitle)
+ {
+ sfx2::sidebar::EnumContext rDrawContext(sfx2::sidebar::EnumContext::Application_Draw,
+ sfx2::sidebar::EnumContext::Context_DrawPage);
+ sfx2::sidebar::EnumContext rImpressContext(sfx2::sidebar::EnumContext::Application_Impress,
+ sfx2::sidebar::EnumContext::Context_DrawPage);
+ if(maContext == rDrawContext)
+ {
+ SetPanelTitle(SD_RESSTR(STR_PAGE_NAME));
+ mbTitle = true;
+ }
+ else if(maContext == rImpressContext)
+ {
+ SetPanelTitle(SD_RESSTR(STR_SLIDE_NAME));
+ mbTitle = true;
+ }
+ }
+ }
+ break;
default:
break;
}
diff --git a/sd/source/ui/sidebar/SlideBackground.hxx b/sd/source/ui/sidebar/SlideBackground.hxx
index 0bffcdda23eb..1c0a23cb2346 100644
--- a/sd/source/ui/sidebar/SlideBackground.hxx
+++ b/sd/source/ui/sidebar/SlideBackground.hxx
@@ -42,11 +42,13 @@
#include <svx/xbtmpit.hxx>
#include <svx/xflhtit.hxx>
#include "EventMultiplexer.hxx"
+#include <sfx2/sidebar/IContextChangeReceiver.hxx>
namespace sd { namespace sidebar {
class SlideBackground :
public PanelLayout,
+ public ::sfx2::sidebar::IContextChangeReceiver,
public ::sfx2::sidebar::ControllerItem::ItemUpdateReceiverInterface
{
public:
@@ -65,6 +67,8 @@ public:
const SfxItemState eState,
const SfxPoolItem* pState,
const bool bIsEnabled) override;
+ virtual void HandleContextChange(
+ const ::sfx2::sidebar::EnumContext& rContext) override;
private:
@@ -98,6 +102,9 @@ private:
std::unique_ptr< XFillHatchItem > mpHatchItem;
std::unique_ptr< XFillBitmapItem > mpBitmapItem;
+ css::uno::Reference<css::frame::XFrame> mxFrame;
+ ::sfx2::sidebar::EnumContext maContext;
+ bool mbTitle;
SfxBindings* mpBindings;
SfxMapUnit meUnit;
@@ -113,6 +120,8 @@ private:
void Initialize();
void Update();
+ void SetPanelTitle(const OUString& rTitle);
+
Color GetColorSetOrDefault();
XGradient GetGradientSetOrDefault();
const OUString GetHatchingSetOrDefault();