sw/inc/strings.hrc                          |    2 
 sw/source/ui/dbui/addresslistdialog.cxx     |    9 +
 sw/source/ui/dbui/selectdbtabledialog.cxx   |  130 ++++++++--------------------
 sw/source/ui/dbui/selectdbtabledialog.hxx   |   18 +--
 sw/uiconfig/swriter/ui/selecttabledialog.ui |   71 +++++++++++++--
 5 files changed, 113 insertions(+), 117 deletions(-)

New commits:
commit b164e74e85fc4c99f1042f22b5e3afc99ed159ca
Author:     Caolán McNamara <caol...@redhat.com>
AuthorDate: Thu Feb 28 13:30:13 2019 +0000
Commit:     Caolán McNamara <caol...@redhat.com>
CommitDate: Fri Mar 1 11:03:55 2019 +0100

    weld SwSelectDBTableDialog
    
    Change-Id: I3759d4da18a7cb5a8fce500bd15e7a004e36c605
    Reviewed-on: https://gerrit.libreoffice.org/68507
    Tested-by: Jenkins
    Reviewed-by: Caolán McNamara <caol...@redhat.com>
    Tested-by: Caolán McNamara <caol...@redhat.com>

diff --git a/sw/inc/strings.hrc b/sw/inc/strings.hrc
index c5fdd50f5f77..85ec816ad3d8 100644
--- a/sw/inc/strings.hrc
+++ b/sw/inc/strings.hrc
@@ -829,8 +829,6 @@
 #define ST_FINISH                               NC_("ST_FINISH", "~Finish")
 #define ST_MMWTITLE                             NC_("ST_MMWTITLE", "Mail Merge 
Wizard")
 
-#define ST_NAME                                 NC_("ST_NAME", "Name")
-#define ST_TYPE                                 NC_("ST_TYPE", "Type")
 #define ST_TABLE                                NC_("ST_TABLE", "Table")
 #define ST_QUERY                                NC_("ST_QUERY", "Query")
 
diff --git a/sw/source/ui/dbui/addresslistdialog.cxx 
b/sw/source/ui/dbui/addresslistdialog.cxx
index 767800ec8f43..9d62691d751c 100644
--- a/sw/source/ui/dbui/addresslistdialog.cxx
+++ b/sw/source/ui/dbui/addresslistdialog.cxx
@@ -28,6 +28,7 @@
 #include <dbconfig.hxx>
 #include <unotools/tempfile.hxx>
 #include <vcl/svapp.hxx>
+#include <vcl/fixed.hxx>
 #include <tools/urlobj.hxx>
 #include <comphelper/processfactory.hxx>
 #include <comphelper/types.hxx>
@@ -550,14 +551,14 @@ void SwAddressListDialog::DetectTablesAndQueries(
             if(nTables > 1 && bWidthDialog)
             {
                 //now call the table select dialog - if more than one table 
exists
-                VclPtrInstance<SwSelectDBTableDialog> pDlg(this, 
pUserData->xConnection);
+                SwSelectDBTableDialog aDlg(GetFrameWeld(), 
pUserData->xConnection);
                 const OUString sTable = SvTabListBox::GetEntryText(pSelect, 
ITEMID_TABLE - 1);
                 if(!sTable.isEmpty())
-                    pDlg->SetSelectedTable(sTable, pUserData->nCommandType == 
CommandType::TABLE);
-                if(RET_OK == pDlg->Execute())
+                    aDlg.SetSelectedTable(sTable, pUserData->nCommandType == 
CommandType::TABLE);
+                if(RET_OK == aDlg.run())
                 {
                     bool bIsTable;
-                    m_aDBData.sCommand = pDlg->GetSelectedTable(bIsTable);
+                    m_aDBData.sCommand = aDlg.GetSelectedTable(bIsTable);
                     m_aDBData.nCommandType = bIsTable ? CommandType::TABLE : 
CommandType::QUERY;
                     pUserData->nCommandType = m_aDBData.nCommandType;
                 }
diff --git a/sw/source/ui/dbui/selectdbtabledialog.cxx 
b/sw/source/ui/dbui/selectdbtabledialog.cxx
index f931563cd46a..c7c309265f5a 100644
--- a/sw/source/ui/dbui/selectdbtabledialog.cxx
+++ b/sw/source/ui/dbui/selectdbtabledialog.cxx
@@ -43,66 +43,21 @@ using namespace ::com::sun::star::uno;
 using namespace ::com::sun::star::container;
 using namespace ::com::sun::star::beans;
 
-class SwAddressTable : public SvSimpleTable
-{
-public:
-    explicit SwAddressTable(SvSimpleTableContainer& rParent);
-    void InsertHeaderItem(sal_uInt16 nColumn, const OUString& rText);
-    virtual void Resize() override;
-    void setColSizes();
-};
-
-SwAddressTable::SwAddressTable(SvSimpleTableContainer& rParent)
-    : SvSimpleTable(rParent, 0)
-{
-    SetSpaceBetweenEntries(3);
-    SetSelectionMode(SelectionMode::Single);
-    SetDragDropMode(DragDropMode::NONE);
-    EnableAsyncDrag(false);
-}
-
-void SwAddressTable::InsertHeaderItem(sal_uInt16 nColumn, const OUString& 
rText)
-{
-    GetTheHeaderBar().InsertItem( nColumn, rText, 0, HeaderBarItemBits::LEFT );
-}
-
-void SwAddressTable::Resize()
-{
-    SvSimpleTable::Resize();
-    setColSizes();
-}
-
-void SwAddressTable::setColSizes()
-{
-    HeaderBar &rHB = GetTheHeaderBar();
-    if (rHB.GetItemCount() < 2)
-        return;
-
-    long nWidth = rHB.GetSizePixel().Width();
-    nWidth /= 2;
-
-    long nTabs[2] = { 0, nWidth };
-    SvSimpleTable::SetTabs(SAL_N_ELEMENTS(nTabs), nTabs, MapUnit::MapPixel);
-}
-
-SwSelectDBTableDialog::SwSelectDBTableDialog(vcl::Window* pParent,
+SwSelectDBTableDialog::SwSelectDBTableDialog(weld::Window* pParent,
         const uno::Reference< sdbc::XConnection>& rConnection)
-    : SfxModalDialog(pParent, "SelectTableDialog", 
"modules/swriter/ui/selecttabledialog.ui")
+    : SfxDialogController(pParent, "modules/swriter/ui/selecttabledialog.ui", 
"SelectTableDialog")
     , m_xConnection(rConnection)
+    , m_xTable(m_xBuilder->weld_tree_view("table"))
+    , m_xPreviewPB(m_xBuilder->weld_button("preview"))
 {
-    get(m_pPreviewPB, "preview");
+    m_xTable->set_size_request(m_xTable->get_approximate_digit_width() * 60,
+                               m_xTable->get_height_rows(6));
 
-    SvSimpleTableContainer *pHeaderTreeContainer = 
get<SvSimpleTableContainer>("table");
-    Size aSize = pHeaderTreeContainer->LogicToPixel(Size(238 , 50), 
MapMode(MapUnit::MapAppFont));
-    pHeaderTreeContainer->set_width_request(aSize.Width());
-    pHeaderTreeContainer->set_height_request(aSize.Height());
-    m_pTable = VclPtr<SwAddressTable>::Create(*pHeaderTreeContainer);
-    long const aStaticTabs[]= { 0, 0 };
-    m_pTable->SetTabs( SAL_N_ELEMENTS(aStaticTabs), aStaticTabs );
-    m_pTable->InsertHeaderItem(1, SwResId(ST_NAME) );
-    m_pTable->InsertHeaderItem(2, SwResId(ST_TYPE) );
+    std::vector<int> aWidths;
+    aWidths.push_back(m_xTable->get_approximate_digit_width() * 30);
+    m_xTable->set_column_fixed_widths(aWidths);
 
-    m_pPreviewPB->SetClickHdl(LINK(this, SwSelectDBTableDialog, PreviewHdl));
+    m_xPreviewPB->connect_clicked(LINK(this, SwSelectDBTableDialog, 
PreviewHdl));
 
     Reference<XTablesSupplier> xTSupplier(m_xConnection, UNO_QUERY);
     if (xTSupplier.is())
@@ -110,13 +65,11 @@ SwSelectDBTableDialog::SwSelectDBTableDialog(vcl::Window* 
pParent,
         Reference<XNameAccess> xTables = xTSupplier->getTables();
         Sequence<OUString> aTables = xTables->getElementNames();
         const OUString* pTables = aTables.getConstArray();
-        for(long i = 0; i < aTables.getLength(); i++)
+        for (int i = 0; i < aTables.getLength(); i++)
         {
             OUString sEntry = pTables[i];
-            sEntry += "\t";
-            sEntry += SwResId(ST_TABLE);
-            SvTreeListEntry* pEntry = m_pTable->InsertEntry(sEntry);
-            pEntry->SetUserData(nullptr);
+            m_xTable->append_text(sEntry);
+            m_xTable->set_text(i, SwResId(ST_TABLE), 1);
         }
     }
     Reference<XQueriesSupplier> xQSupplier(m_xConnection, UNO_QUERY);
@@ -125,37 +78,30 @@ SwSelectDBTableDialog::SwSelectDBTableDialog(vcl::Window* 
pParent,
         Reference<XNameAccess> xQueries = xQSupplier->getQueries();
         Sequence<OUString> aQueries = xQueries->getElementNames();
         const OUString* pQueries = aQueries.getConstArray();
-        for(long i = 0; i < aQueries.getLength(); i++)
+        int nPos = m_xTable->n_children();
+        for (sal_Int32 i = 0; i < aQueries.getLength(); i++)
         {
             OUString sEntry = pQueries[i];
-            sEntry += "\t";
-            sEntry += SwResId(ST_QUERY);
-            SvTreeListEntry* pEntry = m_pTable->InsertEntry(sEntry);
-            pEntry->SetUserData(reinterpret_cast<void*>(1));
+            m_xTable->append_text(sEntry);
+            m_xTable->set_text(nPos, SwResId(ST_QUERY), 1);
+            m_xTable->set_id(nPos, OUString::number(1));
+            ++nPos;
         }
     }
 }
 
 SwSelectDBTableDialog::~SwSelectDBTableDialog()
 {
-    disposeOnce();
 }
 
-void SwSelectDBTableDialog::dispose()
+IMPL_LINK_NOARG(SwSelectDBTableDialog, PreviewHdl, weld::Button&, void)
 {
-    m_pTable.disposeAndClear();
-    m_pPreviewPB.clear();
-    SfxModalDialog::dispose();
-}
-
-IMPL_LINK(SwSelectDBTableDialog, PreviewHdl, Button*, pButton, void)
-{
-    SvTreeListEntry* pEntry = m_pTable->FirstSelected();
-    if(!pEntry)
+    int nEntry = m_xTable->get_selected_index();
+    if (nEntry == -1)
         return;
 
-    OUString sTableOrQuery = SvTabListBox::GetEntryText(pEntry, 0);
-    sal_Int32 nCommandType = nullptr == pEntry->GetUserData() ? 0 : 1;
+    OUString sTableOrQuery = m_xTable->get_text(nEntry, 0);
+    sal_Int32 nCommandType = m_xTable->get_id(nEntry).isEmpty() ? 0 : 1;
 
     OUString sDataSourceName;
     Reference<XChild> xChild(m_xConnection, UNO_QUERY);
@@ -179,30 +125,32 @@ IMPL_LINK(SwSelectDBTableDialog, PreviewHdl, Button*, 
pButton, void)
     pProperties[4].Name = "ShowTreeViewButton";
     pProperties[4].Value <<= false;
 
-    VclPtrInstance< SwDBTablePreviewDialog > pDlg(pButton, aProperties);
+    VclPtrInstance< SwDBTablePreviewDialog > pDlg(nullptr, aProperties); //TODO
     pDlg->Execute();
-
 }
 
-OUString    SwSelectDBTableDialog::GetSelectedTable(bool& bIsTable)
+OUString SwSelectDBTableDialog::GetSelectedTable(bool& bIsTable)
 {
-    SvTreeListEntry* pEntry = m_pTable->FirstSelected();
-    bIsTable = pEntry->GetUserData() == nullptr;
-    return SvTabListBox::GetEntryText(pEntry, 0);
+    int nEntry = m_xTable->get_selected_index();
+    if (nEntry != -1)
+    {
+        bIsTable = m_xTable->get_id(nEntry).isEmpty();
+        return m_xTable->get_text(nEntry, 0);
+    }
+    bIsTable = false;
+    return OUString();
 }
 
-void   SwSelectDBTableDialog::SetSelectedTable(const OUString& rTable, bool 
bIsTable)
+void SwSelectDBTableDialog::SetSelectedTable(const OUString& rTable, bool 
bIsTable)
 {
-    SvTreeListEntry*    pEntry = m_pTable->First();
-    while(pEntry)
+    for (int i = 0, nCount = m_xTable->n_children(); i < nCount; ++i)
     {
-        if((SvTabListBox::GetEntryText(pEntry, 0) == rTable) &&
-           ((pEntry->GetUserData() == nullptr ) == bIsTable))
+        if (m_xTable->get_text(i, 0) == rTable &&
+            m_xTable->get_id(i).isEmpty() == bIsTable)
         {
-            m_pTable->Select(pEntry);
+            m_xTable->select(i);
             break;
         }
-        pEntry = m_pTable->Next( pEntry );
     }
 }
 
diff --git a/sw/source/ui/dbui/selectdbtabledialog.hxx 
b/sw/source/ui/dbui/selectdbtabledialog.hxx
index 9f251f3ee8a6..4c4acfcc167d 100644
--- a/sw/source/ui/dbui/selectdbtabledialog.hxx
+++ b/sw/source/ui/dbui/selectdbtabledialog.hxx
@@ -21,30 +21,24 @@
 
 #include <sfx2/basedlgs.hxx>
 
-#include <vcl/button.hxx>
-#include <vcl/fixed.hxx>
-#include <vcl/layout.hxx>
-
 namespace com{namespace sun{namespace star{
     namespace sdbc{
         class XConnection;
     }
 }}}
 
-class SwAddressTable;
-
-class SwSelectDBTableDialog : public SfxModalDialog
+class SwSelectDBTableDialog : public SfxDialogController
 {
-    VclPtr<SwAddressTable> m_pTable;
-    VclPtr<PushButton>     m_pPreviewPB;
     css::uno::Reference<css::sdbc::XConnection> m_xConnection;
 
-    DECL_LINK(PreviewHdl, Button*, void);
+    std::unique_ptr<weld::TreeView> m_xTable;
+    std::unique_ptr<weld::Button> m_xPreviewPB;
+
+    DECL_LINK(PreviewHdl, weld::Button&, void);
 public:
-    SwSelectDBTableDialog(vcl::Window* pParent,
+    SwSelectDBTableDialog(weld::Window* pParent,
         const css::uno::Reference<css::sdbc::XConnection>& xConnection);
     virtual ~SwSelectDBTableDialog() override;
-    virtual void dispose() override;
 
     OUString    GetSelectedTable(bool& bIsTable);
     void        SetSelectedTable(const OUString& rTable, bool bIsTable);
diff --git a/sw/uiconfig/swriter/ui/selecttabledialog.ui 
b/sw/uiconfig/swriter/ui/selecttabledialog.ui
index 020b37e9bcaf..35f9232455a0 100644
--- a/sw/uiconfig/swriter/ui/selecttabledialog.ui
+++ b/sw/uiconfig/swriter/ui/selecttabledialog.ui
@@ -1,14 +1,29 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!-- Generated with glade 3.18.3 -->
+<!-- Generated with glade 3.22.1 -->
 <interface domain="sw">
   <requires lib="gtk+" version="3.18"/>
-  <requires lib="LibreOffice" version="1.0"/>
+  <object class="GtkTreeStore" id="liststore1">
+    <columns>
+      <!-- column-name text -->
+      <column type="gchararray"/>
+      <!-- column-name text2 -->
+      <column type="gchararray"/>
+      <!-- column-name id -->
+      <column type="gchararray"/>
+    </columns>
+  </object>
   <object class="GtkDialog" id="SelectTableDialog">
     <property name="can_focus">False</property>
     <property name="border_width">6</property>
     <property name="title" translatable="yes" 
context="selecttabledialog|SelectTableDialog">Select Table</property>
     <property name="resizable">False</property>
+    <property name="modal">True</property>
+    <property name="default_width">0</property>
+    <property name="default_height">0</property>
     <property name="type_hint">dialog</property>
+    <child>
+      <placeholder/>
+    </child>
     <child internal-child="vbox">
       <object class="GtkBox" id="dialog-vbox1">
         <property name="can_focus">False</property>
@@ -84,11 +99,12 @@
                 <property name="visible">True</property>
                 <property name="can_focus">False</property>
                 <property name="halign">start</property>
-                <property name="xalign">0</property>
                 <property name="label" translatable="yes" 
context="selecttabledialog|select">The file you have selected contains more 
than one table. Please select the table containing the address list you want to 
use.</property>
                 <property name="use_underline">True</property>
                 <property name="wrap">True</property>
-                <property name="max_width_chars">90</property>
+                <property name="width_chars">72</property>
+                <property name="max_width_chars">72</property>
+                <property name="xalign">0</property>
               </object>
               <packing>
                 <property name="expand">False</property>
@@ -97,13 +113,52 @@
               </packing>
             </child>
             <child>
-              <object class="svtlo-SvSimpleTableContainer" id="table">
+              <object class="GtkScrolledWindow">
                 <property name="visible">True</property>
-                <property name="can_focus">False</property>
+                <property name="can_focus">True</property>
                 <property name="hexpand">True</property>
                 <property name="vexpand">True</property>
-                <child internal-child="selection">
-                  <object class="GtkTreeSelection" id="Simple Table 
Container-selection1"/>
+                <property name="shadow_type">in</property>
+                <child>
+                  <object class="GtkTreeView" id="table">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="receives_default">True</property>
+                    <property name="hexpand">True</property>
+                    <property name="vexpand">True</property>
+                    <property name="model">liststore1</property>
+                    <property name="search_column">0</property>
+                    <property name="show_expanders">False</property>
+                    <child internal-child="selection">
+                      <object class="GtkTreeSelection" id="Macro Library 
List-selection1"/>
+                    </child>
+                    <child>
+                      <object class="GtkTreeViewColumn" id="treeviewcolumn1">
+                        <property name="resizable">True</property>
+                        <property name="spacing">6</property>
+                        <property name="title" translatable="yes" 
context="selecttabledialog|column1">Name</property>
+                        <child>
+                          <object class="GtkCellRendererText" 
id="cellrenderer1"/>
+                          <attributes>
+                            <attribute name="text">0</attribute>
+                          </attributes>
+                        </child>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="GtkTreeViewColumn" id="treeviewcolumn2">
+                        <property name="resizable">True</property>
+                        <property name="spacing">6</property>
+                        <property name="title" translatable="yes" 
context="selecttabledialog|column2">Type</property>
+                        <child>
+                          <object class="GtkCellRendererText" 
id="cellrenderer2"/>
+                          <attributes>
+                            <attribute name="text">1</attribute>
+                          </attributes>
+                        </child>
+                      </object>
+                    </child>
+                  </object>
                 </child>
               </object>
               <packing>
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to