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

(-)framework/source/accelerators/acceleratorconfiguration.cxx (-6 / +24 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.openPreset(PresetHandler::PRESET_DEFAULT(), 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 354-360 void SAL_CALL AcceleratorConfiguration:: Link Here
354
                ::rtl::OUString::createFromAscii("Could not open accelerator configuration for reading."),
361
                ::rtl::OUString::createFromAscii("Could not open accelerator configuration for reading."),
355
                static_cast< ::cppu::OWeakObject* >(this));
362
                static_cast< ::cppu::OWeakObject* >(this));
356
                
363
                
364
    // impl_ts_load() does not clear the cache
365
    m_aReadCache = AcceleratorCache();
366
357
    impl_ts_load(xIn);    
367
    impl_ts_load(xIn);    
368
369
    // Load also the general language independent default accelerators
370
    // (ignoring the already defined accelerators)
371
    if (xStreamNoLang.is())
372
    {
373
        xIn = xStreamNoLang->getInputStream();
374
        if (xIn.is())
375
            impl_ts_load(xIn);
376
    }
358
}
377
}
359
          
378
          
360
//-----------------------------------------------    
379
//-----------------------------------------------    
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 / +16 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 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 638-648 css::uno::Reference< css::io::XStream > Link Here
638
}
654
}
639
655
640
//-----------------------------------------------    
656
//-----------------------------------------------    
641
css::uno::Reference< css::io::XStream > PresetHandler::openPreset(const ::rtl::OUString& sPreset)
657
css::uno::Reference< css::io::XStream > PresetHandler::openPreset(const ::rtl::OUString& sPreset,
658
                                                                  sal_Bool bUseNoLangGlobal)
642
{
659
{
643
    // SAFE -> ----------------------------------
660
    // SAFE -> ----------------------------------
644
    ReadGuard aReadLock(m_aLock);
661
    ReadGuard aReadLock(m_aLock);
645
    css::uno::Reference< css::embed::XStorage > xFolder = m_xWorkingStorageShare;
662
    css::uno::Reference< css::embed::XStorage > xFolder = bUseNoLangGlobal? m_xWorkingStorageNoLang: m_xWorkingStorageShare;
646
    aReadLock.unlock();
663
    aReadLock.unlock();
647
    // <- SAFE ----------------------------------
664
    // <- SAFE ----------------------------------
648
    
665
    
(-)framework/source/inc/accelerators/presethandler.hxx (-1 / +11 lines)
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
230
        //---------------------------------------
231
        /** @short  global language-independent storage
232
         */
233
        css::uno::Reference< css::embed::XStorage > m_xWorkingStorageNoLang;
227
        
234
        
228
        //---------------------------------------
235
        //---------------------------------------
229
        /** @short  holds the folder storage of the user layer alive,
236
        /** @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 456-465 class PresetHandler : private ThreadHelp Link Here
456
462
457
            @param  sPreset
463
            @param  sPreset
458
                    the ALIAS name of an existing preset.
464
                    the ALIAS name of an existing preset.
465
466
            @param  bNoLangGlobal
467
                    access the global language-independent storage instead of the preset storage
459
                    
468
                    
460
            @return The opened preset stream ... or NULL if the preset does not exists. 
469
            @return The opened preset stream ... or NULL if the preset does not exists. 
461
         */
470
         */
462
        css::uno::Reference< css::io::XStream > openPreset(const ::rtl::OUString& sPreset);
471
        css::uno::Reference< css::io::XStream > openPreset(const ::rtl::OUString& sPreset,
472
                                                           sal_Bool bUseNoLangGlobal = sal_False);
463
        
473
        
464
        //---------------------------------------
474
        //---------------------------------------
465
        /** @short  open the specified target as stream object
475
        /** @short  open the specified target as stream object

Return to issue 64717