summaryrefslogtreecommitdiffstats
path: root/fpicker/source/office/RemoteFilesDialog.hxx
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--fpicker/source/office/RemoteFilesDialog.hxx186
1 files changed, 186 insertions, 0 deletions
diff --git a/fpicker/source/office/RemoteFilesDialog.hxx b/fpicker/source/office/RemoteFilesDialog.hxx
new file mode 100644
index 000000000..3dfb4e1dc
--- /dev/null
+++ b/fpicker/source/office/RemoteFilesDialog.hxx
@@ -0,0 +1,186 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ */
+
+#pragma once
+
+#include "autocmpledit.hxx"
+#include <svtools/place.hxx>
+
+#include <unotools/viewoptions.hxx>
+
+#include <vcl/svapp.hxx>
+
+#include <com/sun/star/beans/StringPair.hpp>
+#include <com/sun/star/uno/Sequence.hxx>
+#include <com/sun/star/task/XPasswordContainer2.hpp>
+
+#include <vector>
+
+#include "asyncfilepicker.hxx"
+#include "fpdialogbase.hxx"
+#include "breadcrumb.hxx"
+#include "fileview.hxx"
+#include "foldertree.hxx"
+
+using namespace ::com::sun::star::beans;
+using namespace ::com::sun::star::task;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::ui::dialogs;
+
+enum SvtRemoteDlgMode
+{
+ REMOTEDLG_MODE_OPEN = 0,
+ REMOTEDLG_MODE_SAVE = 1
+};
+
+enum SvtRemoteDlgType
+{
+ REMOTEDLG_TYPE_FILEDLG = 0,
+ REMOTEDLG_TYPE_PATHDLG = 1
+};
+
+typedef std::shared_ptr< Place > ServicePtr;
+
+class RemoteFilesDialog : public SvtFileDialog_Base
+{
+public:
+ RemoteFilesDialog( weld::Window* pParent, PickerFlags nBits );
+ virtual ~RemoteFilesDialog() override;
+
+ virtual short run() override;
+
+ // SvtFileDialog_Base
+
+ virtual SvtFileView* GetView() override;
+
+ virtual void SetHasFilename( bool ) override;
+ virtual void SetDenyList( const css::uno::Sequence< OUString >& rDenyList ) override;
+ virtual const css::uno::Sequence< OUString >& GetDenyList() const override;
+ virtual void SetStandardDir( const OUString& rStdDir ) override;
+ virtual const OUString& GetStandardDir() const override;
+ virtual void SetPath( const OUString& rNewURL ) override;
+ virtual const OUString& GetPath() override;
+ virtual std::vector<OUString> GetPathList() const override;
+ virtual bool ContentIsFolder( const OUString& rURL ) override;
+ bool ContentIsDocument(const OUString& rURL);
+
+ virtual OUString getCurrentFileText() const override;
+ virtual void setCurrentFileText( const OUString& rText, bool bSelectAll = false ) override;
+
+ virtual void AddFilter( const OUString& rFilter, const OUString& rType ) override;
+ virtual void AddFilterGroup( const OUString& _rFilter,
+ const css::uno::Sequence< css::beans::StringPair >& rFilters ) override;
+ virtual OUString GetCurFilter() const override;
+ virtual void SetCurFilter( const OUString& rFilter ) override;
+ virtual void FilterSelect() override;
+
+ virtual void SetFileCallback( ::svt::IFilePickerListener *pNotifier ) override;
+ virtual void onAsyncOperationStarted() override;
+ virtual void onAsyncOperationFinished() override;
+ virtual void UpdateControls( const OUString& rURL ) override;
+
+ virtual void EnableAutocompletion( bool = true) override;
+
+ virtual sal_Int32 getAvailableWidth() override;
+ virtual sal_Int32 getAvailableHeight() override;
+
+ virtual void setImage( const css::uno::Any& rImage ) override;
+
+ virtual bool getShowState() override;
+
+ virtual weld::Widget* getControl( sal_Int16 nControlId, bool bLabelControl = false ) const override;
+ virtual void enableControl( sal_Int16 nControlId, bool bEnable ) override;
+ virtual OUString getCurFilter( ) const override;
+
+private:
+ Reference< XComponentContext > m_xContext;
+ Reference< XPasswordContainer2 > m_xMasterPasswd;
+
+ SvtRemoteDlgMode m_eMode;
+ SvtRemoteDlgType m_eType;
+ bool m_bIsUpdated;
+ bool m_bIsConnected;
+ bool m_bServiceChanged;
+
+ OUString m_sIniKey;
+
+ bool m_bIsInExecute;
+
+ OUString m_sPath;
+ OUString m_sStdDir;
+ OUString m_sRootLabel;
+ OUString m_sLastServiceUrl;
+ int m_nCurrentFilter;
+
+ ::rtl::Reference< ::svt::AsyncPickerAction > m_pCurrentAsyncAction;
+
+ css::uno::Sequence< OUString > m_aDenyList;
+
+ std::unique_ptr<weld::Button> m_xOk_btn;
+ std::unique_ptr<weld::Button> m_xCancel_btn;
+ 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;
+ std::unique_ptr<weld::Button> m_xNewFolder;
+ std::unique_ptr<weld::ToggleButton> m_xListView_btn;
+ std::unique_ptr<weld::ToggleButton> m_xIconView_btn;
+ std::unique_ptr<FolderTree> m_xTreeView;
+ std::unique_ptr<SvtFileView> m_xFileView;
+ std::unique_ptr<weld::Container> m_xContainer;
+ std::unique_ptr<weld::ComboBox> m_xFilter_lb;
+ std::unique_ptr<AutocompleteEdit> m_xName_ed;
+
+ std::vector< ServicePtr > m_aServices;
+ std::vector< std::pair< OUString, OUString > > m_aFilters;
+
+ void InitSize();
+
+ void FillServicesListbox();
+
+ /* If failure returns < 0 */
+ int GetSelectedServicePos();
+
+ void OpenURL( OUString const & sURL );
+
+ OUString AddFileExtension(const OUString& rFileName);
+
+ void EnableExtraMenuItems(bool bEnable);
+ void EnableControls();
+ void DisableControls();
+
+ void SavePassword(const OUString& rURL, const OUString& rUser,
+ const OUString& rPassword, bool bPersistent);
+
+ void AddService();
+
+ DECL_LINK ( SelectServiceHdl, weld::ComboBox&, void );
+ DECL_LINK ( EditServiceMenuHdl, const OString&, void );
+
+ DECL_LINK( DoubleClickHdl, SvtFileView*, bool );
+ DECL_LINK( SelectHdl, SvtFileView*, void );
+
+ DECL_LINK( FileNameGetFocusHdl, weld::Widget&, void );
+ DECL_LINK( FileNameModifyHdl, weld::Entry&, void );
+
+ DECL_LINK( SelectFilterHdl, weld::ComboBox&, void );
+
+ DECL_LINK( TreeSelectHdl, weld::TreeView&, void );
+
+ DECL_LINK( SelectBreadcrumbHdl, Breadcrumb*, bool );
+
+ DECL_LINK( NewFolderHdl, weld::Button&, void );
+ DECL_LINK( IconViewHdl, weld::Button&, void );
+ DECL_LINK( ListViewHdl, weld::Button&, void );
+
+ DECL_LINK( OkHdl, weld::Button&, void );
+ DECL_LINK( CancelHdl, weld::Button&, void );
+};
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */