[Libreoffice-commits] core.git: Branch 'feature/gsoc15-open-remote-files-dialog' - 2 commits - include/svtools svtools/source svtools/uiconfig

Szymon Kłos eszkadev at gmail.com
Wed Jun 3 01:09:30 PDT 2015


 include/svtools/PlaceEditDialog.hxx          |    2 
 include/svtools/RemoteFilesDialog.hxx        |   10 ++
 svtools/source/dialogs/PlaceEditDialog.cxx   |    4 
 svtools/source/dialogs/RemoteFilesDialog.cxx |  109 +++++++++++++++++----------
 svtools/uiconfig/ui/remotefilesdialog.ui     |   27 ++++++
 5 files changed, 111 insertions(+), 41 deletions(-)

New commits:
commit 0daa944fd0ddb81f14a640b96d91296a2cc22ec6
Author: Szymon Kłos <eszkadev at gmail.com>
Date:   Wed Jun 3 10:03:07 2015 +0200

    added SvtFileView, basic loading of the root directory
    
    Change-Id: I54a4aa3a2c68b4dbbc54a68469ea6fe41e361864

diff --git a/include/svtools/RemoteFilesDialog.hxx b/include/svtools/RemoteFilesDialog.hxx
index 4087188..ac96658 100644
--- a/include/svtools/RemoteFilesDialog.hxx
+++ b/include/svtools/RemoteFilesDialog.hxx
@@ -20,6 +20,8 @@
 #include <vcl/dialog.hxx>
 #include <vcl/vclptr.hxx>
 
+#include <svtools/fileview.hxx>
+
 #include <officecfg/Office/Common.hxx>
 #include <com/sun/star/uno/Sequence.hxx>
 
@@ -32,6 +34,7 @@ enum SvtRemoteDlgMode
 };
 
 typedef std::shared_ptr<Place> ServicePtr;
+typedef ::com::sun::star::uno::Sequence<OUString>  OUStringList;
 
 class SVT_DLLPUBLIC RemoteFilesDialog : public ModalDialog
 {
@@ -51,13 +54,18 @@ private:
     VclPtr<CancelButton> m_pCancel_btn;
     VclPtr<MenuButton> m_pAddService_btn;
     VclPtr<ListBox> m_pServices_lb;
+    VclPtr<Edit> m_pPath_ed;
+    VclPtr<SvtFileView> m_pView;
 
     std::vector<ServicePtr> m_aServices;
 
     void FillServicesListbox();
-    unsigned int GetSelectedServicePos();
+
+    /* If failure returns < 0 */
+    int GetSelectedServicePos();
 
     DECL_LINK ( AddServiceHdl, void * );
+    DECL_LINK ( SelectServiceHdl, void * );
     DECL_LINK_TYPED ( EditServiceMenuHdl, MenuButton *, void );
 };
 
diff --git a/svtools/source/dialogs/RemoteFilesDialog.cxx b/svtools/source/dialogs/RemoteFilesDialog.cxx
index 60063d9..db3ab1a 100644
--- a/svtools/source/dialogs/RemoteFilesDialog.cxx
+++ b/svtools/source/dialogs/RemoteFilesDialog.cxx
@@ -11,6 +11,8 @@
 
 using namespace ::com::sun::star::uno;
 
+#define NO_FILTER "*.*"
+
 RemoteFilesDialog::RemoteFilesDialog(vcl::Window* pParent, WinBits nBits)
     : ModalDialog(pParent, "RemoteFilesDialog", "svt/ui/remotefilesdialog.ui")
     , m_context(comphelper::getProcessComponentContext())
@@ -20,6 +22,8 @@ RemoteFilesDialog::RemoteFilesDialog(vcl::Window* pParent, WinBits nBits)
     get(m_pCancel_btn, "cancel");
     get(m_pAddService_btn, "add_service_btn");
     get(m_pServices_lb, "services_lb");
+    get(m_pPath_ed, "path");
+    get(m_pView, "files");
 
     m_eMode = (nBits & WB_SAVEAS) ? REMOTEDLG_MODE_SAVE : REMOTEDLG_MODE_OPEN;
     m_bIsUpdated = false;
@@ -40,6 +44,8 @@ RemoteFilesDialog::RemoteFilesDialog(vcl::Window* pParent, WinBits nBits)
     m_pAddService_btn->SetSelectHdl( LINK( this, RemoteFilesDialog, EditServiceMenuHdl ) );
 
     FillServicesListbox();
+
+    m_pServices_lb->SetSelectHdl( LINK( this, RemoteFilesDialog, SelectServiceHdl ) );
 }
 
 void RemoteFilesDialog::dispose()
@@ -93,13 +99,16 @@ void RemoteFilesDialog::FillServicesListbox()
         m_pServices_lb->Enable(false);
 }
 
-unsigned int RemoteFilesDialog::GetSelectedServicePos()
+int RemoteFilesDialog::GetSelectedServicePos()
 {
     int nSelected = m_pServices_lb->GetSelectEntryPos();
-    unsigned int nPos = 0;
+    int nPos = 0;
     int i = -1;
 
-    while(nPos < m_aServices.size())
+    if(m_aServices.size() == 0)
+        return -1;
+
+    while(nPos < (int)m_aServices.size())
     {
         while(m_aServices[nPos]->IsLocal())
             nPos++;
@@ -139,58 +148,82 @@ IMPL_LINK_NOARG ( RemoteFilesDialog, AddServiceHdl )
     return 1;
 }
 
+IMPL_LINK_NOARG ( RemoteFilesDialog, SelectServiceHdl )
+{
+    int nPos = GetSelectedServicePos();
+
+    if(nPos > 0)
+    {
+        OUStringList BlackList;
+        OUString sURL = m_aServices[nPos]->GetUrl();
+        FileViewResult eResult = eFailure;
+
+        m_pPath_ed->SetText(sURL);
+
+        eResult = m_pView->Initialize( sURL, NO_FILTER, NULL, BlackList );
+    }
+
+    return 1;
+}
+
 IMPL_LINK_TYPED ( RemoteFilesDialog, EditServiceMenuHdl, MenuButton *, pButton, void )
 {
     OString sIdent(pButton->GetCurItemIdent());
     if(sIdent == "edit_service"  && m_pServices_lb->GetEntryCount() > 0)
     {
         unsigned int nSelected = m_pServices_lb->GetSelectEntryPos();
-        unsigned int nPos = GetSelectedServicePos();
-
-        ScopedVclPtrInstance< PlaceEditDialog > aDlg(this, m_aServices[nPos]);
-        short aRetCode = aDlg->Execute();
+        int nPos = GetSelectedServicePos();
 
-        switch(aRetCode)
+        if(nPos > 0)
         {
-            case RET_OK :
-            {
-                ServicePtr pEditedService = aDlg->GetPlace();
+            ScopedVclPtrInstance< PlaceEditDialog > aDlg(this, m_aServices[nPos]);
+            short aRetCode = aDlg->Execute();
 
-                m_aServices[nPos] = pEditedService;
-                m_pServices_lb->RemoveEntry(nSelected);
-                m_pServices_lb->InsertEntry(pEditedService->GetName(), nSelected);
-                m_pServices_lb->SelectEntryPos(nSelected);
-
-                m_bIsUpdated = true;
-        break;
-            }
-            case RET_CANCEL :
-            default :
-                // Do Nothing
-                break;
-        };
+            switch(aRetCode)
+            {
+                case RET_OK :
+                {
+                    ServicePtr pEditedService = aDlg->GetPlace();
+
+                    m_aServices[nPos] = pEditedService;
+                    m_pServices_lb->RemoveEntry(nSelected);
+                    m_pServices_lb->InsertEntry(pEditedService->GetName(), nSelected);
+                    m_pServices_lb->SelectEntryPos(nSelected);
+
+                    m_bIsUpdated = true;
+                    break;
+                }
+                case RET_CANCEL :
+                default :
+                    // Do Nothing
+                    break;
+            };
+        }
     }
     else if(sIdent == "delete_service"  && m_pServices_lb->GetEntryCount() > 0)
     {
         unsigned int nSelected = m_pServices_lb->GetSelectEntryPos();
-        unsigned int nPos = GetSelectedServicePos();
+        int nPos = GetSelectedServicePos();
 
-        // TODO: Confirm dialog
+        if(nPos > 0)
+        {
+            // TODO: Confirm dialog
 
-        m_aServices.erase(m_aServices.begin() + nPos);
-        m_pServices_lb->RemoveEntry(nSelected);
+            m_aServices.erase(m_aServices.begin() + nPos);
+            m_pServices_lb->RemoveEntry(nSelected);
 
-        if(m_pServices_lb->GetEntryCount() > 0)
-        {
-            m_pServices_lb->SelectEntryPos(0);
-        }
-        else
-        {
-            m_pServices_lb->SetNoSelection();
-            m_pServices_lb->Enable(false);
-        }
+            if(m_pServices_lb->GetEntryCount() > 0)
+            {
+                m_pServices_lb->SelectEntryPos(0);
+            }
+            else
+            {
+                m_pServices_lb->SetNoSelection();
+                m_pServices_lb->Enable(false);
+            }
 
-        m_bIsUpdated = true;
+            m_bIsUpdated = true;
+        }
     }
 }
 
diff --git a/svtools/uiconfig/ui/remotefilesdialog.ui b/svtools/uiconfig/ui/remotefilesdialog.ui
index 894ce8e..0c59369 100644
--- a/svtools/uiconfig/ui/remotefilesdialog.ui
+++ b/svtools/uiconfig/ui/remotefilesdialog.ui
@@ -2,6 +2,7 @@
 <!-- Generated with glade 3.18.3 -->
 <interface>
   <requires lib="gtk+" version="3.12"/>
+  <requires lib="LibreOffice" version="1.0"/>
   <object class="GtkDialog" id="RemoteFilesDialog">
     <property name="can_focus">False</property>
     <property name="border_width">6</property>
@@ -65,7 +66,7 @@
           <packing>
             <property name="expand">False</property>
             <property name="fill">False</property>
-            <property name="position">2</property>
+            <property name="position">3</property>
           </packing>
         </child>
         <child>
@@ -123,7 +124,29 @@
           </packing>
         </child>
         <child>
-          <placeholder/>
+          <object class="GtkEntry" id="path">
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="svtlo-SvtFileView" id="files">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <child internal-child="selection">
+              <object class="GtkTreeSelection" id="File View-selection1"/>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+            <property name="position">2</property>
+          </packing>
         </child>
       </object>
     </child>
commit a70e92d1491324136981b52a585a724690fd269f
Author: Szymon Kłos <eszkadev at gmail.com>
Date:   Wed Jun 3 08:51:07 2015 +0200

    hide the type listbox while editing
    
    Change-Id: I41264f37208e19e862c2f78930deaf5c8b68d840

diff --git a/include/svtools/PlaceEditDialog.hxx b/include/svtools/PlaceEditDialog.hxx
index 9bd32eb..dc8840a 100644
--- a/include/svtools/PlaceEditDialog.hxx
+++ b/include/svtools/PlaceEditDialog.hxx
@@ -39,6 +39,8 @@ private :
 
     VclPtr<PushButton>   m_pBTDelete;
 
+    VclPtr<VclGrid>      m_pTypeGrid;
+
     /** Vector holding the details UI control for each server type.
 
         The elements in this vector need to match the order in the type listbox, e.g.
diff --git a/svtools/source/dialogs/PlaceEditDialog.cxx b/svtools/source/dialogs/PlaceEditDialog.cxx
index d23fe0e..1028a56 100644
--- a/svtools/source/dialogs/PlaceEditDialog.cxx
+++ b/svtools/source/dialogs/PlaceEditDialog.cxx
@@ -53,6 +53,7 @@ PlaceEditDialog::PlaceEditDialog(vcl::Window* pParent, const std::shared_ptr<Pla
     get( m_pBTOk, "ok" );
     get( m_pBTCancel, "cancel" );
     get( m_pBTDelete, "delete" );
+    get( m_pTypeGrid, "TypeGrid" );
 
     m_pBTOk->SetClickHdl( LINK( this, PlaceEditDialog, OKHdl) );
     m_pBTDelete->SetClickHdl ( LINK( this, PlaceEditDialog, DelHdl) );
@@ -80,6 +81,9 @@ PlaceEditDialog::PlaceEditDialog(vcl::Window* pParent, const std::shared_ptr<Pla
                 m_pEDUsername->SetText( rUrl.GetUser( ) );
         }
     }
+
+    // In edit mode user can't change connection type
+    m_pTypeGrid->Hide();
 }
 
 PlaceEditDialog::~PlaceEditDialog()


More information about the Libreoffice-commits mailing list