summaryrefslogtreecommitdiff
path: root/sd
diff options
context:
space:
mode:
authorAshod Nakashian <ashod.nakashian@collabora.co.uk>2019-01-28 20:39:17 -0500
committerAndras Timar <andras.timar@collabora.com>2019-03-04 15:22:01 +0100
commit312346531dde33cd000a1d3c95c7b7829b656438 (patch)
treefd8f3ae3e84b4054e6635cca8941f15fee1de0ea /sd
parentb44679e47211a27f4fe22d05762d9d48c8f88935 (diff)
sd: LOK: support localization of slide transition presets
Change-Id: Ic3ea57e537e118e10d155203921574967154c234 Reviewed-on: https://gerrit.libreoffice.org/68264 Reviewed-by: Andras Timar <andras.timar@collabora.com> Tested-by: Andras Timar <andras.timar@collabora.com>
Diffstat (limited to 'sd')
-rw-r--r--sd/inc/TransitionPreset.hxx4
-rw-r--r--sd/source/core/TransitionPreset.cxx42
2 files changed, 20 insertions, 26 deletions
diff --git a/sd/inc/TransitionPreset.hxx b/sd/inc/TransitionPreset.hxx
index 623989f8e93a..4cbfd0e91b9f 100644
--- a/sd/inc/TransitionPreset.hxx
+++ b/sd/inc/TransitionPreset.hxx
@@ -44,7 +44,6 @@ class TransitionPreset
{
public:
static const TransitionPresetList& getTransitionPresetList();
- static bool importTransitionPresetList( TransitionPresetList& rList );
sal_Int16 getTransition() const { return mnTransition; }
sal_Int16 getSubtype() const { return mnSubtype; }
@@ -59,6 +58,9 @@ public:
private:
TransitionPreset( const css::uno::Reference< css::animations::XAnimationNode >& xNode );
+ static bool importTransitionPresetList(TransitionPresetList& rList);
+ SAL_DLLPRIVATE static std::map<OUString, TransitionPresetList> mPresetsMap;
+
sal_Int16 mnTransition;
sal_Int16 mnSubtype;
bool mbDirection;
diff --git a/sd/source/core/TransitionPreset.cxx b/sd/source/core/TransitionPreset.cxx
index 1d07e80e33ea..2eeb5a49eca0 100644
--- a/sd/source/core/TransitionPreset.cxx
+++ b/sd/source/core/TransitionPreset.cxx
@@ -30,7 +30,9 @@
#include <comphelper/getexpandeduri.hxx>
#include <comphelper/processfactory.hxx>
#include <comphelper/propertysequence.hxx>
+#include <comphelper/lok.hxx>
#include <unotools/pathoptions.hxx>
+#include <unotools/syslocaleoptions.hxx>
#include <officecfg/Office/UI/Effects.hxx>
#include <tools/stream.hxx>
@@ -237,34 +239,24 @@ bool TransitionPreset::importTransitionPresetList( TransitionPresetList& rList )
return bRet;
}
-namespace
-{
- class ImportedTransitionPresetList
- {
- private:
- sd::TransitionPresetList m_aTransitionPresetList;
- public:
- ImportedTransitionPresetList()
- {
- sd::TransitionPreset::importTransitionPresetList(
- m_aTransitionPresetList);
- }
- const sd::TransitionPresetList& getList() const
- {
- return m_aTransitionPresetList;
- }
- };
-
- class theTransitionPresetList :
- public rtl::Static<ImportedTransitionPresetList,
- theTransitionPresetList>
- {
- };
-}
+std::map<OUString, TransitionPresetList> sd::TransitionPreset::mPresetsMap;
const TransitionPresetList& TransitionPreset::getTransitionPresetList()
{
- return theTransitionPresetList::get().getList();
+ // Support localization per-view. Currently not useful for Desktop
+ // but very much critical for LOK. The cache now is per-language.
+ const OUString aLang = comphelper::LibreOfficeKit::isActive()
+ ? comphelper::LibreOfficeKit::getLanguageTag().getLanguage()
+ : SvtSysLocaleOptions().GetLanguageTag().getLanguage();
+
+ SolarMutexGuard aGuard;
+ const auto it = mPresetsMap.find(aLang);
+ if (it != mPresetsMap.end())
+ return it->second;
+
+ TransitionPresetList& rList = mPresetsMap[aLang];
+ sd::TransitionPreset::importTransitionPresetList(rList);
+ return rList;
}
}