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;
}