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) {