[Libreoffice-commits] core.git: cui/source cui/uiconfig include/svx sw/source

Jim Raykowski raykowj at gmail.com
Mon Apr 9 07:14:29 UTC 2018


 cui/source/factory/dlgfact.cxx    |    2 
 cui/source/inc/backgrnd.hxx       |   18 +++++
 cui/source/inc/cuitabarea.hxx     |    3 
 cui/source/tabpages/backgrnd.cxx  |  130 ++++++++++++++++++++++++++++++++++++++
 cui/uiconfig/ui/areatabpage.ui    |   42 ++++++++----
 include/svx/dialogs.hrc           |    1 
 sw/source/ui/table/tabledlg.cxx   |    4 -
 sw/source/uibase/shells/tabsh.cxx |    5 +
 8 files changed, 189 insertions(+), 16 deletions(-)

New commits:
commit 41f1a38b9e8b5e0567bf642d3e14a549e82ee0d9
Author: Jim Raykowski <raykowj at gmail.com>
Date:   Sun Jan 28 09:20:06 2018 -0900

    tdf#105225 A table properties background tab page
    
    Change-Id: I86be7b0d9850ffe46f1033beac342739b3289fa8
    Reviewed-on: https://gerrit.libreoffice.org/48797
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Samuel Mehrbrodt <Samuel.Mehrbrodt at cib.de>

diff --git a/cui/source/factory/dlgfact.cxx b/cui/source/factory/dlgfact.cxx
index f4a57b475ce3..091c920b9c5a 100644
--- a/cui/source/factory/dlgfact.cxx
+++ b/cui/source/factory/dlgfact.cxx
@@ -1348,6 +1348,8 @@ CreateTabPage AbstractDialogFactory_Impl::GetTabPageCreatorFunc( sal_uInt16 nId
 {
     switch ( nId )
     {
+        case RID_SVXPAGE_BKG :
+            return SvxBkgTabPage::Create;
         case RID_SVXPAGE_TEXTANIMATION :
             return SvxTextAnimationPage::Create;
         case RID_SVXPAGE_TRANSPARENCE :
diff --git a/cui/source/inc/backgrnd.hxx b/cui/source/inc/backgrnd.hxx
index d7e71a0ceec9..88131fa61b80 100644
--- a/cui/source/inc/backgrnd.hxx
+++ b/cui/source/inc/backgrnd.hxx
@@ -139,6 +139,24 @@ private:
     DECL_LINK( TblDestinationHdl_Impl, ListBox&, void );
 };
 
+#include "cuitabarea.hxx"
+
+class SvxBkgTabPage : public SvxAreaTabPage
+{
+    VclPtr<ListBox> m_pTblLBox;
+public:
+    using SvxAreaTabPage::DeactivatePage;
+
+    SvxBkgTabPage( vcl::Window* pParent, const SfxItemSet& rInAttrs );
+    virtual ~SvxBkgTabPage() override;
+    virtual void dispose() override;
+
+    static VclPtr<SfxTabPage> Create( vcl::Window*, const SfxItemSet* );
+    virtual bool FillItemSet( SfxItemSet* ) override;
+    virtual DeactivateRC DeactivatePage( SfxItemSet* pSet ) override;
+    virtual void PageCreated( const SfxAllItemSet& aSet ) override;
+};
+
 #endif // INCLUDED_CUI_SOURCE_INC_BACKGRND_HXX
 
 
diff --git a/cui/source/inc/cuitabarea.hxx b/cui/source/inc/cuitabarea.hxx
index 81fabd1fb934..ba2760d4fb26 100644
--- a/cui/source/inc/cuitabarea.hxx
+++ b/cui/source/inc/cuitabarea.hxx
@@ -215,7 +215,6 @@ public:
 class SvxAreaTabPage : public SvxTabPage
 {
     using TabPage::ActivatePage;
-    using TabPage::DeactivatePage;
     static const sal_uInt16 pAreaRanges[];
 private:
     ScopedVclPtr<SfxTabPage>   m_pFillTabPage;
@@ -258,6 +257,8 @@ private:
     template< typename TabPage >
     DeactivateRC DeactivatePage_Impl( SfxItemSet* pSet );
 public:
+    using TabPage::DeactivatePage;
+
     SvxAreaTabPage( vcl::Window* pParent, const SfxItemSet& rInAttrs );
     virtual ~SvxAreaTabPage() override;
     virtual void dispose() override;
diff --git a/cui/source/tabpages/backgrnd.cxx b/cui/source/tabpages/backgrnd.cxx
index ebac89286d83..6ef959108360 100644
--- a/cui/source/tabpages/backgrnd.cxx
+++ b/cui/source/tabpages/backgrnd.cxx
@@ -1442,4 +1442,134 @@ void SvxBackgroundTabPage::PageCreated(const SfxAllItemSet& aSet)
     }
 }
 
+#include <svx/unobrushitemhelper.hxx>
+
+SvxBkgTabPage::SvxBkgTabPage( vcl::Window* pParent, const SfxItemSet& rInAttrs ) :
+    SvxAreaTabPage( pParent, rInAttrs ),
+    m_pTblLBox(nullptr)
+{
+    VclPtr<vcl::Window> pBtn;
+    get(pBtn, "btngradient"); pBtn->Hide();
+    get(pBtn, "btnhatch");    pBtn->Hide();
+    get(pBtn, "btnbitmap");   pBtn->Hide();
+    get(pBtn, "btnpattern");  pBtn->Hide();
+
+    SfxObjectShell* pDocSh = SfxObjectShell::Current();
+    const SfxPoolItem* pItem = nullptr;
+
+    XColorListRef pColorTable = nullptr;
+    if ( pDocSh && ( nullptr != ( pItem = pDocSh->GetItem( SID_COLOR_TABLE ) ) ) )
+    {
+        pColorTable = static_cast<const SvxColorListItem*>(pItem)->GetColorList();
+    }
+
+    if ( !pColorTable.is() )
+        pColorTable = XColorList::CreateStdColorList();
+
+    XBitmapListRef pBitmapList = nullptr;
+    if ( pDocSh && ( nullptr != ( pItem = pDocSh->GetItem( SID_BITMAP_LIST ) ) ) )
+    {
+        pBitmapList = static_cast<const SvxBitmapListItem*>(pItem)->GetBitmapList();
+    }
+
+    SetColorList(pColorTable);
+    SetBitmapList(pBitmapList);
+}
+
+SvxBkgTabPage::~SvxBkgTabPage()
+{
+    disposeOnce();
+}
+
+void SvxBkgTabPage::dispose()
+{
+    m_pTblLBox.clear();
+    SvxAreaTabPage::dispose();
+}
+
+DeactivateRC SvxBkgTabPage::DeactivatePage( SfxItemSet* _pSet )
+{
+    if ( DeactivateRC::KeepPage == SvxAreaTabPage::DeactivatePage( _pSet ) )
+        return DeactivateRC::KeepPage;
+
+    if ( _pSet )
+        FillItemSet( _pSet );
+
+    return DeactivateRC::LeavePage;
+}
+
+bool SvxBkgTabPage::FillItemSet( SfxItemSet* rCoreSet )
+{
+    sal_uInt16 nSlot = SID_ATTR_BRUSH;
+    if ( m_pTblLBox && m_pTblLBox->IsVisible() )
+    {
+        switch( m_pTblLBox->GetSelectedEntryPos() )
+        {
+            case TBL_DEST_CELL:
+                nSlot = SID_ATTR_BRUSH;
+            break;
+            case TBL_DEST_ROW:
+                nSlot = SID_ATTR_BRUSH_ROW;
+            break;
+            case TBL_DEST_TBL:
+                nSlot = SID_ATTR_BRUSH_TABLE;
+            break;
+        }
+    }
+
+    sal_uInt16 nWhich = GetWhich(nSlot);
+
+    drawing::FillStyle eFillType = rCoreSet->Get( XATTR_FILLSTYLE ).GetValue();
+    switch( eFillType )
+    {
+        case drawing::FillStyle_NONE:
+        {
+            rCoreSet->Put( SvxBrushItem( COL_TRANSPARENT, nWhich ) );
+            break;
+        }
+        case drawing::FillStyle_SOLID:
+        {
+            XFillColorItem aColorItem( rCoreSet->Get( XATTR_FILLCOLOR ) );
+            rCoreSet->Put( SvxBrushItem( aColorItem.GetColorValue(), nWhich ) );
+            break;
+        }
+        case drawing::FillStyle_BITMAP:
+        {
+            SvxBrushItem aBrushItem( getSvxBrushItemFromSourceSet( *rCoreSet, nWhich ) );
+            if ( GraphicType::NONE != aBrushItem.GetGraphicObject()->GetType() ) // no selection so use current
+                rCoreSet->Put( aBrushItem );
+            break;
+        }
+        default:
+            break;
+    }
+
+    return true;
+}
+
+VclPtr<SfxTabPage> SvxBkgTabPage::Create( vcl::Window* pWindow,
+                                           const SfxItemSet* rAttrs )
+{
+    return VclPtr<SvxBkgTabPage>::Create( pWindow, *rAttrs );
+}
+
+void SvxBkgTabPage::PageCreated(const SfxAllItemSet& aSet)
+{
+    const SfxUInt32Item* pFlagItem = aSet.GetItem<SfxUInt32Item>(SID_FLAG_TYPE, false);
+    if (pFlagItem)
+    {
+        SvxBackgroundTabFlags nFlags = static_cast<SvxBackgroundTabFlags>(pFlagItem->GetValue());
+        if ( nFlags & SvxBackgroundTabFlags::SHOW_TBLCTL )
+        {
+            VclPtr<vcl::Window> pBtn;
+            get(pBtn, "btnbitmap");
+            pBtn->Show();
+            get(m_pTblLBox, "tablelb");
+            m_pTblLBox->SelectEntryPos(0);
+            m_pTblLBox->Show();
+        }
+    }
+    SvxAreaTabPage::PageCreated( aSet );
+}
+
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/cui/uiconfig/ui/areatabpage.ui b/cui/uiconfig/ui/areatabpage.ui
index 3e1b746a3815..f1165815fe4c 100644
--- a/cui/uiconfig/ui/areatabpage.ui
+++ b/cui/uiconfig/ui/areatabpage.ui
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!-- Generated with glade 3.16.1 -->
+<!-- Generated with glade 3.20.0 -->
 <interface domain="cui">
   <requires lib="gtk+" version="3.18"/>
   <!-- interface-requires LibreOffice 1.0 -->
@@ -25,6 +25,22 @@
             <property name="spacing">12</property>
             <property name="layout_style">center</property>
             <child>
+              <object class="GtkComboBoxText" id="tablelb">
+                <property name="can_focus">False</property>
+                <property name="active">0</property>
+                <items>
+                  <item id="cellid" translatable="yes" context="areatabpage|tablelb">Cell</item>
+                  <item id="rowid" translatable="yes" context="areatabpage|tablelb">Row</item>
+                  <item id="tableid" translatable="yes" context="areatabpage|tablelb">Table</item>
+                </items>
+              </object>
+              <packing>
+                <property name="expand">True</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+            <child>
               <object class="GtkButton" id="btnnone">
                 <property name="label" translatable="yes" context="areatabpage|btnnone">None</property>
                 <property name="visible">True</property>
@@ -34,7 +50,7 @@
               <packing>
                 <property name="expand">True</property>
                 <property name="fill">True</property>
-                <property name="position">0</property>
+                <property name="position">1</property>
               </packing>
             </child>
             <child>
@@ -47,7 +63,7 @@
               <packing>
                 <property name="expand">True</property>
                 <property name="fill">True</property>
-                <property name="position">1</property>
+                <property name="position">2</property>
               </packing>
             </child>
             <child>
@@ -60,12 +76,12 @@
               <packing>
                 <property name="expand">True</property>
                 <property name="fill">True</property>
-                <property name="position">2</property>
+                <property name="position">3</property>
               </packing>
             </child>
             <child>
-              <object class="GtkButton" id="btnhatch">
-                <property name="label" translatable="yes" context="areatabpage|btnhatch">Hatch</property>
+              <object class="GtkButton" id="btnbitmap">
+                <property name="label" translatable="yes" context="areatabpage|btnbitmap">Bitmap</property>
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
                 <property name="receives_default">True</property>
@@ -73,12 +89,12 @@
               <packing>
                 <property name="expand">True</property>
                 <property name="fill">True</property>
-                <property name="position">5</property>
+                <property name="position">4</property>
               </packing>
             </child>
             <child>
-              <object class="GtkButton" id="btnbitmap">
-                <property name="label" translatable="yes" context="areatabpage|btnbitmap">Bitmap</property>
+              <object class="GtkButton" id="btnpattern">
+                <property name="label" translatable="yes" context="areatabpage|btnpattern">Pattern</property>
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
                 <property name="receives_default">True</property>
@@ -86,12 +102,12 @@
               <packing>
                 <property name="expand">True</property>
                 <property name="fill">True</property>
-                <property name="position">3</property>
+                <property name="position">5</property>
               </packing>
             </child>
             <child>
-              <object class="GtkButton" id="btnpattern">
-                <property name="label" translatable="yes" context="areatabpage|btnpattern">Pattern</property>
+              <object class="GtkButton" id="btnhatch">
+                <property name="label" translatable="yes" context="areatabpage|btnhatch">Hatch</property>
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
                 <property name="receives_default">True</property>
@@ -99,7 +115,7 @@
               <packing>
                 <property name="expand">True</property>
                 <property name="fill">True</property>
-                <property name="position">4</property>
+                <property name="position">6</property>
               </packing>
             </child>
           </object>
diff --git a/include/svx/dialogs.hrc b/include/svx/dialogs.hrc
index 1c620a67c697..103a07073c93 100644
--- a/include/svx/dialogs.hrc
+++ b/include/svx/dialogs.hrc
@@ -42,6 +42,7 @@
 #define RID_SVXPAGE_PAGE                    (RID_SVX_START +  25)
 #define RID_SVXPAGE_LINE                    (RID_SVX_START +  51)
 #define RID_SVXPAGE_AREA                    (RID_SVX_START +  56)
+#define RID_SVXPAGE_BKG                     (RID_SVX_START +  57)
 #define RID_SVXPAGE_SHADOW                  (RID_SVX_START +  61)
 #define RID_SVXPAGE_TRANSPARENCE            (RID_SVX_START +  54)
 #define RID_SVXPAGE_TEXTATTR                (RID_SVX_START + 153)
diff --git a/sw/source/ui/table/tabledlg.cxx b/sw/source/ui/table/tabledlg.cxx
index 52da54c14c00..e25d0b12dce5 100644
--- a/sw/source/ui/table/tabledlg.cxx
+++ b/sw/source/ui/table/tabledlg.cxx
@@ -1245,7 +1245,7 @@ SwTableTabDlg::SwTableTabDlg(vcl::Window* pParent,
     AddTabPage("table", &SwFormatTablePage::Create, nullptr);
     m_nTextFlowId = AddTabPage("textflow", &SwTextFlowPage::Create, nullptr);
     AddTabPage("columns", &SwTableColumnPage::Create, nullptr);
-    m_nBackgroundId = AddTabPage("background", pFact->GetTabPageCreatorFunc(RID_SVXPAGE_BACKGROUND), nullptr);
+    m_nBackgroundId = AddTabPage("background", pFact->GetTabPageCreatorFunc(RID_SVXPAGE_BKG), nullptr);
     m_nBorderId = AddTabPage("borders", pFact->GetTabPageCreatorFunc(RID_SVXPAGE_BORDER), nullptr);
 }
 
@@ -1254,7 +1254,7 @@ void  SwTableTabDlg::PageCreated(sal_uInt16 nId, SfxTabPage& rPage)
     SfxAllItemSet aSet(*(GetInputSetImpl()->GetPool()));
     if (nId == m_nBackgroundId)
     {
-        SvxBackgroundTabFlags const nFlagType = SvxBackgroundTabFlags::SHOW_TBLCTL | SvxBackgroundTabFlags::SHOW_SELECTOR;
+        SvxBackgroundTabFlags const nFlagType = SvxBackgroundTabFlags::SHOW_TBLCTL;
         aSet.Put (SfxUInt32Item(SID_FLAG_TYPE, static_cast<sal_uInt32>(nFlagType)));
         rPage.PageCreated(aSet);
     }
diff --git a/sw/source/uibase/shells/tabsh.cxx b/sw/source/uibase/shells/tabsh.cxx
index 993203be5690..e8d6de529462 100644
--- a/sw/source/uibase/shells/tabsh.cxx
+++ b/sw/source/uibase/shells/tabsh.cxx
@@ -84,6 +84,8 @@
 
 #include <memory>
 
+#include <svx/unobrushitemhelper.hxx>
+
 using ::editeng::SvxBorderLine;
 using namespace ::com::sun::star;
 
@@ -98,6 +100,7 @@ void SwTableShell::InitInterface_Impl()
 
 static const sal_uInt16 aUITableAttrRange[] =
 {
+    XATTR_FILL_FIRST,               XATTR_FILL_LAST,
     FN_PARAM_TABLE_NAME,            FN_PARAM_TABLE_NAME,
     FN_PARAM_TABLE_HEADLINE,        FN_PARAM_TABLE_HEADLINE,
     FN_PARAM_TABLE_SPACE,           FN_PARAM_TABLE_SPACE,
@@ -587,6 +590,8 @@ void SwTableShell::Execute(SfxRequest &rReq)
             else
                 aCoreSet.InvalidateItem( RES_BACKGROUND );
 
+            setSvxBrushItemAsFillAttributesToTargetSet(aBrush, aCoreSet);
+
             SwAbstractDialogFactory* pFact = SwAbstractDialogFactory::Create();
             OSL_ENSURE(pFact, "SwAbstractDialogFactory fail!");
 


More information about the Libreoffice-commits mailing list