1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
|
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed
* with this work for additional information regarding copyright
* ownership. The ASF licenses this file to you under the Apache
* License, Version 2.0 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
#ifndef INCLUDED_SVL_LANGUAGEOPTIONS_HXX
#define INCLUDED_SVL_LANGUAGEOPTIONS_HXX
#include <svl/svldllapi.h>
#include <sal/types.h>
#include <o3tl/typed_flags_set.hxx>
#include <unotools/configitem.hxx>
#include <unotools/options.hxx>
#include <i18nlangtag/lang.h>
#include <memory>
// class SvtLanguageOptions ----------------------------------------------------
// these defines can be ORed
// note these values DO NOT match the values in css::i18n::ScriptType
enum class SvtScriptType
{
NONE = 0x00,
LATIN = 0x01,
ASIAN = 0x02,
COMPLEX = 0x04,
UNKNOWN = 0x08 // (only used in SC) if type has not been determined yet
};
namespace o3tl
{
template<> struct typed_flags<SvtScriptType> : is_typed_flags<SvtScriptType, 0x0f> {};
}
class SvtCJKOptions;
class SvtCTLOptions;
class SVL_DLLPUBLIC SvtLanguageOptions final : public ::utl::detail::Options
{
private:
std::unique_ptr<SvtCJKOptions> m_pCJKOptions;
std::unique_ptr<SvtCTLOptions> m_pCTLOptions;
public:
enum EOption
{
// cjk options
E_CJKFONT,
E_VERTICALTEXT,
E_ASIANTYPOGRAPHY,
E_JAPANESEFIND,
E_RUBY,
E_CHANGECASEMAP,
E_DOUBLELINES,
E_EMPHASISMARKS,
E_VERTICALCALLOUT,
E_ALLCJK,
// ctl options
E_CTLFONT,
E_CTLSEQUENCECHECKING,
E_CTLCURSORMOVEMENT,
E_CTLTEXTNUMERALS
};
// bDontLoad is for referencing purposes only
SvtLanguageOptions( bool _bDontLoad = false );
virtual ~SvtLanguageOptions() override;
// CJK options
bool IsCJKFontEnabled() const;
bool IsVerticalTextEnabled() const;
bool IsAsianTypographyEnabled() const;
bool IsJapaneseFindEnabled() const;
void SetAll( bool _bSet );
bool IsAnyEnabled() const;
// CTL options
void SetCTLFontEnabled( bool _bEnabled );
bool IsCTLFontEnabled() const;
void SetCTLSequenceChecking( bool _bEnabled );
void SetCTLSequenceCheckingRestricted( bool _bEnable );
void SetCTLSequenceCheckingTypeAndReplace( bool _bEnable );
bool IsReadOnly(EOption eOption) const;
// returns for a language the scripttype
static SvtScriptType GetScriptTypeOfLanguage( LanguageType nLang );
// convert from css::i18n::ScriptType constants to SvtScriptType
static SvtScriptType FromI18NToSvtScriptType( sal_Int16 nI18NType );
static sal_Int16 FromSvtScriptTypeToI18N( SvtScriptType nI18NType );
static sal_Int16 GetI18NScriptTypeOfLanguage( LanguageType nLang );
};
/** #i42730# Gives access to the Windows 16bit system locale
*/
class SvtSystemLanguageOptions final : public utl::ConfigItem
{
private:
OUString m_sWin16SystemLocale;
bool isKeyboardLayoutTypeInstalled(sal_Int16 scriptType) const;
virtual void ImplCommit() override;
public:
SvtSystemLanguageOptions();
virtual ~SvtSystemLanguageOptions() override;
virtual void Notify( const css::uno::Sequence< OUString >& rPropertyNames ) override;
LanguageType GetWin16SystemLanguage() const;
bool isCJKKeyboardLayoutInstalled() const;
};
#endif // INCLUDED_SVL_LANGUAGEOPTIONS_HXX
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|