tdf#158001 - UI: Part 18 - Unify lockdown behavior of Options dialog
for Languages Page.
Change-Id: I3f4cf27980dd6d06da13f554feaca192ebd0b671
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158882
Tested-by: Jenkins
Reviewed-by: Balazs Varga <balazs.varga.extern@allotropia.de>
diff --git a/cui/source/options/optgdlg.cxx b/cui/source/options/optgdlg.cxx
index ee727e0..9e32e2f 100644
--- a/cui/source/options/optgdlg.cxx
+++ b/cui/source/options/optgdlg.cxx
@@ -1170,19 +1170,28 @@ OfaLanguagesTabPage::OfaLanguagesTabPage(weld::Container* pPage, weld::DialogCon
, m_xUserInterfaceLB(m_xBuilder->weld_combo_box("userinterface"))
, m_xLocaleSettingFT(m_xBuilder->weld_label("localesettingFT"))
, m_xLocaleSettingLB(new SvxLanguageBox(m_xBuilder->weld_combo_box("localesetting")))
, m_xLocaleSettingImg(m_xBuilder->weld_widget("locklocalesetting"))
, m_xDecimalSeparatorFT(m_xBuilder->weld_label("label6"))
, m_xDecimalSeparatorCB(m_xBuilder->weld_check_button("decimalseparator"))
, m_xDecimalSeparatorImg(m_xBuilder->weld_widget("lockdecimalseparator"))
, m_xCurrencyFT(m_xBuilder->weld_label("defaultcurrency"))
, m_xCurrencyLB(m_xBuilder->weld_combo_box("currencylb"))
, m_xCurrencyImg(m_xBuilder->weld_widget("lockcurrencylb"))
, m_xDatePatternsFT(m_xBuilder->weld_label("dataaccpatterns"))
, m_xDatePatternsED(m_xBuilder->weld_entry("datepatterns"))
, m_xDatePatternsImg(m_xBuilder->weld_widget("lockdatepatterns"))
, m_xWesternLanguageLB(new SvxLanguageBox(m_xBuilder->weld_combo_box("westernlanguage")))
, m_xWesternLanguageFT(m_xBuilder->weld_label("western"))
, m_xWesternLanguageImg(m_xBuilder->weld_widget("lockwesternlanguage"))
, m_xAsianLanguageLB(new SvxLanguageBox(m_xBuilder->weld_combo_box("asianlanguage")))
, m_xComplexLanguageLB(new SvxLanguageBox(m_xBuilder->weld_combo_box("complexlanguage")))
, m_xCurrentDocCB(m_xBuilder->weld_check_button("currentdoc"))
, m_xAsianSupportCB(m_xBuilder->weld_check_button("asiansupport"))
, m_xAsianSupportImg(m_xBuilder->weld_widget("lockasiansupport"))
, m_xCTLSupportCB(m_xBuilder->weld_check_button("ctlsupport"))
, m_xCTLSupportImg(m_xBuilder->weld_widget("lockctlsupport"))
, m_xIgnoreLanguageChangeCB(m_xBuilder->weld_check_button("ignorelanguagechange"))
, m_xIgnoreLanguageChangeImg(m_xBuilder->weld_widget("lockignorelanguagechange"))
{
// tdf#125483 save original default label
m_sDecimalSeparatorLabel = m_xDecimalSeparatorCB->get_label();
@@ -1321,6 +1330,7 @@ OfaLanguagesTabPage::OfaLanguagesTabPage(weld::Container* pPage, weld::DialogCon
m_xAsianSupportCB->save_state();
bool bReadonly = SvtCJKOptions::IsAnyReadOnly();
m_xAsianSupportCB->set_sensitive(!bReadonly);
m_xAsianSupportImg->set_visible(bReadonly);
SupportHdl(*m_xAsianSupportCB);
m_bOldCtl = SvtCTLOptions::IsCTLFontEnabled();
@@ -1328,6 +1338,7 @@ OfaLanguagesTabPage::OfaLanguagesTabPage(weld::Container* pPage, weld::DialogCon
m_xCTLSupportCB->save_state();
bReadonly = pLangConfig->aCTLLanguageOptions.IsReadOnly(SvtCTLOptions::E_CTLFONT);
m_xCTLSupportCB->set_sensitive(!bReadonly);
m_xCTLSupportImg->set_visible(bReadonly);
SupportHdl(*m_xCTLSupportCB);
m_xIgnoreLanguageChangeCB->set_active( pLangConfig->aSysLocaleOptions.IsIgnoreLanguageChange() );
@@ -1633,12 +1644,20 @@ void OfaLanguagesTabPage::Reset( const SfxItemSet* rSet )
bool bReadonly = pLangConfig->aSysLocaleOptions.IsReadOnly(SvtSysLocaleOptions::EOption::Locale);
m_xLocaleSettingLB->set_sensitive(!bReadonly);
m_xLocaleSettingFT->set_sensitive(!bReadonly);
m_xLocaleSettingImg->set_visible(bReadonly);
m_xDecimalSeparatorCB->set_active( pLangConfig->aSysLocaleOptions.IsDecimalSeparatorAsLocale());
bReadonly = pLangConfig->aSysLocaleOptions.IsReadOnly(SvtSysLocaleOptions::EOption::DecimalSeparator);
m_xDecimalSeparatorCB->set_sensitive(!bReadonly);
m_xDecimalSeparatorFT->set_sensitive(!bReadonly);
m_xDecimalSeparatorImg->set_visible(bReadonly);
m_xDecimalSeparatorCB->save_state();
m_xIgnoreLanguageChangeCB->set_active( pLangConfig->aSysLocaleOptions.IsIgnoreLanguageChange());
bReadonly = pLangConfig->aSysLocaleOptions.IsReadOnly(SvtSysLocaleOptions::EOption::IgnoreLanguageChange);
m_xIgnoreLanguageChangeCB->set_sensitive(!bReadonly);
m_xIgnoreLanguageChangeImg->set_visible(bReadonly);
m_xIgnoreLanguageChangeCB->save_state();
// let LocaleSettingHdl enable/disable checkboxes for CJK/CTL support
@@ -1662,6 +1681,7 @@ void OfaLanguagesTabPage::Reset( const SfxItemSet* rSet )
bReadonly = pLangConfig->aSysLocaleOptions.IsReadOnly(SvtSysLocaleOptions::EOption::Currency);
m_xCurrencyLB->set_sensitive(!bReadonly);
m_xCurrencyFT->set_sensitive(!bReadonly);
m_xCurrencyImg->set_visible(bReadonly);
// date acceptance patterns
OUString aDatePatternsString = pLangConfig->aSysLocaleOptions.GetDatePatternsConfigString();
@@ -1683,6 +1703,7 @@ void OfaLanguagesTabPage::Reset( const SfxItemSet* rSet )
bReadonly = pLangConfig->aSysLocaleOptions.IsReadOnly(SvtSysLocaleOptions::EOption::DatePatterns);
m_xDatePatternsED->set_sensitive(!bReadonly);
m_xDatePatternsFT->set_sensitive(!bReadonly);
m_xDatePatternsImg->set_visible(bReadonly);
m_xDatePatternsED->save_value();
//western/CJK/CLK language
@@ -1767,6 +1788,7 @@ void OfaLanguagesTabPage::Reset( const SfxItemSet* rSet )
bool bEnable = !pLangConfig->aLinguConfig.IsReadOnly( u"DefaultLocale" );
m_xWesternLanguageFT->set_sensitive( bEnable );
m_xWesternLanguageLB->set_sensitive( bEnable );
m_xWesternLanguageImg->set_visible( !bEnable );
// check the box "For the current document only"
// set the focus to the Western Language box
diff --git a/cui/source/options/optgdlg.hxx b/cui/source/options/optgdlg.hxx
index 57e2bb9..0e09597 100644
--- a/cui/source/options/optgdlg.hxx
+++ b/cui/source/options/optgdlg.hxx
@@ -181,20 +181,30 @@ class OfaLanguagesTabPage : public SfxTabPage
std::unique_ptr<weld::ComboBox> m_xUserInterfaceLB;
std::unique_ptr<weld::Label> m_xLocaleSettingFT;
std::unique_ptr<SvxLanguageBox> m_xLocaleSettingLB;
std::unique_ptr<weld::Widget> m_xLocaleSettingImg;
std::unique_ptr<weld::Label> m_xDecimalSeparatorFT;
std::unique_ptr<weld::CheckButton> m_xDecimalSeparatorCB;
std::unique_ptr<weld::Widget> m_xDecimalSeparatorImg;
std::unique_ptr<weld::Label> m_xCurrencyFT;
std::unique_ptr<weld::ComboBox> m_xCurrencyLB;
std::unique_ptr<weld::Widget> m_xCurrencyImg;
std::unique_ptr<weld::Label> m_xDatePatternsFT;
std::unique_ptr<weld::Entry> m_xDatePatternsED;
std::unique_ptr<weld::Widget> m_xDatePatternsImg;
std::unique_ptr<SvxLanguageBox> m_xWesternLanguageLB;
std::unique_ptr<weld::Label> m_xWesternLanguageFT;
std::unique_ptr<weld::Widget> m_xWesternLanguageImg;
std::unique_ptr<SvxLanguageBox> m_xAsianLanguageLB;
std::unique_ptr<SvxLanguageBox> m_xComplexLanguageLB;
std::unique_ptr<weld::CheckButton> m_xCurrentDocCB;
std::unique_ptr<weld::Widget> m_xCurrentDocImg;
std::unique_ptr<weld::CheckButton> m_xAsianSupportCB;
std::unique_ptr<weld::Widget> m_xAsianSupportImg;
std::unique_ptr<weld::CheckButton> m_xCTLSupportCB;
std::unique_ptr<weld::Widget> m_xCTLSupportImg;
std::unique_ptr<weld::CheckButton> m_xIgnoreLanguageChangeCB;
std::unique_ptr<weld::Widget> m_xIgnoreLanguageChangeImg;
DECL_LINK(SupportHdl, weld::Toggleable&, void);
DECL_LINK(LocaleSettingHdl, weld::ComboBox&, void);
diff --git a/cui/uiconfig/ui/optlanguagespage.ui b/cui/uiconfig/ui/optlanguagespage.ui
index 71b8b8c..85ddf54 100644
--- a/cui/uiconfig/ui/optlanguagespage.ui
+++ b/cui/uiconfig/ui/optlanguagespage.ui
@@ -112,7 +112,7 @@
<property name="label-xalign">0</property>
<property name="shadow-type">none</property>
<child>
<!-- n-columns=2 n-rows=4 -->
<!-- n-columns=3 n-rows=4 -->
<object class="GtkGrid" id="grid2">
<property name="visible">True</property>
<property name="can-focus">False</property>
@@ -149,7 +149,7 @@
</child>
</object>
<packing>
<property name="left-attach">1</property>
<property name="left-attach">2</property>
<property name="top-attach">0</property>
</packing>
</child>
@@ -181,7 +181,7 @@
</child>
</object>
<packing>
<property name="left-attach">1</property>
<property name="left-attach">2</property>
<property name="top-attach">1</property>
</packing>
</child>
@@ -213,7 +213,7 @@
</child>
</object>
<packing>
<property name="left-attach">1</property>
<property name="left-attach">2</property>
<property name="top-attach">2</property>
</packing>
</child>
@@ -233,7 +233,7 @@
</child>
</object>
<packing>
<property name="left-attach">1</property>
<property name="left-attach">2</property>
<property name="top-attach">3</property>
</packing>
</child>
@@ -252,7 +252,7 @@
</child>
</object>
<packing>
<property name="left-attach">0</property>
<property name="left-attach">1</property>
<property name="top-attach">2</property>
</packing>
</child>
@@ -271,7 +271,7 @@
</child>
</object>
<packing>
<property name="left-attach">0</property>
<property name="left-attach">1</property>
<property name="top-attach">1</property>
</packing>
</child>
@@ -285,11 +285,53 @@
<property name="xalign">0</property>
</object>
<packing>
<property name="left-attach">1</property>
<property name="top-attach">0</property>
</packing>
</child>
<child>
<object class="GtkImage" id="lockwesternlanguage">
<property name="can-focus">False</property>
<property name="no-show-all">True</property>
<property name="halign">center</property>
<property name="valign">center</property>
<property name="icon-name">res/lock.png</property>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">0</property>
</packing>
</child>
<child>
<object class="GtkImage" id="lockasiansupport">
<property name="can-focus">False</property>
<property name="no-show-all">True</property>
<property name="halign">center</property>
<property name="valign">center</property>
<property name="icon-name">res/lock.png</property>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">1</property>
</packing>
</child>
<child>
<object class="GtkImage" id="lockctlsupport">
<property name="can-focus">False</property>
<property name="no-show-all">True</property>
<property name="halign">center</property>
<property name="valign">center</property>
<property name="icon-name">res/lock.png</property>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">2</property>
</packing>
</child>
<child>
<placeholder/>
</child>
<child>
<placeholder/>
</child>
</object>
@@ -317,7 +359,7 @@
<property name="label-xalign">0</property>
<property name="shadow-type">none</property>
<child>
<!-- n-columns=1 n-rows=1 -->
<!-- n-columns=2 n-rows=1 -->
<object class="GtkGrid" id="grid3">
<property name="visible">True</property>
<property name="can-focus">False</property>
@@ -339,6 +381,19 @@
</child>
</object>
<packing>
<property name="left-attach">1</property>
<property name="top-attach">0</property>
</packing>
</child>
<child>
<object class="GtkImage" id="lockignorelanguagechange">
<property name="can-focus">False</property>
<property name="no-show-all">True</property>
<property name="halign">center</property>
<property name="valign">center</property>
<property name="icon-name">res/lock.png</property>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">0</property>
</packing>
@@ -369,7 +424,7 @@
<property name="label-xalign">0</property>
<property name="shadow-type">none</property>
<child>
<!-- n-columns=2 n-rows=4 -->
<!-- n-columns=3 n-rows=4 -->
<object class="GtkGrid" id="grid4">
<property name="visible">True</property>
<property name="can-focus">False</property>
@@ -388,7 +443,7 @@
<property name="xalign">0</property>
</object>
<packing>
<property name="left-attach">0</property>
<property name="left-attach">1</property>
<property name="top-attach">0</property>
</packing>
</child>
@@ -402,7 +457,7 @@
<property name="xalign">0</property>
</object>
<packing>
<property name="left-attach">0</property>
<property name="left-attach">1</property>
<property name="top-attach">2</property>
</packing>
</child>
@@ -416,7 +471,7 @@
<property name="xalign">0</property>
</object>
<packing>
<property name="left-attach">0</property>
<property name="left-attach">1</property>
<property name="top-attach">1</property>
</packing>
</child>
@@ -430,7 +485,7 @@
<property name="xalign">0</property>
</object>
<packing>
<property name="left-attach">0</property>
<property name="left-attach">1</property>
<property name="top-attach">3</property>
</packing>
</child>
@@ -447,7 +502,7 @@
</child>
</object>
<packing>
<property name="left-attach">1</property>
<property name="left-attach">2</property>
<property name="top-attach">0</property>
</packing>
</child>
@@ -464,7 +519,7 @@
</child>
</object>
<packing>
<property name="left-attach">1</property>
<property name="left-attach">2</property>
<property name="top-attach">1</property>
</packing>
</child>
@@ -483,7 +538,7 @@
</child>
</object>
<packing>
<property name="left-attach">1</property>
<property name="left-attach">2</property>
<property name="top-attach">3</property>
</packing>
</child>
@@ -502,10 +557,62 @@
</child>
</object>
<packing>
<property name="left-attach">1</property>
<property name="left-attach">2</property>
<property name="top-attach">2</property>
</packing>
</child>
<child>
<object class="GtkImage" id="locklocalesetting">
<property name="can-focus">False</property>
<property name="no-show-all">True</property>
<property name="halign">center</property>
<property name="valign">center</property>
<property name="icon-name">res/lock.png</property>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">0</property>
</packing>
</child>
<child>
<object class="GtkImage" id="lockcurrencylb">
<property name="can-focus">False</property>
<property name="no-show-all">True</property>
<property name="halign">center</property>
<property name="valign">center</property>
<property name="icon-name">res/lock.png</property>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">1</property>
</packing>
</child>
<child>
<object class="GtkImage" id="lockdecimalseparator">
<property name="can-focus">False</property>
<property name="no-show-all">True</property>
<property name="halign">center</property>
<property name="valign">center</property>
<property name="icon-name">res/lock.png</property>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">2</property>
</packing>
</child>
<child>
<object class="GtkImage" id="lockdatepatterns">
<property name="can-focus">False</property>
<property name="no-show-all">True</property>
<property name="halign">center</property>
<property name="valign">center</property>
<property name="icon-name">res/lock.png</property>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">3</property>
</packing>
</child>
</object>
</child>
<child type="label">
diff --git a/include/unotools/syslocaleoptions.hxx b/include/unotools/syslocaleoptions.hxx
index 5f5e575..c0fab39 100644
--- a/include/unotools/syslocaleoptions.hxx
+++ b/include/unotools/syslocaleoptions.hxx
@@ -43,7 +43,9 @@ public:
{
Locale,
Currency,
DatePatterns
DatePatterns,
DecimalSeparator,
IgnoreLanguageChange
};
SvtSysLocaleOptions();
virtual ~SvtSysLocaleOptions() override;
diff --git a/unotools/source/config/syslocaleoptions.cxx b/unotools/source/config/syslocaleoptions.cxx
index 0438402..70177c5 100644
--- a/unotools/source/config/syslocaleoptions.cxx
+++ b/unotools/source/config/syslocaleoptions.cxx
@@ -302,6 +302,16 @@ bool SvtSysLocaleOptions_Impl::IsReadOnly( SvtSysLocaleOptions::EOption eOption
bReadOnly = m_bRODatePatterns;
break;
}
case SvtSysLocaleOptions::EOption::DecimalSeparator:
{
bReadOnly = m_bRODecimalSeparator;
break;
}
case SvtSysLocaleOptions::EOption::IgnoreLanguageChange:
{
bReadOnly = m_bROIgnoreLanguageChange;
break;
}
}
return bReadOnly;
}