diff options
Diffstat (limited to 'svtools/inc/fileview.hxx')
-rw-r--r-- | svtools/inc/fileview.hxx | 271 |
1 files changed, 271 insertions, 0 deletions
diff --git a/svtools/inc/fileview.hxx b/svtools/inc/fileview.hxx new file mode 100644 index 000000000000..74476541dcd8 --- /dev/null +++ b/svtools/inc/fileview.hxx @@ -0,0 +1,271 @@ +/************************************************************************* + * + * 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 _SVT_FILEVIEW_HXX +#define _SVT_FILEVIEW_HXX + +#include "svtools/svtdllapi.h" +#include <com/sun/star/uno/Sequence.h> +#include <com/sun/star/ucb/XContent.hpp> +#include <vcl/ctrl.hxx> +#include <vcl/image.hxx> +#include <vcl/fixed.hxx> +#ifndef _SV_BUTTON_HXX +#include <vcl/button.hxx> +#endif +#include <vcl/dialog.hxx> +#include <rtl/ustring.hxx> + +// class SvtFileView ----------------------------------------------------- + +#define FILEVIEW_ONLYFOLDER 0x0001 +#define FILEVIEW_MULTISELECTION 0x0002 + +#define FILEVIEW_SHOW_TITLE 0x0010 +#define FILEVIEW_SHOW_SIZE 0x0020 +#define FILEVIEW_SHOW_DATE 0x0040 +#define FILEVIEW_SHOW_ALL 0x0070 + +class ViewTabListBox_Impl; +class SvtFileView_Impl; +class SvLBoxEntry; +class HeaderBar; +class IUrlFilter; + +/// the result of an action in the FileView +enum FileViewResult +{ + eSuccess, + eFailure, + eTimeout, + eStillRunning +}; + +/// describes parameters for doing an action on the FileView asynchronously +struct FileViewAsyncAction +{ + sal_uInt32 nMinTimeout; /// minimum time to wait for a result, in milliseconds + sal_uInt32 nMaxTimeout; /// maximum time to wait for a result, in milliseconds, until eTimeout is returned + Link aFinishHandler; /// the handler to be called when the action is finished. Called in every case, no matter of the result + + FileViewAsyncAction() + { + nMinTimeout = nMaxTimeout = 0; + } +}; + +class SVT_DLLPUBLIC SvtFileView : public Control +{ +private: + SvtFileView_Impl* mpImp; + + ::com::sun::star::uno::Sequence< ::rtl::OUString > mpBlackList; + + SVT_DLLPRIVATE void OpenFolder( const ::com::sun::star::uno::Sequence< ::rtl::OUString >& aContents ); + + DECL_DLLPRIVATE_LINK( HeaderSelect_Impl, HeaderBar * ); + DECL_DLLPRIVATE_LINK( HeaderEndDrag_Impl, HeaderBar * ); + +protected: + virtual void GetFocus(); + +public: + SvtFileView( Window* pParent, const ResId& rResId, sal_Bool bOnlyFolder, sal_Bool bMultiSelection ); + SvtFileView( Window* pParent, const ResId& rResId, sal_Int8 nFlags ); + ~SvtFileView(); + + const String& GetViewURL() const; + String GetURL( SvLBoxEntry* pEntry ) const; + String GetCurrentURL() const; + + sal_Bool GetParentURL( String& _rParentURL ) const; + sal_Bool CreateNewFolder( const String& rNewFolder ); + + void SetHelpId( sal_uInt32 nHelpId ); + sal_uInt32 GetHelpId( ) const; + void SetSizePixel( const Size& rNewSize ); + using Window::SetPosSizePixel; + virtual void SetPosSizePixel( const Point& rNewPos, const Size& rNewSize ); + + /** initialize the view with the content of a folder given by URL, and aply an immediate filter + + @param rFolderURL + the URL of the folder whose content is to be read + @param rFilter + the initial filter to be applied + @param pAsyncDescriptor + If not <NULL/>, this struct describes the parameters for doing the + action asynchronously. + */ + FileViewResult Initialize( + const String& rFolderURL, + const String& rFilter, + const FileViewAsyncAction* pAsyncDescriptor, + const ::com::sun::star::uno::Sequence< ::rtl::OUString >& rBlackList + ); + + FileViewResult Initialize( + const String& rFolderURL, + const String& rFilter, + const FileViewAsyncAction* pAsyncDescriptor ); + /** initialze the view with a sequence of contents, which have already been obtained elsewhere + + This method will never return <member>eStillRunning</member>, since it will fill the + view synchronously + */ + sal_Bool Initialize( const ::com::sun::star::uno::Sequence< ::rtl::OUString >& aContents ); + + /** initializes the view with the content of a folder given by an UCB content + */ + sal_Bool Initialize( const ::com::sun::star::uno::Reference< ::com::sun::star::ucb::XContent>& _xContent, + const String& rFilter ); + + /** reads the current content of the current folder again, and applies the given filter to it + + Note 1: The folder is really read a second time. This implies that any new elements (which were + not present when you called Initialize the last time) are now displayed. + + Note 2: This method must not be called when you previously initialized the view from a sequence + of strings, or a UNO content object. + + @param rFilter + the filter to be applied + @param pAsyncDescriptor + If not <NULL/>, this struct describes the parameters for doing the + action asynchronously. + */ + FileViewResult ExecuteFilter( + const String& rFilter, + const FileViewAsyncAction* pAsyncDescriptor + ); + + /** cancels a running async action (if any) + + @seealso Initialize + @seealso ExecuteFilter + @seealso FileViewAsyncAction + */ + void CancelRunningAsyncAction(); + + /** initializes the view with the parent folder of the current folder + + @param rNewURL + the URL of the folder which we just navigated to + @param pAsyncDescriptor + If not <NULL/>, this struct describes the parameters for doing the + action asynchronously. + */ + FileViewResult PreviousLevel( + const FileViewAsyncAction* pAsyncDescriptor + ); + + void SetNoSelection(); + void ResetCursor(); + + void SetSelectHdl( const Link& rHdl ); + void SetDoubleClickHdl( const Link& rHdl ); + void SetOpenDoneHdl( const Link& rHdl ); + + ULONG GetSelectionCount() const; + SvLBoxEntry* FirstSelected() const; + SvLBoxEntry* NextSelected( SvLBoxEntry* pEntry ) const; + void EnableAutoResize(); + void SetFocus(); + + void EnableContextMenu( sal_Bool bEnable ); + void EnableDelete( sal_Bool bEnable ); + void EnableNameReplacing( sal_Bool bEnable = sal_True ); + // translate folder names or display doc-title instead of file name + // EnableContextMenu( TRUE )/EnableDelete(TRUE) disable name replacing! + + // save and load column size and sort order + String GetConfigString() const; + void SetConfigString( const String& rCfgStr ); + + void SetUrlFilter( const IUrlFilter* _pFilter ); + const IUrlFilter* GetUrlFilter( ) const; + + void EndInplaceEditing( bool _bCancel ); + +protected: + virtual void StateChanged( StateChangedType nStateChange ); +}; + +// struct SvtContentEntry ------------------------------------------------ + +struct SvtContentEntry +{ + sal_Bool mbIsFolder; + UniString maURL; + + SvtContentEntry( const UniString& rURL, sal_Bool bIsFolder ) : + mbIsFolder( bIsFolder ), maURL( rURL ) {} +}; + +namespace svtools { + +// ----------------------------------------------------------------------- +// QueryDeleteDlg_Impl +// ----------------------------------------------------------------------- + +enum QueryDeleteResult_Impl +{ + QUERYDELETE_YES = 0, + QUERYDELETE_NO, + QUERYDELETE_ALL, + QUERYDELETE_CANCEL +}; + +class SVT_DLLPUBLIC QueryDeleteDlg_Impl : public ModalDialog +{ + FixedText _aEntryLabel; + FixedText _aEntry; + FixedText _aQueryMsg; + + PushButton _aYesButton; + PushButton _aAllButton; + PushButton _aNoButton; + CancelButton _aCancelButton; + + QueryDeleteResult_Impl _eResult; + +private: + + DECL_DLLPRIVATE_STATIC_LINK( QueryDeleteDlg_Impl, ClickLink, PushButton* ); + +public: + + QueryDeleteDlg_Impl( Window* pParent, + const String& rName ); + + void EnableAllButton() { _aAllButton.Enable( sal_True ); } + QueryDeleteResult_Impl GetResult() const { return _eResult; } +}; + +} + +#endif // _SVT_FILEVIEW_HXX + |