View | Details | Raw Unified | Return to issue 64717
Collapse All | Expand All

(-)framework/source/accelerators/acceleratorconfiguration.cxx (-6 / +21 lines)
Lines 340-348 void SAL_CALL AcceleratorConfiguration:: Link Here
340
    throw(css::uno::Exception       ,
340
    throw(css::uno::Exception       ,
341
          css::uno::RuntimeException)
341
          css::uno::RuntimeException)
342
{
342
{
343
    css::uno::Reference< css::io::XStream > xStreamNoLang;
344
343
    // SAFE -> ----------------------------------
345
    // SAFE -> ----------------------------------
344
    ReadGuard aReadLock(m_aLock);
346
    ReadGuard aReadLock(m_aLock);
345
    css::uno::Reference< css::io::XStream > xStream = m_aPresetHandler.openTarget(PresetHandler::TARGET_CURRENT(), sal_True); // TRUE => open or create!
347
    css::uno::Reference< css::io::XStream > xStream = m_aPresetHandler.openTarget(PresetHandler::TARGET_CURRENT(), sal_True); // TRUE => open or create!
348
    try
349
    {
350
        xStreamNoLang = m_aPresetHandler.openTarget(PresetHandler::PRESET_DEFAULT(), sal_False, sal_True);
351
    }
352
    catch(const css::io::IOException&) {} // does not have to exist
346
    aReadLock.unlock();    
353
    aReadLock.unlock();    
347
    // <- SAFE ----------------------------------
354
    // <- SAFE ----------------------------------
348
    
355
    
Lines 355-360 void SAL_CALL AcceleratorConfiguration:: Link Here
355
                static_cast< ::cppu::OWeakObject* >(this));
362
                static_cast< ::cppu::OWeakObject* >(this));
356
                
363
                
357
    impl_ts_load(xIn);    
364
    impl_ts_load(xIn);    
365
366
    // Load also the general language independent default accelerators
367
    // (ignoring the already defined accelerators)
368
    if (xStreamNoLang.is())
369
    {
370
        xIn = xStreamNoLang->getInputStream();
371
        if (xIn.is())
372
            impl_ts_load(xIn);
373
    }
358
}
374
}
359
          
375
          
360
//-----------------------------------------------    
376
//-----------------------------------------------    
Lines 519-530 void AcceleratorConfiguration::impl_ts_l Link Here
519
    if (xSeek.is())
535
    if (xSeek.is())
520
        xSeek->seek(0);
536
        xSeek->seek(0);
521
    
537
    
538
    // add accelerators to the cache (the cache is not cleared)
539
    // SAFE -> ----------------------------------
540
    aWriteLock.lock();
541
522
    // create the parser queue
542
    // create the parser queue
523
    // Note: Use special filter object between parser and reader
543
    // Note: Use special filter object between parser and reader
524
    // to get filtered xml with right namespaces ...
544
    // to get filtered xml with right namespaces ...
525
    // Use further a temp cache for reading!
545
    // Use further a temp cache for reading!
526
    AcceleratorCache                                       aCache  ;
546
    AcceleratorConfigurationReader*                        pReader = new AcceleratorConfigurationReader(m_aReadCache);
527
    AcceleratorConfigurationReader*                        pReader = new AcceleratorConfigurationReader(aCache);
528
    css::uno::Reference< css::xml::sax::XDocumentHandler > xReader (static_cast< ::cppu::OWeakObject* >(pReader), css::uno::UNO_QUERY_THROW);
547
    css::uno::Reference< css::xml::sax::XDocumentHandler > xReader (static_cast< ::cppu::OWeakObject* >(pReader), css::uno::UNO_QUERY_THROW);
529
    SaxNamespaceFilter*                                    pFilter = new SaxNamespaceFilter(xReader);  
548
    SaxNamespaceFilter*                                    pFilter = new SaxNamespaceFilter(xReader);  
530
    css::uno::Reference< css::xml::sax::XDocumentHandler > xFilter (static_cast< ::cppu::OWeakObject* >(pFilter), css::uno::UNO_QUERY_THROW);
549
    css::uno::Reference< css::xml::sax::XDocumentHandler > xFilter (static_cast< ::cppu::OWeakObject* >(pFilter), css::uno::UNO_QUERY_THROW);
Lines 539-548 void AcceleratorConfiguration::impl_ts_l Link Here
539
    // TODO think about error handling
558
    // TODO think about error handling
540
    xParser->parseStream(aSource);
559
    xParser->parseStream(aSource);
541
    
560
    
542
    // take over the filled cache
543
    // SAFE -> ----------------------------------
544
    aWriteLock.lock();
545
    m_aReadCache = aCache;
546
    aWriteLock.unlock();
561
    aWriteLock.unlock();
547
    // <- SAFE ----------------------------------
562
    // <- SAFE ----------------------------------
548
}
563
}
(-)framework/source/accelerators/presethandler.cxx (-2 / +17 lines)
Lines 175-186 PresetHandler::PresetHandler(const Prese Link Here
175
    m_sModule               = rCopy.m_sModule;
175
    m_sModule               = rCopy.m_sModule;
176
    m_aSharedStorages       = rCopy.m_aSharedStorages;
176
    m_aSharedStorages       = rCopy.m_aSharedStorages;
177
    m_xWorkingStorageShare  = rCopy.m_xWorkingStorageShare;
177
    m_xWorkingStorageShare  = rCopy.m_xWorkingStorageShare;
178
    m_xWorkingStorageNoLang = rCopy.m_xWorkingStorageNoLang;
178
    m_xWorkingStorageUser   = rCopy.m_xWorkingStorageUser;
179
    m_xWorkingStorageUser   = rCopy.m_xWorkingStorageUser;
179
    m_lPresets              = rCopy.m_lPresets;
180
    m_lPresets              = rCopy.m_lPresets;
180
    m_lTargets              = rCopy.m_lTargets;
181
    m_lTargets              = rCopy.m_lTargets;
181
    m_aLocale               = rCopy.m_aLocale;
182
    m_aLocale               = rCopy.m_aLocale;
182
    m_lDocumentStorages     = rCopy.m_lDocumentStorages;
183
    m_lDocumentStorages     = rCopy.m_lDocumentStorages;
183
    m_sRelPathShare         = rCopy.m_sRelPathShare;
184
    m_sRelPathShare         = rCopy.m_sRelPathShare;
185
    m_sRelPathNoLang        = rCopy.m_sRelPathNoLang;
184
    m_sRelPathUser          = rCopy.m_sRelPathUser;
186
    m_sRelPathUser          = rCopy.m_sRelPathUser;
185
}
187
}
186
188
Lines 188-193 PresetHandler::PresetHandler(const Prese Link Here
188
PresetHandler::~PresetHandler()
190
PresetHandler::~PresetHandler()
189
{
191
{
190
    m_xWorkingStorageShare.clear();
192
    m_xWorkingStorageShare.clear();
193
    m_xWorkingStorageNoLang.clear();
191
    m_xWorkingStorageUser.clear();
194
    m_xWorkingStorageUser.clear();
192
195
193
    /* #i46497#
196
    /* #i46497#
Lines 201-206 PresetHandler::~PresetHandler() Link Here
201
        objects which base on these storages.
204
        objects which base on these storages.
202
     */
205
     */
203
    m_aSharedStorages->m_lStoragesShare.closePath(m_sRelPathShare);
206
    m_aSharedStorages->m_lStoragesShare.closePath(m_sRelPathShare);
207
    m_aSharedStorages->m_lStoragesNoLang.closePath(m_sRelPathNoLang);
204
    m_aSharedStorages->m_lStoragesUser.closePath (m_sRelPathUser );
208
    m_aSharedStorages->m_lStoragesUser.closePath (m_sRelPathUser );
205
209
206
    /* On the other side closePath() is not needed for our special handled
210
    /* On the other side closePath() is not needed for our special handled
Lines 219-224 void PresetHandler::forgetCachedStorages Link Here
219
    if (m_eConfigType == E_DOCUMENT)
223
    if (m_eConfigType == E_DOCUMENT)
220
    {
224
    {
221
        m_xWorkingStorageShare.clear();
225
        m_xWorkingStorageShare.clear();
226
        m_xWorkingStorageNoLang.clear();
222
        m_xWorkingStorageUser.clear();
227
        m_xWorkingStorageUser.clear();
223
    }
228
    }
224
    
229
    
Lines 379-384 void PresetHandler::connectToResource( Link Here
379
    // <- SAFE ----------------------------------
384
    // <- SAFE ----------------------------------
380
385
381
    css::uno::Reference< css::embed::XStorage > xShare;
386
    css::uno::Reference< css::embed::XStorage > xShare;
387
    css::uno::Reference< css::embed::XStorage > xNoLang;
382
    css::uno::Reference< css::embed::XStorage > xUser;
388
    css::uno::Reference< css::embed::XStorage > xUser;
383
389
384
    // special case for documents
390
    // special case for documents
Lines 408-413 void PresetHandler::connectToResource( Link Here
408
414
409
    ::rtl::OUStringBuffer sRelPathBuf(1024);
415
    ::rtl::OUStringBuffer sRelPathBuf(1024);
410
    ::rtl::OUString       sRelPathShare;
416
    ::rtl::OUString       sRelPathShare;
417
    ::rtl::OUString       sRelPathNoLang;
411
    ::rtl::OUString       sRelPathUser;
418
    ::rtl::OUString       sRelPathUser;
412
    switch(eConfigType)
419
    switch(eConfigType)
413
    {
420
    {
Lines 462-467 void PresetHandler::connectToResource( Link Here
462
        break;
469
        break;
463
    }
470
    }
464
471
472
    // Non-localized global share
473
    xNoLang = xShare;
474
    sRelPathNoLang = sRelPathShare;
475
465
    if (
476
    if (
466
        (aLocale     != ::comphelper::Locale::X_NOTRANSLATE()) && // localized level?
477
        (aLocale     != ::comphelper::Locale::X_NOTRANSLATE()) && // localized level?
467
        (eConfigType != E_DOCUMENT                           )    // no localization in document mode!
478
        (eConfigType != E_DOCUMENT                           )    // no localization in document mode!
Lines 535-544 void PresetHandler::connectToResource( Link Here
535
    aWriteLock.lock();
546
    aWriteLock.lock();
536
    
547
    
537
    m_xWorkingStorageShare = xShare  ;
548
    m_xWorkingStorageShare = xShare  ;
549
    m_xWorkingStorageNoLang= xNoLang;
538
    m_xWorkingStorageUser  = xUser   ;
550
    m_xWorkingStorageUser  = xUser   ;
539
    m_lPresets             = lPresets;
551
    m_lPresets             = lPresets;
540
    m_lTargets             = lTargets;
552
    m_lTargets             = lTargets;
541
    m_sRelPathShare        = sRelPathShare;
553
    m_sRelPathShare        = sRelPathShare;
554
    m_sRelPathNoLang       = sRelPathNoLang;
542
    m_sRelPathUser         = sRelPathUser;
555
    m_sRelPathUser         = sRelPathUser;
543
    
556
    
544
    aWriteLock.unlock();
557
    aWriteLock.unlock();
Lines 591-596 void PresetHandler::copyPresetToTarget(c Link Here
591
    // SAFE -> ----------------------------------
604
    // SAFE -> ----------------------------------
592
    ReadGuard aReadLock(m_aLock);
605
    ReadGuard aReadLock(m_aLock);
593
    css::uno::Reference< css::embed::XStorage > xWorkingShare = m_xWorkingStorageShare;
606
    css::uno::Reference< css::embed::XStorage > xWorkingShare = m_xWorkingStorageShare;
607
    css::uno::Reference< css::embed::XStorage > xWorkingNoLang= m_xWorkingStorageNoLang;
594
    css::uno::Reference< css::embed::XStorage > xWorkingUser  = m_xWorkingStorageUser ;
608
    css::uno::Reference< css::embed::XStorage > xWorkingUser  = m_xWorkingStorageUser ;
595
    aReadLock.unlock();
609
    aReadLock.unlock();
596
    // <- SAFE ----------------------------------
610
    // <- SAFE ----------------------------------
Lines 646-656 css::uno::Reference< css::io::XStream > Link Here
646
660
647
//-----------------------------------------------    
661
//-----------------------------------------------    
648
css::uno::Reference< css::io::XStream > PresetHandler::openTarget(const ::rtl::OUString& sTarget         ,
662
css::uno::Reference< css::io::XStream > PresetHandler::openTarget(const ::rtl::OUString& sTarget         ,
649
                                                                        sal_Bool         bCreateIfMissing)
663
                                                                        sal_Bool         bCreateIfMissing,
664
                                                                        sal_Bool         bUseNoLangGlobal)
650
{
665
{
651
    // SAFE -> ----------------------------------
666
    // SAFE -> ----------------------------------
652
    ReadGuard aReadLock(m_aLock);
667
    ReadGuard aReadLock(m_aLock);
653
    css::uno::Reference< css::embed::XStorage > xFolder = m_xWorkingStorageUser;
668
    css::uno::Reference< css::embed::XStorage > xFolder = bUseNoLangGlobal? m_xWorkingStorageNoLang: m_xWorkingStorageUser;
654
    aReadLock.unlock();
669
    aReadLock.unlock();
655
    // <- SAFE ----------------------------------
670
    // <- SAFE ----------------------------------
656
    
671
    
(-)framework/source/inc/accelerators/presethandler.hxx (-1 / +11 lines)
Lines 156-165 class PresetHandler : private ThreadHelp Link Here
156
            public:
156
            public:
157
            
157
            
158
                StorageHolder m_lStoragesShare;
158
                StorageHolder m_lStoragesShare;
159
                StorageHolder m_lStoragesNoLang;
159
                StorageHolder m_lStoragesUser;
160
                StorageHolder m_lStoragesUser;
160
                
161
                
161
                TSharedStorages()
162
                TSharedStorages()
162
                    : m_lStoragesShare(::comphelper::getProcessServiceFactory())
163
                    : m_lStoragesShare(::comphelper::getProcessServiceFactory())
164
                    , m_lStoragesNoLang(::comphelper::getProcessServiceFactory())
163
                    , m_lStoragesUser (::comphelper::getProcessServiceFactory())
165
                    , m_lStoragesUser (::comphelper::getProcessServiceFactory())
164
                {};
166
                {};
165
                
167
                
Lines 224-229 class PresetHandler : private ThreadHelp Link Here
224
                    is equals to m_xWorkingStorageShare then! 
226
                    is equals to m_xWorkingStorageShare then! 
225
         */
227
         */
226
        css::uno::Reference< css::embed::XStorage > m_xWorkingStorageShare;
228
        css::uno::Reference< css::embed::XStorage > m_xWorkingStorageShare;
229
        /*          Global language-independent storage
230
         */
231
        css::uno::Reference< css::embed::XStorage > m_xWorkingStorageNoLang;
227
        
232
        
228
        //---------------------------------------
233
        //---------------------------------------
229
        /** @short  holds the folder storage of the user layer alive,
234
        /** @short  holds the folder storage of the user layer alive,
Lines 259-264 class PresetHandler : private ThreadHelp Link Here
259
        //---------------------------------------
264
        //---------------------------------------
260
        /** @short  knows the relative path from the root. */
265
        /** @short  knows the relative path from the root. */
261
        ::rtl::OUString m_sRelPathShare;
266
        ::rtl::OUString m_sRelPathShare;
267
        ::rtl::OUString m_sRelPathNoLang;
262
        ::rtl::OUString m_sRelPathUser;
268
        ::rtl::OUString m_sRelPathUser;
263
    
269
    
264
    //-------------------------------------------
270
    //-------------------------------------------
Lines 470-481 class PresetHandler : private ThreadHelp Link Here
470
            @param  bCreateIfMissing
476
            @param  bCreateIfMissing
471
                    create target file, if it does not still exists.
477
                    create target file, if it does not still exists.
472
                    Note: That does not means reseting of an existing file!
478
                    Note: That does not means reseting of an existing file!
479
480
            @param  bNoLangGlobal
481
                    access the global language-independent storage instead of the user storage
473
                    
482
                    
474
            @return The opened target stream ... or NULL if the target does not exists
483
            @return The opened target stream ... or NULL if the target does not exists
475
                    or couldnt be created as new one.
484
                    or couldnt be created as new one.
476
         */
485
         */
477
        css::uno::Reference< css::io::XStream > openTarget(const ::rtl::OUString& sTarget         ,
486
        css::uno::Reference< css::io::XStream > openTarget(const ::rtl::OUString& sTarget         ,
478
                                                                 sal_Bool         bCreateIfMissing);
487
                                                                 sal_Bool         bCreateIfMissing,
488
                                                                 sal_Bool         bUseNoLangGlobal = sal_False);
479
        
489
        
480
        //---------------------------------------
490
        //---------------------------------------
481
        /** TODO */
491
        /** TODO */

Return to issue 64717