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 #include "vbaoptions.hxx"
24 #include <vbahelper/vbahelper.hxx>
25 #include <ooo/vba/word/WdDefaultFilePath.hpp>
26 #include <ooo/vba/word/WdLineStyle.hpp>
27 #include <ooo/vba/word/WdLineWidth.hpp>
28 #include <ooo/vba/word/WdColorIndex.hpp>
29 #include <com/sun/star/util/XStringSubstitution.hpp>
30 #include <com/sun/star/beans/XPropertySet.hpp>
31 #include <osl/file.hxx>
32
33 using namespace ::ooo::vba;
34 using namespace ::com::sun::star;
35
SwVbaOptions(uno::Reference<uno::XComponentContext> & xContext)36 SwVbaOptions::SwVbaOptions( uno::Reference<uno::XComponentContext >& xContext ) throw ( uno::RuntimeException ) : SwVbaOptions_BASE( uno::Reference< XHelperInterface >(), xContext )
37 {
38 mxFactory.set( comphelper::getProcessServiceFactory(), uno::UNO_QUERY_THROW );
39 }
40
~SwVbaOptions()41 SwVbaOptions::~SwVbaOptions()
42 {
43 }
44
45 uno::Any SAL_CALL
DefaultFilePath(sal_Int32 _path)46 SwVbaOptions::DefaultFilePath( sal_Int32 _path ) throw ( uno::RuntimeException )
47 {
48 switch( _path )
49 {
50 case word::WdDefaultFilePath::wdDocumentsPath:
51 {
52 msDefaultFilePath = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("Work") );
53 break;
54 }
55 case word::WdDefaultFilePath::wdPicturesPath:
56 {
57 msDefaultFilePath = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("Gallery") );
58 break;
59 }
60 case word::WdDefaultFilePath::wdUserTemplatesPath:
61 case word::WdDefaultFilePath::wdWorkgroupTemplatesPath:
62 {
63 msDefaultFilePath = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("Template") );
64 break;
65 }
66 case word::WdDefaultFilePath::wdStartupPath:
67 {
68 msDefaultFilePath = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("Addin") );
69 break;
70 }
71 case word::WdDefaultFilePath::wdUserOptionsPath:
72 {
73 msDefaultFilePath = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("UserConfig") );
74 break;
75 }
76 case word::WdDefaultFilePath::wdToolsPath:
77 case word::WdDefaultFilePath::wdProgramPath:
78 {
79 msDefaultFilePath = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("Module") );
80 break;
81 }
82 case word::WdDefaultFilePath::wdTempFilePath:
83 {
84 msDefaultFilePath = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("Temp") );
85 break;
86 }
87 default:
88 {
89 DebugHelper::exception( SbERR_NOT_IMPLEMENTED, rtl::OUString() );
90 break;
91 }
92 }
93 return uno::makeAny( uno::Reference< XPropValue > ( new ScVbaPropValue( this ) ) );
94 }
95
setValueEvent(const uno::Any & value)96 void SwVbaOptions::setValueEvent( const uno::Any& value )
97 {
98 rtl::OUString sNewPath;
99 value >>= sNewPath;
100 rtl::OUString sNewPathUrl;
101 ::osl::File::getFileURLFromSystemPath( sNewPath, sNewPathUrl );
102 uno::Reference< beans::XPropertySet > xPathSettings( mxFactory->createInstance( rtl::OUString::createFromAscii("com.sun.star.util.PathSettings") ), uno::UNO_QUERY_THROW );
103 rtl::OUString sOldPathUrl;
104 xPathSettings->getPropertyValue( msDefaultFilePath ) >>= sOldPathUrl;
105 // path could be a multipath, Microsoft doesn't support this feature in Word currently
106 // only the last path is from interest.
107 sal_Int32 nIndex = sOldPathUrl.lastIndexOf( sal_Unicode(';') );
108 if( nIndex != -1 )
109 {
110 sNewPathUrl = sOldPathUrl.copy( 0, nIndex + 1 ).concat( sNewPathUrl );
111 }
112 xPathSettings->setPropertyValue( msDefaultFilePath, uno::makeAny( sNewPathUrl ) );
113 }
114
getValueEvent()115 uno::Any SwVbaOptions::getValueEvent()
116 {
117 uno::Reference< beans::XPropertySet > xPathSettings( mxFactory->createInstance( rtl::OUString::createFromAscii("com.sun.star.util.PathSettings") ), uno::UNO_QUERY_THROW );
118 rtl::OUString sPathUrl;
119 xPathSettings->getPropertyValue( msDefaultFilePath ) >>= sPathUrl;
120 // path could be a multipath, Microsoft doesn't support this feature in Word currently
121 // only the last path is from interest.
122 sal_Int32 nIndex = sPathUrl.lastIndexOf( sal_Unicode(';') );
123 if( nIndex != -1 )
124 {
125 sPathUrl = sPathUrl.copy( nIndex + 1 );
126 }
127 rtl::OUString sPath;
128 ::osl::File::getSystemPathFromFileURL( sPathUrl, sPath );
129 return uno::makeAny( sPath );
130 }
131
getDefaultBorderLineStyle()132 sal_Int32 SAL_CALL SwVbaOptions::getDefaultBorderLineStyle() throw (uno::RuntimeException)
133 {
134 return word::WdLineStyle::wdLineStyleSingle;
135 }
136
setDefaultBorderLineStyle(::sal_Int32)137 void SAL_CALL SwVbaOptions::setDefaultBorderLineStyle( ::sal_Int32 /*_defaultborderlinestyle*/ ) throw (uno::RuntimeException)
138 {
139 // not support in Writer
140 }
141
getDefaultBorderLineWidth()142 sal_Int32 SAL_CALL SwVbaOptions::getDefaultBorderLineWidth() throw (uno::RuntimeException)
143 {
144 return word::WdLineWidth::wdLineWidth050pt;
145 }
146
setDefaultBorderLineWidth(::sal_Int32)147 void SAL_CALL SwVbaOptions::setDefaultBorderLineWidth( ::sal_Int32 /*_defaultborderlinewidth*/ ) throw (uno::RuntimeException)
148 {
149 // not support in Writer
150 }
151
getDefaultBorderColorIndex()152 sal_Int32 SAL_CALL SwVbaOptions::getDefaultBorderColorIndex() throw (uno::RuntimeException)
153 {
154 return word::WdColorIndex::wdAuto;
155 }
156
setDefaultBorderColorIndex(::sal_Int32)157 void SAL_CALL SwVbaOptions::setDefaultBorderColorIndex( ::sal_Int32 /*_defaultbordercolorindex*/ ) throw (uno::RuntimeException)
158 {
159 // not support in Writer
160 }
161
getReplaceSelection()162 ::sal_Bool SAL_CALL SwVbaOptions::getReplaceSelection() throw (uno::RuntimeException)
163 {
164 return sal_True;
165 }
166
setReplaceSelection(::sal_Bool)167 void SAL_CALL SwVbaOptions::setReplaceSelection( ::sal_Bool /*_replaceselection*/ ) throw (uno::RuntimeException)
168 {
169 // not support in Writer
170 }
171
getMapPaperSize()172 ::sal_Bool SAL_CALL SwVbaOptions::getMapPaperSize() throw (uno::RuntimeException)
173 {
174 return sal_False;
175 }
176
setMapPaperSize(::sal_Bool)177 void SAL_CALL SwVbaOptions::setMapPaperSize( ::sal_Bool /*_mappapersize*/ ) throw (uno::RuntimeException)
178 {
179 // not support in Writer
180 }
181
getAutoFormatAsYouTypeApplyHeadings()182 ::sal_Bool SAL_CALL SwVbaOptions::getAutoFormatAsYouTypeApplyHeadings() throw (uno::RuntimeException)
183 {
184 return sal_False;
185 }
186
setAutoFormatAsYouTypeApplyHeadings(::sal_Bool)187 void SAL_CALL SwVbaOptions::setAutoFormatAsYouTypeApplyHeadings( ::sal_Bool /*_autoformatasyoutypeapplyheadings*/ ) throw (uno::RuntimeException)
188 {
189 // not support in Writer
190 }
191
getAutoFormatAsYouTypeApplyBulletedLists()192 ::sal_Bool SAL_CALL SwVbaOptions::getAutoFormatAsYouTypeApplyBulletedLists() throw (uno::RuntimeException)
193 {
194 return sal_False;
195 }
196
setAutoFormatAsYouTypeApplyBulletedLists(::sal_Bool)197 void SAL_CALL SwVbaOptions::setAutoFormatAsYouTypeApplyBulletedLists( ::sal_Bool /*_autoformatasyoutypeapplybulletedlists*/ ) throw (uno::RuntimeException)
198 {
199 // not support in Writer
200 }
201
getAutoFormatAsYouTypeApplyNumberedLists()202 ::sal_Bool SAL_CALL SwVbaOptions::getAutoFormatAsYouTypeApplyNumberedLists() throw (uno::RuntimeException)
203 {
204 return sal_False;
205 }
206
setAutoFormatAsYouTypeApplyNumberedLists(::sal_Bool)207 void SAL_CALL SwVbaOptions::setAutoFormatAsYouTypeApplyNumberedLists( ::sal_Bool /*_autoformatasyoutypeapplynumberedlists*/ ) throw (uno::RuntimeException)
208 {
209 // not support in Writer
210 }
211
getAutoFormatAsYouTypeFormatListItemBeginning()212 ::sal_Bool SAL_CALL SwVbaOptions::getAutoFormatAsYouTypeFormatListItemBeginning() throw (uno::RuntimeException)
213 {
214 return sal_False;
215 }
216
setAutoFormatAsYouTypeFormatListItemBeginning(::sal_Bool)217 void SAL_CALL SwVbaOptions::setAutoFormatAsYouTypeFormatListItemBeginning( ::sal_Bool /*_autoformatasyoutypeformatlistitembeginning*/ ) throw (uno::RuntimeException)
218 {
219 // not support in Writer
220 }
221
getAutoFormatAsYouTypeDefineStyles()222 ::sal_Bool SAL_CALL SwVbaOptions::getAutoFormatAsYouTypeDefineStyles() throw (uno::RuntimeException)
223 {
224 return sal_False;
225 }
226
setAutoFormatAsYouTypeDefineStyles(::sal_Bool)227 void SAL_CALL SwVbaOptions::setAutoFormatAsYouTypeDefineStyles( ::sal_Bool /*_autoformatasyoutypedefinestyles*/ ) throw (uno::RuntimeException)
228 {
229 // not support in Writer
230 }
231
getAutoFormatApplyHeadings()232 ::sal_Bool SAL_CALL SwVbaOptions::getAutoFormatApplyHeadings() throw (uno::RuntimeException)
233 {
234 return sal_False;
235 }
236
setAutoFormatApplyHeadings(::sal_Bool)237 void SAL_CALL SwVbaOptions::setAutoFormatApplyHeadings( ::sal_Bool /*_autoformatapplyheadings*/ ) throw (uno::RuntimeException)
238 {
239 // not support in Writer
240 }
241
getAutoFormatApplyLists()242 ::sal_Bool SAL_CALL SwVbaOptions::getAutoFormatApplyLists() throw (uno::RuntimeException)
243 {
244 return sal_False;
245 }
246
setAutoFormatApplyLists(::sal_Bool)247 void SAL_CALL SwVbaOptions::setAutoFormatApplyLists( ::sal_Bool /*_autoformatapplylists*/ ) throw (uno::RuntimeException)
248 {
249 // not support in Writer
250 }
251
getAutoFormatApplyBulletedLists()252 ::sal_Bool SAL_CALL SwVbaOptions::getAutoFormatApplyBulletedLists() throw (uno::RuntimeException)
253 {
254 return sal_False;
255 }
256
setAutoFormatApplyBulletedLists(::sal_Bool)257 void SAL_CALL SwVbaOptions::setAutoFormatApplyBulletedLists( ::sal_Bool /*_autoformatapplybulletedlists*/ ) throw (uno::RuntimeException)
258 {
259 // not support in Writer
260 }
261
262
263 rtl::OUString&
getServiceImplName()264 SwVbaOptions::getServiceImplName()
265 {
266 static rtl::OUString sImplName( RTL_CONSTASCII_USTRINGPARAM("SwVbaOptions") );
267 return sImplName;
268 }
269
270 uno::Sequence< rtl::OUString >
getServiceNames()271 SwVbaOptions::getServiceNames()
272 {
273 static uno::Sequence< rtl::OUString > aServiceNames;
274 if ( aServiceNames.getLength() == 0 )
275 {
276 aServiceNames.realloc( 1 );
277 aServiceNames[ 0 ] = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("ooo.vba.word.Options" ) );
278 }
279 return aServiceNames;
280 }
281