1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
3 * This file is part of the LibreOffice project.
5 * This Source Code Form is subject to the terms of the Mozilla Public
6 * License, v. 2.0. If a copy of the MPL was not distributed with this
7 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
9 * This file incorporates work covered by the following license notice:
11 * Licensed to the Apache Software Foundation (ASF) under one or more
12 * contributor license agreements. See the NOTICE file distributed
13 * with this work for additional information regarding copyright
14 * ownership. The ASF licenses this file to you under the Apache
15 * License, Version 2.0 (the "License"); you may not use this file
16 * except in compliance with the License. You may obtain a copy of
17 * the License at http://www.apache.org/licenses/LICENSE-2.0 .
22 #include <com/sun/star/resource/XStringResourceWithStorage.hpp>
23 #include <com/sun/star/resource/XStringResourceWithLocation.hpp>
24 #include <com/sun/star/lang/XServiceInfo.hpp>
25 #include <com/sun/star/lang/XInitialization.hpp>
26 #include <com/sun/star/uno/XComponentContext.hpp>
27 #include <com/sun/star/ucb/XSimpleFileAccess3.hpp>
28 #include <com/sun/star/io/XInputStream.hpp>
29 #include <com/sun/star/io/XOutputStream.hpp>
30 #include <cppuhelper/implbase.hxx>
31 #include <comphelper/interfacecontainer4.hxx>
33 #include <unordered_map>
38 namespace stringresource
42 // class stringresourceImpl
45 // Hashtable to map string ids to string
46 typedef std::unordered_map
53 typedef std::unordered_map
63 css::lang::Locale m_locale
;
64 IdToStringMap m_aIdToStringMap
;
65 IdToIndexMap m_aIdToIndexMap
;
66 sal_Int32 m_nNextIndex
;
70 LocaleItem( css::lang::Locale locale
, bool bLoaded
=true )
71 : m_locale(std::move( locale
))
73 , m_bLoaded( bLoaded
)
74 , m_bModified( false )
78 typedef ::cppu::WeakImplHelper
<
79 css::lang::XServiceInfo
,
80 css::resource::XStringResourceManager
> StringResourceImpl_BASE
;
82 class StringResourceImpl
: public StringResourceImpl_BASE
86 css::uno::Reference
< css::uno::XComponentContext
> m_xContext
;
88 LocaleItem
* m_pCurrentLocaleItem
;
89 LocaleItem
* m_pDefaultLocaleItem
;
90 bool m_bDefaultModified
;
92 ::comphelper::OInterfaceContainerHelper4
<css::util::XModifyListener
> m_aListenerContainer
;
94 std::vector
< std::unique_ptr
<LocaleItem
> > m_aLocaleItemVector
;
95 std::vector
< std::unique_ptr
<LocaleItem
> > m_aDeletedLocaleItemVector
;
96 std::vector
< std::unique_ptr
<LocaleItem
> > m_aChangedDefaultLocaleVector
;
101 sal_Int32 m_nNextUniqueNumericId
;
103 // Scans ResourceID to start with number and adapt m_nNextUniqueNumericId
104 void implScanIdForNumber(std::unique_lock
<std::mutex
>& rGuard
, const OUString
& ResourceID
);
105 const static sal_Int32 UNIQUE_NUMBER_NEEDS_INITIALISATION
= -1;
107 // Checks read only status and throws exception if it's true
108 /// @throws css::lang::NoSupportException
109 void implCheckReadOnly( const char* pExceptionMsg
);
111 // Returns the LocalItem for a given locale, if it exists, otherwise NULL
112 // This method compares the locales exactly, no closest match search is performed
113 /// @throws css::lang::IllegalArgumentException
114 LocaleItem
* getItemForLocale( const css::lang::Locale
& locale
, bool bException
);
116 // Returns the LocalItem for a given locale, if it exists, otherwise NULL
117 // This method performs a closest match search, at least the language must match
118 LocaleItem
* getClosestMatchItemForLocale( const css::lang::Locale
& locale
);
119 /// @throws css::lang::IllegalArgumentException
120 /// @throws css::uno::RuntimeException
121 void implSetCurrentLocale( std::unique_lock
<std::mutex
>& rGuard
, const css::lang::Locale
& locale
,
122 bool FindClosestMatch
, bool bUseDefaultIfNoMatch
);
124 void implModified(std::unique_lock
<std::mutex
>&);
125 void implNotifyListeners(std::unique_lock
<std::mutex
>&);
127 //=== Impl methods for ...ForLocale methods ===
128 /// @throws css::resource::MissingResourceException
129 OUString
implResolveString(std::unique_lock
<std::mutex
>& rGuard
, const OUString
& ResourceID
, LocaleItem
* pLocaleItem
);
130 bool implHasEntryForId(std::unique_lock
<std::mutex
>& rGuard
, const OUString
& ResourceID
, LocaleItem
* pLocaleItem
);
131 css::uno::Sequence
< OUString
> implGetResourceIDs(std::unique_lock
<std::mutex
>& rGuard
, LocaleItem
* pLocaleItem
);
132 void implSetString( std::unique_lock
<std::mutex
>& rGuard
, const OUString
& ResourceID
,
133 const OUString
& Str
, LocaleItem
* pLocaleItem
);
134 /// @throws css::resource::MissingResourceException
135 void implRemoveId( std::unique_lock
<std::mutex
>& rGuard
, const OUString
& ResourceID
, LocaleItem
* pLocaleItem
);
137 // Method to load a locale if necessary, returns true if loading was
138 // successful. Default implementation in base class just returns true.
139 virtual bool loadLocale(std::unique_lock
<std::mutex
>& rGuard
, LocaleItem
* pLocaleItem
);
141 virtual void implLoadAllLocales(std::unique_lock
<std::mutex
>& rGuard
);
144 explicit StringResourceImpl(
145 const css::uno::Reference
< css::uno::XComponentContext
>& rxContext
);
146 virtual ~StringResourceImpl() override
;
149 virtual OUString SAL_CALL
getImplementationName( ) override
;
150 virtual sal_Bool SAL_CALL
supportsService( const OUString
& ServiceName
) override
;
151 virtual css::uno::Sequence
< OUString
> SAL_CALL
getSupportedServiceNames( ) override
;
153 // XModifyBroadcaster
154 virtual void SAL_CALL
addModifyListener( const css::uno::Reference
< css::util::XModifyListener
>& aListener
) override
;
155 virtual void SAL_CALL
removeModifyListener( const css::uno::Reference
< css::util::XModifyListener
>& aListener
) override
;
157 // XStringResourceResolver
158 virtual OUString SAL_CALL
resolveString( const OUString
& ResourceID
) override
;
159 virtual OUString SAL_CALL
resolveStringForLocale( const OUString
& ResourceID
,
160 const css::lang::Locale
& locale
) override
;
161 virtual sal_Bool SAL_CALL
hasEntryForId( const OUString
& ResourceID
) override
;
162 virtual sal_Bool SAL_CALL
hasEntryForIdAndLocale( const OUString
& ResourceID
,
163 const css::lang::Locale
& locale
) override
;
164 virtual css::uno::Sequence
< OUString
> SAL_CALL
getResourceIDs( ) override
;
165 virtual css::uno::Sequence
< OUString
> SAL_CALL getResourceIDsForLocale
166 ( const css::lang::Locale
& locale
) override
;
167 virtual css::lang::Locale SAL_CALL
getCurrentLocale( ) override
;
168 virtual css::lang::Locale SAL_CALL
getDefaultLocale( ) override
;
169 virtual css::uno::Sequence
< css::lang::Locale
> SAL_CALL
getLocales( ) override
;
171 // XStringResourceManager
172 virtual sal_Bool SAL_CALL
isReadOnly() override
;
173 virtual void SAL_CALL
setCurrentLocale( const css::lang::Locale
& locale
, sal_Bool FindClosestMatch
) override
;
174 virtual void SAL_CALL
setDefaultLocale( const css::lang::Locale
& locale
) override
;
175 virtual void SAL_CALL
setString( const OUString
& ResourceID
, const OUString
& Str
) override
;
176 virtual void SAL_CALL
setStringForLocale( const OUString
& ResourceID
, const OUString
& Str
,
177 const css::lang::Locale
& locale
) override
;
178 virtual void SAL_CALL
removeId( const OUString
& ResourceID
) override
;
179 virtual void SAL_CALL
removeIdForLocale( const OUString
& ResourceID
,
180 const css::lang::Locale
& locale
) override
;
181 virtual void SAL_CALL
newLocale( const css::lang::Locale
& locale
) override
;
182 virtual void SAL_CALL
removeLocale( const css::lang::Locale
& locale
) override
;
183 virtual ::sal_Int32 SAL_CALL
getUniqueNumericId( ) override
;
186 typedef ::cppu::ImplInheritanceHelper
<
188 css::resource::XStringResourcePersistence
> StringResourcePersistenceImpl_BASE
;
192 class StringResourcePersistenceImpl
: public StringResourcePersistenceImpl_BASE
195 OUString m_aNameBase
;
198 /// @throws css::uno::Exception
199 /// @throws css::uno::RuntimeException
200 void implInitializeCommonParameters( std::unique_lock
<std::mutex
>& rGuard
, const css::uno::Sequence
< css::uno::Any
>& aArguments
);
202 // Scan locale properties files
203 virtual void implScanLocales(std::unique_lock
<std::mutex
>& rGuard
);
205 // Method to load a locale if necessary, returns true if loading was successful
206 virtual bool loadLocale(std::unique_lock
<std::mutex
>& rGuard
, LocaleItem
* pLocaleItem
) override
;
208 // does the actual loading
209 virtual bool implLoadLocale(std::unique_lock
<std::mutex
>& rGuard
, LocaleItem
* pLocaleItem
);
211 virtual void implLoadAllLocales(std::unique_lock
<std::mutex
>& rGuard
) override
;
213 void implScanLocaleNames( const css::uno::Sequence
< OUString
>& aContentSeq
);
214 static OUString
implGetFileNameForLocaleItem( LocaleItem
const * pLocaleItem
, const OUString
& aNameBase
);
215 static OUString
implGetPathForLocaleItem( LocaleItem
const * pLocaleItem
, const OUString
& aNameBase
,
216 std::u16string_view aLocation
, bool bDefaultFile
=false );
218 bool implReadPropertiesFile(std::unique_lock
<std::mutex
>& rGuard
, LocaleItem
* pLocaleItem
,
219 const css::uno::Reference
< css::io::XInputStream
>& xInput
);
221 bool implWritePropertiesFile( LocaleItem
const * pLocaleItem
,
222 const css::uno::Reference
< css::io::XOutputStream
>& xOutputStream
,
223 const OUString
& aComment
);
225 void implWriteLocaleBinary( LocaleItem
* pLocaleItem
, BinaryOutput
& rOut
);
227 /// @throws css::uno::Exception
228 /// @throws css::uno::RuntimeException
229 void implStoreAtStorage
231 std::unique_lock
<std::mutex
>& rGuard
,
232 const OUString
& aNameBase
,
233 const OUString
& aComment
,
234 const css::uno::Reference
< css::embed::XStorage
>& Storage
,
239 /// @throws css::uno::Exception
240 /// @throws css::uno::RuntimeException
241 void implKillRemovedLocaleFiles
243 std::u16string_view Location
,
244 const OUString
& aNameBase
,
245 const css::uno::Reference
< css::ucb::XSimpleFileAccess3
>& xFileAccess
248 /// @throws css::uno::Exception
249 /// @throws css::uno::RuntimeException
250 void implKillChangedDefaultFiles
252 std::u16string_view Location
,
253 const OUString
& aNameBase
,
254 const css::uno::Reference
< css::ucb::XSimpleFileAccess3
>& xFileAccess
257 /// @throws css::uno::Exception
258 /// @throws css::uno::RuntimeException
259 void implStoreAtLocation
261 std::unique_lock
<std::mutex
>& rGuard
,
262 std::u16string_view Location
,
263 const OUString
& aNameBase
,
264 const OUString
& aComment
,
265 const css::uno::Reference
< css::ucb::XSimpleFileAccess3
>& xFileAccess
,
268 bool bKillAll
= false
272 explicit StringResourcePersistenceImpl(
273 const css::uno::Reference
< css::uno::XComponentContext
>& rxContext
);
274 virtual ~StringResourcePersistenceImpl() override
;
277 virtual OUString SAL_CALL
getImplementationName( ) override
;
278 virtual sal_Bool SAL_CALL
supportsService( const OUString
& ServiceName
) override
;
279 virtual css::uno::Sequence
< OUString
> SAL_CALL
getSupportedServiceNames( ) override
;
281 // XModifyBroadcaster
282 virtual void SAL_CALL
addModifyListener( const css::uno::Reference
< css::util::XModifyListener
>& aListener
) override
;
283 virtual void SAL_CALL
removeModifyListener( const css::uno::Reference
< css::util::XModifyListener
>& aListener
) override
;
285 // XStringResourceResolver
286 virtual OUString SAL_CALL
resolveString( const OUString
& ResourceID
) override
;
287 virtual OUString SAL_CALL
resolveStringForLocale( const OUString
& ResourceID
,
288 const css::lang::Locale
& locale
) override
;
289 virtual sal_Bool SAL_CALL
hasEntryForId( const OUString
& ResourceID
) override
;
290 virtual sal_Bool SAL_CALL
hasEntryForIdAndLocale( const OUString
& ResourceID
,
291 const css::lang::Locale
& locale
) override
;
292 virtual css::uno::Sequence
< OUString
> SAL_CALL
getResourceIDs( ) override
;
293 virtual css::uno::Sequence
< OUString
> SAL_CALL getResourceIDsForLocale
294 ( const css::lang::Locale
& locale
) override
;
295 virtual css::lang::Locale SAL_CALL
getCurrentLocale( ) override
;
296 virtual css::lang::Locale SAL_CALL
getDefaultLocale( ) override
;
297 virtual css::uno::Sequence
< css::lang::Locale
> SAL_CALL
getLocales( ) override
;
299 // XStringResourceManager
300 virtual sal_Bool SAL_CALL
isReadOnly() override
;
301 virtual void SAL_CALL
setCurrentLocale( const css::lang::Locale
& locale
, sal_Bool FindClosestMatch
) override
;
302 virtual void SAL_CALL
setDefaultLocale( const css::lang::Locale
& locale
) override
;
303 virtual void SAL_CALL
setString( const OUString
& ResourceID
, const OUString
& Str
) override
;
304 virtual void SAL_CALL
setStringForLocale( const OUString
& ResourceID
, const OUString
& Str
,
305 const css::lang::Locale
& locale
) override
;
306 virtual void SAL_CALL
removeId( const OUString
& ResourceID
) override
;
307 virtual void SAL_CALL
removeIdForLocale( const OUString
& ResourceID
,
308 const css::lang::Locale
& locale
) override
;
309 virtual void SAL_CALL
newLocale( const css::lang::Locale
& locale
) override
;
310 virtual void SAL_CALL
removeLocale( const css::lang::Locale
& locale
) override
;
311 virtual ::sal_Int32 SAL_CALL
getUniqueNumericId( ) override
;
313 // XStringResourcePersistence
314 virtual void SAL_CALL
store( ) override
;
315 virtual sal_Bool SAL_CALL
isModified( ) override
;
316 virtual void SAL_CALL
setComment( const OUString
& Comment
) override
;
317 virtual void SAL_CALL storeToStorage
318 ( const css::uno::Reference
< css::embed::XStorage
>& Storage
,
319 const OUString
& NameBase
, const OUString
& Comment
) override
;
320 virtual void SAL_CALL
storeToURL( const OUString
& URL
, const OUString
& NameBase
,
321 const OUString
& Comment
, const css::uno::Reference
322 < css::task::XInteractionHandler
>& Handler
) override
;
323 virtual css::uno::Sequence
< ::sal_Int8
> SAL_CALL
exportBinary( ) override
;
324 virtual void SAL_CALL
importBinary( const css::uno::Sequence
< ::sal_Int8
>& Data
) override
;
328 typedef ::cppu::ImplInheritanceHelper
<
329 StringResourcePersistenceImpl
,
330 css::lang::XInitialization
,
331 css::resource::XStringResourceWithStorage
> StringResourceWithStorageImpl_BASE
;
333 class StringResourceWithStorageImpl
: public StringResourceWithStorageImpl_BASE
335 css::uno::Reference
< css::embed::XStorage
> m_xStorage
;
336 bool m_bStorageChanged
;
338 virtual void implScanLocales(std::unique_lock
<std::mutex
>& rGuard
) override
;
339 virtual bool implLoadLocale(std::unique_lock
<std::mutex
>& rGuard
, LocaleItem
* pLocaleItem
) override
;
342 explicit StringResourceWithStorageImpl( const css::uno::Reference
< css::uno::XComponentContext
>& rxContext
);
343 virtual ~StringResourceWithStorageImpl() override
;
346 virtual OUString SAL_CALL
getImplementationName( ) override
;
347 virtual sal_Bool SAL_CALL
supportsService( const OUString
& ServiceName
) override
;
348 virtual css::uno::Sequence
< OUString
> SAL_CALL
getSupportedServiceNames( ) override
;
351 virtual void SAL_CALL
initialize( const css::uno::Sequence
< css::uno::Any
>& aArguments
) override
;
353 // XModifyBroadcaster
354 virtual void SAL_CALL
addModifyListener( const css::uno::Reference
< css::util::XModifyListener
>& aListener
) override
;
355 virtual void SAL_CALL
removeModifyListener( const css::uno::Reference
< css::util::XModifyListener
>& aListener
) override
;
357 // XStringResourceResolver
358 virtual OUString SAL_CALL
resolveString( const OUString
& ResourceID
) override
;
359 virtual OUString SAL_CALL
resolveStringForLocale( const OUString
& ResourceID
,
360 const css::lang::Locale
& locale
) override
;
361 virtual sal_Bool SAL_CALL
hasEntryForId( const OUString
& ResourceID
) override
;
362 virtual sal_Bool SAL_CALL
hasEntryForIdAndLocale( const OUString
& ResourceID
,
363 const css::lang::Locale
& locale
) override
;
364 virtual css::uno::Sequence
< OUString
> SAL_CALL
getResourceIDs( ) override
;
365 virtual css::uno::Sequence
< OUString
> SAL_CALL getResourceIDsForLocale
366 ( const css::lang::Locale
& locale
) override
;
367 virtual css::lang::Locale SAL_CALL
getCurrentLocale( ) override
;
368 virtual css::lang::Locale SAL_CALL
getDefaultLocale( ) override
;
369 virtual css::uno::Sequence
< css::lang::Locale
> SAL_CALL
getLocales( ) override
;
371 // XStringResourceManager
372 virtual sal_Bool SAL_CALL
isReadOnly() override
;
373 virtual void SAL_CALL
setCurrentLocale( const css::lang::Locale
& locale
, sal_Bool FindClosestMatch
) override
;
374 virtual void SAL_CALL
setDefaultLocale( const css::lang::Locale
& locale
) override
;
375 virtual void SAL_CALL
setString( const OUString
& ResourceID
, const OUString
& Str
) override
;
376 virtual void SAL_CALL
setStringForLocale( const OUString
& ResourceID
, const OUString
& Str
,
377 const css::lang::Locale
& locale
) override
;
378 virtual void SAL_CALL
removeId( const OUString
& ResourceID
) override
;
379 virtual void SAL_CALL
removeIdForLocale( const OUString
& ResourceID
,
380 const css::lang::Locale
& locale
) override
;
381 virtual void SAL_CALL
newLocale( const css::lang::Locale
& locale
) override
;
382 virtual void SAL_CALL
removeLocale( const css::lang::Locale
& locale
) override
;
383 virtual ::sal_Int32 SAL_CALL
getUniqueNumericId( ) override
;
385 // XStringResourcePersistence
386 virtual void SAL_CALL
store( ) override
;
387 virtual sal_Bool SAL_CALL
isModified( ) override
;
388 virtual void SAL_CALL
setComment( const OUString
& Comment
) override
;
389 virtual void SAL_CALL storeToStorage
390 ( const css::uno::Reference
< css::embed::XStorage
>& Storage
,
391 const OUString
& NameBase
, const OUString
& Comment
) override
;
392 virtual void SAL_CALL
storeToURL( const OUString
& URL
, const OUString
& NameBase
,
393 const OUString
& Comment
, const css::uno::Reference
394 < css::task::XInteractionHandler
>& Handler
) override
;
395 virtual css::uno::Sequence
< ::sal_Int8
> SAL_CALL
exportBinary( ) override
;
396 virtual void SAL_CALL
importBinary( const css::uno::Sequence
< ::sal_Int8
>& Data
) override
;
398 // XStringResourceWithStorage
399 virtual void SAL_CALL storeAsStorage
400 ( const css::uno::Reference
< css::embed::XStorage
>& Storage
) override
;
401 virtual void SAL_CALL setStorage
402 ( const css::uno::Reference
< css::embed::XStorage
>& Storage
) override
;
406 typedef ::cppu::ImplInheritanceHelper
<
407 StringResourcePersistenceImpl
,
408 css::lang::XInitialization
,
409 css::resource::XStringResourceWithLocation
> StringResourceWithLocationImpl_BASE
;
411 class StringResourceWithLocationImpl
: public StringResourceWithLocationImpl_BASE
413 OUString m_aLocation
;
414 bool m_bLocationChanged
;
415 css::uno::Reference
< css::ucb::XSimpleFileAccess3
> m_xSFI
;
416 css::uno::Reference
< css::task::XInteractionHandler
> m_xInteractionHandler
;
418 const css::uno::Reference
< css::ucb::XSimpleFileAccess3
> & getFileAccessImpl();
420 virtual void implScanLocales(std::unique_lock
<std::mutex
>& rGuard
) override
;
421 virtual bool implLoadLocale(std::unique_lock
<std::mutex
>& rGuard
, LocaleItem
* pLocaleItem
) override
;
424 explicit StringResourceWithLocationImpl( const css::uno::Reference
< css::uno::XComponentContext
>& rxContext
);
425 virtual ~StringResourceWithLocationImpl() override
;
428 virtual OUString SAL_CALL
getImplementationName( ) override
;
429 virtual sal_Bool SAL_CALL
supportsService( const OUString
& ServiceName
) override
;
430 virtual css::uno::Sequence
< OUString
> SAL_CALL
getSupportedServiceNames( ) override
;
433 virtual void SAL_CALL
initialize( const css::uno::Sequence
< css::uno::Any
>& aArguments
) override
;
435 // XModifyBroadcaster
436 virtual void SAL_CALL
addModifyListener( const css::uno::Reference
< css::util::XModifyListener
>& aListener
) override
;
437 virtual void SAL_CALL
removeModifyListener( const css::uno::Reference
< css::util::XModifyListener
>& aListener
) override
;
439 // XStringResourceResolver
440 virtual OUString SAL_CALL
resolveString( const OUString
& ResourceID
) override
;
441 virtual OUString SAL_CALL
resolveStringForLocale( const OUString
& ResourceID
,
442 const css::lang::Locale
& locale
) override
;
443 virtual sal_Bool SAL_CALL
hasEntryForId( const OUString
& ResourceID
) override
;
444 virtual sal_Bool SAL_CALL
hasEntryForIdAndLocale( const OUString
& ResourceID
,
445 const css::lang::Locale
& locale
) override
;
446 virtual css::uno::Sequence
< OUString
> SAL_CALL
getResourceIDs( ) override
;
447 virtual css::uno::Sequence
< OUString
> SAL_CALL getResourceIDsForLocale
448 ( const css::lang::Locale
& locale
) override
;
449 virtual css::lang::Locale SAL_CALL
getCurrentLocale( ) override
;
450 virtual css::lang::Locale SAL_CALL
getDefaultLocale( ) override
;
451 virtual css::uno::Sequence
< css::lang::Locale
> SAL_CALL
getLocales( ) override
;
453 // XStringResourceManager
454 virtual sal_Bool SAL_CALL
isReadOnly() override
;
455 virtual void SAL_CALL
setCurrentLocale( const css::lang::Locale
& locale
, sal_Bool FindClosestMatch
) override
;
456 virtual void SAL_CALL
setDefaultLocale( const css::lang::Locale
& locale
) override
;
457 virtual void SAL_CALL
setString( const OUString
& ResourceID
, const OUString
& Str
) override
;
458 virtual void SAL_CALL
setStringForLocale( const OUString
& ResourceID
, const OUString
& Str
,
459 const css::lang::Locale
& locale
) override
;
460 virtual void SAL_CALL
removeId( const OUString
& ResourceID
) override
;
461 virtual void SAL_CALL
removeIdForLocale( const OUString
& ResourceID
,
462 const css::lang::Locale
& locale
) override
;
463 virtual void SAL_CALL
newLocale( const css::lang::Locale
& locale
) override
;
464 virtual void SAL_CALL
removeLocale( const css::lang::Locale
& locale
) override
;
465 virtual ::sal_Int32 SAL_CALL
getUniqueNumericId( ) override
;
467 // XStringResourcePersistence
468 virtual void SAL_CALL
store( ) override
;
469 virtual sal_Bool SAL_CALL
isModified( ) override
;
470 virtual void SAL_CALL
setComment( const OUString
& Comment
) override
;
471 virtual void SAL_CALL storeToStorage
472 ( const css::uno::Reference
< css::embed::XStorage
>& Storage
,
473 const OUString
& NameBase
, const OUString
& Comment
) override
;
474 virtual void SAL_CALL
storeToURL( const OUString
& URL
, const OUString
& NameBase
,
475 const OUString
& Comment
, const css::uno::Reference
476 < css::task::XInteractionHandler
>& Handler
) override
;
477 virtual css::uno::Sequence
< ::sal_Int8
> SAL_CALL
exportBinary( ) override
;
478 virtual void SAL_CALL
importBinary( const css::uno::Sequence
< ::sal_Int8
>& Data
) override
;
480 // XStringResourceWithLocation
481 virtual void SAL_CALL
storeAsURL( const OUString
& URL
) override
;
482 virtual void SAL_CALL
setURL( const OUString
& URL
) override
;
486 } // namespace stringtable
488 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */