editeng/source/misc/acorrcfg.cxx               |    3 ++-
 i18nlangtag/qa/cppunit/test_languagetag.cxx    |    6 +++---
 i18nlangtag/source/languagetag/languagetag.cxx |    5 +++--
 include/i18nlangtag/languagetag.hxx            |   17 ++++++++++++-----
 svx/source/dialog/langbox.cxx                  |    2 +-
 5 files changed, 21 insertions(+), 12 deletions(-)

New commits:
commit 2c2e0568e89942cc8463c0da9aa7a3d177667178
Author:     Eike Rathke <er...@redhat.com>
AuthorDate: Wed Aug 31 14:08:26 2022 +0200
Commit:     Eike Rathke <er...@redhat.com>
CommitDate: Wed Aug 31 20:49:46 2022 +0200

    Related: tdf#150370 Convert isValidBcp47() bool to enum 
LanguageTag::PrivateUse
    
    ... to prepare for more finegrained private-use control.
    
    Change-Id: I118c3f5ee6e437435c07ed2cf699c4597e9cdf88
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/139112
    Reviewed-by: Eike Rathke <er...@redhat.com>
    Tested-by: Jenkins

diff --git a/editeng/source/misc/acorrcfg.cxx b/editeng/source/misc/acorrcfg.cxx
index a97e5077ccb6..5806179bc5f0 100644
--- a/editeng/source/misc/acorrcfg.cxx
+++ b/editeng/source/misc/acorrcfg.cxx
@@ -83,7 +83,8 @@ static void scanAutoCorrectDirForLanguageTags( const 
OUString& rURL )
                         // private-use tag (which should not fallback, but
                         // avoid).
                         if (aLanguageTag.getCountry().isEmpty()
-                                && LanguageTag::isValidBcp47( aCanonicalized, 
nullptr, true))
+                                && LanguageTag::isValidBcp47( aCanonicalized, 
nullptr,
+                                    LanguageTag::PrivateUse::DISALLOW))
                         {
                             LanguageTag aFallback( aLanguageTag);
                             aFallback.makeFallback();
diff --git a/i18nlangtag/qa/cppunit/test_languagetag.cxx 
b/i18nlangtag/qa/cppunit/test_languagetag.cxx
index 5b73b3cbf714..4a211012e80d 100644
--- a/i18nlangtag/qa/cppunit/test_languagetag.cxx
+++ b/i18nlangtag/qa/cppunit/test_languagetag.cxx
@@ -668,11 +668,11 @@ void TestLanguageTag::testAllTags()
         CPPUNIT_ASSERT( LanguageTag::isValidBcp47( "qaa", &aCanonicalized) );
         CPPUNIT_ASSERT_EQUAL( OUString("qaa"), aCanonicalized );
         CPPUNIT_ASSERT( !LanguageTag::isValidBcp47( "unreg-and-bad", 
&aCanonicalized) );
-        CPPUNIT_ASSERT( LanguageTag::isValidBcp47( "en-US", &aCanonicalized, 
true) );
+        CPPUNIT_ASSERT( LanguageTag::isValidBcp47( "en-US", &aCanonicalized, 
LanguageTag::PrivateUse::DISALLOW) );
         CPPUNIT_ASSERT_EQUAL( OUString("en-US"), aCanonicalized );
-        CPPUNIT_ASSERT( !LanguageTag::isValidBcp47( "x-foobar", 
&aCanonicalized, true) );
+        CPPUNIT_ASSERT( !LanguageTag::isValidBcp47( "x-foobar", 
&aCanonicalized, LanguageTag::PrivateUse::DISALLOW) );
         CPPUNIT_ASSERT_EQUAL( OUString("x-foobar"), aCanonicalized );
-        CPPUNIT_ASSERT( LanguageTag::isValidBcp47( "qaa", &aCanonicalized, 
true) );
+        CPPUNIT_ASSERT( LanguageTag::isValidBcp47( "qaa", &aCanonicalized, 
LanguageTag::PrivateUse::DISALLOW) );
         CPPUNIT_ASSERT_EQUAL( OUString("qaa"), aCanonicalized );
         CPPUNIT_ASSERT( LanguageTag::isValidBcp47( "de-Latn-DE", 
&aCanonicalized) );
         CPPUNIT_ASSERT_EQUAL( OUString("de-DE"), aCanonicalized );
diff --git a/i18nlangtag/source/languagetag/languagetag.cxx 
b/i18nlangtag/source/languagetag/languagetag.cxx
index 6d20c7304639..0b1ab1ac5a3e 100644
--- a/i18nlangtag/source/languagetag/languagetag.cxx
+++ b/i18nlangtag/source/languagetag/languagetag.cxx
@@ -2838,7 +2838,8 @@ LanguageType 
LanguageTag::convertToLanguageTypeWithFallback( const css::lang::Lo
 
 
 // static
-bool LanguageTag::isValidBcp47( const OUString& rString, OUString* 
o_pCanonicalized, bool bDisallowPrivate )
+bool LanguageTag::isValidBcp47( const OUString& rString, OUString* 
o_pCanonicalized,
+        LanguageTag::PrivateUse ePrivateUse )
 {
     bool bValid = false;
 
@@ -2865,7 +2866,7 @@ bool LanguageTag::isValidBcp47( const OUString& rString, 
OUString* o_pCanonicali
         if (pTag)
         {
             bValid = true;
-            if (bDisallowPrivate)
+            if (ePrivateUse != PrivateUse::ALLOW)
             {
                 const lt_string_t* pPrivate = lt_tag_get_privateuse( 
aVar.mpLangtag);
                 if (pPrivate && lt_string_length( pPrivate) > 0)
diff --git a/include/i18nlangtag/languagetag.hxx 
b/include/i18nlangtag/languagetag.hxx
index 3b5fb3d6d445..5b9a43c05d81 100644
--- a/include/i18nlangtag/languagetag.hxx
+++ b/include/i18nlangtag/languagetag.hxx
@@ -515,6 +515,13 @@ public:
      */
     static LanguageType convertToLanguageTypeWithFallback( const 
css::lang::Locale& rLocale );
 
+    /** Enums to be used with isValidBcp47(). */
+    enum PrivateUse
+    {
+        ALLOW = 0,
+        DISALLOW
+    };
+
     /** If rString represents a valid BCP 47 language tag.
 
         Never resolves an empty tag to the system locale, in fact an empty
@@ -527,13 +534,13 @@ public:
                 original string even if that was a valid tag. If rString is not
                 a valid tag, nothing is assigned.
 
-        @param  bDisallowPrivate
-                If TRUE, valid tags according to BCP 47 but reserved for
-                private use, like 'x-...', are not allowed and FALSE is
-                returned in this case.
+        @param  ePrivateUse
+                If PrivateUse::DISALLOW, valid tags according to BCP 47 but
+                reserved for private use, like 'x-...', are not allowed and
+                FALSE is returned in this case.
      */
     static bool         isValidBcp47( const OUString& rString, OUString* 
o_pCanonicalized,
-                                      bool bDisallowPrivate = false );
+                                      PrivateUse ePrivateUse = 
PrivateUse::ALLOW );
 
     /** If nLang is a generated on-the-fly LangID */
     static bool         isOnTheFlyID( LanguageType nLang );
diff --git a/svx/source/dialog/langbox.cxx b/svx/source/dialog/langbox.cxx
index 43d123b1ebc9..ead5f11404a8 100644
--- a/svx/source/dialog/langbox.cxx
+++ b/svx/source/dialog/langbox.cxx
@@ -430,7 +430,7 @@ IMPL_LINK(SvxLanguageBox, ChangeHdl, weld::ComboBox&, 
rControl, void)
             else
             {
                 OUString aCanonicalized;
-                bool bValid = LanguageTag::isValidBcp47( aStr, 
&aCanonicalized, true);
+                bool bValid = LanguageTag::isValidBcp47( aStr, 
&aCanonicalized, LanguageTag::PrivateUse::DISALLOW);
                 m_eEditedAndValid = (bValid ? EditedAndValid::Valid : 
EditedAndValid::Invalid);
                 if (bValid && aCanonicalized != aStr)
                 {

Reply via email to