include/svtools/inettbc.hxx          |    2 
 svtools/source/control/inettbc.cxx   |   12 +++++
 svx/source/form/datanavi.cxx         |   71 ++++++++++++++---------------------
 svx/source/inc/datanavi.hxx          |   34 +++++++---------
 svx/uiconfig/ui/addinstancedialog.ui |   21 ++++++++--
 5 files changed, 76 insertions(+), 64 deletions(-)

New commits:
commit 881bb00dc39d65560e26a60b34ae05d1ac662bc0
Author: Caolán McNamara <caol...@redhat.com>
Date:   Mon May 14 12:20:41 2018 +0100

    weld AddInstanceDialog
    
    Change-Id: I69bcb7fb9c18922a5de03e6f2dedd915a5851712
    Reviewed-on: https://gerrit.libreoffice.org/54313
    Tested-by: Jenkins <c...@libreoffice.org>
    Reviewed-by: Caolán McNamara <caol...@redhat.com>
    Tested-by: Caolán McNamara <caol...@redhat.com>

diff --git a/include/svtools/inettbc.hxx b/include/svtools/inettbc.hxx
index b78ad021791a..e7f67bed8a03 100644
--- a/include/svtools/inettbc.hxx
+++ b/include/svtools/inettbc.hxx
@@ -100,6 +100,7 @@ class SVT_DLLPUBLIC URLBox
     OUString                        aBaseURL;
     rtl::Reference< MatchContext_Impl > pCtx;
     std::unique_ptr<SvtURLBox_Impl> pImpl;
+    bool                            bHistoryDisabled    : 1;
 
     std::unique_ptr<weld::ComboBoxText> m_xWidget;
 
@@ -123,6 +124,7 @@ public:
 
     void                            SetBaseURL( const OUString& rURL );
     OUString                        GetURL();
+    void                            DisableHistory();
 
     weld::Widget*                   getWidget() { return m_xWidget.get(); }
 
diff --git a/svtools/source/control/inettbc.cxx 
b/svtools/source/control/inettbc.cxx
index 0ba4aaa20ba8..dfd73391ca65 100644
--- a/svtools/source/control/inettbc.cxx
+++ b/svtools/source/control/inettbc.cxx
@@ -2010,7 +2010,8 @@ IMPL_LINK_NOARG(URLBox, TryAutoComplete, Timer *, void)
 }
 
 URLBox::URLBox(weld::ComboBoxText* pWidget)
-    : m_xWidget(pWidget)
+    : bHistoryDisabled(false)
+    , m_xWidget(pWidget)
 {
     Init();
 
@@ -2044,6 +2045,9 @@ void URLBox::UpdatePicklistForSmartProtocol_Impl()
 {
     m_xWidget->clear();
 
+    if (bHistoryDisabled)
+        return;
+
     // read history pick list
     Sequence< Sequence< PropertyValue > > seqPicklist = 
SvtHistoryOptions().GetList( ePICKLIST );
     sal_uInt32 nCount = seqPicklist.getLength();
@@ -2201,4 +2205,10 @@ void URLBox::SetBaseURL( const OUString& rURL )
     aBaseURL = rURL;
 }
 
+void URLBox::DisableHistory()
+{
+    bHistoryDisabled = true;
+    UpdatePicklistForSmartProtocol_Impl();
+}
+
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/source/form/datanavi.cxx b/svx/source/form/datanavi.cxx
index 06eade7b63b1..7d97015284b4 100644
--- a/svx/source/form/datanavi.cxx
+++ b/svx/source/form/datanavi.cxx
@@ -1624,13 +1624,13 @@ namespace svxform
             OString sIdent(pBtn->GetCurItemIdent());
             if (sIdent == "instancesadd")
             {
-                ScopedVclPtrInstance< AddInstanceDialog > aDlg( this, false );
-                if ( aDlg->Execute() == RET_OK )
+                AddInstanceDialog aDlg(GetFrameWeld(), false);
+                if (aDlg.run() == RET_OK)
                 {
                     sal_uInt16 nInst = GetNewPageId();
-                    OUString sName = aDlg->GetName();
-                    OUString sURL = aDlg->GetURL();
-                    bool bLinkOnce = aDlg->IsLinkInstance();
+                    OUString sName = aDlg.GetName();
+                    OUString sURL = aDlg.GetURL();
+                    bool bLinkOnce = aDlg.IsLinkInstance();
                     try
                     {
                         xUIHelper->newInstance( sName, sURL, !bLinkOnce );
@@ -1655,16 +1655,16 @@ namespace svxform
                 XFormsPage* pPage = GetCurrentPage( nId );
                 if ( pPage )
                 {
-                    ScopedVclPtrInstance< AddInstanceDialog > aDlg( this, true 
);
-                    aDlg->SetName( pPage->GetInstanceName() );
-                    aDlg->SetURL( pPage->GetInstanceURL() );
-                    aDlg->SetLinkInstance( pPage->GetLinkOnce() );
-                    OUString sOldName = aDlg->GetName();
-                    if ( aDlg->Execute() == RET_OK )
+                    AddInstanceDialog aDlg(GetFrameWeld(), true);
+                    aDlg.SetName( pPage->GetInstanceName() );
+                    aDlg.SetURL( pPage->GetInstanceURL() );
+                    aDlg.SetLinkInstance( pPage->GetLinkOnce() );
+                    OUString sOldName = aDlg.GetName();
+                    if (aDlg.run() == RET_OK)
                     {
-                        OUString sNewName = aDlg->GetName();
-                        OUString sURL = aDlg->GetURL();
-                        bool bLinkOnce = aDlg->IsLinkInstance();
+                        OUString sNewName = aDlg.GetName();
+                        OUString sURL = aDlg.GetURL();
+                        bool bLinkOnce = aDlg.IsLinkInstance();
                         try
                         {
                             xUIHelper->renameInstance( sOldName,
@@ -3339,20 +3339,20 @@ namespace svxform
         ModalDialog::dispose();
     }
 
-    AddInstanceDialog::AddInstanceDialog(vcl::Window* pParent, bool _bEdit)
-        : ModalDialog(pParent, "AddInstanceDialog" , 
"svx/ui/addinstancedialog.ui")
+    AddInstanceDialog::AddInstanceDialog(weld::Window* pParent, bool _bEdit)
+        : GenericDialogController(pParent, "svx/ui/addinstancedialog.ui", 
"AddInstanceDialog")
+        , m_xNameED(m_xBuilder->weld_entry("name"))
+        , m_xURLFT(m_xBuilder->weld_label("urlft"))
+        , m_xURLED(new URLBox(m_xBuilder->weld_combo_box_text("url")))
+        , m_xFilePickerBtn(m_xBuilder->weld_button("browse"))
+        , m_xLinkInstanceCB(m_xBuilder->weld_check_button("link"))
+        , m_xAltTitle(m_xBuilder->weld_label("alttitle"))
     {
-        get(m_pNameED, "name");
-        get(m_pURLFT, "urlft");
-        get(m_pURLED, "url");
-        get(m_pFilePickerBtn, "browse");
-        get(m_pLinkInstanceCB, "link");
-
-        if ( _bEdit )
-            SetText(get<FixedText>("alttitle")->GetText());
+        if (_bEdit)
+            m_xDialog->set_title(m_xAltTitle->get_label());
 
-        m_pURLED->DisableHistory();
-        m_pFilePickerBtn->SetClickHdl( LINK( this, AddInstanceDialog, 
FilePickerHdl ) );
+        m_xURLED->DisableHistory();
+        m_xFilePickerBtn->connect_clicked(LINK(this, AddInstanceDialog, 
FilePickerHdl));
 
         // load the filter name from fps resource
         m_sAllFilterName = Translate::get(STR_FILTERNAME_ALL, 
Translate::Create("fps"));
@@ -3360,24 +3360,13 @@ namespace svxform
 
     AddInstanceDialog::~AddInstanceDialog()
     {
-        disposeOnce();
-    }
-
-    void AddInstanceDialog::dispose()
-    {
-        m_pNameED.clear();
-        m_pURLFT.clear();
-        m_pURLED.clear();
-        m_pFilePickerBtn.clear();
-        m_pLinkInstanceCB.clear();
-        ModalDialog::dispose();
     }
 
-    IMPL_LINK_NOARG(AddInstanceDialog, FilePickerHdl, Button*, void)
+    IMPL_LINK_NOARG(AddInstanceDialog, FilePickerHdl, weld::Button&, void)
     {
         ::sfx2::FileDialogHelper aDlg(
             css::ui::dialogs::TemplateDescription::FILEOPEN_SIMPLE,
-            FileDialogFlags::NONE, GetFrameWeld());
+            FileDialogFlags::NONE, m_xDialog.get());
         INetURLObject aFile( SvtPathOptions().GetWorkPath() );
 
         aDlg.AddFilter( m_sAllFilterName, FILEDIALOG_FILTER_ALL );
@@ -3386,8 +3375,8 @@ namespace svxform
         aDlg.SetCurrentFilter( sFilterName );
         aDlg.SetDisplayDirectory( aFile.GetMainURL( 
INetURLObject::DecodeMechanism::NONE ) );
 
-        if( aDlg.Execute() == ERRCODE_NONE )
-            m_pURLED->SetText( aDlg.GetPath() );
+        if (aDlg.Execute() == ERRCODE_NONE)
+            m_xURLED->SetText( aDlg.GetPath() );
     }
 
     LinkedInstanceWarningBox::LinkedInstanceWarningBox(weld::Widget* pParent)
diff --git a/svx/source/inc/datanavi.hxx b/svx/source/inc/datanavi.hxx
index b424c472de0b..cc66523361aa 100644
--- a/svx/source/inc/datanavi.hxx
+++ b/svx/source/inc/datanavi.hxx
@@ -85,7 +85,6 @@ namespace svxform
     class DataNavigatorWindow;
     class AddInstanceDialog;
 
-
     class DataTreeListBox : public SvTreeListBox
     {
     private:
@@ -604,33 +603,32 @@ namespace svxform
     };
 
 
-    class AddInstanceDialog : public ModalDialog
+    class AddInstanceDialog : public weld::GenericDialogController
     {
     private:
-        VclPtr<Edit>                   m_pNameED;
-        VclPtr<FixedText>              m_pURLFT;
-        VclPtr<SvtURLBox>              m_pURLED;
-        VclPtr<PushButton>             m_pFilePickerBtn;
-        VclPtr<CheckBox>               m_pLinkInstanceCB;
-
         OUString                m_sAllFilterName;
 
-        DECL_LINK(FilePickerHdl, Button*, void);
+        std::unique_ptr<weld::Entry> m_xNameED;
+        std::unique_ptr<weld::Label> m_xURLFT;
+        std::unique_ptr<URLBox> m_xURLED;
+        std::unique_ptr<weld::Button> m_xFilePickerBtn;
+        std::unique_ptr<weld::CheckButton> m_xLinkInstanceCB;
+        std::unique_ptr<weld::Label> m_xAltTitle;
+
+        DECL_LINK(FilePickerHdl, weld::Button&, void);
 
     public:
-        AddInstanceDialog( vcl::Window* pParent, bool _bEdit );
+        AddInstanceDialog(weld::Window* pParent, bool _bEdit);
         virtual ~AddInstanceDialog() override;
-        virtual void dispose() override;
 
-        OUString         GetName() const { return m_pNameED->GetText(); }
-        void             SetName( const OUString& _rName ) { 
m_pNameED->SetText( _rName );}
-        OUString         GetURL() const { return m_pURLED->GetText(); }
-        void             SetURL( const OUString& _rURL ) { m_pURLED->SetText( 
_rURL );}
-        bool             IsLinkInstance() const { return 
m_pLinkInstanceCB->IsChecked(); }
-        void             SetLinkInstance( bool _bLink ) { 
m_pLinkInstanceCB->Check(_bLink); }
+        OUString         GetName() const { return m_xNameED->get_text(); }
+        void             SetName( const OUString& _rName ) { 
m_xNameED->set_text( _rName );}
+        OUString         GetURL() const { return m_xURLED->get_active_text(); }
+        void             SetURL( const OUString& _rURL ) { m_xURLED->SetText( 
_rURL );}
+        bool             IsLinkInstance() const { return 
m_xLinkInstanceCB->get_active(); }
+        void             SetLinkInstance( bool _bLink ) { 
m_xLinkInstanceCB->set_active(_bLink); }
     };
 
-
     class LinkedInstanceWarningBox : public weld::MessageDialogController
     {
     public:
diff --git a/svx/uiconfig/ui/addinstancedialog.ui 
b/svx/uiconfig/ui/addinstancedialog.ui
index 0f84988af2e6..f08a49b71d0a 100644
--- a/svx/uiconfig/ui/addinstancedialog.ui
+++ b/svx/uiconfig/ui/addinstancedialog.ui
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!-- Generated with glade 3.18.3 -->
+<!-- Generated with glade 3.22.1 -->
 <interface domain="svx">
   <requires lib="gtk+" version="3.18"/>
   <requires lib="LibreOffice" version="1.0"/>
@@ -7,7 +7,13 @@
     <property name="can_focus">False</property>
     <property name="border_width">6</property>
     <property name="title" translatable="yes" 
context="addinstancedialog|AddInstanceDialog">Add Instance</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>
@@ -81,6 +87,7 @@
               <object class="GtkEntry" id="name">
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
+                <property name="activates_default">True</property>
                 <property name="width_chars">46</property>
               </object>
               <packing>
@@ -93,10 +100,10 @@
               <object class="GtkLabel" id="label2">
                 <property name="visible">True</property>
                 <property name="can_focus">False</property>
-                <property name="xalign">1</property>
                 <property name="label" translatable="yes" 
context="addinstancedialog|label2">_Name:</property>
                 <property name="use_underline">True</property>
                 <property name="mnemonic_widget">name</property>
+                <property name="xalign">1</property>
               </object>
               <packing>
                 <property name="left_attach">0</property>
@@ -119,10 +126,10 @@
               <object class="GtkLabel" id="urlft">
                 <property name="visible">True</property>
                 <property name="can_focus">False</property>
-                <property name="xalign">1</property>
                 <property name="label" translatable="yes" 
context="addinstancedialog|urlft">_URL:</property>
                 <property name="use_underline">True</property>
                 <property name="mnemonic_widget">name</property>
+                <property name="xalign">1</property>
               </object>
               <packing>
                 <property name="left_attach">0</property>
@@ -130,10 +137,16 @@
               </packing>
             </child>
             <child>
-              <object class="svtlo-SvtURLBox" id="url">
+               <object class="GtkComboBoxText" id="url">
                 <property name="visible">True</property>
                 <property name="can_focus">False</property>
                 <property name="hexpand">True</property>
+                <property name="has_entry">True</property>
+                <child internal-child="entry">
+                  <object class="GtkEntry">
+                    <property name="can_focus">True</property>
+                  </object>
+                </child>
               </object>
               <packing>
                 <property name="left_attach">1</property>
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to