fpicker/source/office/RemoteFilesDialog.cxx |   40 ++++++----
 fpicker/source/office/RemoteFilesDialog.hxx |    7 +
 fpicker/uiconfig/ui/remotefilesdialog.ui    |  102 +++++++++++-----------------
 3 files changed, 70 insertions(+), 79 deletions(-)

New commits:
commit b004a1bd7bf3885613d52aba70dea79766eae639
Author:     Caolán McNamara <caol...@redhat.com>
AuthorDate: Sat Nov 23 19:14:45 2019 +0000
Commit:     Caolán McNamara <caol...@redhat.com>
CommitDate: Sun Nov 24 18:13:57 2019 +0100

    Resolves: tdf#128940 use a normal MenuButton
    
    instead of a split toolbar item
    
    Change-Id: I2e706d1a3255dca7a51d323a2bcf750f28b8fd1e
    Reviewed-on: https://gerrit.libreoffice.org/83581
    Tested-by: Jenkins
    Reviewed-by: Caolán McNamara <caol...@redhat.com>
    Tested-by: Caolán McNamara <caol...@redhat.com>

diff --git a/fpicker/source/office/RemoteFilesDialog.cxx 
b/fpicker/source/office/RemoteFilesDialog.cxx
index b0739b49e95c..27ed01464204 100644
--- a/fpicker/source/office/RemoteFilesDialog.cxx
+++ b/fpicker/source/office/RemoteFilesDialog.cxx
@@ -32,8 +32,7 @@ RemoteFilesDialog::RemoteFilesDialog( weld::Window* pParent, 
PickerFlags nBits )
     , m_xMasterPasswd( PasswordContainer::create( m_xContext ) )
     , m_bIsInExecute( false )
     , m_xCancel_btn(m_xBuilder->weld_button("cancel"))
-    , m_xAddService_bar(m_xBuilder->weld_toolbar("add_service_bar"))
-    , m_xAddService_menu(m_xBuilder->weld_menu("service_edit_menu"))
+    , m_xManageServices(m_xBuilder->weld_menu_button("add_service_btn"))
     , m_xServices_lb(m_xBuilder->weld_combo_box("services_lb"))
     , m_xPathContainer(m_xBuilder->weld_container("breadcrumb_container"))
     , m_xNewFolder(m_xBuilder->weld_button("new_folder"))
@@ -42,8 +41,6 @@ RemoteFilesDialog::RemoteFilesDialog( weld::Window* pParent, 
PickerFlags nBits )
     , m_xFilter_lb(m_xBuilder->weld_combo_box("filter_lb"))
     , m_xName_ed(new AutocompleteEdit(m_xBuilder->weld_entry("filename")))
 {
-    m_xAddService_bar->set_item_menu("add_service_btn", 
m_xAddService_menu.get());
-
     m_eMode = ( nBits & PickerFlags::SaveAs ) ? REMOTEDLG_MODE_SAVE : 
REMOTEDLG_MODE_OPEN;
     m_eType = ( nBits & PickerFlags::PathDialog ) ? REMOTEDLG_TYPE_PATHDLG : 
REMOTEDLG_TYPE_FILEDLG;
     bool bMultiselection = bool( nBits & PickerFlags::MultiSelection );
@@ -112,8 +109,7 @@ RemoteFilesDialog::RemoteFilesDialog( weld::Window* 
pParent, PickerFlags nBits )
     m_xName_ed->connect_focus_in(LINK(this, RemoteFilesDialog, 
FileNameGetFocusHdl));
     m_xName_ed->connect_changed(LINK(this, RemoteFilesDialog, 
FileNameModifyHdl));
 
-    m_xAddService_bar->connect_clicked(LINK( this, RemoteFilesDialog, 
AddServiceHdl));
-    m_xAddService_menu->connect_activate(LINK(this, RemoteFilesDialog, 
EditServiceMenuHdl));
+    m_xManageServices->connect_selected(LINK(this, RemoteFilesDialog, 
EditServiceMenuHdl));
 
     FillServicesListbox();
 
@@ -167,6 +163,14 @@ RemoteFilesDialog::~RemoteFilesDialog()
     batch->commit();
 }
 
+void RemoteFilesDialog::EnableExtraMenuItems(bool bEnable)
+{
+    m_xManageServices->set_item_visible("change_password", bEnable);
+    m_xManageServices->set_item_visible("edit_service", bEnable);
+    m_xManageServices->set_item_visible("delete_service", bEnable);
+    m_xManageServices->set_item_visible("change_password", bEnable);
+}
+
 short RemoteFilesDialog::run()
 {
     if (m_xServices_lb->get_count() > 0)
@@ -177,7 +181,7 @@ short RemoteFilesDialog::run()
     if (!m_bIsConnected)
     {
         m_xServices_lb->set_active(-1);
-        m_xAddService_bar->set_item_menu("add_service_btn", nullptr);
+        EnableExtraMenuItems(false);
     }
 
     m_bIsInExecute = true;
@@ -287,10 +291,10 @@ void RemoteFilesDialog::FillServicesListbox()
     if (m_xServices_lb->get_count() > 0)
     {
         m_xServices_lb->set_active(nPos);
-        m_xAddService_bar->set_item_menu("add_service_btn", 
m_xAddService_menu.get());
+        EnableExtraMenuItems(true);
     }
     else
-        m_xAddService_bar->set_item_menu("add_service_btn", nullptr);
+        EnableExtraMenuItems(false);
 
     EnableControls();
 }
@@ -401,7 +405,7 @@ void RemoteFilesDialog::EnableControls()
 
         if (m_xServices_lb->get_active() != -1)
         {
-            m_xAddService_menu->set_sensitive("change_password", false);
+            m_xManageServices->set_item_sensitive("change_password", false);
 
             try
             {
@@ -417,7 +421,7 @@ void RemoteFilesDialog::EnableControls()
 
                         if( aURLEntries.UserList.hasElements() )
                         {
-                            
m_xAddService_menu->set_sensitive("change_password", true);
+                            
m_xManageServices->set_item_sensitive("change_password", true);
                         }
                     }
                 }
@@ -451,14 +455,14 @@ void RemoteFilesDialog::EnableControls()
     }
 
     m_xPath->EnableFields( true );
-    m_xAddService_bar->set_sensitive(true);
+    m_xManageServices->set_sensitive(true);
 }
 
 void RemoteFilesDialog::DisableControls()
 {
     m_xServices_lb->set_sensitive(false);
     m_xFilter_lb->set_sensitive(false);
-    m_xAddService_bar->set_sensitive(false);
+    m_xManageServices->set_sensitive(false);
     m_xName_ed->set_sensitive(false);
     m_xContainer->set_sensitive(false);
     m_xOk_btn->set_sensitive(false);
@@ -508,7 +512,7 @@ IMPL_LINK_NOARG ( RemoteFilesDialog, ListViewHdl, 
weld::Button&, void )
     m_xFileView->SetViewMode( eDetailedList );
 }
 
-IMPL_LINK_NOARG ( RemoteFilesDialog, AddServiceHdl, const OString&, void )
+void RemoteFilesDialog::AddService()
 {
     PlaceEditDialog aDlg(m_xDialog.get());
     aDlg.ShowPasswordControl();
@@ -536,7 +540,7 @@ IMPL_LINK_NOARG ( RemoteFilesDialog, AddServiceHdl, const 
OString&, void )
 
             m_xServices_lb->append_text( sPrefix + newService->GetName() );
             m_xServices_lb->set_active( m_xServices_lb->get_count() - 1 );
-            m_xAddService_bar->set_item_menu("add_service_btn", 
m_xAddService_menu.get());
+            EnableExtraMenuItems(true);
             SelectServiceHdl( *m_xServices_lb );
 
             m_bIsUpdated = true;
@@ -558,7 +562,7 @@ IMPL_LINK_NOARG( RemoteFilesDialog, SelectServiceHdl, 
weld::ComboBox&, void )
     if( nPos >= 0 )
     {
         OUString sURL = m_aServices[nPos]->GetUrl();
-        m_xAddService_bar->set_item_menu("add_service_btn", 
m_xAddService_menu.get());
+        EnableExtraMenuItems(true);
 
         m_bServiceChanged = true;
         OpenURL( sURL );
@@ -648,7 +652,7 @@ IMPL_LINK ( RemoteFilesDialog, EditServiceMenuHdl, const 
OString&, rIdent, void
                 m_xServices_lb->remove( nSelected );
 
                 m_xServices_lb->set_active(-1);
-                m_xAddService_bar->set_item_menu("add_service_btn", nullptr);
+                EnableExtraMenuItems(false);
 
                 m_bIsUpdated = true;
 
@@ -699,6 +703,8 @@ IMPL_LINK ( RemoteFilesDialog, EditServiceMenuHdl, const 
OString&, rIdent, void
         catch( const Exception& )
         {}
     }
+    else if( sIdent == "add_service" )
+        AddService();
 
     EnableControls();
 }
diff --git a/fpicker/source/office/RemoteFilesDialog.hxx 
b/fpicker/source/office/RemoteFilesDialog.hxx
index 9972c69d1afd..6a80bc849f70 100644
--- a/fpicker/source/office/RemoteFilesDialog.hxx
+++ b/fpicker/source/office/RemoteFilesDialog.hxx
@@ -125,8 +125,7 @@ private:
 
     std::unique_ptr<weld::Button> m_xOk_btn;
     std::unique_ptr<weld::Button> m_xCancel_btn;
-    std::unique_ptr<weld::Toolbar> m_xAddService_bar;
-    std::unique_ptr<weld::Menu> m_xAddService_menu;
+    std::unique_ptr<weld::MenuButton> m_xManageServices;
     std::unique_ptr<weld::ComboBox> m_xServices_lb;
     std::unique_ptr<weld::Container> m_xPathContainer;
     std::unique_ptr<Breadcrumb> m_xPath;
@@ -153,13 +152,15 @@ private:
 
     void AddFileExtension();
 
+    void EnableExtraMenuItems(bool bEnable);
     void EnableControls();
     void DisableControls();
 
     void SavePassword(const OUString& rURL, const OUString& rUser,
                       const OUString& rPassword, bool bPersistent);
 
-    DECL_LINK ( AddServiceHdl, const OString&, void );
+    void AddService();
+
     DECL_LINK ( SelectServiceHdl, weld::ComboBox&, void );
     DECL_LINK ( EditServiceMenuHdl, const OString&, void );
 
diff --git a/fpicker/uiconfig/ui/remotefilesdialog.ui 
b/fpicker/uiconfig/ui/remotefilesdialog.ui
index 93c17f05ba27..a069b2fb0c21 100644
--- a/fpicker/uiconfig/ui/remotefilesdialog.ui
+++ b/fpicker/uiconfig/ui/remotefilesdialog.ui
@@ -51,6 +51,42 @@
       <column type="gchararray"/>
     </columns>
   </object>
+  <object class="GtkMenu" id="service_edit_menu">
+    <property name="visible">True</property>
+    <property name="can_focus">False</property>
+    <child>
+      <object class="GtkMenuItem" id="add_service">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="label" translatable="yes" 
context="remotefilesdialog|edit_service">_Add service</property>
+        <property name="use_underline">True</property>
+      </object>
+    </child>
+    <child>
+      <object class="GtkMenuItem" id="edit_service">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="label" translatable="yes" 
context="remotefilesdialog|edit_service">_Edit service</property>
+        <property name="use_underline">True</property>
+      </object>
+    </child>
+    <child>
+      <object class="GtkMenuItem" id="delete_service">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="label" translatable="yes" 
context="remotefilesdialog|delete_service">_Delete service</property>
+        <property name="use_underline">True</property>
+      </object>
+    </child>
+    <child>
+      <object class="GtkMenuItem" id="change_password">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="label" translatable="yes" 
context="remotefilesdialog|change_password">_Change password</property>
+        <property name="use_underline">True</property>
+      </object>
+    </child>
+  </object>
   <object class="GtkDialog" id="RemoteFilesDialog">
     <property name="can_focus">False</property>
     <property name="border_width">6</property>
@@ -174,38 +210,16 @@
               </packing>
             </child>
             <child>
-              <object class="GtkScrolledWindow">
+              <object class="GtkMenuButton" id="add_service_btn">
+                <property name="label" translatable="yes" 
context="remotefilesdialog|add_service_btn">_Manage services</property>
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
-                <property name="valign">center</property>
-                <property name="hscrollbar_policy">never</property>
-                <property name="vscrollbar_policy">never</property>
-                <property name="shadow_type">in</property>
-                <property name="propagate_natural_width">True</property>
-                <property name="propagate_natural_height">True</property>
+                <property name="use_underline">True</property>
+                <property name="draw_indicator">True</property>
+                <property name="popup">service_edit_menu</property>
+                <property name="use_popover">False</property>
                 <child>
-                  <object class="GtkViewport">
-                    <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                    <child>
-                      <object class="GtkToolbar" id="add_service_bar">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <child>
-                          <object class="GtkMenuToolButton" 
id="add_service_btn">
-                            <property name="visible">True</property>
-                            <property name="can_focus">False</property>
-                            <property name="label" translatable="yes" 
context="remotefilesdialog|add_service_btn">Add service</property>
-                            <property name="use_underline">True</property>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="homogeneous">True</property>
-                          </packing>
-                        </child>
-                      </object>
-                    </child>
-                  </object>
+                  <placeholder/>
                 </child>
               </object>
               <packing>
@@ -454,8 +468,6 @@
                             <property name="hexpand">True</property>
                             <property name="vexpand">True</property>
                             <property name="model">liststore2</property>
-                            <property name="pixbuf_column">0</property>
-                            <property name="text_column">1</property>
                           </object>
                         </child>
                       </object>
@@ -558,32 +570,4 @@
       <action-widget response="-5">save</action-widget>
     </action-widgets>
   </object>
-  <object class="GtkMenu" id="service_edit_menu">
-    <property name="visible">True</property>
-    <property name="can_focus">False</property>
-    <child>
-      <object class="GtkMenuItem" id="edit_service">
-        <property name="visible">True</property>
-        <property name="can_focus">False</property>
-        <property name="label" translatable="yes" 
context="remotefilesdialog|edit_service">_Edit service</property>
-        <property name="use_underline">True</property>
-      </object>
-    </child>
-    <child>
-      <object class="GtkMenuItem" id="delete_service">
-        <property name="visible">True</property>
-        <property name="can_focus">False</property>
-        <property name="label" translatable="yes" 
context="remotefilesdialog|delete_service">_Delete service</property>
-        <property name="use_underline">True</property>
-      </object>
-    </child>
-    <child>
-      <object class="GtkMenuItem" id="change_password">
-        <property name="visible">True</property>
-        <property name="can_focus">False</property>
-        <property name="label" translatable="yes" 
context="remotefilesdialog|change_password">_Change password</property>
-        <property name="use_underline">True</property>
-      </object>
-    </child>
-  </object>
 </interface>
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to