[Libreoffice-commits] core.git: Branch 'libreoffice-5-2' - officecfg/registry sd/source

Susobhan Ghosh susobhang70 at gmail.com
Sat Jun 18 09:21:10 UTC 2016


 officecfg/registry/data/org/openoffice/Office/UI/Sidebar.xcu |   38 +++---
 sd/source/ui/sidebar/SlideBackground.cxx                     |   67 ++++++++++-
 sd/source/ui/sidebar/SlideBackground.hxx                     |    9 +
 3 files changed, 94 insertions(+), 20 deletions(-)

New commits:
commit 9579fa7bddc11deeb00474cad2203ac613c1c3f8
Author: Susobhan Ghosh <susobhang70 at gmail.com>
Date:   Tue Jun 14 10:28:01 2016 +0200

    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 at libreoffice.org>
    Reviewed-by: Katarina Behrens <Katarina.Behrens at 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 at libreoffice.org>
    Reviewed-by: Katarina Behrens <Katarina.Behrens at cib.de>
    Reviewed-on: https://gerrit.libreoffice.org/26357
    Reviewed-by: Yousuf Philips <philipz85 at hotmail.com>

diff --git a/officecfg/registry/data/org/openoffice/Office/UI/Sidebar.xcu b/officecfg/registry/data/org/openoffice/Office/UI/Sidebar.xcu
index 80bfad7..b907f65 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 087e172..dfe65a2 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 0bffcdd..1c0a23c 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();


More information about the Libreoffice-commits mailing list