1 /************************************************************************* 2 * 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * Copyright 2000, 2010 Oracle and/or its affiliates. 6 * 7 * OpenOffice.org - a multi-platform office productivity suite 8 * 9 * This file is part of OpenOffice.org. 10 * 11 * OpenOffice.org is free software: you can redistribute it and/or modify 12 * it under the terms of the GNU Lesser General Public License version 3 13 * only, as published by the Free Software Foundation. 14 * 15 * OpenOffice.org is distributed in the hope that it will be useful, 16 * but WITHOUT ANY WARRANTY; without even the implied warranty of 17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18 * GNU Lesser General Public License version 3 for more details 19 * (a copy is included in the LICENSE file that accompanied this code). 20 * 21 * You should have received a copy of the GNU Lesser General Public License 22 * version 3 along with OpenOffice.org. If not, see 23 * <http://www.openoffice.org/license.html> 24 * for a copy of the LGPLv3 License. 25 * 26 ************************************************************************/ 27 28 #ifndef SCRIPTING_DLGPROV_HXX 29 #define SCRIPTING_DLGPROV_HXX 30 31 #ifndef _COM_SUN_STAR_AWT_XSTRINGRESOURCEWITHSTORAGE_HPP_ 32 #include <com/sun/star/resource/XStringResourceWithStorage.hpp> 33 #endif 34 #ifndef _COM_SUN_STAR_AWT_XSTRINGRESOURCEWITHSTORAGE_HPP_ 35 #include <com/sun/star/resource/XStringResourceWithLocation.hpp> 36 #endif 37 #include <com/sun/star/lang/XServiceInfo.hpp> 38 #include <com/sun/star/lang/XInitialization.hpp> 39 #include <com/sun/star/uno/XComponentContext.hpp> 40 #include <com/sun/star/ucb/XSimpleFileAccess.hpp> 41 #include <com/sun/star/io/XInputStream.hpp> 42 #include <com/sun/star/io/XOutputStream.hpp> 43 #include <cppuhelper/implbase1.hxx> 44 #include <cppuhelper/implbase2.hxx> 45 #include <cppuhelper/interfacecontainer.hxx> 46 #include <osl/mutex.hxx> 47 48 #include <vector> 49 #include <hash_map> 50 51 //......................................................................... 52 namespace stringresource 53 { 54 //......................................................................... 55 56 // ============================================================================= 57 // mutex 58 // ============================================================================= 59 60 ::osl::Mutex& getMutex(); 61 62 63 // ============================================================================= 64 // class stringresourceImpl 65 // ============================================================================= 66 67 // Hashtable to map string ids to string 68 struct hashName_Impl 69 { 70 size_t operator()(const ::rtl::OUString Str) const 71 { 72 return (size_t)Str.hashCode(); 73 } 74 }; 75 76 struct eqName_Impl 77 { 78 sal_Bool operator()(const ::rtl::OUString Str1, const ::rtl::OUString Str2) const 79 { 80 return ( Str1 == Str2 ); 81 } 82 }; 83 84 typedef std::hash_map 85 < 86 ::rtl::OUString, 87 ::rtl::OUString, 88 hashName_Impl, 89 eqName_Impl 90 > 91 IdToStringMap; 92 93 typedef std::hash_map 94 < 95 ::rtl::OUString, 96 sal_Int32, 97 hashName_Impl, 98 eqName_Impl 99 > 100 IdToIndexMap; 101 102 103 struct LocaleItem 104 { 105 ::com::sun::star::lang::Locale m_locale; 106 IdToStringMap m_aIdToStringMap; 107 IdToIndexMap m_aIdToIndexMap; 108 sal_Int32 m_nNextIndex; 109 bool m_bLoaded; 110 bool m_bModified; 111 112 LocaleItem( ::com::sun::star::lang::Locale locale, bool bLoaded=true ) 113 : m_locale( locale ) 114 , m_nNextIndex( 0 ) 115 , m_bLoaded( bLoaded ) 116 , m_bModified( false ) 117 {} 118 }; 119 120 typedef std::vector< LocaleItem* > LocaleItemVector; 121 typedef std::vector< LocaleItem* >::iterator LocaleItemVectorIt; 122 typedef std::vector< LocaleItem* >::const_iterator LocaleItemVectorConstIt; 123 124 typedef ::cppu::WeakImplHelper2< 125 ::com::sun::star::lang::XServiceInfo, 126 ::com::sun::star::resource::XStringResourceManager > StringResourceImpl_BASE; 127 128 class StringResourceImpl : public StringResourceImpl_BASE 129 { 130 protected: 131 ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext > m_xContext; 132 ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiComponentFactory > m_xMCF; 133 134 LocaleItem* m_pCurrentLocaleItem; 135 LocaleItem* m_pDefaultLocaleItem; 136 bool m_bDefaultModified; 137 138 ::cppu::OInterfaceContainerHelper m_aListenerContainer; 139 140 LocaleItemVector m_aLocaleItemVector; 141 LocaleItemVector m_aDeletedLocaleItemVector; 142 LocaleItemVector m_aChangedDefaultLocaleVector; 143 144 bool m_bModified; 145 bool m_bReadOnly; 146 147 sal_Int32 m_nNextUniqueNumericId; 148 149 // Scans ResourceID to start with number and adapt m_nNextUniqueNumericId 150 void implScanIdForNumber( const ::rtl::OUString& ResourceID ); 151 const static sal_Int32 UNIQUE_NUMBER_NEEDS_INITIALISATION = -1; 152 153 // Checks read only status and throws exception if it's true 154 void implCheckReadOnly( const sal_Char* pExceptionMsg ) 155 throw (::com::sun::star::lang::NoSupportException); 156 157 // Return the context's MultiComponentFactory 158 ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiComponentFactory > 159 getMultiComponentFactory( void ); 160 161 // Returns the LocalItem for a given locale, if it exists, otherwise NULL 162 // This method compares the locales exactly, no closest match search is performed 163 LocaleItem* getItemForLocale( const ::com::sun::star::lang::Locale& locale, sal_Bool bException ) 164 throw (::com::sun::star::lang::IllegalArgumentException); 165 166 // Returns the LocalItem for a given locale, if it exists, otherwise NULL 167 // This method performes a closest match search, at least the language must match 168 LocaleItem* getClosestMatchItemForLocale( const ::com::sun::star::lang::Locale& locale ); 169 void implSetCurrentLocale( const ::com::sun::star::lang::Locale& locale, 170 sal_Bool FindClosestMatch, sal_Bool bUseDefaultIfNoMatch ) 171 throw (::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException); 172 173 void implModified( void ); 174 void implNotifyListeners( void ); 175 176 //=== Impl methods for ...ForLocale methods === 177 ::rtl::OUString SAL_CALL implResolveString( const ::rtl::OUString& ResourceID, LocaleItem* pLocaleItem ) 178 throw (::com::sun::star::resource::MissingResourceException); 179 ::sal_Bool implHasEntryForId( const ::rtl::OUString& ResourceID, LocaleItem* pLocaleItem ); 180 ::com::sun::star::uno::Sequence< ::rtl::OUString > implGetResourceIDs( LocaleItem* pLocaleItem ); 181 void implSetString( const ::rtl::OUString& ResourceID, 182 const ::rtl::OUString& Str, LocaleItem* pLocaleItem ); 183 void implRemoveId( const ::rtl::OUString& ResourceID, LocaleItem* pLocaleItem ) 184 throw (::com::sun::star::resource::MissingResourceException); 185 186 // Method to load a locale if necessary, returns true if loading was 187 // successful. Default implementation in base class just returns true. 188 virtual bool loadLocale( LocaleItem* pLocaleItem ); 189 190 virtual void implLoadAllLocales( void ); 191 192 public: 193 StringResourceImpl( 194 const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext >& rxContext ); 195 virtual ~StringResourceImpl(); 196 197 // XServiceInfo 198 virtual ::rtl::OUString SAL_CALL getImplementationName( ) 199 throw (::com::sun::star::uno::RuntimeException); 200 virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName ) 201 throw (::com::sun::star::uno::RuntimeException); 202 virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames( ) 203 throw (::com::sun::star::uno::RuntimeException); 204 205 // XModifyBroadcaster 206 virtual void SAL_CALL addModifyListener( const ::com::sun::star::uno::Reference< ::com::sun::star::util::XModifyListener >& aListener ) 207 throw (::com::sun::star::uno::RuntimeException); 208 virtual void SAL_CALL removeModifyListener( const ::com::sun::star::uno::Reference< ::com::sun::star::util::XModifyListener >& aListener ) 209 throw (::com::sun::star::uno::RuntimeException); 210 211 // XStringResourceResolver 212 virtual ::rtl::OUString SAL_CALL resolveString( const ::rtl::OUString& ResourceID ) 213 throw (::com::sun::star::resource::MissingResourceException, ::com::sun::star::uno::RuntimeException); 214 virtual ::rtl::OUString SAL_CALL resolveStringForLocale( const ::rtl::OUString& ResourceID, 215 const ::com::sun::star::lang::Locale& locale ) 216 throw ( ::com::sun::star::resource::MissingResourceException, 217 ::com::sun::star::uno::RuntimeException); 218 virtual ::sal_Bool SAL_CALL hasEntryForId( const ::rtl::OUString& ResourceID ) 219 throw (::com::sun::star::uno::RuntimeException); 220 virtual ::sal_Bool SAL_CALL hasEntryForIdAndLocale( const ::rtl::OUString& ResourceID, 221 const ::com::sun::star::lang::Locale& locale ) 222 throw (::com::sun::star::uno::RuntimeException); 223 virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getResourceIDs( ) 224 throw (::com::sun::star::uno::RuntimeException); 225 virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getResourceIDsForLocale 226 ( const ::com::sun::star::lang::Locale& locale ) 227 throw (::com::sun::star::uno::RuntimeException); 228 virtual ::com::sun::star::lang::Locale SAL_CALL getCurrentLocale( ) 229 throw (::com::sun::star::uno::RuntimeException); 230 virtual ::com::sun::star::lang::Locale SAL_CALL getDefaultLocale( ) 231 throw (::com::sun::star::uno::RuntimeException); 232 virtual ::com::sun::star::uno::Sequence< ::com::sun::star::lang::Locale > SAL_CALL getLocales( ) 233 throw (::com::sun::star::uno::RuntimeException); 234 235 // XStringResourceManager 236 virtual ::sal_Bool SAL_CALL isReadOnly() 237 throw (::com::sun::star::uno::RuntimeException); 238 virtual void SAL_CALL setCurrentLocale( const ::com::sun::star::lang::Locale& locale, ::sal_Bool FindClosestMatch ) 239 throw (::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException); 240 virtual void SAL_CALL setDefaultLocale( const ::com::sun::star::lang::Locale& locale ) 241 throw (::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException, 242 ::com::sun::star::lang::NoSupportException); 243 virtual void SAL_CALL setString( const ::rtl::OUString& ResourceID, const ::rtl::OUString& Str ) 244 throw (::com::sun::star::lang::NoSupportException, ::com::sun::star::uno::RuntimeException); 245 virtual void SAL_CALL setStringForLocale( const ::rtl::OUString& ResourceID, const ::rtl::OUString& Str, 246 const ::com::sun::star::lang::Locale& locale ) 247 throw (::com::sun::star::lang::NoSupportException, ::com::sun::star::uno::RuntimeException); 248 virtual void SAL_CALL removeId( const ::rtl::OUString& ResourceID ) 249 throw (::com::sun::star::resource::MissingResourceException, ::com::sun::star::uno::RuntimeException, 250 ::com::sun::star::lang::NoSupportException); 251 virtual void SAL_CALL removeIdForLocale( const ::rtl::OUString& ResourceID, 252 const ::com::sun::star::lang::Locale& locale ) 253 throw (::com::sun::star::resource::MissingResourceException, ::com::sun::star::uno::RuntimeException, 254 ::com::sun::star::lang::NoSupportException); 255 virtual void SAL_CALL newLocale( const ::com::sun::star::lang::Locale& locale ) 256 throw (::com::sun::star::container::ElementExistException, ::com::sun::star::lang::IllegalArgumentException, 257 ::com::sun::star::lang::NoSupportException, ::com::sun::star::uno::RuntimeException); 258 virtual void SAL_CALL removeLocale( const ::com::sun::star::lang::Locale& locale ) 259 throw (::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException, 260 ::com::sun::star::lang::NoSupportException); 261 virtual ::sal_Int32 SAL_CALL getUniqueNumericId( ) 262 throw (::com::sun::star::lang::NoSupportException, 263 ::com::sun::star::uno::RuntimeException); 264 }; 265 266 typedef ::cppu::ImplInheritanceHelper1< 267 StringResourceImpl, 268 ::com::sun::star::resource::XStringResourcePersistence > StringResourcePersistenceImpl_BASE; 269 270 class BinaryOutput; 271 class BinaryInput; 272 273 class StringResourcePersistenceImpl : public StringResourcePersistenceImpl_BASE 274 { 275 protected: 276 ::rtl::OUString m_aNameBase; 277 ::rtl::OUString m_aComment; 278 279 void SAL_CALL implInitializeCommonParameters 280 ( const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >& aArguments ) 281 throw (::com::sun::star::uno::Exception, ::com::sun::star::uno::RuntimeException); 282 283 // Scan locale properties files 284 virtual void implScanLocales( void ); 285 286 // Method to load a locale if necessary, returns true if loading was successful 287 virtual bool loadLocale( LocaleItem* pLocaleItem ); 288 289 // does the actual loading 290 virtual bool implLoadLocale( LocaleItem* pLocaleItem ); 291 292 virtual void implLoadAllLocales( void ); 293 294 void implScanLocaleNames( const ::com::sun::star::uno::Sequence< ::rtl::OUString >& aContentSeq ); 295 ::rtl::OUString implGetFileNameForLocaleItem( LocaleItem* pLocaleItem, const ::rtl::OUString& aNameBase ); 296 ::rtl::OUString implGetPathForLocaleItem( LocaleItem* pLocaleItem, const ::rtl::OUString& aNameBase, 297 const ::rtl::OUString& aLocation, bool bDefaultFile=false ); 298 299 bool implReadPropertiesFile( LocaleItem* pLocaleItem, 300 const ::com::sun::star::uno::Reference< ::com::sun::star::io::XInputStream >& xInput ); 301 302 bool implWritePropertiesFile( LocaleItem* pLocaleItem, const ::com::sun::star::uno::Reference 303 < ::com::sun::star::io::XOutputStream >& xOutputStream, const ::rtl::OUString& aComment ); 304 305 void implWriteLocaleBinary( LocaleItem* pLocaleItem, BinaryOutput& rOut ); 306 307 void implStoreAtStorage 308 ( 309 const ::rtl::OUString& aNameBase, 310 const ::rtl::OUString& aComment, 311 const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& Storage, 312 bool bUsedForStore, 313 bool bStoreAll 314 ) 315 throw (::com::sun::star::uno::Exception, ::com::sun::star::uno::RuntimeException); 316 317 void implKillRemovedLocaleFiles 318 ( 319 const ::rtl::OUString& Location, 320 const ::rtl::OUString& aNameBase, 321 const ::com::sun::star::uno::Reference< ::com::sun::star::ucb::XSimpleFileAccess >& xFileAccess 322 ) 323 throw (::com::sun::star::uno::Exception, ::com::sun::star::uno::RuntimeException); 324 325 void implKillChangedDefaultFiles 326 ( 327 const ::rtl::OUString& Location, 328 const ::rtl::OUString& aNameBase, 329 const ::com::sun::star::uno::Reference< ::com::sun::star::ucb::XSimpleFileAccess >& xFileAccess 330 ) 331 throw (::com::sun::star::uno::Exception, ::com::sun::star::uno::RuntimeException); 332 333 void implStoreAtLocation 334 ( 335 const ::rtl::OUString& Location, 336 const ::rtl::OUString& aNameBase, 337 const ::rtl::OUString& aComment, 338 const ::com::sun::star::uno::Reference< ::com::sun::star::ucb::XSimpleFileAccess >& xFileAccess, 339 bool bUsedForStore, 340 bool bStoreAll, 341 bool bKillAll = false 342 ) 343 throw (::com::sun::star::uno::Exception, ::com::sun::star::uno::RuntimeException); 344 345 public: 346 StringResourcePersistenceImpl( 347 const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext >& rxContext ); 348 virtual ~StringResourcePersistenceImpl(); 349 350 // XServiceInfo 351 virtual ::rtl::OUString SAL_CALL getImplementationName( ) 352 throw (::com::sun::star::uno::RuntimeException); 353 virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName ) 354 throw (::com::sun::star::uno::RuntimeException); 355 virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames( ) 356 throw (::com::sun::star::uno::RuntimeException); 357 358 // XModifyBroadcaster 359 virtual void SAL_CALL addModifyListener( const ::com::sun::star::uno::Reference< ::com::sun::star::util::XModifyListener >& aListener ) 360 throw (::com::sun::star::uno::RuntimeException); 361 virtual void SAL_CALL removeModifyListener( const ::com::sun::star::uno::Reference< ::com::sun::star::util::XModifyListener >& aListener ) 362 throw (::com::sun::star::uno::RuntimeException); 363 364 // XStringResourceResolver 365 virtual ::rtl::OUString SAL_CALL resolveString( const ::rtl::OUString& ResourceID ) 366 throw (::com::sun::star::resource::MissingResourceException, ::com::sun::star::uno::RuntimeException); 367 virtual ::rtl::OUString SAL_CALL resolveStringForLocale( const ::rtl::OUString& ResourceID, 368 const ::com::sun::star::lang::Locale& locale ) 369 throw ( ::com::sun::star::resource::MissingResourceException, 370 ::com::sun::star::uno::RuntimeException); 371 virtual ::sal_Bool SAL_CALL hasEntryForId( const ::rtl::OUString& ResourceID ) 372 throw (::com::sun::star::uno::RuntimeException); 373 virtual ::sal_Bool SAL_CALL hasEntryForIdAndLocale( const ::rtl::OUString& ResourceID, 374 const ::com::sun::star::lang::Locale& locale ) 375 throw (::com::sun::star::uno::RuntimeException); 376 virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getResourceIDs( ) 377 throw (::com::sun::star::uno::RuntimeException); 378 virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getResourceIDsForLocale 379 ( const ::com::sun::star::lang::Locale& locale ) 380 throw (::com::sun::star::uno::RuntimeException); 381 virtual ::com::sun::star::lang::Locale SAL_CALL getCurrentLocale( ) 382 throw (::com::sun::star::uno::RuntimeException); 383 virtual ::com::sun::star::lang::Locale SAL_CALL getDefaultLocale( ) 384 throw (::com::sun::star::uno::RuntimeException); 385 virtual ::com::sun::star::uno::Sequence< ::com::sun::star::lang::Locale > SAL_CALL getLocales( ) 386 throw (::com::sun::star::uno::RuntimeException); 387 388 // XStringResourceManager 389 virtual ::sal_Bool SAL_CALL isReadOnly() 390 throw (::com::sun::star::uno::RuntimeException); 391 virtual void SAL_CALL setCurrentLocale( const ::com::sun::star::lang::Locale& locale, ::sal_Bool FindClosestMatch ) 392 throw (::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException); 393 virtual void SAL_CALL setDefaultLocale( const ::com::sun::star::lang::Locale& locale ) 394 throw (::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException, 395 ::com::sun::star::lang::NoSupportException); 396 virtual void SAL_CALL setString( const ::rtl::OUString& ResourceID, const ::rtl::OUString& Str ) 397 throw (::com::sun::star::lang::NoSupportException, ::com::sun::star::uno::RuntimeException); 398 virtual void SAL_CALL setStringForLocale( const ::rtl::OUString& ResourceID, const ::rtl::OUString& Str, 399 const ::com::sun::star::lang::Locale& locale ) 400 throw (::com::sun::star::lang::NoSupportException, ::com::sun::star::uno::RuntimeException); 401 virtual void SAL_CALL removeId( const ::rtl::OUString& ResourceID ) 402 throw (::com::sun::star::resource::MissingResourceException, ::com::sun::star::uno::RuntimeException, 403 ::com::sun::star::lang::NoSupportException); 404 virtual void SAL_CALL removeIdForLocale( const ::rtl::OUString& ResourceID, 405 const ::com::sun::star::lang::Locale& locale ) 406 throw (::com::sun::star::resource::MissingResourceException, ::com::sun::star::uno::RuntimeException, 407 ::com::sun::star::lang::NoSupportException); 408 virtual void SAL_CALL newLocale( const ::com::sun::star::lang::Locale& locale ) 409 throw (::com::sun::star::container::ElementExistException, ::com::sun::star::lang::IllegalArgumentException, 410 ::com::sun::star::lang::NoSupportException, ::com::sun::star::uno::RuntimeException); 411 virtual void SAL_CALL removeLocale( const ::com::sun::star::lang::Locale& locale ) 412 throw (::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException, 413 ::com::sun::star::lang::NoSupportException); 414 virtual ::sal_Int32 SAL_CALL getUniqueNumericId( ) 415 throw (::com::sun::star::lang::NoSupportException, 416 ::com::sun::star::uno::RuntimeException); 417 418 // XStringResourcePersistence 419 virtual void SAL_CALL store( ) 420 throw (::com::sun::star::lang::NoSupportException, 421 ::com::sun::star::uno::Exception, 422 ::com::sun::star::uno::RuntimeException); 423 virtual ::sal_Bool SAL_CALL isModified( ) 424 throw (::com::sun::star::uno::RuntimeException); 425 virtual void SAL_CALL setComment( const ::rtl::OUString& Comment ) 426 throw (::com::sun::star::uno::RuntimeException); 427 virtual void SAL_CALL storeToStorage 428 ( const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& Storage, 429 const ::rtl::OUString& NameBase, const ::rtl::OUString& Comment ) 430 throw (::com::sun::star::uno::Exception, ::com::sun::star::uno::RuntimeException); 431 virtual void SAL_CALL storeToURL( const ::rtl::OUString& URL, const ::rtl::OUString& NameBase, 432 const ::rtl::OUString& Comment, const ::com::sun::star::uno::Reference 433 < ::com::sun::star::task::XInteractionHandler >& Handler ) 434 throw (::com::sun::star::uno::Exception, ::com::sun::star::uno::RuntimeException); 435 virtual ::com::sun::star::uno::Sequence< ::sal_Int8 > SAL_CALL exportBinary( ) 436 throw (::com::sun::star::uno::RuntimeException); 437 virtual void SAL_CALL importBinary( const ::com::sun::star::uno::Sequence< ::sal_Int8 >& Data ) 438 throw (::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException); 439 }; 440 441 442 typedef ::cppu::ImplInheritanceHelper2< 443 StringResourcePersistenceImpl, 444 ::com::sun::star::lang::XInitialization, 445 ::com::sun::star::resource::XStringResourceWithStorage > StringResourceWithStorageImpl_BASE; 446 447 class StringResourceWithStorageImpl : public StringResourceWithStorageImpl_BASE 448 { 449 ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage > m_xStorage; 450 bool m_bStorageChanged; 451 452 virtual void implScanLocales( void ); 453 virtual bool implLoadLocale( LocaleItem* pLocaleItem ); 454 455 public: 456 StringResourceWithStorageImpl( 457 const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext >& rxContext ); 458 virtual ~StringResourceWithStorageImpl(); 459 460 // XServiceInfo 461 virtual ::rtl::OUString SAL_CALL getImplementationName( ) 462 throw (::com::sun::star::uno::RuntimeException); 463 virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName ) 464 throw (::com::sun::star::uno::RuntimeException); 465 virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames( ) 466 throw (::com::sun::star::uno::RuntimeException); 467 468 // XInitialization 469 virtual void SAL_CALL initialize( const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >& aArguments ) 470 throw (::com::sun::star::uno::Exception, ::com::sun::star::uno::RuntimeException); 471 472 // XModifyBroadcaster 473 virtual void SAL_CALL addModifyListener( const ::com::sun::star::uno::Reference< ::com::sun::star::util::XModifyListener >& aListener ) 474 throw (::com::sun::star::uno::RuntimeException); 475 virtual void SAL_CALL removeModifyListener( const ::com::sun::star::uno::Reference< ::com::sun::star::util::XModifyListener >& aListener ) 476 throw (::com::sun::star::uno::RuntimeException); 477 478 // XStringResourceResolver 479 virtual ::rtl::OUString SAL_CALL resolveString( const ::rtl::OUString& ResourceID ) 480 throw (::com::sun::star::resource::MissingResourceException, ::com::sun::star::uno::RuntimeException); 481 virtual ::rtl::OUString SAL_CALL resolveStringForLocale( const ::rtl::OUString& ResourceID, 482 const ::com::sun::star::lang::Locale& locale ) 483 throw ( ::com::sun::star::resource::MissingResourceException, 484 ::com::sun::star::uno::RuntimeException); 485 virtual ::sal_Bool SAL_CALL hasEntryForId( const ::rtl::OUString& ResourceID ) 486 throw (::com::sun::star::uno::RuntimeException); 487 virtual ::sal_Bool SAL_CALL hasEntryForIdAndLocale( const ::rtl::OUString& ResourceID, 488 const ::com::sun::star::lang::Locale& locale ) 489 throw (::com::sun::star::uno::RuntimeException); 490 virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getResourceIDs( ) 491 throw (::com::sun::star::uno::RuntimeException); 492 virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getResourceIDsForLocale 493 ( const ::com::sun::star::lang::Locale& locale ) 494 throw (::com::sun::star::uno::RuntimeException); 495 virtual ::com::sun::star::lang::Locale SAL_CALL getCurrentLocale( ) 496 throw (::com::sun::star::uno::RuntimeException); 497 virtual ::com::sun::star::lang::Locale SAL_CALL getDefaultLocale( ) 498 throw (::com::sun::star::uno::RuntimeException); 499 virtual ::com::sun::star::uno::Sequence< ::com::sun::star::lang::Locale > SAL_CALL getLocales( ) 500 throw (::com::sun::star::uno::RuntimeException); 501 502 // XStringResourceManager 503 virtual ::sal_Bool SAL_CALL isReadOnly() 504 throw (::com::sun::star::uno::RuntimeException); 505 virtual void SAL_CALL setCurrentLocale( const ::com::sun::star::lang::Locale& locale, ::sal_Bool FindClosestMatch ) 506 throw (::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException); 507 virtual void SAL_CALL setDefaultLocale( const ::com::sun::star::lang::Locale& locale ) 508 throw (::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException, 509 ::com::sun::star::lang::NoSupportException); 510 virtual void SAL_CALL setString( const ::rtl::OUString& ResourceID, const ::rtl::OUString& Str ) 511 throw (::com::sun::star::lang::NoSupportException, ::com::sun::star::uno::RuntimeException); 512 virtual void SAL_CALL setStringForLocale( const ::rtl::OUString& ResourceID, const ::rtl::OUString& Str, 513 const ::com::sun::star::lang::Locale& locale ) 514 throw (::com::sun::star::lang::NoSupportException, ::com::sun::star::uno::RuntimeException); 515 virtual void SAL_CALL removeId( const ::rtl::OUString& ResourceID ) 516 throw (::com::sun::star::resource::MissingResourceException, ::com::sun::star::uno::RuntimeException, 517 ::com::sun::star::lang::NoSupportException); 518 virtual void SAL_CALL removeIdForLocale( const ::rtl::OUString& ResourceID, 519 const ::com::sun::star::lang::Locale& locale ) 520 throw (::com::sun::star::resource::MissingResourceException, ::com::sun::star::uno::RuntimeException, 521 ::com::sun::star::lang::NoSupportException); 522 virtual void SAL_CALL newLocale( const ::com::sun::star::lang::Locale& locale ) 523 throw (::com::sun::star::container::ElementExistException, ::com::sun::star::lang::IllegalArgumentException, 524 ::com::sun::star::lang::NoSupportException, ::com::sun::star::uno::RuntimeException); 525 virtual void SAL_CALL removeLocale( const ::com::sun::star::lang::Locale& locale ) 526 throw (::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException, 527 ::com::sun::star::lang::NoSupportException); 528 virtual ::sal_Int32 SAL_CALL getUniqueNumericId( ) 529 throw (::com::sun::star::lang::NoSupportException, 530 ::com::sun::star::uno::RuntimeException); 531 532 // XStringResourcePersistence 533 virtual void SAL_CALL store( ) 534 throw (::com::sun::star::lang::NoSupportException, 535 ::com::sun::star::uno::Exception, 536 ::com::sun::star::uno::RuntimeException); 537 virtual ::sal_Bool SAL_CALL isModified( ) 538 throw (::com::sun::star::uno::RuntimeException); 539 virtual void SAL_CALL setComment( const ::rtl::OUString& Comment ) 540 throw (::com::sun::star::uno::RuntimeException); 541 virtual void SAL_CALL storeToStorage 542 ( const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& Storage, 543 const ::rtl::OUString& NameBase, const ::rtl::OUString& Comment ) 544 throw (::com::sun::star::uno::Exception, ::com::sun::star::uno::RuntimeException); 545 virtual void SAL_CALL storeToURL( const ::rtl::OUString& URL, const ::rtl::OUString& NameBase, 546 const ::rtl::OUString& Comment, const ::com::sun::star::uno::Reference 547 < ::com::sun::star::task::XInteractionHandler >& Handler ) 548 throw (::com::sun::star::uno::Exception, ::com::sun::star::uno::RuntimeException); 549 virtual ::com::sun::star::uno::Sequence< ::sal_Int8 > SAL_CALL exportBinary( ) 550 throw (::com::sun::star::uno::RuntimeException); 551 virtual void SAL_CALL importBinary( const ::com::sun::star::uno::Sequence< ::sal_Int8 >& Data ) 552 throw (::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException); 553 554 // XStringResourceWithStorage 555 virtual void SAL_CALL storeAsStorage 556 ( const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& Storage ) 557 throw (::com::sun::star::uno::Exception, ::com::sun::star::uno::RuntimeException); 558 virtual void SAL_CALL setStorage 559 ( const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& Storage ) 560 throw (::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException); 561 }; 562 563 564 typedef ::cppu::ImplInheritanceHelper2< 565 StringResourcePersistenceImpl, 566 ::com::sun::star::lang::XInitialization, 567 ::com::sun::star::resource::XStringResourceWithLocation > StringResourceWithLocationImpl_BASE; 568 569 class StringResourceWithLocationImpl : public StringResourceWithLocationImpl_BASE 570 { 571 ::rtl::OUString m_aLocation; 572 bool m_bLocationChanged; 573 com::sun::star::uno::Reference< com::sun::star::ucb::XSimpleFileAccess > m_xSFI; 574 com::sun::star::uno::Reference< com::sun::star::task::XInteractionHandler > m_xInteractionHandler; 575 576 const ::com::sun::star::uno::Reference< ::com::sun::star::ucb::XSimpleFileAccess > getFileAccess( void ); 577 578 virtual void implScanLocales( void ); 579 virtual bool implLoadLocale( LocaleItem* pLocaleItem ); 580 581 public: 582 StringResourceWithLocationImpl( 583 const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext >& rxContext ); 584 virtual ~StringResourceWithLocationImpl(); 585 586 // XServiceInfo 587 virtual ::rtl::OUString SAL_CALL getImplementationName( ) 588 throw (::com::sun::star::uno::RuntimeException); 589 virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName ) 590 throw (::com::sun::star::uno::RuntimeException); 591 virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames( ) 592 throw (::com::sun::star::uno::RuntimeException); 593 594 // XInitialization 595 virtual void SAL_CALL initialize( const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >& aArguments ) 596 throw (::com::sun::star::uno::Exception, ::com::sun::star::uno::RuntimeException); 597 598 // XModifyBroadcaster 599 virtual void SAL_CALL addModifyListener( const ::com::sun::star::uno::Reference< ::com::sun::star::util::XModifyListener >& aListener ) 600 throw (::com::sun::star::uno::RuntimeException); 601 virtual void SAL_CALL removeModifyListener( const ::com::sun::star::uno::Reference< ::com::sun::star::util::XModifyListener >& aListener ) 602 throw (::com::sun::star::uno::RuntimeException); 603 604 // XStringResourceResolver 605 virtual ::rtl::OUString SAL_CALL resolveString( const ::rtl::OUString& ResourceID ) 606 throw (::com::sun::star::resource::MissingResourceException, ::com::sun::star::uno::RuntimeException); 607 virtual ::rtl::OUString SAL_CALL resolveStringForLocale( const ::rtl::OUString& ResourceID, 608 const ::com::sun::star::lang::Locale& locale ) 609 throw ( ::com::sun::star::resource::MissingResourceException, 610 ::com::sun::star::uno::RuntimeException); 611 virtual ::sal_Bool SAL_CALL hasEntryForId( const ::rtl::OUString& ResourceID ) 612 throw (::com::sun::star::uno::RuntimeException); 613 virtual ::sal_Bool SAL_CALL hasEntryForIdAndLocale( const ::rtl::OUString& ResourceID, 614 const ::com::sun::star::lang::Locale& locale ) 615 throw (::com::sun::star::uno::RuntimeException); 616 virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getResourceIDs( ) 617 throw (::com::sun::star::uno::RuntimeException); 618 virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getResourceIDsForLocale 619 ( const ::com::sun::star::lang::Locale& locale ) 620 throw (::com::sun::star::uno::RuntimeException); 621 virtual ::com::sun::star::lang::Locale SAL_CALL getCurrentLocale( ) 622 throw (::com::sun::star::uno::RuntimeException); 623 virtual ::com::sun::star::lang::Locale SAL_CALL getDefaultLocale( ) 624 throw (::com::sun::star::uno::RuntimeException); 625 virtual ::com::sun::star::uno::Sequence< ::com::sun::star::lang::Locale > SAL_CALL getLocales( ) 626 throw (::com::sun::star::uno::RuntimeException); 627 628 // XStringResourceManager 629 virtual ::sal_Bool SAL_CALL isReadOnly() 630 throw (::com::sun::star::uno::RuntimeException); 631 virtual void SAL_CALL setCurrentLocale( const ::com::sun::star::lang::Locale& locale, ::sal_Bool FindClosestMatch ) 632 throw (::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException); 633 virtual void SAL_CALL setDefaultLocale( const ::com::sun::star::lang::Locale& locale ) 634 throw (::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException, 635 ::com::sun::star::lang::NoSupportException); 636 virtual void SAL_CALL setString( const ::rtl::OUString& ResourceID, const ::rtl::OUString& Str ) 637 throw (::com::sun::star::lang::NoSupportException, ::com::sun::star::uno::RuntimeException); 638 virtual void SAL_CALL setStringForLocale( const ::rtl::OUString& ResourceID, const ::rtl::OUString& Str, 639 const ::com::sun::star::lang::Locale& locale ) 640 throw (::com::sun::star::lang::NoSupportException, ::com::sun::star::uno::RuntimeException); 641 virtual void SAL_CALL removeId( const ::rtl::OUString& ResourceID ) 642 throw (::com::sun::star::resource::MissingResourceException, ::com::sun::star::uno::RuntimeException, 643 ::com::sun::star::lang::NoSupportException); 644 virtual void SAL_CALL removeIdForLocale( const ::rtl::OUString& ResourceID, 645 const ::com::sun::star::lang::Locale& locale ) 646 throw (::com::sun::star::resource::MissingResourceException, ::com::sun::star::uno::RuntimeException, 647 ::com::sun::star::lang::NoSupportException); 648 virtual void SAL_CALL newLocale( const ::com::sun::star::lang::Locale& locale ) 649 throw (::com::sun::star::container::ElementExistException, ::com::sun::star::lang::IllegalArgumentException, 650 ::com::sun::star::lang::NoSupportException, ::com::sun::star::uno::RuntimeException); 651 virtual void SAL_CALL removeLocale( const ::com::sun::star::lang::Locale& locale ) 652 throw (::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException, 653 ::com::sun::star::lang::NoSupportException); 654 virtual ::sal_Int32 SAL_CALL getUniqueNumericId( ) 655 throw (::com::sun::star::lang::NoSupportException, 656 ::com::sun::star::uno::RuntimeException); 657 658 // XStringResourcePersistence 659 virtual void SAL_CALL store( ) 660 throw (::com::sun::star::lang::NoSupportException, 661 ::com::sun::star::uno::Exception, 662 ::com::sun::star::uno::RuntimeException); 663 virtual ::sal_Bool SAL_CALL isModified( ) 664 throw (::com::sun::star::uno::RuntimeException); 665 virtual void SAL_CALL setComment( const ::rtl::OUString& Comment ) 666 throw (::com::sun::star::uno::RuntimeException); 667 virtual void SAL_CALL storeToStorage 668 ( const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& Storage, 669 const ::rtl::OUString& NameBase, const ::rtl::OUString& Comment ) 670 throw (::com::sun::star::uno::Exception, ::com::sun::star::uno::RuntimeException); 671 virtual void SAL_CALL storeToURL( const ::rtl::OUString& URL, const ::rtl::OUString& NameBase, 672 const ::rtl::OUString& Comment, const ::com::sun::star::uno::Reference 673 < ::com::sun::star::task::XInteractionHandler >& Handler ) 674 throw (::com::sun::star::uno::Exception, ::com::sun::star::uno::RuntimeException); 675 virtual ::com::sun::star::uno::Sequence< ::sal_Int8 > SAL_CALL exportBinary( ) 676 throw (::com::sun::star::uno::RuntimeException); 677 virtual void SAL_CALL importBinary( const ::com::sun::star::uno::Sequence< ::sal_Int8 >& Data ) 678 throw (::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException); 679 680 // XStringResourceWithLocation 681 virtual void SAL_CALL storeAsURL( const ::rtl::OUString& URL ) 682 throw (::com::sun::star::uno::Exception, ::com::sun::star::uno::RuntimeException); 683 virtual void SAL_CALL setURL( const ::rtl::OUString& URL ) 684 throw (::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException); 685 }; 686 687 //......................................................................... 688 } // namespace stringtable 689 //......................................................................... 690 691 #endif // SCRIPTING_DLGPROV_HXX 692