[libcalamares] Add the first locale-data C++ infra

- Lookup country data based on enum or 2-letter code
 - No data yet, so return only stubs
 - The (generated) data tables are not listed as sources because
   they are #include'd by the API implementation; they're full of
   otherwise-unused static tables, so don't make sense to compile
   separately.
 - While here, tidy up the CMakeLists a bit to reduce the number
   of superfluous variables.
This commit is contained in:
Adriaan de Groot 2019-05-10 12:45:54 +02:00
parent 07a9052fca
commit 529d93c58f
3 changed files with 111 additions and 5 deletions

View File

@ -21,11 +21,14 @@ set( libSources
JobQueue.cpp
ProcessJob.cpp
Settings.cpp
)
set( partSources
# Locale-data service
locale/Lookup.cpp
# Partition service
partition/PartitionSize.cpp
)
set( utilsSources
# Utility service
utils/CalamaresUtilsSystem.cpp
utils/CommandList.cpp
utils/Dirs.cpp
@ -75,7 +78,7 @@ if( WITH_PYTHON )
)
endif()
add_library( calamares SHARED ${libSources} ${kdsagSources} ${partSources} ${utilsSources} )
add_library( calamares SHARED ${libSources} ${kdsagSources} )
set_target_properties( calamares
PROPERTIES
VERSION ${CALAMARES_VERSION_SHORT}

View File

@ -0,0 +1,51 @@
/* === This file is part of Calamares - <https://github.com/calamares> ===
*
* Copyright 2019, Adriaan de Groot <groot@kde.org>
*
* Calamares is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Calamares is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Calamares. If not, see <http://www.gnu.org/licenses/>.
*/
#include "Lookup.h"
// No data yet
namespace Calamares
{
QLocale::Country countryForCode(const QString& code)
{
return QLocale::Country::AnyCountry;
}
QLocale countryLocale(const QString& code)
{
return QLocale();
}
QLocale::Language languageForCountry(const QString& code)
{
return QLocale::Language::AnyLanguage;
}
QLocale::Language languageForCountry(QLocale::Country country)
{
return QLocale::Language::AnyLanguage;
}
QPair<QLocale::Country, QLocale::Language> countryData(const QString& code)
{
return qMakePair( QLocale::Country::AnyCountry, QLocale::Language::AnyLanguage );
}
} // namespace

View File

@ -0,0 +1,52 @@
/* === This file is part of Calamares - <https://github.com/calamares> ===
*
* Copyright 2019, Adriaan de Groot <groot@kde.org>
*
* Calamares is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Calamares is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Calamares. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef LOCALE_LOOKUP_H
#define LOCALE_LOOKUP_H
#include "DllMacro.h"
#include <QLocale>
#include <QPair>
namespace Calamares
{
/* All the functions in this file do lookups of locale data
* based on CLDR tables; these are lookups that you can't (easily)
* do with just QLocale (e.g. from 2-letter country code to a likely
* locale).
*/
/// @brief Map a 2-letter code to a Country, or AnyCountry if not found
DLLEXPORT QLocale::Country countryForCode( const QString& code );
/** @brief Map a Country to a Language, or AnyLanguage if not found
*
* This is a *likely* language for the given country, based on the
* CLDR tables. For instance, this maps Belgium to Dutch.
*/
DLLEXPORT QLocale::Language languageForCountry( QLocale::Country country );
/// @brief Map a 2-letter code to a Language, or AnyLanguage if not found
DLLEXPORT QLocale::Language languageForCountry( const QString& code );
/// @brief Get both Country and Language for a 2-letter code
DLLEXPORT QPair< QLocale::Country, QLocale::Language > countryData( const QString& code );
/// @brief Get a likely locale for a 2-letter country code
DLLEXPORT QLocale countryLocale( const QString& code );
} // namespace
#endif