xref: /trunk/main/fpicker/source/aqua/SalAquaFilePicker.hxx (revision 91144cd0085a7583d2099b982122deb2184ab956)
1 /**************************************************************
2  *
3  * Licensed to the Apache Software Foundation (ASF) under one
4  * or more contributor license agreements.  See the NOTICE file
5  * distributed with this work for additional information
6  * regarding copyright ownership.  The ASF licenses this file
7  * to you under the Apache License, Version 2.0 (the
8  * "License"); you may not use this file except in compliance
9  * with the License.  You may obtain a copy of the License at
10  *
11  *   http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing,
14  * software distributed under the License is distributed on an
15  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16  * KIND, either express or implied.  See the License for the
17  * specific language governing permissions and limitations
18  * under the License.
19  *
20  *************************************************************/
21 
22 
23 
24 #ifndef _SALAQUAFILEPICKER_HXX_
25 #define _SALAQUAFILEPICKER_HXX_
26 
27 //_______________________________________________________________________________________________________________________
28 //  includes of other projects
29 //_______________________________________________________________________________________________________________________
30 
31 #include <cppuhelper/compbase8.hxx>
32 #include <com/sun/star/util/XCancellable.hpp>
33 #include <com/sun/star/lang/XInitialization.hpp>
34 #include <com/sun/star/lang/XServiceInfo.hpp>
35 #include <com/sun/star/ui/dialogs/XFilePickerNotifier.hpp>
36 #include <com/sun/star/ui/dialogs/XFilterManager.hpp>
37 #include <com/sun/star/ui/dialogs/XFilterGroupManager.hpp>
38 #include <com/sun/star/ui/dialogs/XFilePickerControlAccess.hpp>
39 #include <com/sun/star/beans/StringPair.hpp>
40 
41 #ifndef _SALAQUAPICKER_HXX_
42 #include "SalAquaPicker.hxx"
43 #endif
44 
45 #include <memory>
46 #include <list>
47 
48 #ifndef _RTL_USTRING_H_
49 #include <rtl/ustring.hxx>
50 #endif
51 #include "FilterHelper.hxx"
52 #include "AquaFilePickerDelegate.hxx"
53 
54 //----------------------------------------------------------
55 // Implementation class for the XFilePicker Interface
56 //----------------------------------------------------------
57 
58 //----------------------------------------------------------
59 // forward declarations
60 //----------------------------------------------------------
61 
62 using namespace rtl;
63 
64 //----------------------------------------------------------
65 // class declaration
66 //----------------------------------------------------------
67 
68 class SalAquaFilePicker :
69     public SalAquaPicker,
70     public cppu::WeakComponentImplHelper8<
71     ::com::sun::star::ui::dialogs::XFilterManager,
72     ::com::sun::star::ui::dialogs::XFilterGroupManager,
73     ::com::sun::star::ui::dialogs::XFilePickerControlAccess,
74     ::com::sun::star::ui::dialogs::XFilePickerNotifier,
75     ::com::sun::star::lang::XInitialization,
76     ::com::sun::star::util::XCancellable,
77     ::com::sun::star::lang::XEventListener,
78     ::com::sun::star::lang::XServiceInfo >
79 {
80 public:
81 
82     // constructor
83     SalAquaFilePicker( const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& xServiceMgr );
84 
85     //------------------------------------------------------------------------------------
86     // XFilePickerNotifier
87     //------------------------------------------------------------------------------------
88 
89     virtual void SAL_CALL addFilePickerListener( const ::com::sun::star::uno::Reference< ::com::sun::star::ui::dialogs::XFilePickerListener >& xListener );
90     virtual void SAL_CALL removeFilePickerListener( const ::com::sun::star::uno::Reference< ::com::sun::star::ui::dialogs::XFilePickerListener >& xListener );
91 
92     //------------------------------------------------------------------------------------
93     // XExecutableDialog functions
94     //------------------------------------------------------------------------------------
95 
96     virtual void SAL_CALL setTitle( const ::rtl::OUString& aTitle );
97 
98     virtual sal_Int16 SAL_CALL execute(  );
99 
100     //------------------------------------------------------------------------------------
101     // XFilePicker functions
102     //------------------------------------------------------------------------------------
103 
104     virtual void SAL_CALL setMultiSelectionMode( sal_Bool bMode );
105 
106     virtual void SAL_CALL setDefaultName( const ::rtl::OUString& aName );
107 
108     virtual void SAL_CALL setDisplayDirectory( const ::rtl::OUString& aDirectory );
109 
110     virtual ::rtl::OUString SAL_CALL getDisplayDirectory(  );
111 
112     virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getFiles(  );
113 
114     //------------------------------------------------------------------------------------
115     // XFilterManager functions
116     //------------------------------------------------------------------------------------
117 
118     virtual void SAL_CALL appendFilter( const ::rtl::OUString& aTitle, const ::rtl::OUString& aFilter );
119 
120     virtual void SAL_CALL setCurrentFilter( const ::rtl::OUString& aTitle );
121 
122     virtual ::rtl::OUString SAL_CALL getCurrentFilter(  );
123 
124     //------------------------------------------------------------------------------------
125     // XFilterGroupManager functions
126     //------------------------------------------------------------------------------------
127 
128     virtual void SAL_CALL appendFilterGroup( const ::rtl::OUString& sGroupTitle, const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::StringPair >& aFilters );
129 
130     //------------------------------------------------------------------------------------
131     // XFilePickerControlAccess functions
132     //------------------------------------------------------------------------------------
133 
134     virtual void SAL_CALL setValue( sal_Int16 nControlId, sal_Int16 nControlAction, const ::com::sun::star::uno::Any& aValue );
135 
136     virtual ::com::sun::star::uno::Any SAL_CALL getValue( sal_Int16 aControlId, sal_Int16 aControlAction );
137 
138     virtual void SAL_CALL enableControl( sal_Int16 nControlId, sal_Bool bEnable );
139 
140     virtual void SAL_CALL setLabel( sal_Int16 nControlId, const ::rtl::OUString& aLabel );
141 
142     virtual ::rtl::OUString SAL_CALL getLabel( sal_Int16 nControlId );
143 
144     //------------------------------------------------
145     // XInitialization
146     //------------------------------------------------
147 
148     virtual void SAL_CALL initialize( const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >& aArguments );
149 
150     //------------------------------------------------
151     // XCancellable
152     //------------------------------------------------
153 
154     virtual void SAL_CALL cancel( );
155 
156     //------------------------------------------------
157     // XEventListener
158     //------------------------------------------------
159 
160     using cppu::WeakComponentImplHelperBase::disposing;
161     virtual void SAL_CALL disposing( const ::com::sun::star::lang::EventObject& aEvent );
162 
163     //------------------------------------------------
164     // XServiceInfo
165     //------------------------------------------------
166 
167     virtual ::rtl::OUString SAL_CALL getImplementationName(  );
168 
169     virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName );
170 
171     virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames(  );
172 
173     //------------------------------------------------------------------------------------
174     // FilePicker Event functions
175     //------------------------------------------------------------------------------------
176 
177    void SAL_CALL fileSelectionChanged( ::com::sun::star::ui::dialogs::FilePickerEvent aEvent );
178    void SAL_CALL directoryChanged( ::com::sun::star::ui::dialogs::FilePickerEvent aEvent );
179    // rtl::OUString SAL_CALL helpRequested( ::com::sun::star::ui::dialogs::FilePickerEvent aEvent ) const;
180    void SAL_CALL controlStateChanged( ::com::sun::star::ui::dialogs::FilePickerEvent aEvent );
181    void SAL_CALL dialogSizeChanged( );
182 
getDelegate()183    inline AquaFilePickerDelegate * getDelegate() {
184        return m_pDelegate;
185    }
186 
getSaveFileName()187    inline rtl::OUString getSaveFileName() {
188        return m_sSaveFileName;
189    }
190 
191 private:
192     // prevent copy and assignment
193     SalAquaFilePicker( const SalAquaFilePicker& );
194     SalAquaFilePicker& operator=( const SalAquaFilePicker& );
195 
196     virtual void ensureFilterHelper();
197 
198     // to instantiate own services
199     ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > m_xServiceMgr;
200 
201     ::com::sun::star::uno::Reference< ::com::sun::star::ui::dialogs::XFilePickerListener >
202     m_xListener;
203 
204     FilterHelper *m_pFilterHelper;
205 
206     rtl::OUString m_sSaveFileName;
207 
208     AquaFilePickerDelegate *m_pDelegate;
209 
210     void updateFilterUI();
211     void updateSaveFileNameExtension();
212 
213 public:
214 
215     virtual ~SalAquaFilePicker();
216 
217     void filterControlChanged();
218 
219     void implInitialize();
220 
221 };
222 
223 #endif // _SALAQUAFILEPICKER_HXX_
224