xref: /AOO41X/main/fpicker/source/office/OfficeControlAccess.hxx (revision 10ce801889b00990ebdbcb412f4f91e2a9e6f21d)
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 SVTOOLS_CONTROLACCESS_HXX
25 #define SVTOOLS_CONTROLACCESS_HXX
26 
27 #include <svtools/fileview.hxx>
28 #include <vcl/lstbox.hxx>
29 #include <com/sun/star/lang/IllegalArgumentException.hpp>
30 #include "pickercallbacks.hxx"
31 
32 //.........................................................................
33 namespace svt
34 {
35 //.........................................................................
36 
37     // --------------------------------------------------------------------
38     namespace InternalFilePickerElementIds
39     {
40         static const sal_Int16 PUSHBUTTON_HELP = (sal_Int16)0x1000;
41         static const sal_Int16 TOOLBOXBUTOON_DEFAULT_LOCATION = (sal_Int16)0x1001;
42         static const sal_Int16 TOOLBOXBUTOON_LEVEL_UP = (sal_Int16)0x1002;
43         static const sal_Int16 TOOLBOXBUTOON_NEW_FOLDER = (sal_Int16)0x1003;
44         static const sal_Int16 FIXEDTEXT_CURRENTFOLDER = (sal_Int16)0x1004;
45     }
46 
47     // --------------------------------------------------------------------
48     /** implements the XControlAccess, XControlInformation and XFilePickerControlAccess for the file picker
49     */
50     class OControlAccess
51     {
52         IFilePickerController*  m_pFilePickerController;
53         SvtFileView*            m_pFileView;
54 
55     public:
56         OControlAccess( IFilePickerController* _pController, SvtFileView* _pFileView );
57 
58         // XControlAccess implementation
59         void setControlProperty( const ::rtl::OUString& _rControlName, const ::rtl::OUString& _rControlProperty, const ::com::sun::star::uno::Any& _rValue );
60         ::com::sun::star::uno::Any  getControlProperty( const ::rtl::OUString& _rControlName, const ::rtl::OUString& _rControlProperty );
61 
62         // XControlInformation implementation
63         ::com::sun::star::uno::Sequence< ::rtl::OUString >  getSupportedControls(  );
64         ::com::sun::star::uno::Sequence< ::rtl::OUString >  getSupportedControlProperties( const ::rtl::OUString& _rControlName );
65         sal_Bool                                            isControlSupported( const ::rtl::OUString& _rControlName );
66         sal_Bool                                            isControlPropertySupported( const ::rtl::OUString& _rControlName, const ::rtl::OUString& _rControlProperty );
67 
68         // XFilePickerControlAccess
69         void                        setValue( sal_Int16 _nId, sal_Int16 _nCtrlAction, const ::com::sun::star::uno::Any& _rValue );
70         ::com::sun::star::uno::Any  getValue( sal_Int16 _nId, sal_Int16 _nCtrlAction ) const;
71         void                        setLabel( sal_Int16 _nId, const ::rtl::OUString& _rValue );
72         ::rtl::OUString             getLabel( sal_Int16 _nId ) const;
73         void                        enableControl( sal_Int16 _nId, sal_Bool _bEnable );
74 
75         static void             setHelpURL( Window* _pControl, const ::rtl::OUString& _rURL, sal_Bool _bFileView );
76         static ::rtl::OUString  getHelpURL( Window* _pControl, sal_Bool _bFileView );
77 
78     private:
79         /** implements the various methods for setting properties on controls
80 
81             @param _nControlId
82                 the id of the control
83             @param _pControl
84                 the affected control. Must be the same as referred by <arg>_nControlId</arg>, or NULL.
85             @param _nProperty
86                 the property to set
87                 See PROPERTY_FLAG_*
88             @param _rValue
89                 the value to set
90             @param _bIgnoreIllegalArgument
91                 if <FALSE/>, an exception will be thrown if the given value is of improper type
92         */
93         void                        implSetControlProperty(
94                                         sal_Int16 _nControlId,
95                                         Control* _pControl, sal_Int16 _nProperty, const ::com::sun::star::uno::Any& _rValue,
96                                         sal_Bool _bIgnoreIllegalArgument = sal_True );
97 
98         Control* implGetControl( const ::rtl::OUString& _rControlName, sal_Int16* _pId = NULL, sal_Int32* _pPropertyMask = NULL ) const SAL_THROW( (::com::sun::star::lang::IllegalArgumentException) );
99 
100         /** implements the various methods for retrieving properties from controls
101 
102             @param _pControl
103                 the affected control
104                 @PRECOND not <NULL/>
105             @param _nProperty
106                 the property to retrieve
107                 See PROPERTY_FLAG_*
108             @return
109         */
110         ::com::sun::star::uno::Any  implGetControlProperty( Control* _pControl, sal_Int16 _nProperty ) const;
111 
112         void implDoListboxAction( ListBox* _pListbox, sal_Int16 _nCtrlAction, const ::com::sun::star::uno::Any& _rValue );
113 
114     };
115 
116 //.........................................................................
117 }   // namespace svt
118 //.........................................................................
119 
120 #endif // SVTOOLS_CONTROLACCESS_HXX
121 
122