Hi,
A few months ago my friend Julien and I started to work (as a school side
project) on the file picker in order to add a list of bookmarks (places) on
the left of the file view.
We have been able to do most of the work, but unfortunately we're now
lacking time, so I send the patch without the latest modifications we
wanted to do in order to have something quite usable. The patch applies to
the last commit I pulled yesterday (dcd7dc43376c914).
Here is a list of what the patch contains:
- we replaced the label displaying the path of the directory viewed by a
text field
- we added a listbox on the left of the file view, this list contains a
default place (user directory) and can contains custom places you can click
to display in the file view
- you can add a new place by clicking on the "..." on the right of the
path text field (which pops a new dialog)
- you can add the current place by clicking the "+" button bellow the
places list
- you can remove a place selected in the list
- places are stored in the user's configuration
and what's missing:
- we are able to display an icon for each entry in the list box, but this
is currently the "parent directory" icon
- the dialog box allowing the user to add a new place is not finished (and
must probably be redesigned somehow)
- actually, the "..." button should probably be removed, and it's behavior
should be affected to the "+" button instead
- the user is invited to give a name to its bookmark, but this name isn't
stored in the configuration yet
There are probably many points to redesign and refactor.
The code is under licenses MPLv1+/LGPLv3+.
We would like to thank Cedric Bosdonat, Stephan Bergmann**** and people we
talked with on irc for their time helping us.
Cheers,
Martin and Julien
--
Martin <http://www.martiusweb.net> Richard
www.martiusweb.net <http://www.martiuweb.net>
From fe51e601f847900d53106b95ca3bed80afce21e2 Mon Sep 17 00:00:00 2001
From: Martin Richard <martius@martiusweb.net>
Date: Tue, 31 Jan 2012 00:44:34 +0100
Subject: [PATCH] fpicker: a list of bookmarks in the file picker
under dual licences MPLv1+/LGPLv3+
Authors:
Martin Richard <martius@martiusweb.net>
Julien Levesy <jlevesy@gmail.com>
---
fpicker/Library_fps_office.mk | 2 +
fpicker/source/office/PlacesListBox.cxx | 161 ++++++++++++
fpicker/source/office/PlacesListBox.hxx | 109 ++++++++
fpicker/source/office/SvtPlaceDialog.cxx | 143 +++++++++++
fpicker/source/office/SvtPlaceDialog.hxx | 85 +++++++
fpicker/source/office/SvtPlaceDialog_impl.cxx | 50 ++++
fpicker/source/office/SvtPlaceDialog_impl.hxx | 44 ++++
fpicker/source/office/fpsofficeResMgr.hxx | 60 +++++
fpicker/source/office/iodlg.cxx | 261 +++++++++++++++-----
fpicker/source/office/iodlg.hrc | 26 ++-
fpicker/source/office/iodlg.hxx | 17 ++-
fpicker/source/office/iodlg.src | 154 +++++++++++-
fpicker/source/office/iodlgimp.cxx | 12 +-
fpicker/source/office/iodlgimp.hxx | 9 +-
.../registry/data/org/openoffice/Office/Common.xcu | 3 +
.../schema/org/openoffice/Office/Common.xcs | 5 +
svtools/inc/svtools/svtools.hrc | 1 +
17 files changed, 1066 insertions(+), 76 deletions(-)
create mode 100644 fpicker/source/office/PlacesListBox.cxx
create mode 100644 fpicker/source/office/PlacesListBox.hxx
create mode 100644 fpicker/source/office/SvtPlaceDialog.cxx
create mode 100644 fpicker/source/office/SvtPlaceDialog.hxx
create mode 100644 fpicker/source/office/SvtPlaceDialog_impl.cxx
create mode 100644 fpicker/source/office/SvtPlaceDialog_impl.hxx
create mode 100644 fpicker/source/office/fpsofficeResMgr.hxx
diff --git a/fpicker/Library_fps_office.mk b/fpicker/Library_fps_office.mk
index 1d5b6a1..a98efe1 100644
--- a/fpicker/Library_fps_office.mk
+++ b/fpicker/Library_fps_office.mk
@@ -60,6 +60,8 @@ $(eval $(call gb_Library_add_exception_objects,fps_office,\
fpicker/source/office/OfficeControlAccess \
fpicker/source/office/OfficeFilePicker \
fpicker/source/office/OfficeFolderPicker \
+ fpicker/source/office/PlacesListBox \
+ fpicker/source/office/SvtPlaceDialog \
))
# vim: set noet sw=4 ts=4:
diff --git a/fpicker/source/office/PlacesListBox.cxx b/fpicker/source/office/PlacesListBox.cxx
new file mode 100644
index 0000000..5d08e1a
--- /dev/null
+++ b/fpicker/source/office/PlacesListBox.cxx
@@ -0,0 +1,161 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * Version: MPL 1.1 / GPLv3+ / LGPLv3+
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License or as specified alternatively below. You may obtain a copy of
+ * the License at http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * Major Contributor(s):
+ * [ Copyright (C) 2011 Cedric Bosdonnat <cbosdonnat@suse.com> (initial developer) ]
+ *
+ * All Rights Reserved.
+ *
+ * For minor contributions see the git repository.
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 3 or later (the "GPLv3+"), or
+ * the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"),
+ * in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable
+ * instead of those above.
+ */
+
+#include <iodlg.hrc>
+#include <PlacesListBox.hxx>
+#include "SvtPlaceDialog.hxx"
+
+#include <vcl/msgbox.hxx>
+#include <svtools/svtdata.hxx>
+
+namespace css = com::sun::star;
+using rtl::OUString;
+
+PlacesListBox::PlacesListBox( SvtFileDialog* pFileDlg, const ResId& rResId ) :
+ ListBox( pFileDlg, rResId ),
+ maPlaces( ),
+ mpDlg( pFileDlg ),
+ mnNbEditables( 0 ),
+ mbUpdated( false )
+{
+ SetSelectHdl( LINK( this, PlacesListBox, SelectHdl ) );
+ SetDoubleClickHdl( LINK( this, PlacesListBox, DoubleClickHdl ) ) ;
+}
+
+PlacesListBox::~PlacesListBox( )
+{
+}
+
+void PlacesListBox::AppendPlace( PlacePtr pPlace )
+{
+ maPlaces.push_back( pPlace );
+ InsertEntry( pPlace->GetName( ), getEntryIcon( pPlace->GetType( ) ));
+
+ if(pPlace->IsEditable()) {
+ ++mnNbEditables;
+ mbUpdated = true;
+ }
+}
+
+sal_Int32 PlacesListBox::GetNbPlaces() {
+ return maPlaces.size();
+}
+
+sal_Int32 PlacesListBox::GetNbEditablePlaces() {
+ return mnNbEditables;
+}
+
+bool PlacesListBox::IsUpdated() {
+ if(mbUpdated) {
+ mbUpdated = false;
+ return true;
+ }
+ return false;
+}
+
+const std::vector<PlacePtr>& PlacesListBox::GetPlaces() {
+ return maPlaces;
+}
+
+void PlacesListBox::RemovePlace( sal_uInt16 nPos )
+{
+ if ( nPos < maPlaces.size() )
+ {
+ if(maPlaces[nPos]->IsEditable()) {
+ --mnNbEditables;
+ mbUpdated = true;
+ }
+ maPlaces.erase( maPlaces.begin() + nPos );
+ RemoveEntry( nPos );
+ }
+}
+
+void PlacesListBox::RemoveSelectedPlace() {
+ RemovePlace(GetSelectEntryPos());
+}
+
+Image PlacesListBox::getEntryIcon(Place::ePlaceType aType)
+{
+ Image theImage;
+ switch (aType) {
+ case Place::e_PlaceCmis:
+ theImage = mpDlg->GetButtonImage( IMG_FILEDLG_BTN_UP );
+ break;
+ case Place::e_PlaceFtp:
+ theImage = mpDlg->GetButtonImage( IMG_FILEDLG_BTN_UP );
+ break;
+ case Place::e_PlaceLocal:
+ default:
+ theImage = mpDlg->GetButtonImage( IMG_FILEDLG_BTN_UP );
+ break;
+ };
+ return theImage;
+}
+
+IMPL_LINK( PlacesListBox, SelectHdl, ListBox* , EMPTYARG )
+{
+ sal_uInt16 nSelected = GetSelectEntryPos();
+ PlacePtr pPlace = maPlaces[nSelected];
+ mpDlg->OpenURL_Impl( pPlace->GetUrl() );
+
+ if(pPlace->IsEditable())
+ mpDlg->RemovablePlaceSelected();
+ else
+ mpDlg->RemovablePlaceSelected(false);
+
+ return 0;
+}
+
+IMPL_LINK ( PlacesListBox, DoubleClickHdl, ListBox*, EMPTYARG )
+{
+ sal_uInt16 nSelected = GetSelectEntryPos();
+ PlacePtr pPlace = maPlaces[nSelected];
+ if ( pPlace->IsEditable() == true )
+ {
+ SvtPlaceDialog aDlg(mpDlg,pPlace);
+ short aRetCode = aDlg.Execute();
+ switch(aRetCode) {
+ case RET_OK :
+ {
+ pPlace->SetName ( aDlg.GetServerName() );
+ pPlace->SetUrl( aDlg.GetServerUrl() );
+ break;
+ }
+ case RET_NO :
+ {
+ RemovePlace(nSelected);
+ break;
+ }
+ default:
+ break;
+ };
+ }
+ return 0;
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/fpicker/source/office/PlacesListBox.hxx b/fpicker/source/office/PlacesListBox.hxx
new file mode 100644
index 0000000..f7f718b
--- /dev/null
+++ b/fpicker/source/office/PlacesListBox.hxx
@@ -0,0 +1,109 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * Version: MPL 1.1 / GPLv3+ / LGPLv3+
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License or as specified alternatively below. You may obtain a copy of
+ * the License at http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * Major Contributor(s):
+ * [ Copyright (C) 2011 Cedric Bosdonnat <cbosdonnat@suse.com> (initial developer) ]
+ *
+ * All Rights Reserved.
+ *
+ * For minor contributions see the git repository.
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 3 or later (the "GPLv3+"), or
+ * the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"),
+ * in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable
+ * instead of those above.
+ */
+#ifndef _PLACESLISTBOX_HXX_
+#define _PLACESLISTBOX_HXX_
+
+#include <iodlg.hxx>
+#include <vcl/lstbox.hxx>
+#include <boost/shared_ptr.hpp>
+#include <vector>
+
+/** Class representing a file location: it mainly consist of display attributes and a URL.
+ */
+class Place
+{
+ public:
+ enum ePlaceType {
+ e_PlaceLocal = 0,
+ e_PlaceFtp,
+ e_PlaceCmis
+ };
+
+ private:
+ rtl::OUString msName;
+ rtl::OUString msUrl;
+ ePlaceType meType;
+
+ sal_Bool mbEditable;
+
+ public:
+
+ Place( rtl::OUString sName, rtl::OUString sUrl, ePlaceType eType, sal_Bool bEditable =
false) :
+ msName( sName ),
+ msUrl( sUrl ),
+ meType( eType ),
+ mbEditable( bEditable ) {};
+
+ ~Place( ) {};
+
+ Place( const Place& rCopy ) : msName( rCopy.msName ), msUrl( rCopy.msUrl ), meType(
rCopy.meType ){ };
+
+ void SetName(const rtl::OUString& aName ) { msName = aName; }
+ void SetUrl(const rtl::OUString& aUrl ) { msUrl = aUrl; }
+
+ rtl::OUString& GetName( ) { return msName; }
+ rtl::OUString& GetUrl( ) { return msUrl; }
+ ePlaceType& GetType( ) { return meType; }
+ sal_Bool& IsEditable( ) { return mbEditable; }
+};
+
+typedef boost::shared_ptr< Place > PlacePtr;
+
+/** ListBox to handle Places.
+ */
+class PlacesListBox : public ListBox
+{
+ private:
+ std::vector< PlacePtr > maPlaces;
+ SvtFileDialog* mpDlg;
+ sal_Int32 mnNbEditables;
+ bool mbUpdated;
+
+ public:
+ PlacesListBox( SvtFileDialog* pFileDlg, const ResId& rResId );
+ ~PlacesListBox( );
+
+ void AppendPlace( PlacePtr pPlace );
+ void RemovePlace( sal_uInt16 nPos );
+ void RemoveSelectedPlace();
+ sal_Int32 GetNbPlaces();
+ sal_Int32 GetNbEditablePlaces();
+ bool IsUpdated();
+ const std::vector<PlacePtr>& GetPlaces();
+
+ private:
+ Image getEntryIcon( Place::ePlaceType eType);
+
+ DECL_LINK( SelectHdl, ListBox* );
+ DECL_LINK( DoubleClickHdl, ListBox* );
+
+};
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/fpicker/source/office/SvtPlaceDialog.cxx b/fpicker/source/office/SvtPlaceDialog.cxx
new file mode 100644
index 0000000..5de6bde
--- /dev/null
+++ b/fpicker/source/office/SvtPlaceDialog.cxx
@@ -0,0 +1,143 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * Version: MPL 1.1 / GPLv3+ / LGPLv3+
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License or as specified alternatively below. You may obtain a copy of
+ * the License at http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * Major Contributor(s):
+ * [ Copyright (C) 2012 Julien Levesy <jlevesy@gmail.com> (initial developer) ]
+ *
+ * All Rights Reserved.
+ *
+ * For minor contributions see the git repository.
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 3 or later (the "GPLv3+"), or
+ * the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"),
+ * in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable
+ * instead of those above.
+ */
+
+#include "iodlg.hrc"
+#include <svtools/svtools.hrc>
+#include <vcl/msgbox.hxx>
+
+#include "fpsofficeResMgr.hxx"
+#include "PlacesListBox.hxx"
+#include "SvtPlaceDialog.hxx"
+
+
+SvtPlaceDialog::SvtPlaceDialog( Window* pParent ) :
+ ModalDialog( pParent, SvtResId( DLG_SVT_ADDPLACE ) ),
+ m_aFTServerUrl( this, SvtResId( FT_ADDPLACE_SERVERURL ) ),
+ m_aFTServerName( this, SvtResId( FT_ADDPLACE_SERVERNAME ) ),
+ m_aFTServerType( this, SvtResId( FT_ADDPLACE_SERVERTYPE ) ),
+ m_aFTServerLogin( this, SvtResId( FT_ADDPLACE_SERVERLOGIN ) ),
+ m_aFTServerPassword( this, SvtResId( FT_ADDPLACE_SERVERPASSWORD) ),
+ m_aEDServerUrl ( this, SvtResId( ED_ADDPLACE_SERVERURL ) ),
+ m_aEDServerName ( this, SvtResId( ED_ADDPLACE_SERVERNAME ) ),
+ m_aEDServerType ( this, SvtResId( ED_ADDPLACE_SERVERTYPE ) ),
+ m_aEDServerLogin ( this, SvtResId( ED_ADDPLACE_SERVERLOGIN ) ),
+ m_aEDServerPassword ( this, SvtResId( ED_ADDPLACE_SERVERPASSWORD ) ),
+ m_aBTOk( this, SvtResId( BT_ADDPLACE_OK ) ),
+ m_aBTCancel ( this, SvtResId ( BT_ADDPLACE_CANCEL ) ),
+ m_aBTDelete ( this, SvtResId (BT_ADDPLACE_DELETE ) )
+{
+ // This constructor is called when user request a place creation, so
+ // delete button is hidden.
+ m_aBTOk.SetClickHdl( LINK( this, SvtPlaceDialog, OKHdl) );
+ m_aBTOk.Enable( sal_False );
+
+ m_aEDServerName.SetModifyHdl( LINK( this, SvtPlaceDialog, EditHdl) );
+ m_aEDServerUrl.SetModifyHdl( LINK( this, SvtPlaceDialog, EditHdl) );
+
+ m_aEDServerUrl.SetUrlFilter( &m_UrlFilter );
+ Edit aDummyEdit ( this, SvtResId( ED_ADDPLACE_SERVERURL ) );
+ m_aEDServerUrl.SetPosSizePixel( aDummyEdit.GetPosPixel(), aDummyEdit.GetSizePixel() );
+ m_aEDServerUrl.Show();
+ m_aBTDelete.Hide();
+}
+
+SvtPlaceDialog::SvtPlaceDialog( Window* pParent, PlacePtr pPlace ) :
+ ModalDialog( pParent, SvtResId( DLG_SVT_ADDPLACE ) ),
+ m_aFTServerUrl( this, SvtResId( FT_ADDPLACE_SERVERURL ) ),
+ m_aFTServerName( this, SvtResId( FT_ADDPLACE_SERVERNAME ) ),
+ m_aFTServerType( this, SvtResId( FT_ADDPLACE_SERVERTYPE ) ),
+ m_aFTServerLogin( this, SvtResId( FT_ADDPLACE_SERVERLOGIN ) ),
+ m_aFTServerPassword( this, SvtResId( FT_ADDPLACE_SERVERPASSWORD) ),
+ m_aEDServerUrl ( this, SvtResId( ED_ADDPLACE_SERVERURL ) ),
+ m_aEDServerName ( this, SvtResId( ED_ADDPLACE_SERVERNAME ) ),
+ m_aEDServerType ( this, SvtResId( ED_ADDPLACE_SERVERTYPE ) ),
+ m_aEDServerLogin ( this, SvtResId( ED_ADDPLACE_SERVERLOGIN ) ),
+ m_aEDServerPassword ( this, SvtResId( ED_ADDPLACE_SERVERPASSWORD ) ),
+ m_aBTOk( this, SvtResId( BT_ADDPLACE_OK ) ),
+ m_aBTCancel ( this, SvtResId ( BT_ADDPLACE_CANCEL ) ),
+ m_aBTDelete ( this, SvtResId (BT_ADDPLACE_DELETE ) )
+{
+ m_aBTOk.SetClickHdl( LINK( this, SvtPlaceDialog, OKHdl) );
+ m_aBTDelete.SetClickHdl ( LINK( this, SvtPlaceDialog, DelHdl) );
+
+ m_aEDServerName.SetModifyHdl( LINK( this, SvtPlaceDialog, EditHdl) );
+ m_aEDServerUrl.SetModifyHdl( LINK( this, SvtPlaceDialog, EditHdl) );
+
+ m_aEDServerUrl.SetUrlFilter( &m_UrlFilter );
+ Edit aDummyEdit ( this, SvtResId( ED_ADDPLACE_SERVERURL ) );
+ m_aEDServerUrl.SetPosSizePixel( aDummyEdit.GetPosPixel(), aDummyEdit.GetSizePixel() );
+ m_aEDServerUrl.Show();
+
+ m_aEDServerName.SetText( pPlace->GetName() );
+ m_aEDServerUrl.SetText( pPlace->GetUrl() );
+}
+
+SvtPlaceDialog::~SvtPlaceDialog()
+{
+}
+
+PlacePtr SvtPlaceDialog::GetPlace()
+{
+ PlacePtr newPlace( new Place( m_aEDServerName.GetText(), m_aEDServerUrl.GetURL(),
Place::e_PlaceLocal, true) );
+ return newPlace;
+}
+
+IMPL_LINK ( SvtPlaceDialog, OKHdl, Button *, EMPTYARG )
+{
+ EndDialog( RET_OK );
+ return 1;
+}
+
+IMPL_LINK ( SvtPlaceDialog, DelHdl, Button *, EMPTYARG )
+{
+ // ReUsing existing symbols...
+ EndDialog( RET_NO );
+ return 1;
+}
+
+IMPL_LINK ( SvtPlaceDialog, EditHdl, Edit *, EMPTYARG )
+{
+ String anUrl = m_aEDServerUrl.GetText();
+ anUrl.EraseLeadingChars().EraseTrailingChars();
+ String aName = m_aEDServerName.GetText();
+ aName.EraseLeadingChars().EraseTrailingChars();
+ if ( ( anUrl.Len() ) && ( aName.Len() ) )
+ {
+ if ( !m_aBTOk.IsEnabled() )
+ m_aBTOk.Enable( sal_True );
+ }
+ else
+ {
+ if ( m_aBTOk.IsEnabled() )
+ m_aBTOk.Enable( sal_False );
+ }
+ return 1;
+}
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/fpicker/source/office/SvtPlaceDialog.hxx b/fpicker/source/office/SvtPlaceDialog.hxx
new file mode 100644
index 0000000..d786167
--- /dev/null
+++ b/fpicker/source/office/SvtPlaceDialog.hxx
@@ -0,0 +1,85 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * Version: MPL 1.1 / GPLv3+ / LGPLv3+
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License or as specified alternatively below. You may obtain a copy of
+ * the License at http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * Major Contributor(s):
+ * [ Copyright (C) 2012 Julien Levesy <jlevesy@gmail.com> (initial developer) ]
+ *
+ * All Rights Reserved.
+ *
+ * For minor contributions see the git repository.
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 3 or later (the "GPLv3+"), or
+ * the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"),
+ * in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable
+ * instead of those above.
+ */
+#ifndef _SVTPLACEDIALOG_HXX
+#define _SVTPLACEDIALOG_HXX
+
+#include <vcl/button.hxx>
+#include <vcl/dialog.hxx>
+#include <vcl/fixed.hxx>
+#include <vcl/edit.hxx>
+
+#include <svtools/inettbc.hxx>
+
+#include <svl/restrictedpaths.hxx>
+
+class Place;
+class SvtPlaceDialog : public ModalDialog
+{
+private :
+
+ FixedText m_aFTServerUrl;
+ FixedText m_aFTServerName;
+ FixedText m_aFTServerType;
+ FixedText m_aFTServerLogin;
+ FixedText m_aFTServerPassword;
+
+ SvtURLBox m_aEDServerUrl;
+
+ Edit m_aEDServerName;
+ Edit m_aEDServerType;
+ Edit m_aEDServerLogin;
+ Edit m_aEDServerPassword;
+
+ OKButton m_aBTOk;
+ CancelButton m_aBTCancel;
+
+ PushButton m_aBTDelete;
+
+ ::svt::RestrictedPaths m_UrlFilter;
+
+ DECL_LINK( OKHdl, Button *);
+ DECL_LINK ( DelHdl, Button *);
+
+ DECL_LINK ( EditHdl, Edit *);
+
+public :
+
+ SvtPlaceDialog( Window* pParent);
+ SvtPlaceDialog( Window* pParent, PlacePtr pPlace );
+ ~SvtPlaceDialog();
+
+ // Returns a place instance with given informations
+ PlacePtr GetPlace();
+
+ rtl::OUString GetServerName() { return m_aEDServerName.GetText(); }
+ rtl::OUString GetServerUrl() { return m_aEDServerUrl.GetText(); }
+
+};
+
+#endif //_SVTPLACEDIALOG_HXX
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/fpicker/source/office/SvtPlaceDialog_impl.cxx
b/fpicker/source/office/SvtPlaceDialog_impl.cxx
new file mode 100644
index 0000000..559a83e
--- /dev/null
+++ b/fpicker/source/office/SvtPlaceDialog_impl.cxx
@@ -0,0 +1,50 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+// includes --------------------------------------------------------------
+
+#include "SvtPlaceDialog_impl.hxx"
+#include <svtools/svtools.hrc>
+#include <vcl/fixed.hxx>
+
+//*****************************************************************************
+// SvtPlaceDialog_Impl
+//*****************************************************************************
+
+SvtPlaceDialog_Impl::SvtPlaceDialog_Impl() :
+ _pFtServerUrl( NULL )
+{
+
+}
+
+//*****************************************************************************
+
+SvtPlaceDialog_Impl::~SvtPlaceDialog_Impl()
+{
+ delete _pFtServerUrl;
+}
diff --git a/fpicker/source/office/SvtPlaceDialog_impl.hxx
b/fpicker/source/office/SvtPlaceDialog_impl.hxx
new file mode 100644
index 0000000..045b2d5
--- /dev/null
+++ b/fpicker/source/office/SvtPlaceDialog_impl.hxx
@@ -0,0 +1,44 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _SVTPLACEDIALOG_IMPL_HXX
+#define _SVTPLACEDIALOG_IMPL_HXX
+
+class FixedText;
+class SvtPlaceDialog_Impl
+{
+ public :
+
+ SvtPlaceDialog_Impl ();
+ ~SvtPlaceDialog_Impl ();
+
+ FixedText* _pFtServerUrl;
+
+};
+
+#endif //_SVTPLACEDIALOG_IMPL_HXX
diff --git a/fpicker/source/office/fpsofficeResMgr.hxx b/fpicker/source/office/fpsofficeResMgr.hxx
new file mode 100644
index 0000000..5e89dad
--- /dev/null
+++ b/fpicker/source/office/fpsofficeResMgr.hxx
@@ -0,0 +1,60 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * Version: MPL 1.1 / GPLv3+ / LGPLv3+
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License or as specified alternatively below. You may obtain a copy of
+ * the License at http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * Major Contributor(s):
+ * [ Copyright (C) 2012 Cédric Bosdonnat <cbosdonnat@suse.com> (initial developer) ]
+ *
+ * All Rights Reserved.
+ *
+ * For minor contributions see the git repository.
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 3 or later (the "GPLv3+"), or
+ * the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"),
+ * in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable
+ * instead of those above.
+ */
+#ifndef _FPS_OFFICE_RESMGR_HXX_
+#define _FPS_OFFICE_RESMGR_HXX_
+
+#include <rtl/instance.hxx>
+#include <tools/resmgr.hxx>
+
+namespace
+{
+ struct ResMgrHolder
+ {
+ ResMgr * operator ()()
+ {
+ return ResMgr::CreateResMgr (CREATEVERSIONRESMGR_NAME(fps_office));
+ }
+
+ static ResMgr * getOrCreate()
+ {
+ return rtl_Instance<
+ ResMgr, ResMgrHolder,
+ osl::MutexGuard, osl::GetGlobalMutex >::create (
+ ResMgrHolder(), osl::GetGlobalMutex());
+ }
+ };
+
+ struct SvtResId : public ResId
+ {
+ SvtResId (sal_uInt16 nId) : ResId (nId, *ResMgrHolder::getOrCreate()) {}
+ };
+}
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/fpicker/source/office/iodlg.cxx b/fpicker/source/office/iodlg.cxx
index 014388f..f6710d4 100644
--- a/fpicker/source/office/iodlg.cxx
+++ b/fpicker/source/office/iodlg.cxx
@@ -28,6 +28,8 @@
#include <sal/macros.h>
#include "iodlg.hxx"
+#include "PlacesListBox.hxx"
+#include "fpsofficeResMgr.hxx"
#include <tools/stream.hxx>
#include <tools/urlobj.hxx>
#include <vcl/fixed.hxx>
@@ -52,7 +54,6 @@
#include "svtools/svtools.hrc"
#include "svtools/helpid.hrc"
#include "iodlg.hrc"
-#include "rtl/instance.hxx"
#include "asyncfilepicker.hxx"
#include "iodlgimp.hxx"
#include "svtools/inettbc.hxx"
@@ -86,8 +87,12 @@
#include "fpinteraction.hxx"
#include <osl/process.h>
+#include <officecfg/Office/Common.hxx>
+#include "SvtPlaceDialog.hxx"
+
#include <algorithm>
#include <functional>
+#include <vector>
//#define AUTOSELECT_USERFILTER
// define this for the experimental feature of user-filter auto selection
@@ -420,33 +425,6 @@ ControlChain_Impl::~ControlChain_Impl()
}
//*****************************************************************************
-// ResMgrHolder
-//*****************************************************************************
-namespace
-{
- struct ResMgrHolder
- {
- ResMgr * operator ()()
- {
- return ResMgr::CreateResMgr (CREATEVERSIONRESMGR_NAME(fps_office));
- }
-
- static ResMgr * getOrCreate()
- {
- return rtl_Instance<
- ResMgr, ResMgrHolder,
- osl::MutexGuard, osl::GetGlobalMutex >::create (
- ResMgrHolder(), osl::GetGlobalMutex());
- }
- };
-
- struct SvtResId : public ResId
- {
- SvtResId (sal_uInt16 nId) : ResId (nId, *ResMgrHolder::getOrCreate()) {}
- };
-}
-
-//*****************************************************************************
// SvtFileDialog
//*****************************************************************************
SvtFileDialog::SvtFileDialog
@@ -472,6 +450,7 @@ SvtFileDialog::SvtFileDialog
,_bIsInExecute( sal_False )
,m_bInExecuteAsync( false )
,m_bHasFilename( false )
+ ,m_context(comphelper::getProcessComponentContext())
{
Init_Impl( nBits );
}
@@ -514,6 +493,23 @@ SvtFileDialog::~SvtFileDialog()
_pFileView->SetSelectHdl( Link() );
+ // Save bookmarked places
+ if(_pImp->_pPlaces->IsUpdated()) {
+ const std::vector<PlacePtr> aPlaces = _pImp->_pPlaces->GetPlaces();
+ Sequence< ::rtl::OUString > placesList(_pImp->_pPlaces->GetNbEditablePlaces());
+ int i(0);
+ for(std::vector<PlacePtr>::const_iterator it = aPlaces.begin(); it != aPlaces.end(); ++it)
{
+ if((*it)->IsEditable()) {
+ placesList[i] = (*it)->GetUrl();
+ ++i;
+ }
+ }
+
+ boost::shared_ptr<comphelper::ConfigurationChanges>
batch(comphelper::ConfigurationChanges::create(m_context));
+ officecfg::Office::Common::Misc::FilePickerPlaces::set(placesList, batch, m_context);
+ batch->commit();
+ }
+
delete _pImp;
delete _pFileView;
@@ -598,15 +594,27 @@ void SvtFileDialog::Init_Impl
}
}
- _pImp->_pFtCurrentPath = new FixedText( this, SvtResId( FT_EXPLORERFILE_CURRENTPATH ) );
- WinBits nTmpStyle = _pImp->_pFtCurrentPath->GetStyle();
- nTmpStyle |= WB_PATHELLIPSIS;
- _pImp->_pFtCurrentPath->SetStyle( nTmpStyle );
+ Edit anOtherDummy( this, SvtResId( ED_EXPLORERFILE_CURRENTPATH ) );
+ _pImp->_pEdCurrentPath = new SvtURLBox( this, SvtResId(ED_EXPLORERFILE_CURRENTPATH) );
+ _pImp->_pEdCurrentPath->SetUrlFilter( &m_aURLFilter );
+ _pImp->_pEdCurrentPath->SetPosSizePixel( anOtherDummy.GetPosPixel(),
anOtherDummy.GetSizePixel() );
+ _pImp->_pEdCurrentPath->Show();
_pImp->_pBtnFileOpen = new PushButton( this, SvtResId( BTN_EXPLORERFILE_OPEN ) );
_pImp->_pBtnCancel = new CancelButton( this, SvtResId( BTN_EXPLORERFILE_CANCEL ) );
_pImp->_pBtnHelp = new HelpButton( this, SvtResId( BTN_EXPLORERFILE_HELP ) );
+ _pImp->_pBtnConnectToServer = new PushButton ( this, SvtResId (
BTN_EXPLORERFILE_CONNECT_TO_SERVER ) );
+ _pImp->_pBtnConnectToServer->SetAccessibleName(
_pImp->_pBtnConnectToServer->GetQuickHelpText() );
+
+ _pImp->_pBtnAddPlace = new PushButton ( this, SvtResId ( BTN_EXPLORERFILE_ADD_PLACE ) );
+ _pImp->_pBtnAddPlace->SetAccessibleName( _pImp->_pBtnAddPlace->GetQuickHelpText() );
+ _pImp->_pBtnAddPlace->SetClickHdl( STATIC_LINK ( this, SvtFileDialog, AddPlacePressed_Hdl ) );
+
+ _pImp->_pBtnRemovePlace = new PushButton ( this, SvtResId ( BTN_EXPLORERFILE_REMOVE_PLACE ) );
+ _pImp->_pBtnRemovePlace->SetAccessibleName( _pImp->_pBtnRemovePlace->GetQuickHelpText() );
+ _pImp->_pBtnRemovePlace->SetClickHdl( STATIC_LINK ( this, SvtFileDialog,
RemovePlacePressed_Hdl ) );
+
_pImp->_pBtnUp = new SvtUpButton_Impl( this, SvtResId( BTN_EXPLORERFILE_UP ) );
_pImp->_pBtnNewFolder = new ImageButton( this, SvtResId( BTN_EXPLORERFILE_NEWFOLDER ) );
_pImp->_pBtnNewFolder->SetStyle( _pImp->_pBtnNewFolder->GetStyle() | WB_NOPOINTERFOCUS );
@@ -628,7 +636,7 @@ void SvtFileDialog::Init_Impl
_pFileView->SetHelpId( HID_FILEDLG_STANDARD );
_pFileView->SetStyle( _pFileView->GetStyle() | WB_TABSTOP );
- // determine the positions and size of the buttons
+ // determine the size of the buttons
Image aNewFolderImg( GetButtonImage( IMG_FILEDLG_CREATEFOLDER ) );
_pImp->_pBtnNewFolder->SetModeImage( aNewFolderImg );
@@ -639,40 +647,61 @@ void SvtFileDialog::Init_Impl
_pImp->_pBtnUp->SetSizePixel( aSize );
_pImp->_pBtnStandard->SetSizePixel( aSize );
+ // set position of the buttons
Size aDlgSize = GetOutputSizePixel();
long n6AppFontInPixel =
LogicToPixel( Size( 6, 0 ), MAP_APPFONT ).Width();
long n3AppFontInPixel =
LogicToPixel( Size( 3, 0 ), MAP_APPFONT ).Width();
+ long nHalf3AppFontInPixel = n3AppFontInPixel/2;
- // calculate the length of all buttons
- const sal_uInt16 nBtnCount = 3; // "previous level", "new folder" and "standard dir"
- long nDelta = n6AppFontInPixel; // right border
- nDelta += ( nBtnCount * aSize.Width() ); // button count * button width
- nDelta += ( n3AppFontInPixel + n3AppFontInPixel / 2 ); // spacing 1*big 1*small
+ // nDelta is the space between the right border and the left border of the
+ // component currently positioned
+ long nDelta = n6AppFontInPixel;
+ // Standard dir
+ nDelta += aSize.Width();
Point aPos(
aDlgSize.Width() - nDelta,
- _pImp->_pBtnUp->GetPosPixel().Y()
+ _pImp->_pBtnStandard->GetPosPixel().Y()
);
- Size aCurPathSize(
- aPos.X() - n6AppFontInPixel,
- _pImp->_pFtCurrentPath->GetOutputSizePixel().Height()
- );
- _pImp->_pFtCurrentPath->SetOutputSizePixel( aCurPathSize );
- _pImp->_pBtnUp->SetPosPixel( aPos );
- aPos.X() += aSize.Width();
- aPos.X() += n3AppFontInPixel;
- _pImp->_pBtnNewFolder->SetPosPixel( aPos );
- aPos.X() += aSize.Width();
- aPos.X() += n3AppFontInPixel / 2;
- _pImp->_pBtnStandard->SetPosPixel( aPos );
- nDelta = aSize.Height();
- nDelta -= aCurPathSize.Height();
- nDelta /= 2;
- Point aCurPathPos = _pImp->_pFtCurrentPath->GetPosPixel();
- aCurPathPos.Y() += nDelta;
- _pImp->_pFtCurrentPath->SetPosPixel( aCurPathPos );
+ _pImp->_pBtnStandard->SetPosPixel(aPos);
+
+ // New folder
+ nDelta += aSize.Width() + nHalf3AppFontInPixel;
+ aPos.X() = aDlgSize.Width() - nDelta;
+ _pImp->_pBtnNewFolder->SetPosPixel(aPos);
+
+ // Previous level (up)
+ nDelta += aSize.Width() + nHalf3AppFontInPixel;
+ aPos.X() = aDlgSize.Width() - nDelta;
+ _pImp->_pBtnUp->SetPosPixel(aPos);
+
+ // Connect to server ("...")
+ nDelta += _pImp->_pBtnConnectToServer->GetSizePixel().Width() + n3AppFontInPixel;
+ aPos.X() = aDlgSize.Width() - nDelta;
+
+ // Height of this button is URL bar's height
+ long nBtnHeight = aSize.Height();
+ aSize = _pImp->_pBtnConnectToServer->GetSizePixel();
+ aSize.Height() = _pImp->_pEdCurrentPath->GetOutputSizePixel().Height();
+ // Keep the same height as for the other buttons
+ _pImp->_pBtnConnectToServer->SetSizePixel( aSize );
+
+ // Repositon the URL bar and the "..." button in order to have it vertically
+ // aligned with the buttons
+ aPos.Y() += (nBtnHeight - aSize.Height()) / 2;
+ _pImp->_pBtnConnectToServer->SetPosPixel(aPos);
+
+ // Set the size of the URL bar
+ nDelta += nHalf3AppFontInPixel; // right margin of the URL bar
+ aSize.Width() = aDlgSize.Width()
+ - _pImp->_pEdCurrentPath->GetPosPixel().X()
+ - nDelta;
+ _pImp->_pEdCurrentPath->SetOutputSizePixel(aSize);
+
+ aPos.X() = _pImp->_pEdCurrentPath->GetPosPixel().X();
+ _pImp->_pEdCurrentPath->SetPosPixel(aPos);
if ( nStyle & SFXWB_READONLY )
{
@@ -703,12 +732,16 @@ void SvtFileDialog::Init_Impl
aPos.Y() += LogicToPixel( Size( 0, 6 ), MAP_APPFONT ).Height();
long nYOffset = aPos.Y();
aPos = _pFileView->GetPosPixel();
+
+ aPos.Y() = nYOffset;
nYOffset -= aPos.Y();
// Adjust the position of the other elements.
- aPos.Y() += nYOffset;
_pFileView->SetPosPixel( aPos );
+ aPos.X() = _pImp->_pPlaces->GetPosPixel().X();
+ _pImp->_pPlaces->SetPosPixel( aPos );
+
lcl_MoveControl( _pImp->_pFtFileName, 0, nYOffset );
lcl_MoveControl( _pImp->_pEdFileName, 0, nYOffset );
@@ -770,6 +803,10 @@ void SvtFileDialog::Init_Impl
_pImp->SetFilterListSelectHdl( STATIC_LINK( this, SvtFileDialog, FilterSelectHdl_Impl ) );
_pImp->_pEdFileName->SetGetFocusHdl( STATIC_LINK( this, SvtFileDialog,
FileNameGetFocusHdl_Impl ) );
_pImp->_pEdFileName->SetModifyHdl( STATIC_LINK( this, SvtFileDialog, FileNameModifiedHdl_Impl
) );
+ _pImp->_pEdCurrentPath->SetOpenHdl ( STATIC_LINK( this, SvtFileDialog, URLBoxModifiedHdl_Impl
) );
+ _pImp->_pBtnConnectToServer->SetClickHdl( STATIC_LINK ( this, SvtFileDialog,
ConnectToServerPressed_Hdl ) );
+
+
_pFileView->SetSelectHdl( LINK( this, SvtFileDialog, SelectHdl_Impl ) );
_pFileView->SetDoubleClickHdl( LINK( this, SvtFileDialog, DblClickHdl_Impl ) );
_pFileView->SetOpenDoneHdl( LINK( this, SvtFileDialog, OpenDoneHdl_Impl ) );
@@ -1060,7 +1097,7 @@ IMPL_STATIC_LINK( SvtFileDialog, OpenHdl_Impl, void*, pVoid )
// if the dialog was opened to select a folder, the last selected folder should be selected
if( pThis->_pImp->_eDlgType == FILEDLG_TYPE_PATHDLG )
{
- aFileName = pThis->_pImp->_pFtCurrentPath->GetText();
+ aFileName = pThis->_pImp->_pEdCurrentPath->GetText();
nLen = aFileName.Len();
}
else
@@ -1417,6 +1454,63 @@ IMPL_STATIC_LINK( SvtFileDialog, FileNameModifiedHdl_Impl, void*, EMPTYARG )
//*****************************************************************************
+IMPL_STATIC_LINK ( SvtFileDialog, URLBoxModifiedHdl_Impl, void*, EMPTYARG )
+{
+ String _aPath = pThis->_pImp->_pEdCurrentPath->GetURL();
+ pThis->OpenURL_Impl(_aPath);
+ return 0;
+}
+
+//*****************************************************************************
+
+IMPL_STATIC_LINK ( SvtFileDialog, ConnectToServerPressed_Hdl, void*, EMPTYARG )
+{
+ pThis->_pFileView->EndInplaceEditing( false );
+
+ SvtPlaceDialog aDlg( pThis );
+ short aRetCode = aDlg.Execute();
+
+ switch (aRetCode) {
+ case RET_OK :
+ {
+ PlacePtr newPlace = aDlg.GetPlace();
+ pThis->_pImp->_pPlaces->AppendPlace(newPlace);
+
+ break;
+ }
+ case RET_CANCEL :
+ default :
+ // Do Nothing
+ break;
+ };
+
+ return 0;
+}
+
+//*****************************************************************************
+
+IMPL_STATIC_LINK ( SvtFileDialog, AddPlacePressed_Hdl, void*, EMPTYARG )
+{
+ // Maybe open the PlacesDialog would have been a better idea
+ // there is an ux choice to make we did not make...
+ PlacePtr newPlace(new Place(::rtl::OUString(pThis->_pFileView->GetViewURL()),
+ ::rtl::OUString(pThis->_pFileView->GetViewURL()),
+ Place::e_PlaceLocal, true));
+ pThis->_pImp->_pPlaces->AppendPlace(newPlace);
+ return 0;
+}
+
+//*****************************************************************************
+
+IMPL_STATIC_LINK ( SvtFileDialog, RemovePlacePressed_Hdl, void*, EMPTYARG )
+{
+ pThis->_pImp->_pPlaces->RemoveSelectedPlace();
+
+ return 0;
+}
+
+//*****************************************************************************
+
SvtFileDialogFilter_Impl* SvtFileDialog::FindFilter_Impl
(
const String& _rFilter,
@@ -1558,7 +1652,7 @@ void SvtFileDialog::UpdateControls( const String& rURL )
if ( !sText.Len() && rURL.Len() )
// happens, for instance, for URLs which the INetURLObject does not know to belong to
a hierarchical scheme
sText = rURL;
- _pImp->_pFtCurrentPath->SetText( sText );
+ _pImp->_pEdCurrentPath->SetText( sText );
}
//=========================================================================
@@ -1937,6 +2031,17 @@ void SvtFileDialog::onAsyncOperationFinished()
_pImp->_pEdFileName->GrabFocus();
// (if m_bInExecuteAsync is true, then the operation was finished within the minium wait
time,
// and to the user, the operation appears to be synchronous)
+
+ _pImp->_pBtnRemovePlace->Disable();
+}
+
+//-----------------------------------------------------------------------------
+void SvtFileDialog::RemovablePlaceSelected(bool enable)
+{
+ if(enable)
+ _pImp->_pBtnRemovePlace->Enable();
+ else
+ _pImp->_pBtnRemovePlace->Disable();
}
//-------------------------------------------------------------------------
@@ -2485,8 +2590,9 @@ void SvtFileDialog::implArrangeControls()
// pb: #136070# new order so all LabeledBy relations are correct now
Control* pControls[] =
{
- _pImp->_pFtCurrentPath,
+ _pImp->_pEdCurrentPath, _pImp->_pBtnConnectToServer,
_pImp->_pBtnUp, _pImp->_pBtnNewFolder, _pImp->_pBtnStandard, // image buttons
+ _pImp->_pPlaces, _pImp->_pBtnAddPlace, _pImp->_pBtnRemovePlace, // list of places
_pFileView, // the file view
_pImp->_pFtFileName, _pImp->_pEdFileName,
_pImp->_pFtFileVersion, _pImp->_pLbFileVersion,
@@ -2655,6 +2761,11 @@ void SvtFileDialog::Resize()
_pFileView->SetSizePixel( aNewSize );
+ // Resize the places list box to fit the height of the FileView
+ Size placesNewSize(_pImp->_pPlaces->GetSizePixel());
+ placesNewSize.Height() += nDeltaY;
+ _pImp->_pPlaces->SetSizePixel( placesNewSize );
+
if ( !nDeltaY && !nDeltaX )
// This resize was only called to show or hide the indicator.
return;
@@ -2669,7 +2780,8 @@ void SvtFileDialog::Resize()
_pImp->_pFtFileName, _pImp->_pEdFileName, _pImp->_pFtFileVersion,
_pImp->_pLbFileVersion,
_pImp->_pFtTemplates, _pImp->_pLbTemplates, _pImp->_pFtImageTemplates,
_pImp->_pLbImageTemplates,
_pImp->_pFtFileType, _pImp->GetFilterListControl(), _pCbReadOnly, _pCbLinkBox,
_pCbPreviewBox,
- _pPbPlay, _pImp->_pCbPassword, _pImp->_pCbAutoExtension, _pImp->_pCbOptions,
_pCbSelection
+ _pPbPlay, _pImp->_pCbPassword, _pImp->_pCbAutoExtension, _pImp->_pCbOptions,
_pCbSelection,
+ _pImp->_pBtnAddPlace, _pImp->_pBtnRemovePlace
};
Control** ppMoveControls = aMoveControlsVert;
Control** ppMoveControlsEnd = ppMoveControls + SAL_N_ELEMENTS( aMoveControlsVert );
@@ -2693,6 +2805,7 @@ void SvtFileDialog::Resize()
{
Control* aMoveControlsHor[] =
{
+ _pImp->_pBtnConnectToServer,
_pImp->_pBtnUp, _pImp->_pBtnNewFolder, _pImp->_pBtnStandard
};
Control** ppMoveControls = aMoveControlsHor;
@@ -2707,7 +2820,7 @@ void SvtFileDialog::Resize()
Control* aSizeControls[] =
{
_pImp->_pEdFileName, _pImp->_pLbFileVersion, _pImp->_pLbTemplates,
_pImp->_pLbImageTemplates,
- _pImp->GetFilterListControl(), _pImp->_pFtCurrentPath,
+ _pImp->GetFilterListControl(), _pImp->_pEdCurrentPath,
};
sal_Int32 nSizeControls = SAL_N_ELEMENTS( aSizeControls );
Control** ppSizeControls = aSizeControls;
@@ -2804,7 +2917,7 @@ Control* SvtFileDialog::getControl( sal_Int16 _nControlId, sal_Bool
_bLabelContr
break;
case FIXEDTEXT_CURRENTFOLDER:
- pReturn = _pImp->_pFtCurrentPath;
+ pReturn = _pImp->_pEdCurrentPath;
break;
case LISTBOX_VERSION:
@@ -2993,6 +3106,9 @@ void SvtFileDialog::AddControls_Impl( )
_pImp->_pLbImageTemplates = new ListBox( this, SvtResId( LB_EXPLORERFILE_SHARED_LISTBOX )
);
_pImp->_pLbImageTemplates->SetHelpId( HID_FILEOPEN_IMAGE_TEMPLATE );
}
+
+ _pImp->_pPlaces = new PlacesListBox( this, SvtResId( LB_EXPLORERFILE_PLACES_LISTBOX ) );
+ initDefaultPlaces();
}
// -----------------------------------------------------------------------
@@ -3317,6 +3433,23 @@ void SvtFileDialog::appendDefaultExtension(String& _rFileName,
}
}
+void SvtFileDialog::initDefaultPlaces( )
+{
+ PlacePtr pRootPlace( new Place( ResId::toString( SvtResId( STR_MY_DOCUMENTS ) ),
GetStandardDir(), Place::e_PlaceLocal ) );
+ _pImp->_pPlaces->AppendPlace( pRootPlace );
+
+ // Load from user settings
+ Sequence< ::rtl::OUString >
placesList(officecfg::Office::Common::Misc::FilePickerPlaces::get(m_context));
+
+ for(sal_Int32 nPlace = 0; nPlace < placesList.getLength(); ++nPlace) {
+ PlacePtr pPlace(new Place(placesList[nPlace], placesList[nPlace], Place::e_PlaceLocal,
true));
+ _pImp->_pPlaces->AppendPlace(pPlace);
+ }
+
+ // Reset the placesList "updated" state
+ _pImp->_pPlaces->IsUpdated();
+}
+
// QueryFolderNameDialog -------------------------------------------------------
namespace svtools {
diff --git a/fpicker/source/office/iodlg.hrc b/fpicker/source/office/iodlg.hrc
index 353314e..e54c702 100644
--- a/fpicker/source/office/iodlg.hrc
+++ b/fpicker/source/office/iodlg.hrc
@@ -33,7 +33,7 @@
// ModalDialog DLG_SVT_EXPLORERFILE
-#define FT_EXPLORERFILE_CURRENTPATH 10
+#define ED_EXPLORERFILE_CURRENTPATH 10
#define BTN_EXPLORERFILE_NEWFOLDER 11
#define BTN_EXPLORERFILE_UP 12
#define BTN_EXPLORERFILE_STANDARD 13
@@ -59,6 +59,11 @@
#define CB_AUTO_EXTENSION 42
#define CB_OPTIONS 43
+#define LB_EXPLORERFILE_PLACES_LISTBOX 50
+#define BTN_EXPLORERFILE_CONNECT_TO_SERVER 51
+#define BTN_EXPLORERFILE_ADD_PLACE 52
+#define BTN_EXPLORERFILE_REMOVE_PLACE 53
+
// -----------------------------------------------
#define STR_EXPLORERFILE_OPEN 1
@@ -68,7 +73,24 @@
#define STR_PATHSELECT 5
#define STR_BUTTONSELECT 6
#define STR_ACTUALVERSION 7
-#define STR_PREVIEW 8
+#define STR_PREVIEW 8
+#define STR_MY_DOCUMENTS 9
+
+// DLG_SVT_ADDPLACE ------------------------------
+
+#define FT_ADDPLACE_SERVERURL 10
+#define FT_ADDPLACE_SERVERNAME 11
+#define FT_ADDPLACE_SERVERTYPE 12
+#define FT_ADDPLACE_SERVERLOGIN 13
+#define FT_ADDPLACE_SERVERPASSWORD 14
+#define ED_ADDPLACE_SERVERURL 15
+#define ED_ADDPLACE_SERVERNAME 16
+#define ED_ADDPLACE_SERVERTYPE 17
+#define ED_ADDPLACE_SERVERLOGIN 18
+#define ED_ADDPLACE_SERVERPASSWORD 19
+#define BT_ADDPLACE_OK 20
+#define BT_ADDPLACE_CANCEL 21
+#define BT_ADDPLACE_DELETE 22
// DLG_SVT_QUERYFOLDERNAME -----------------------
diff --git a/fpicker/source/office/iodlg.hxx b/fpicker/source/office/iodlg.hxx
index 3a2a28c..0d53fc8 100644
--- a/fpicker/source/office/iodlg.hxx
+++ b/fpicker/source/office/iodlg.hxx
@@ -1,5 +1,5 @@
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
+/*********** **************************************************************
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
@@ -37,6 +37,7 @@
#include <com/sun/star/beans/StringPair.hpp>
#include <com/sun/star/uno/Any.hxx>
#include <com/sun/star/uno/Sequence.hxx>
+#include <com/sun/star/uno/Reference.hxx>
#include <com/sun/star/ucb/IOErrorCode.hpp>
#include <com/sun/star/ui/dialogs/XDialogClosedListener.hpp>
#include <unotools/confignode.hxx>
@@ -46,6 +47,8 @@
#include "asyncfilepicker.hxx"
#include "OfficeControlAccess.hxx"
#include "fpsmartcontent.hxx"
+#include <comphelper/configuration.hxx>
+#include <comphelper/processfactory.hxx>
#include <set>
@@ -122,6 +125,7 @@ private:
m_xListener;
bool m_bInExecuteAsync;
bool m_bHasFilename;
+ ::com::sun::star::uno::Reference < com::sun::star::uno::XComponentContext > m_context;
DECL_STATIC_LINK( SvtFileDialog, FilterSelectHdl_Impl, ListBox* );
DECL_STATIC_LINK( SvtFileDialog, NewFolderHdl_Impl, PushButton* );
@@ -131,6 +135,12 @@ private:
DECL_STATIC_LINK( SvtFileDialog, FileNameGetFocusHdl_Impl, void* );
DECL_STATIC_LINK( SvtFileDialog, FileNameModifiedHdl_Impl, void* );
+ DECL_STATIC_LINK( SvtFileDialog, URLBoxModifiedHdl_Impl, void* );
+ DECL_STATIC_LINK( SvtFileDialog, ConnectToServerPressed_Hdl, void* );
+
+ DECL_STATIC_LINK( SvtFileDialog, AddPlacePressed_Hdl, void* );
+ DECL_STATIC_LINK( SvtFileDialog, RemovePlacePressed_Hdl, void* );
+
void Init_Impl( WinBits nBits );
/** find a filter with the given wildcard
@param _rFilter
@@ -158,6 +168,7 @@ private:
DECL_LINK( ClickHdl_Impl, CheckBox* );
DECL_LINK( PlayButtonHdl_Impl, PushButton* );
+
// removes a filter with wildcards from the path and returns it
sal_Bool IsolateFilterFromPath_Impl( String& rPath, String& rFilter );
@@ -256,6 +267,8 @@ public:
void onAsyncOperationStarted();
void onAsyncOperationFinished();
+ void RemovablePlaceSelected(bool enable = true);
+
void displayIOException( const String& _rURL,
::com::sun::star::ucb::IOErrorCode _eCode );
void simulateAccessDenied( const String& _rURL )
{
@@ -357,6 +370,8 @@ private:
String& _rFileName,
const String& _rFilterDefaultExtension,
const String& _rFilterExtensions);
+
+ void initDefaultPlaces( );
};
//***************************************************************************
diff --git a/fpicker/source/office/iodlg.src b/fpicker/source/office/iodlg.src
index b30bf7e..819694a 100644
--- a/fpicker/source/office/iodlg.src
+++ b/fpicker/source/office/iodlg.src
@@ -64,11 +64,11 @@ ModalDialog DLG_SVT_EXPLORERFILE
Sizeable = TRUE;
HelpId = HID_EXPLORERDLG_FILE ;
Size = MAP_APPFONT ( 280 , 174 ) ;
- FixedText FT_EXPLORERFILE_CURRENTPATH
+ Edit ED_EXPLORERFILE_CURRENTPATH
{
Pos = MAP_APPFONT ( 6 , 6 ) ;
- Size = MAP_APPFONT ( 100 , 10 ) ;
- NoLabel = TRUE ;
+ Size = MAP_APPFONT ( 90 , 14 ) ;
+ Border = TRUE ;
};
ImageButton BTN_EXPLORERFILE_NEWFOLDER
{
@@ -92,11 +92,45 @@ ModalDialog DLG_SVT_EXPLORERFILE
Pos = MAP_APPFONT ( 59 , 6 ) ;
QuickHelpText [ en-US ] = "Default Directory" ;
};
+ ListBox LB_EXPLORERFILE_PLACES_LISTBOX
+ {
+ HelpID = "fpicker:ListBox:DLG_SVT_EXPLORERFILE:LB_EXPLORERFILE_PLACES_LISTBOX";
+ Pos = MAP_APPFONT ( 6 , 26 ) ;
+ Size = MAP_APPFONT ( 50 , 75 ) ;
+ DropDown = FALSE ;
+ AutoSize = FALSE ;
+ AutoHScroll = TRUE ;
+ Border = TRUE ;
+ };
+ PushButton BTN_EXPLORERFILE_CONNECT_TO_SERVER
+ {
+ HelpID = "fpicker:PushButton:DLG_SVT_EXPLORERFILE:BTN_EXPLORERFILE_CONNECT_TO_SERVER";
+ Pos = MAP_APPFONT ( 94 , 6 ) ;
+ Size = MAP_APPFONT ( 15 , 10 ) ;
+ Text [ en-US ] = "..." ;
+ QuickHelpText [ en-US ] = "Connect To Server" ;
+ };
+ PushButton BTN_EXPLORERFILE_ADD_PLACE
+ {
+ HelpID = "fpicker:PushButton:DLG_SVT_EXPLORERFILE:BTN_EXPLORERFILE_ADD_PLACE";
+ Pos = MAP_APPFONT ( 6 , 101 ) ;
+ Size = MAP_APPFONT ( 10 , 10 ) ;
+ Text [ en-US ] = "+" ;
+ QuickHelpText [ en-US ] = "Bookmark This Place" ;
+ };
+ PushButton BTN_EXPLORERFILE_REMOVE_PLACE
+ {
+ HelpID = "fpicker:PushButton:DLG_SVT_EXPLORERFILE:BTN_EXPLORERFILE_REMOVE_PLACE";
+ Pos = MAP_APPFONT ( 19 , 101 ) ;
+ Size = MAP_APPFONT ( 10 , 10 ) ;
+ Text [ en-US ] = "-" ;
+ QuickHelpText [ en-US ] = "Remove Selected Bookmark" ;
+ };
Control CTL_EXPLORERFILE_FILELIST
{
TabStop = TRUE ;
- Pos = MAP_APPFONT ( 6 , 26 ) ;
- Size = MAP_APPFONT ( 268 , 85 ) ;
+ Pos = MAP_APPFONT ( 59 , 26 ) ;
+ Size = MAP_APPFONT ( 215 , 85 ) ;
Border = TRUE ;
};
FixedText FT_EXPLORERFILE_FILENAME
@@ -218,9 +252,117 @@ ModalDialog DLG_SVT_EXPLORERFILE
{
Text [ en-US ] = "File Preview";
};
+ String STR_MY_DOCUMENTS
+ {
+ Text [ en-US ] = "My Documents" ;
+ };
+};
+
+// Add Place Dialog --------------------------------------------------------------
+
+ModalDialog DLG_SVT_ADDPLACE
+{
+ OutputSize = TRUE ;
+ Border = TRUE ;
+ SVLook = TRUE ;
+ Moveable = TRUE ;
+ Closeable = TRUE ;
+ Sizeable = TRUE;
+ HelpId = HID_EXPLORERDLG_FILE ;
+ Size = MAP_APPFONT ( 200 , 140 ) ;
+ FixedText FT_ADDPLACE_SERVERURL
+ {
+ Pos = MAP_APPFONT ( 12 , 14 ) ;
+ Size = MAP_APPFONT ( 40 , 10 ) ;
+ Text [ en-US ] = "Server Url" ;
+ };
+ FixedText FT_ADDPLACE_SERVERNAME
+ {
+ Pos = MAP_APPFONT ( 12 , 34 ) ;
+ Size = MAP_APPFONT ( 40 , 10 ) ;
+ Text [ en-US ] = "Server Name" ;
+ };
+ FixedText FT_ADDPLACE_SERVERTYPE
+ {
+ Pos = MAP_APPFONT ( 12 , 54 ) ;
+ Size = MAP_APPFONT ( 40 , 10 ) ;
+ Text [ en-US ] = "Type" ;
+ };
+ FixedText FT_ADDPLACE_SERVERLOGIN
+ {
+ Pos = MAP_APPFONT ( 12 , 74 ) ;
+ Size = MAP_APPFONT ( 30 , 10 ) ;
+ Text [ en-US ] = "Login" ;
+ };
+ FixedText FT_ADDPLACE_SERVERPASSWORD
+ {
+ Pos = MAP_APPFONT ( 12 , 94 ) ;
+ Size = MAP_APPFONT ( 40 , 10 ) ;
+ Text [ en-US ] = "Password" ;
+ };
+ Edit ED_ADDPLACE_SERVERURL
+ {
+ //HelpID = "fpicker:Edit:DLG_SVT_QUERYFOLDERNAME:ED_SVT_QUERYFOLDERNAME_DLG_NAME";
+ Pos = MAP_APPFONT ( 62, 12 ) ;
+ Size = MAP_APPFONT ( 130 , 12 ) ;
+ Border = TRUE ;
+ //Left = TRUE ;
+ };
+ Edit ED_ADDPLACE_SERVERNAME
+ {
+ //HelpID = "fpicker:Edit:DLG_SVT_QUERYFOLDERNAME:ED_SVT_QUERYFOLDERNAME_DLG_NAME";
+ Pos = MAP_APPFONT ( 62, 32 ) ;
+ Size = MAP_APPFONT ( 130 , 12 ) ;
+ Border = TRUE ;
+ //Left = TRUE ;
+ };
+ Edit ED_ADDPLACE_SERVERTYPE
+ {
+ //HelpID = "fpicker:Edit:DLG_SVT_QUERYFOLDERNAME:ED_SVT_QUERYFOLDERNAME_DLG_NAME";
+ Pos = MAP_APPFONT ( 62, 52 ) ;
+ Size = MAP_APPFONT ( 130 , 12 ) ;
+ Border = TRUE ;
+ //Left = TRUE ;
+ };
+ Edit ED_ADDPLACE_SERVERLOGIN
+ {
+ //HelpID = "fpicker:Edit:DLG_SVT_QUERYFOLDERNAME:ED_SVT_QUERYFOLDERNAME_DLG_NAME";
+ Pos = MAP_APPFONT ( 62, 72 ) ;
+ Size = MAP_APPFONT ( 130 , 12 ) ;
+ Border = TRUE ;
+ //Left = TRUE ;
+ };
+ Edit ED_ADDPLACE_SERVERPASSWORD
+ {
+ //HelpID = "fpicker:Edit:DLG_SVT_QUERYFOLDERNAME:ED_SVT_QUERYFOLDERNAME_DLG_NAME";
+ Pos = MAP_APPFONT ( 62, 92 ) ;
+ Size = MAP_APPFONT ( 130 , 12 ) ;
+ Border = TRUE ;
+ //Left = TRUE ;
+ };
+ OKButton BT_ADDPLACE_OK
+ {
+ Pos = MAP_APPFONT ( 80 , 120 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ DefButton = TRUE ;
+ };
+ CancelButton BT_ADDPLACE_CANCEL
+ {
+ Pos = MAP_APPFONT ( 140, 120 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ };
+ PushButton BT_ADDPLACE_DELETE
+ {
+ //HelpID = "fpicker:PushButton:DLG_SVT_EXPLORERFILE:BTN_EXPLORERFILE_CONNECT_TO_SERVER";
+ Pos = MAP_APPFONT ( 10 , 120 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ Text [ en-US ] = "Delete" ;
+ //QuickHelpText [ en-US ] = "Connect To Server" ;
+ };
};
// QueryFolderNameDialog ----------------------------------------------------------
+
ModalDialog DLG_SVT_QUERYFOLDERNAME
{
HelpID = "fpicker:ModalDialog:DLG_SVT_QUERYFOLDERNAME";
@@ -229,7 +371,7 @@ ModalDialog DLG_SVT_QUERYFOLDERNAME
OutputSize = TRUE ;
SVLook = TRUE ;
Text = "Ordner" ;
- Size = MAP_APPFONT ( 218 , 45 ) ;
+ Size = MAP_APPFONT ( 100 , 45 ) ;
FixedText FT_SVT_QUERYFOLDERNAME_DLG_NAME
{
Pos = MAP_APPFONT ( 12 , 14 ) ;
diff --git a/fpicker/source/office/iodlgimp.cxx b/fpicker/source/office/iodlgimp.cxx
index 2c7b4c1..7432c6d 100644
--- a/fpicker/source/office/iodlgimp.cxx
+++ b/fpicker/source/office/iodlgimp.cxx
@@ -360,9 +360,13 @@ SvtExpFileDlg_Impl::SvtExpFileDlg_Impl( WinBits ) :
_pBtnNewFolder ( NULL ),
_pBtnStandard ( NULL ),
_pCbPassword ( NULL ),
- _pFtCurrentPath ( NULL ),
+ _pEdCurrentPath ( NULL ),
_pCbAutoExtension ( NULL ),
_pCbOptions ( NULL ),
+ _pPlaces ( NULL ),
+ _pBtnConnectToServer( NULL ),
+ _pBtnAddPlace ( NULL ),
+ _pBtnRemovePlace ( NULL ),
_nState ( FILEDLG_STATE_REMOTE ),
_nStyle ( 0 ),
_bDoubleClick ( sal_False ),
@@ -378,7 +382,7 @@ SvtExpFileDlg_Impl::SvtExpFileDlg_Impl( WinBits ) :
SvtExpFileDlg_Impl::~SvtExpFileDlg_Impl()
{
- delete _pFtCurrentPath;
+ delete _pEdCurrentPath;
delete _pCbPassword;
delete _pCbAutoExtension;
delete _pCbOptions;
@@ -400,6 +404,10 @@ SvtExpFileDlg_Impl::~SvtExpFileDlg_Impl()
delete _pFtFileName;
delete _pUserFilter;
delete _pFilter;
+ delete _pPlaces;
+ delete _pBtnConnectToServer;
+ delete _pBtnAddPlace;
+ delete _pBtnRemovePlace;
}
//*****************************************************************************
diff --git a/fpicker/source/office/iodlgimp.hxx b/fpicker/source/office/iodlgimp.hxx
index e0a99a8..de9df3b 100644
--- a/fpicker/source/office/iodlgimp.hxx
+++ b/fpicker/source/office/iodlgimp.hxx
@@ -28,6 +28,8 @@
#ifndef _IODLGIMP_HXX
#define _IODLGIMP_HXX
+#include <PlacesListBox.hxx>
+
#include <tools/string.hxx>
#include <vcl/fixed.hxx>
#include <vcl/lstbox.hxx>
@@ -184,10 +186,15 @@ public:
ImageButton* _pBtnNewFolder;
SvtTravelButton_Impl* _pBtnStandard;
CheckBox* _pCbPassword;
- FixedText* _pFtCurrentPath;
+ SvtURLBox* _pEdCurrentPath;
CheckBox* _pCbAutoExtension;
CheckBox* _pCbOptions;
+ PlacesListBox* _pPlaces;
+ PushButton* _pBtnConnectToServer;
+ PushButton* _pBtnAddPlace;
+ PushButton* _pBtnRemovePlace;
+
SvtFileDlgMode _eMode;
SvtFileDlgType _eDlgType;
SvtFileDlgState _nState;
diff --git a/officecfg/registry/data/org/openoffice/Office/Common.xcu
b/officecfg/registry/data/org/openoffice/Office/Common.xcu
index 744c7f2..cc824f8 100644
--- a/officecfg/registry/data/org/openoffice/Office/Common.xcu
+++ b/officecfg/registry/data/org/openoffice/Office/Common.xcu
@@ -590,6 +590,9 @@
<value oor:external=
"com.sun.star.configuration.backend.GconfBackend SymbolSet"/>
</prop>
+ <prop oor:name="FilePickerPlaces">
+ <value/>
+ </prop>
</node>
<node oor:name="Save">
<node oor:name="Document">
diff --git a/officecfg/registry/schema/org/openoffice/Office/Common.xcs
b/officecfg/registry/schema/org/openoffice/Office/Common.xcs
index 6a8f846..a5b0eef 100644
--- a/officecfg/registry/schema/org/openoffice/Office/Common.xcs
+++ b/officecfg/registry/schema/org/openoffice/Office/Common.xcs
@@ -6755,6 +6755,11 @@
</info>
<value>true</value>
</prop>
+ <prop oor:name="FilePickerPlaces" oor:type="oor:string-list" oor:nillable="false">
+ <info>
+ <desc>List of the places the user bookmarked in the file picker dialog.</desc>
+ </info>
+ </prop>
</group>
<group oor:name="Forms">
<info>
diff --git a/svtools/inc/svtools/svtools.hrc b/svtools/inc/svtools/svtools.hrc
index c6e05f2..466b978 100644
--- a/svtools/inc/svtools/svtools.hrc
+++ b/svtools/inc/svtools/svtools.hrc
@@ -43,6 +43,7 @@
#define DLG_SVT_EXPLORERFILE (RID_SVTOOLS_START+4)
#define DLG_SVT_QUERYFOLDERNAME (RID_SVTOOLS_START+5)
#define DLG_SVT_QUERYDELETE (RID_SVTOOLS_START+6)
+#define DLG_SVT_ADDPLACE (RID_SVTOOLS_START+7)
#define STR_SVT_AUTOMATIC_COLOR (RID_SVTOOLS_START+16)
--
1.7.9.1
Context
- [Unfinished Patch] List of bookmarks in the file picker · Martin Richard
Privacy Policy |
Impressum (Legal Info) |
Copyright information: Unless otherwise specified, all text and images
on this website are licensed under the
Creative Commons Attribution-Share Alike 3.0 License.
This does not include the source code of LibreOffice, which is
licensed under the Mozilla Public License (
MPLv2).
"LibreOffice" and "The Document Foundation" are
registered trademarks of their corresponding registered owners or are
in actual use as trademarks in one or more countries. Their respective
logos and icons are also subject to international copyright laws. Use
thereof is explained in our
trademark policy.