Merge branch 'work/qt6-i18n' into calamares
This commit is contained in:
commit
bf7983dac8
@ -20,19 +20,21 @@
|
|||||||
# SKIP_MODULES : a space or semicolon-separated list of directory names
|
# SKIP_MODULES : a space or semicolon-separated list of directory names
|
||||||
# under src/modules that should not be built.
|
# under src/modules that should not be built.
|
||||||
# USE_<foo> : fills in SKIP_MODULES for modules called <foo>-<something>.
|
# USE_<foo> : fills in SKIP_MODULES for modules called <foo>-<something>.
|
||||||
# WITH_QT6 : use Qt6, rather than Qt5 (default to OFF).
|
|
||||||
# WITH_<foo> : try to enable <foo> (these usually default to ON). For
|
# WITH_<foo> : try to enable <foo> (these usually default to ON). For
|
||||||
# a list of WITH_<foo> grep CMakeCache.txt after running
|
# a list of WITH_<foo> grep CMakeCache.txt after running
|
||||||
# CMake once. These affect the ABI offered by Calamares.
|
# CMake once. These affect the ABI offered by Calamares.
|
||||||
# - PYTHON (enable Python Job modules)
|
# - PYTHON (enable Python Job modules)
|
||||||
# - QML (enable QML UI View modules)
|
# - QML (enable QML UI View modules)
|
||||||
|
# - QT6 (use Qt6 rather than Qt5, default to OFF)
|
||||||
# The WITH_* options affect the ABI of Calamares: you must
|
# The WITH_* options affect the ABI of Calamares: you must
|
||||||
# build (C++) modules for Calamares with the same WITH_*
|
# build (C++) modules for Calamares with the same WITH_*
|
||||||
# settings, or they may not load at all.
|
# settings, or they may not load at all.
|
||||||
# BUILD_<foo> : choose additional things to build
|
# BUILD_<foo> : choose additional things to build
|
||||||
# - TESTING (standard CMake option)
|
# - APPDATA (use AppData in packagechooser, requires QtXml)
|
||||||
# - SCHEMA_TESTING (requires Python, see ci/configvalidator.py)
|
# - APPSTREAM (use AppStream in packagechooser, requires libappstream-qt)
|
||||||
# - BUILD_CRASH_REPORTING (uses KCrash, rather than Calamares internal, for crash reporting)
|
# - BUILD_CRASH_REPORTING (uses KCrash, rather than Calamares internal, for crash reporting)
|
||||||
|
# - SCHEMA_TESTING (requires Python, see ci/configvalidator.py)
|
||||||
|
# - TESTING (standard CMake option)
|
||||||
# DEBUG_<foo> : special developer flags for debugging.
|
# DEBUG_<foo> : special developer flags for debugging.
|
||||||
#
|
#
|
||||||
# Example usage:
|
# Example usage:
|
||||||
@ -177,8 +179,8 @@ else()
|
|||||||
set(qtname "Qt5")
|
set(qtname "Qt5")
|
||||||
set(kfname "KF5")
|
set(kfname "KF5")
|
||||||
set(QT_VERSION 5.15.0)
|
set(QT_VERSION 5.15.0)
|
||||||
set(ECM_VERSION 5.100)
|
set(ECM_VERSION 5.78)
|
||||||
set(KF_VERSION 5.100)
|
set(KF_VERSION 5.78)
|
||||||
# API that was deprecated before Qt 5.15 causes a compile error
|
# API that was deprecated before Qt 5.15 causes a compile error
|
||||||
add_compile_definitions(QT_DISABLE_DEPRECATED_BEFORE=0x050f00)
|
add_compile_definitions(QT_DISABLE_DEPRECATED_BEFORE=0x050f00)
|
||||||
endif()
|
endif()
|
||||||
|
@ -100,3 +100,58 @@ function( install_calamares_gettext_translations )
|
|||||||
endif()
|
endif()
|
||||||
endforeach()
|
endforeach()
|
||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
|
set(_calamares_qrc_translations_qrc_source ${CMAKE_CURRENT_LIST_DIR}/i18n.qrc.in) # Needs to be set outside of function
|
||||||
|
function(calamares_qrc_translations basename)
|
||||||
|
set(options "")
|
||||||
|
set(oneValueArgs SUBDIRECTORY OUTPUT_VARIABLE)
|
||||||
|
set(multiValueArgs PREFIXES LANGUAGES)
|
||||||
|
cmake_parse_arguments(_qrt "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
|
||||||
|
|
||||||
|
if(NOT _qrt_OUTPUT_VARIABLE)
|
||||||
|
message(FATAL_ERROR "No output variable")
|
||||||
|
endif()
|
||||||
|
if(NOT _qrt_PREFIXES)
|
||||||
|
set(_qrt_PREFIXES "${basename}")
|
||||||
|
endif()
|
||||||
|
if(NOT _qrt_LANGUAGES)
|
||||||
|
set(_qrt_LANGUAGES ${CALAMARES_TRANSLATION_LANGUAGES})
|
||||||
|
endif()
|
||||||
|
if(NOT _qrt_SUBDIRECTORY)
|
||||||
|
set(_qrt_SUBDIRECTORY "")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set(translations_qrc_infile ${CMAKE_CURRENT_BINARY_DIR}/${basename}.qrc)
|
||||||
|
set(translations_qrc_outfile ${CMAKE_CURRENT_BINARY_DIR}/qrc_${basename}.cxx)
|
||||||
|
|
||||||
|
# Must use this variable name because of the @ substitution
|
||||||
|
set(calamares_i18n_qrc_content "")
|
||||||
|
set(calamares_i18n_ts_filelist "")
|
||||||
|
foreach(lang ${_qrt_LANGUAGES})
|
||||||
|
foreach(tlsource ${_qrt_PREFIXES})
|
||||||
|
if(EXISTS "${CMAKE_SOURCE_DIR}/{$_qrt_SUBDIRECTORY}/${tlsource}_${lang}.ts")
|
||||||
|
string(APPEND calamares_i18n_qrc_content "<file>${tlsource}_${lang}.qm</file>\n")
|
||||||
|
list(APPEND calamares_i18n_ts_filelist "${CMAKE_SOURCE_DIR}/${_qrt_SUBDIRECTORY}/${tlsource}_${lang}.ts")
|
||||||
|
endif()
|
||||||
|
endforeach()
|
||||||
|
endforeach()
|
||||||
|
|
||||||
|
configure_file(${_calamares_qrc_translations_qrc_source} ${translations_qrc_infile} @ONLY)
|
||||||
|
qt_add_translation(QM_FILES ${calamares_i18n_ts_filelist})
|
||||||
|
|
||||||
|
# Run the resource compiler (rcc_options should already be set)
|
||||||
|
add_custom_command(
|
||||||
|
OUTPUT ${translations_qrc_outfile}
|
||||||
|
COMMAND ${qtname}::rcc
|
||||||
|
ARGS
|
||||||
|
${rcc_options}
|
||||||
|
--format-version 1
|
||||||
|
-name ${basename}
|
||||||
|
-o ${translations_qrc_outfile}
|
||||||
|
${translations_qrc_infile}
|
||||||
|
MAIN_DEPENDENCY ${translations_qrc_infile}
|
||||||
|
DEPENDS ${QM_FILES}
|
||||||
|
)
|
||||||
|
|
||||||
|
set(${_qrt_OUTPUT_VARIABLE} ${translations_qrc_outfile} PARENT_SCOPE)
|
||||||
|
endfunction()
|
||||||
|
@ -30,35 +30,9 @@ install_calamares_gettext_translations(python
|
|||||||
### TRANSLATIONS
|
### TRANSLATIONS
|
||||||
#
|
#
|
||||||
#
|
#
|
||||||
set(TS_FILES "")
|
calamares_qrc_translations(calamares-i18n
|
||||||
set(calamares_i18n_qrc_content "")
|
OUTPUT_VARIABLE translation_outfile
|
||||||
|
PREFIXES calamares tz kb
|
||||||
# calamares and qt language files
|
|
||||||
foreach(lang ${CALAMARES_TRANSLATION_LANGUAGES})
|
|
||||||
foreach(tlsource "calamares_${lang}" "tz_${lang}" "kb_${lang}")
|
|
||||||
if(EXISTS "${CMAKE_SOURCE_DIR}/lang/${tlsource}.ts")
|
|
||||||
string(APPEND calamares_i18n_qrc_content "<file>${tlsource}.qm</file>\n")
|
|
||||||
list(APPEND TS_FILES "${CMAKE_SOURCE_DIR}/lang/${tlsource}.ts")
|
|
||||||
endif()
|
|
||||||
endforeach()
|
|
||||||
endforeach()
|
|
||||||
|
|
||||||
set(trans_file calamares_i18n)
|
|
||||||
set(trans_infile ${CMAKE_CURRENT_BINARY_DIR}/${trans_file}.qrc)
|
|
||||||
set(trans_outfile ${CMAKE_CURRENT_BINARY_DIR}/calamares-i18n.cxx)
|
|
||||||
set(CALAMARES_TRANSLATIONS_SOURCE ${trans_outfile})
|
|
||||||
|
|
||||||
configure_file(${CMAKE_SOURCE_DIR}/lang/calamares_i18n.qrc.in ${trans_infile} @ONLY)
|
|
||||||
|
|
||||||
qt_add_translation(QM_FILES ${TS_FILES})
|
|
||||||
|
|
||||||
# Run the resource compiler (rcc_options should already be set)
|
|
||||||
add_custom_command(
|
|
||||||
OUTPUT ${trans_outfile}
|
|
||||||
COMMAND "${Qt5Core_RCC_EXECUTABLE}"
|
|
||||||
ARGS ${rcc_options} --format-version 1 -name ${trans_file} -o ${trans_outfile} ${trans_infile}
|
|
||||||
MAIN_DEPENDENCY ${trans_infile}
|
|
||||||
DEPENDS ${QM_FILES}
|
|
||||||
)
|
)
|
||||||
|
|
||||||
add_library(calamares-i18n OBJECT ${trans_outfile})
|
add_library(calamares-i18n OBJECT ${translation_outfile})
|
||||||
|
@ -192,55 +192,6 @@ endforeach()
|
|||||||
|
|
||||||
### TRANSLATION TESTING
|
### TRANSLATION TESTING
|
||||||
#
|
#
|
||||||
# This is a support function, used just once, to help out the localetest
|
|
||||||
function(calamares_qrc_translations basename)
|
|
||||||
set(NAME ${ARGV0})
|
|
||||||
set(options "")
|
|
||||||
set(oneValueArgs SUBDIRECTORY OUTPUT_VARIABLE)
|
|
||||||
set(multiValueArgs LANGUAGES)
|
|
||||||
cmake_parse_arguments(_qrt "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
|
|
||||||
|
|
||||||
if(NOT _qrt_OUTPUT_VARIABLE)
|
|
||||||
set(_qrt_OUTPUT_VARIABLE "qrc_translations_${basename}")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
set(translations_qrc_infile ${CMAKE_CURRENT_BINARY_DIR}/${basename}.qrc)
|
|
||||||
set(translations_qrc_outfile ${CMAKE_CURRENT_BINARY_DIR}/qrc_${basename}.cxx)
|
|
||||||
|
|
||||||
# Must use this variable name because of the @ substitution
|
|
||||||
set(calamares_i18n_qrc_content "")
|
|
||||||
set(calamares_i18n_ts_filelist "")
|
|
||||||
foreach(lang ${_qrt_LANGUAGES})
|
|
||||||
string(APPEND calamares_i18n_qrc_content "<file>${basename}_${lang}.qm</file>")
|
|
||||||
list(
|
|
||||||
APPEND
|
|
||||||
calamares_i18n_ts_filelist
|
|
||||||
"${CMAKE_CURRENT_SOURCE_DIR}/${_qrt_SUBDIRECTORY}/${basename}_${lang}.ts"
|
|
||||||
)
|
|
||||||
endforeach()
|
|
||||||
|
|
||||||
configure_file(${CMAKE_SOURCE_DIR}/lang/calamares_i18n.qrc.in ${translations_qrc_infile} @ONLY)
|
|
||||||
qt_add_translation(QM_FILES ${calamares_i18n_ts_filelist})
|
|
||||||
|
|
||||||
# Run the resource compiler (rcc_options should already be set)
|
|
||||||
add_custom_command(
|
|
||||||
OUTPUT ${translations_qrc_outfile}
|
|
||||||
COMMAND "${Qt5Core_RCC_EXECUTABLE}"
|
|
||||||
ARGS
|
|
||||||
${rcc_options}
|
|
||||||
--format-version
|
|
||||||
1
|
|
||||||
-name
|
|
||||||
${basename}
|
|
||||||
-o
|
|
||||||
${translations_qrc_outfile}
|
|
||||||
${translations_qrc_infile}
|
|
||||||
MAIN_DEPENDENCY ${translations_qrc_infile}
|
|
||||||
DEPENDS ${QM_FILES}
|
|
||||||
)
|
|
||||||
|
|
||||||
set(${_qrt_OUTPUT_VARIABLE} ${translations_qrc_outfile} PARENT_SCOPE)
|
|
||||||
endfunction()
|
|
||||||
|
|
||||||
calamares_qrc_translations( localetest OUTPUT_VARIABLE localetest_qrc SUBDIRECTORY testdata LANGUAGES nl )
|
calamares_qrc_translations( localetest OUTPUT_VARIABLE localetest_qrc SUBDIRECTORY testdata LANGUAGES nl )
|
||||||
|
|
||||||
|
@ -33,11 +33,9 @@ variantToPyObject( const QVariant& variant )
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if QT_VERSION < QT_VERSION_CHECK( 6, 0, 0 )
|
#if QT_VERSION < QT_VERSION_CHECK( 6, 0, 0 )
|
||||||
const auto HashVariantType = QVariant::Hash;
|
|
||||||
const auto IntVariantType = QVariant::Int;
|
const auto IntVariantType = QVariant::Int;
|
||||||
const auto UIntVariantType = QVariant::UInt;
|
const auto UIntVariantType = QVariant::UInt;
|
||||||
#else
|
#else
|
||||||
const auto HashVariantType = QMetaType::Type::QVariantHash;
|
|
||||||
const auto IntVariantType = QMetaType::Type::Int;
|
const auto IntVariantType = QMetaType::Type::Int;
|
||||||
const auto UIntVariantType = QMetaType::Type::UInt;
|
const auto UIntVariantType = QMetaType::Type::UInt;
|
||||||
#endif
|
#endif
|
||||||
@ -47,7 +45,7 @@ variantToPyObject( const QVariant& variant )
|
|||||||
case Calamares::MapVariantType:
|
case Calamares::MapVariantType:
|
||||||
return variantMapToPyDict( variant.toMap() );
|
return variantMapToPyDict( variant.toMap() );
|
||||||
|
|
||||||
case HashVariantType:
|
case Calamares::HashVariantType:
|
||||||
return variantHashToPyDict( variant.toHash() );
|
return variantHashToPyDict( variant.toHash() );
|
||||||
|
|
||||||
case Calamares::ListVariantType:
|
case Calamares::ListVariantType:
|
||||||
|
@ -19,6 +19,7 @@ namespace Calamares
|
|||||||
const auto typeOf = []( const QVariant& v ) { return v.type(); };
|
const auto typeOf = []( const QVariant& v ) { return v.type(); };
|
||||||
const auto ListVariantType = QVariant::List;
|
const auto ListVariantType = QVariant::List;
|
||||||
const auto MapVariantType = QVariant::Map;
|
const auto MapVariantType = QVariant::Map;
|
||||||
|
const auto HashVariantType = QVariant::Hash;
|
||||||
const auto StringVariantType = QVariant::String;
|
const auto StringVariantType = QVariant::String;
|
||||||
const auto CharVariantType = QVariant::Char;
|
const auto CharVariantType = QVariant::Char;
|
||||||
const auto StringListVariantType = QVariant::StringList;
|
const auto StringListVariantType = QVariant::StringList;
|
||||||
@ -31,6 +32,7 @@ const auto DoubleVariantType = QVariant::Double;
|
|||||||
const auto typeOf = []( const QVariant& v ) { return v.typeId(); };
|
const auto typeOf = []( const QVariant& v ) { return v.typeId(); };
|
||||||
const auto ListVariantType = QMetaType::Type::QVariantList;
|
const auto ListVariantType = QMetaType::Type::QVariantList;
|
||||||
const auto MapVariantType = QMetaType::Type::QVariantMap;
|
const auto MapVariantType = QMetaType::Type::QVariantMap;
|
||||||
|
const auto HashVariantType = QMetaType::Type::QVariantHash;
|
||||||
const auto StringVariantType = QMetaType::Type::QString;
|
const auto StringVariantType = QMetaType::Type::QString;
|
||||||
const auto CharVariantType = QMetaType::Type::Char;
|
const auto CharVariantType = QMetaType::Type::Char;
|
||||||
const auto StringListVariantType = QMetaType::Type::QStringList;
|
const auto StringListVariantType = QMetaType::Type::QStringList;
|
||||||
|
@ -21,10 +21,6 @@ string(REPLACE " " ";" SKIP_LIST "${SKIP_MODULES}")
|
|||||||
file(GLOB SUBDIRECTORIES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "*")
|
file(GLOB SUBDIRECTORIES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "*")
|
||||||
list(SORT SUBDIRECTORIES)
|
list(SORT SUBDIRECTORIES)
|
||||||
|
|
||||||
if(WITH_QT6) # TODO: Qt6
|
|
||||||
set(SUBDIRECTORIES finished finishedq welcome welcomeq)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
foreach(SUBDIRECTORY ${SUBDIRECTORIES})
|
foreach(SUBDIRECTORY ${SUBDIRECTORIES})
|
||||||
calamares_add_module_subdirectory( ${SUBDIRECTORY} LIST_SKIPPED_MODULES )
|
calamares_add_module_subdirectory( ${SUBDIRECTORY} LIST_SKIPPED_MODULES )
|
||||||
endforeach()
|
endforeach()
|
||||||
|
@ -15,6 +15,7 @@
|
|||||||
#include "GlobalStorage.h"
|
#include "GlobalStorage.h"
|
||||||
#include "JobQueue.h"
|
#include "JobQueue.h"
|
||||||
|
|
||||||
|
#include "compat/Variant.h"
|
||||||
#include "utils/CommandList.h"
|
#include "utils/CommandList.h"
|
||||||
#include "utils/Logger.h"
|
#include "utils/Logger.h"
|
||||||
#include "utils/Variant.h"
|
#include "utils/Variant.h"
|
||||||
@ -62,7 +63,7 @@ ContextualProcessBinding::run( const QString& value ) const
|
|||||||
static bool
|
static bool
|
||||||
fetch( QString& value, QStringList& selector, int index, const QVariant& v )
|
fetch( QString& value, QStringList& selector, int index, const QVariant& v )
|
||||||
{
|
{
|
||||||
if ( !v.canConvert( QMetaType::QVariantMap ) )
|
if ( !v.canConvert< QVariantMap >() )
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -163,7 +164,7 @@ ContextualProcessJob::setConfigurationMap( const QVariantMap& configurationMap )
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( iter.value().type() != QVariant::Map )
|
if ( Calamares::typeOf( iter.value() ) != Calamares::MapVariantType )
|
||||||
{
|
{
|
||||||
cWarning() << moduleInstanceKey() << "bad configuration values for" << variableName;
|
cWarning() << moduleInstanceKey() << "bad configuration values for" << variableName;
|
||||||
continue;
|
continue;
|
||||||
|
@ -18,6 +18,7 @@
|
|||||||
#include "GlobalStorage.h"
|
#include "GlobalStorage.h"
|
||||||
#include "JobQueue.h"
|
#include "JobQueue.h"
|
||||||
|
|
||||||
|
#include "compat/Variant.h"
|
||||||
#include "utils/CalamaresUtilsSystem.h"
|
#include "utils/CalamaresUtilsSystem.h"
|
||||||
#include "utils/Logger.h"
|
#include "utils/Logger.h"
|
||||||
|
|
||||||
@ -45,15 +46,16 @@ static QString variantHashToString( const QVariantHash& variantHash );
|
|||||||
static QString
|
static QString
|
||||||
variantToString( const QVariant& variant )
|
variantToString( const QVariant& variant )
|
||||||
{
|
{
|
||||||
if ( variant.type() == QVariant::Map )
|
if ( Calamares::typeOf( variant ) == Calamares::MapVariantType )
|
||||||
{
|
{
|
||||||
return variantMapToString( variant.toMap() );
|
return variantMapToString( variant.toMap() );
|
||||||
}
|
}
|
||||||
else if ( variant.type() == QVariant::Hash )
|
else if ( Calamares::typeOf( variant ) == Calamares::HashVariantType )
|
||||||
{
|
{
|
||||||
return variantHashToString( variant.toHash() );
|
return variantHashToString( variant.toHash() );
|
||||||
}
|
}
|
||||||
else if ( ( variant.type() == QVariant::List ) || ( variant.type() == QVariant::StringList ) )
|
else if ( ( Calamares::typeOf( variant ) == Calamares::ListVariantType )
|
||||||
|
|| ( Calamares::typeOf( variant ) == Calamares::StringListVariantType ) )
|
||||||
{
|
{
|
||||||
return variantListToString( variant.toList() );
|
return variantListToString( variant.toList() );
|
||||||
}
|
}
|
||||||
|
@ -32,9 +32,7 @@ calamares_add_plugin(hostinfo
|
|||||||
NO_CONFIG
|
NO_CONFIG
|
||||||
)
|
)
|
||||||
|
|
||||||
if(KF5CoreAddons_FOUND AND KF5CoreAddons_VERSION VERSION_GREATER_EQUAL 5.58)
|
target_compile_definitions(calamares_job_hostinfo PRIVATE WITH_KOSRelease)
|
||||||
target_compile_definitions(calamares_job_hostinfo PRIVATE WITH_KOSRelease)
|
target_link_libraries(calamares_job_hostinfo PRIVATE ${kfname}::CoreAddons)
|
||||||
target_link_libraries(calamares_job_hostinfo PRIVATE KF5::CoreAddons)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
calamares_add_test(hostinfotest SOURCES Tests.cpp HostInfoJob.cpp LIBRARIES yamlcpp::yamlcpp)
|
calamares_add_test(hostinfotest SOURCES Tests.cpp HostInfoJob.cpp LIBRARIES yamlcpp::yamlcpp)
|
||||||
|
@ -3,6 +3,11 @@
|
|||||||
# SPDX-FileCopyrightText: 2020 Adriaan de Groot <groot@kde.org>
|
# SPDX-FileCopyrightText: 2020 Adriaan de Groot <groot@kde.org>
|
||||||
# SPDX-License-Identifier: BSD-2-Clause
|
# SPDX-License-Identifier: BSD-2-Clause
|
||||||
#
|
#
|
||||||
|
if(WITH_QT6)
|
||||||
|
calamares_skip_module( "interactiveterminal (KDE Frameworks 5 only)" )
|
||||||
|
return()
|
||||||
|
endif()
|
||||||
|
|
||||||
find_package(ECM ${ECM_VERSION} REQUIRED NO_MODULE)
|
find_package(ECM ${ECM_VERSION} REQUIRED NO_MODULE)
|
||||||
|
|
||||||
set(kf5_ver 5.41)
|
set(kf5_ver 5.41)
|
||||||
|
@ -21,7 +21,7 @@ calamares_add_plugin(keyboard
|
|||||||
keyboard.qrc
|
keyboard.qrc
|
||||||
SHARED_LIB
|
SHARED_LIB
|
||||||
LINK_LIBRARIES
|
LINK_LIBRARIES
|
||||||
Qt5::DBus
|
${qtname}::DBus
|
||||||
)
|
)
|
||||||
|
|
||||||
calamares_add_test(keyboardtest SOURCES Tests.cpp SetKeyboardLayoutJob.cpp RESOURCES keyboard.qrc)
|
calamares_add_test(keyboardtest SOURCES Tests.cpp SetKeyboardLayoutJob.cpp RESOURCES keyboard.qrc)
|
||||||
|
@ -23,8 +23,10 @@
|
|||||||
#include "utils/Variant.h"
|
#include "utils/Variant.h"
|
||||||
|
|
||||||
#include <QApplication>
|
#include <QApplication>
|
||||||
|
#include <QFile>
|
||||||
#include <QGuiApplication>
|
#include <QGuiApplication>
|
||||||
#include <QProcess>
|
#include <QProcess>
|
||||||
|
#include <QRegularExpression>
|
||||||
#include <QTimer>
|
#include <QTimer>
|
||||||
|
|
||||||
#include <QDBusConnection>
|
#include <QDBusConnection>
|
||||||
@ -113,7 +115,7 @@ xkbmap_query_grp_option()
|
|||||||
}
|
}
|
||||||
|
|
||||||
//it's either in the end of line or before the other option so \s or ,
|
//it's either in the end of line or before the other option so \s or ,
|
||||||
int lastIndex = outputLine.indexOf( QRegExp( "[\\s,]" ), index );
|
int lastIndex = outputLine.indexOf( QRegularExpression( "[\\s,]" ), index );
|
||||||
|
|
||||||
return outputLine.mid( index, lastIndex - index );
|
return outputLine.mid( index, lastIndex - index );
|
||||||
}
|
}
|
||||||
@ -349,7 +351,9 @@ Config::getCurrentKeyboardLayoutXkb( QString& currentLayout, QString& currentVar
|
|||||||
symbols = true;
|
symbols = true;
|
||||||
}
|
}
|
||||||
else if ( !line.trimmed().startsWith( "xkb_geometry" ) )
|
else if ( !line.trimmed().startsWith( "xkb_geometry" ) )
|
||||||
|
{
|
||||||
continue;
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
int firstQuote = line.indexOf( '"' );
|
int firstQuote = line.indexOf( '"' );
|
||||||
int lastQuote = line.lastIndexOf( '"' );
|
int lastQuote = line.lastIndexOf( '"' );
|
||||||
|
@ -19,6 +19,10 @@
|
|||||||
|
|
||||||
#include "utils/Logger.h"
|
#include "utils/Logger.h"
|
||||||
|
|
||||||
|
#include <QByteArray>
|
||||||
|
#include <QFile>
|
||||||
|
#include <QRegularExpression>
|
||||||
|
|
||||||
#ifdef Q_OS_FREEBSD
|
#ifdef Q_OS_FREEBSD
|
||||||
static const char XKB_FILE[] = "/usr/local/share/X11/xkb/rules/base.lst";
|
static const char XKB_FILE[] = "/usr/local/share/X11/xkb/rules/base.lst";
|
||||||
#else
|
#else
|
||||||
@ -75,16 +79,22 @@ parseKeyboardModels( const char* filepath )
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
// here we are in the model section, otherwise we would continue or break
|
// Here we are in the model section, otherwise we would continue or break.
|
||||||
QRegExp rx;
|
// Sample model lines:
|
||||||
rx.setPattern( "^\\s+(\\S+)\\s+(\\w.*)\n$" );
|
//
|
||||||
|
// ! model
|
||||||
|
// pc86 Generic 86-key PC
|
||||||
|
// pc101 Generic 101-key PC
|
||||||
|
//
|
||||||
|
QRegularExpression rx( "^\\s+(\\S+)\\s+(\\w.*)\n$" );
|
||||||
|
QRegularExpressionMatch m;
|
||||||
|
|
||||||
// insert into the model map
|
// insert into the model map
|
||||||
if ( rx.indexIn( line ) != -1 )
|
if ( QString( line ).indexOf( rx, 0, &m ) != -1 )
|
||||||
{
|
{
|
||||||
QString modelDesc = rx.cap( 2 );
|
const QString modelDescription = m.captured( 2 );
|
||||||
QString model = rx.cap( 1 );
|
const QString model = m.captured( 1 );
|
||||||
models.insert( modelDesc, model );
|
models.insert( modelDescription, model );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -119,16 +129,21 @@ parseKeyboardLayouts( const char* filepath )
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
QRegExp rx;
|
// Sample layout lines:
|
||||||
rx.setPattern( "^\\s+(\\S+)\\s+(\\w.*)\n$" );
|
//
|
||||||
|
// ! layout
|
||||||
|
// us English (US)
|
||||||
|
// af Afghani
|
||||||
|
QRegularExpression rx( "^\\s+(\\S+)\\s+(\\w.*)\n$" );
|
||||||
|
QRegularExpressionMatch m;
|
||||||
|
|
||||||
// insert into the layout map
|
// insert into the layout map
|
||||||
if ( rx.indexIn( line ) != -1 )
|
if ( QString( line ).indexOf( rx, 0, &m ) != -1 )
|
||||||
{
|
{
|
||||||
KeyboardGlobal::KeyboardInfo info;
|
KeyboardGlobal::KeyboardInfo info;
|
||||||
info.description = rx.cap( 2 );
|
info.description = m.captured( 2 );
|
||||||
info.variants.insert( QObject::tr( "Default" ), "" );
|
info.variants.insert( QObject::tr( "Default" ), "" );
|
||||||
layouts.insert( rx.cap( 1 ), info );
|
layouts.insert( m.captured( 1 ), info );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -148,25 +163,35 @@ parseKeyboardLayouts( const char* filepath )
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
QRegExp rx;
|
// Sample variant lines:
|
||||||
rx.setPattern( "^\\s+(\\S+)\\s+(\\S+): (\\w.*)\n$" );
|
//
|
||||||
|
// ! variant
|
||||||
|
// chr us: Cherokee
|
||||||
|
// haw us: Hawaiian
|
||||||
|
// ps af: Pashto
|
||||||
|
// uz af: Uzbek (Afghanistan)
|
||||||
|
QRegularExpression rx( "^\\s+(\\S+)\\s+(\\S+): (\\w.*)\n$" );
|
||||||
|
QRegularExpressionMatch m;
|
||||||
|
|
||||||
// insert into the variants multimap, if the pattern matches
|
// insert into the variants multimap, if the pattern matches
|
||||||
if ( rx.indexIn( line ) != -1 )
|
if ( QString( line ).indexOf( rx, 0, &m ) != -1 )
|
||||||
{
|
{
|
||||||
if ( layouts.find( rx.cap( 2 ) ) != layouts.end() )
|
const QString variantKey = m.captured( 1 );
|
||||||
|
const QString baseLayout = m.captured( 2 );
|
||||||
|
const QString description = m.captured( 3 );
|
||||||
|
if ( layouts.find( baseLayout ) != layouts.end() )
|
||||||
{
|
{
|
||||||
// in this case we found an entry in the multimap, and add the values to the multimap
|
// in this case we found an entry in the multimap, and add the values to the multimap
|
||||||
layouts.find( rx.cap( 2 ) ).value().variants.insert( rx.cap( 3 ), rx.cap( 1 ) );
|
layouts.find( baseLayout ).value().variants.insert( description, variantKey );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// create a new map in the multimap - the value was not found.
|
// create a new map in the multimap - the value was not found.
|
||||||
KeyboardGlobal::KeyboardInfo info;
|
KeyboardGlobal::KeyboardInfo info;
|
||||||
info.description = rx.cap( 2 );
|
info.description = baseLayout;
|
||||||
info.variants.insert( QObject::tr( "Default" ), "" );
|
info.variants.insert( QObject::tr( "Default" ), "" );
|
||||||
info.variants.insert( rx.cap( 3 ), rx.cap( 1 ) );
|
info.variants.insert( description, variantKey );
|
||||||
layouts.insert( rx.cap( 2 ), info );
|
layouts.insert( baseLayout, info );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -16,16 +16,8 @@
|
|||||||
#ifndef KEYBOARDGLOBAL_H
|
#ifndef KEYBOARDGLOBAL_H
|
||||||
#define KEYBOARDGLOBAL_H
|
#define KEYBOARDGLOBAL_H
|
||||||
|
|
||||||
#include <QDebug>
|
|
||||||
#include <QDir>
|
|
||||||
#include <QFile>
|
|
||||||
#include <QHash>
|
|
||||||
#include <QList>
|
|
||||||
#include <QMap>
|
#include <QMap>
|
||||||
#include <QRegExp>
|
|
||||||
#include <QString>
|
#include <QString>
|
||||||
#include <QStringList>
|
|
||||||
#include <QTextStream>
|
|
||||||
|
|
||||||
class KeyboardGlobal
|
class KeyboardGlobal
|
||||||
{
|
{
|
||||||
|
@ -8,7 +8,7 @@ if(NOT WITH_QML)
|
|||||||
return()
|
return()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
find_package(Qt5 ${QT_VERSION} CONFIG REQUIRED Core DBus)
|
find_package(${qtname} ${QT_VERSION} CONFIG REQUIRED Core DBus)
|
||||||
|
|
||||||
set(_keyboard ${CMAKE_CURRENT_SOURCE_DIR}/../keyboard)
|
set(_keyboard ${CMAKE_CURRENT_SOURCE_DIR}/../keyboard)
|
||||||
|
|
||||||
@ -27,5 +27,5 @@ calamares_add_plugin(keyboardq
|
|||||||
keyboardq.qrc
|
keyboardq.qrc
|
||||||
SHARED_LIB
|
SHARED_LIB
|
||||||
LINK_LIBRARIES
|
LINK_LIBRARIES
|
||||||
Qt5::DBus
|
${qtname}::DBus
|
||||||
)
|
)
|
||||||
|
@ -13,6 +13,8 @@
|
|||||||
#include "GlobalStorage.h"
|
#include "GlobalStorage.h"
|
||||||
#include "JobQueue.h"
|
#include "JobQueue.h"
|
||||||
#include "LicensePage.h"
|
#include "LicensePage.h"
|
||||||
|
|
||||||
|
#include "compat/Variant.h"
|
||||||
#include "utils/Logger.h"
|
#include "utils/Logger.h"
|
||||||
|
|
||||||
#include <QVariantMap>
|
#include <QVariantMap>
|
||||||
@ -89,12 +91,13 @@ void
|
|||||||
LicenseViewStep::setConfigurationMap( const QVariantMap& configurationMap )
|
LicenseViewStep::setConfigurationMap( const QVariantMap& configurationMap )
|
||||||
{
|
{
|
||||||
QList< LicenseEntry > entriesList;
|
QList< LicenseEntry > entriesList;
|
||||||
if ( configurationMap.contains( "entries" ) && configurationMap.value( "entries" ).type() == QVariant::List )
|
if ( configurationMap.contains( "entries" )
|
||||||
|
&& Calamares::typeOf( configurationMap.value( "entries" ) ) == Calamares::ListVariantType )
|
||||||
{
|
{
|
||||||
const auto entries = configurationMap.value( "entries" ).toList();
|
const auto entries = configurationMap.value( "entries" ).toList();
|
||||||
for ( const QVariant& entryV : entries )
|
for ( const QVariant& entryV : entries )
|
||||||
{
|
{
|
||||||
if ( entryV.type() != QVariant::Map )
|
if ( Calamares::typeOf( entryV ) != Calamares::MapVariantType )
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
@ -18,7 +18,6 @@ calamares_add_plugin(locale
|
|||||||
TYPE viewmodule
|
TYPE viewmodule
|
||||||
EXPORT_MACRO PLUGINDLLEXPORT_PRO
|
EXPORT_MACRO PLUGINDLLEXPORT_PRO
|
||||||
SOURCES
|
SOURCES
|
||||||
${geoip_src}
|
|
||||||
Config.cpp
|
Config.cpp
|
||||||
LCLocaleDialog.cpp
|
LCLocaleDialog.cpp
|
||||||
LocaleConfiguration.cpp
|
LocaleConfiguration.cpp
|
||||||
@ -32,8 +31,7 @@ calamares_add_plugin(locale
|
|||||||
RESOURCES
|
RESOURCES
|
||||||
locale.qrc
|
locale.qrc
|
||||||
LINK_PRIVATE_LIBRARIES
|
LINK_PRIVATE_LIBRARIES
|
||||||
Qt5::Network
|
${qtname}::Network
|
||||||
${geoip_libs}
|
|
||||||
yamlcpp::yamlcpp
|
yamlcpp::yamlcpp
|
||||||
SHARED_LIB
|
SHARED_LIB
|
||||||
)
|
)
|
||||||
@ -48,5 +46,5 @@ calamares_add_test(
|
|||||||
SetTimezoneJob.cpp
|
SetTimezoneJob.cpp
|
||||||
timezonewidget/TimeZoneImage.cpp
|
timezonewidget/TimeZoneImage.cpp
|
||||||
DEFINITIONS SOURCE_DIR="${CMAKE_CURRENT_LIST_DIR}/images" DEBUG_TIMEZONES=1
|
DEFINITIONS SOURCE_DIR="${CMAKE_CURRENT_LIST_DIR}/images" DEBUG_TIMEZONES=1
|
||||||
LIBRARIES Qt5::Gui
|
LIBRARIES ${qtname}::Gui
|
||||||
)
|
)
|
||||||
|
@ -16,10 +16,10 @@ if(DEBUG_TIMEZONES)
|
|||||||
add_definitions(-DDEBUG_TIMEZONES)
|
add_definitions(-DDEBUG_TIMEZONES)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
find_package(Qt5Location CONFIG)
|
find_package(${qtname}Location CONFIG)
|
||||||
set_package_properties(Qt5Location PROPERTIES DESCRIPTION "Used for rendering the map" TYPE RUNTIME)
|
set_package_properties(${qtname}Location PROPERTIES DESCRIPTION "Used for rendering the map" TYPE RUNTIME)
|
||||||
find_package(Qt5Positioning CONFIG)
|
find_package(${qtname}Positioning CONFIG)
|
||||||
set_package_properties(Qt5Positioning PROPERTIES DESCRIPTION "Used for GeoLocation and GeoCoding" TYPE RUNTIME)
|
set_package_properties(${qtname}Positioning PROPERTIES DESCRIPTION "Used for GeoLocation and GeoCoding" TYPE RUNTIME)
|
||||||
|
|
||||||
# Because we're sharing sources with the regular locale module
|
# Because we're sharing sources with the regular locale module
|
||||||
set(_locale ${CMAKE_CURRENT_SOURCE_DIR}/../locale)
|
set(_locale ${CMAKE_CURRENT_SOURCE_DIR}/../locale)
|
||||||
@ -38,6 +38,6 @@ calamares_add_plugin(localeq
|
|||||||
RESOURCES
|
RESOURCES
|
||||||
localeq.qrc
|
localeq.qrc
|
||||||
LINK_PRIVATE_LIBRARIES
|
LINK_PRIVATE_LIBRARIES
|
||||||
Qt5::Network
|
${qtname}::Network
|
||||||
SHARED_LIB
|
SHARED_LIB
|
||||||
)
|
)
|
||||||
|
@ -17,7 +17,7 @@ calamares_add_plugin(netinstall
|
|||||||
UI
|
UI
|
||||||
page_netinst.ui
|
page_netinst.ui
|
||||||
LINK_PRIVATE_LIBRARIES
|
LINK_PRIVATE_LIBRARIES
|
||||||
Qt5::Network
|
${qtname}::Network
|
||||||
SHARED_LIB
|
SHARED_LIB
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -25,6 +25,6 @@ if(KF5CoreAddons_FOUND)
|
|||||||
calamares_add_test(
|
calamares_add_test(
|
||||||
netinstalltest
|
netinstalltest
|
||||||
SOURCES Tests.cpp Config.cpp LoaderQueue.cpp PackageTreeItem.cpp PackageModel.cpp
|
SOURCES Tests.cpp Config.cpp LoaderQueue.cpp PackageTreeItem.cpp PackageModel.cpp
|
||||||
LIBRARIES Qt5::Gui Qt5::Network KF5::CoreAddons
|
LIBRARIES ${qtname}::Gui ${qtname}::Network KF5::CoreAddons
|
||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
|
@ -16,6 +16,7 @@
|
|||||||
|
|
||||||
#include "GlobalStorage.h"
|
#include "GlobalStorage.h"
|
||||||
#include "JobQueue.h"
|
#include "JobQueue.h"
|
||||||
|
#include "compat/Variant.h"
|
||||||
#include "network/Manager.h"
|
#include "network/Manager.h"
|
||||||
#include "packages/Globals.h"
|
#include "packages/Globals.h"
|
||||||
#include "utils/Logger.h"
|
#include "utils/Logger.h"
|
||||||
@ -137,11 +138,11 @@ Config::setConfigurationMap( const QVariantMap& configurationMap )
|
|||||||
const QString key = QStringLiteral( "groupsUrl" );
|
const QString key = QStringLiteral( "groupsUrl" );
|
||||||
const auto& groupsUrlVariant = configurationMap.value( key );
|
const auto& groupsUrlVariant = configurationMap.value( key );
|
||||||
m_queue = new LoaderQueue( this );
|
m_queue = new LoaderQueue( this );
|
||||||
if ( groupsUrlVariant.type() == QVariant::String )
|
if ( Calamares::typeOf( groupsUrlVariant ) == Calamares::StringVariantType )
|
||||||
{
|
{
|
||||||
m_queue->append( SourceItem::makeSourceItem( groupsUrlVariant.toString(), configurationMap ) );
|
m_queue->append( SourceItem::makeSourceItem( groupsUrlVariant.toString(), configurationMap ) );
|
||||||
}
|
}
|
||||||
else if ( groupsUrlVariant.type() == QVariant::List )
|
else if ( Calamares::typeOf( groupsUrlVariant ) == Calamares::ListVariantType )
|
||||||
{
|
{
|
||||||
for ( const auto& s : groupsUrlVariant.toStringList() )
|
for ( const auto& s : groupsUrlVariant.toStringList() )
|
||||||
{
|
{
|
||||||
|
@ -10,6 +10,7 @@
|
|||||||
|
|
||||||
#include "PackageModel.h"
|
#include "PackageModel.h"
|
||||||
|
|
||||||
|
#include "compat/Variant.h"
|
||||||
#include "utils/Logger.h"
|
#include "utils/Logger.h"
|
||||||
#include "utils/Variant.h"
|
#include "utils/Variant.h"
|
||||||
#include "utils/Yaml.h"
|
#include "utils/Yaml.h"
|
||||||
@ -279,7 +280,7 @@ PackageModel::setupModelData( const QVariantList& groupList, PackageTreeItem* pa
|
|||||||
{
|
{
|
||||||
for ( const auto& packageName : groupMap.value( "packages" ).toList() )
|
for ( const auto& packageName : groupMap.value( "packages" ).toList() )
|
||||||
{
|
{
|
||||||
if ( packageName.type() == QVariant::String )
|
if ( Calamares::typeOf( packageName ) == Calamares::StringVariantType )
|
||||||
{
|
{
|
||||||
item->appendChild( new PackageTreeItem( packageName.toString(), item ) );
|
item->appendChild( new PackageTreeItem( packageName.toString(), item ) );
|
||||||
}
|
}
|
||||||
@ -301,7 +302,7 @@ PackageModel::setupModelData( const QVariantList& groupList, PackageTreeItem* pa
|
|||||||
{
|
{
|
||||||
bool haveWarned = false;
|
bool haveWarned = false;
|
||||||
const auto& subgroupValue = groupMap.value( "subgroups" );
|
const auto& subgroupValue = groupMap.value( "subgroups" );
|
||||||
if ( !subgroupValue.canConvert( QVariant::List ) )
|
if ( !subgroupValue.canConvert< QVariantList >() )
|
||||||
{
|
{
|
||||||
cWarning() << "*subgroups* under" << item->name() << "is not a list.";
|
cWarning() << "*subgroups* under" << item->name() << "is not a list.";
|
||||||
haveWarned = true;
|
haveWarned = true;
|
||||||
|
@ -22,7 +22,12 @@ GroupsTreeView::drawBranches( QPainter* painter, const QRect& rect, const QModel
|
|||||||
const QString s = index.data().toString();
|
const QString s = index.data().toString();
|
||||||
if ( s.isEmpty() )
|
if ( s.isEmpty() )
|
||||||
{
|
{
|
||||||
|
#if QT_VERSION < QT_VERSION_CHECK( 6, 0, 0 )
|
||||||
QStyleOptionViewItem opt = viewOptions();
|
QStyleOptionViewItem opt = viewOptions();
|
||||||
|
#else
|
||||||
|
QStyleOptionViewItem opt;
|
||||||
|
initViewItemOption( &opt );
|
||||||
|
#endif
|
||||||
opt.state = QStyle::State_Sibling;
|
opt.state = QStyle::State_Sibling;
|
||||||
opt.rect = QRect( !isRightToLeft() ? rect.left() : rect.right() + 1, rect.top(), indentation(), rect.height() );
|
opt.rect = QRect( !isRightToLeft() ? rect.left() : rect.right() + 1, rect.top(), indentation(), rect.height() );
|
||||||
painter->eraseRect( opt.rect );
|
painter->eraseRect( opt.rect );
|
||||||
|
@ -12,6 +12,6 @@ calamares_add_plugin(oemid
|
|||||||
UI
|
UI
|
||||||
OEMPage.ui
|
OEMPage.ui
|
||||||
LINK_PRIVATE_LIBRARIES
|
LINK_PRIVATE_LIBRARIES
|
||||||
Qt5::Widgets
|
${qtname}::Widgets
|
||||||
SHARED_LIB
|
SHARED_LIB
|
||||||
)
|
)
|
||||||
|
@ -3,20 +3,19 @@
|
|||||||
# SPDX-FileCopyrightText: 2020 Adriaan de Groot <groot@kde.org>
|
# SPDX-FileCopyrightText: 2020 Adriaan de Groot <groot@kde.org>
|
||||||
# SPDX-License-Identifier: BSD-2-Clause
|
# SPDX-License-Identifier: BSD-2-Clause
|
||||||
#
|
#
|
||||||
find_package(Qt5 COMPONENTS Core Gui Widgets REQUIRED)
|
find_package(${qtname} COMPONENTS Core Gui Widgets REQUIRED)
|
||||||
set(_extra_libraries "")
|
set(_extra_libraries "")
|
||||||
set(_extra_src "")
|
set(_extra_src "")
|
||||||
|
|
||||||
### OPTIONAL AppData XML support in PackageModel
|
### OPTIONAL AppData XML support in PackageModel
|
||||||
#
|
#
|
||||||
#
|
#
|
||||||
# TODO:3.3:WITH->BUILD (this doesn't affect the ABI offered by Calamares)
|
option(BUILD_APPDATA "Support appdata: items in PackageChooser (requires QtXml)" ON)
|
||||||
option(WITH_APPDATA "Support appdata: items in PackageChooser (requires QtXml)" ON)
|
if(BUILD_APPDATA)
|
||||||
if(WITH_APPDATA)
|
find_package(${qtname} COMPONENTS Xml)
|
||||||
find_package(Qt5 COMPONENTS Xml)
|
if(TARGET ${qtname}::Xml)
|
||||||
if(Qt5Xml_FOUND)
|
|
||||||
add_definitions(-DHAVE_APPDATA)
|
add_definitions(-DHAVE_APPDATA)
|
||||||
list(APPEND _extra_libraries Qt5::Xml)
|
list(APPEND _extra_libraries ${qtname}::Xml)
|
||||||
list(APPEND _extra_src ItemAppData.cpp)
|
list(APPEND _extra_src ItemAppData.cpp)
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
@ -24,8 +23,8 @@ endif()
|
|||||||
### OPTIONAL AppStream support in PackageModel
|
### OPTIONAL AppStream support in PackageModel
|
||||||
#
|
#
|
||||||
#
|
#
|
||||||
option(WITH_APPSTREAM "Support appstream: items in PackageChooser (requires libappstream-qt)" ON)
|
option(BUILD_APPSTREAM "Support appstream: items in PackageChooser (requires libappstream-qt)" ON)
|
||||||
if(WITH_APPSTREAM)
|
if(BUILD_APPSTREAM)
|
||||||
find_package(AppStreamQt)
|
find_package(AppStreamQt)
|
||||||
set_package_properties(
|
set_package_properties(
|
||||||
AppStreamQt
|
AppStreamQt
|
||||||
|
@ -23,6 +23,7 @@
|
|||||||
|
|
||||||
#include "GlobalStorage.h"
|
#include "GlobalStorage.h"
|
||||||
#include "JobQueue.h"
|
#include "JobQueue.h"
|
||||||
|
#include "compat/Variant.h"
|
||||||
#include "packages/Globals.h"
|
#include "packages/Globals.h"
|
||||||
#include "utils/Logger.h"
|
#include "utils/Logger.h"
|
||||||
#include "utils/Variant.h"
|
#include "utils/Variant.h"
|
||||||
@ -175,7 +176,7 @@ Config::updateGlobalStorage( const QStringList& selected ) const
|
|||||||
if ( gs->contains( "netinstallSelect" ) )
|
if ( gs->contains( "netinstallSelect" ) )
|
||||||
{
|
{
|
||||||
auto selectedOrig = gs->value( "netinstallSelect" );
|
auto selectedOrig = gs->value( "netinstallSelect" );
|
||||||
if ( selectedOrig.canConvert( QVariant::StringList ) )
|
if ( selectedOrig.canConvert< QStringList >() )
|
||||||
{
|
{
|
||||||
newSelected += selectedOrig.toStringList();
|
newSelected += selectedOrig.toStringList();
|
||||||
}
|
}
|
||||||
|
@ -9,7 +9,7 @@ if(NOT WITH_QML)
|
|||||||
return()
|
return()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
find_package(Qt5 ${QT_VERSION} CONFIG REQUIRED Core)
|
find_package(${qtname} ${QT_VERSION} CONFIG REQUIRED Core)
|
||||||
|
|
||||||
# Add optional libraries here
|
# Add optional libraries here
|
||||||
set(USER_EXTRA_LIB)
|
set(USER_EXTRA_LIB)
|
||||||
@ -21,13 +21,12 @@ include_directories(${_packagechooser})
|
|||||||
### OPTIONAL AppData XML support in PackageModel
|
### OPTIONAL AppData XML support in PackageModel
|
||||||
#
|
#
|
||||||
#
|
#
|
||||||
# TODO:3.3:WITH->BUILD (this doesn't affect the ABI offered by Calamares)
|
option(BUILD_APPDATA "Support appdata: items in PackageChooser (requires QtXml)" ON)
|
||||||
option(WITH_APPDATA "Support appdata: items in PackageChooser (requires QtXml)" ON)
|
if(BUILD_APPDATA)
|
||||||
if(WITH_APPDATA)
|
find_package(${qtname} COMPONENTS Xml)
|
||||||
find_package(Qt5 COMPONENTS Xml)
|
if(TARGET ${qtname}::Xml)
|
||||||
if(Qt5Xml_FOUND)
|
|
||||||
add_definitions(-DHAVE_APPDATA)
|
add_definitions(-DHAVE_APPDATA)
|
||||||
list(APPEND _extra_libraries Qt5::Xml)
|
list(APPEND _extra_libraries ${qtname}::Xml)
|
||||||
list(APPEND _extra_src ${_packagechooser}/ItemAppData.cpp)
|
list(APPEND _extra_src ${_packagechooser}/ItemAppData.cpp)
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
@ -35,8 +34,8 @@ endif()
|
|||||||
### OPTIONAL AppStream support in PackageModel
|
### OPTIONAL AppStream support in PackageModel
|
||||||
#
|
#
|
||||||
#
|
#
|
||||||
option(WITH_APPSTREAM "Support appstream: items in PackageChooser (requires libappstream-qt)" ON)
|
option(BUILD_APPSTREAM "Support appstream: items in PackageChooser (requires libappstream-qt)" ON)
|
||||||
if(WITH_APPSTREAM)
|
if(BUILD_APPSTREAM)
|
||||||
find_package(AppStreamQt)
|
find_package(AppStreamQt)
|
||||||
set_package_properties(
|
set_package_properties(
|
||||||
AppStreamQt
|
AppStreamQt
|
||||||
|
@ -3,19 +3,20 @@
|
|||||||
# SPDX-FileCopyrightText: 2020 Adriaan de Groot <groot@kde.org>
|
# SPDX-FileCopyrightText: 2020 Adriaan de Groot <groot@kde.org>
|
||||||
# SPDX-License-Identifier: BSD-2-Clause
|
# SPDX-License-Identifier: BSD-2-Clause
|
||||||
#
|
#
|
||||||
|
if(WITH_QT6)
|
||||||
|
calamares_skip_module( "plasmalnf (KDE Frameworks 5 only)" )
|
||||||
|
return()
|
||||||
|
endif()
|
||||||
|
|
||||||
find_package(ECM ${ECM_VERSION} REQUIRED NO_MODULE)
|
find_package(ECM ${ECM_VERSION} REQUIRED NO_MODULE)
|
||||||
|
|
||||||
# Requires a sufficiently recent Plasma framework, but also
|
# Requires a sufficiently recent Plasma framework, but also
|
||||||
# needs a runtime support component (which we don't test for).
|
# needs a runtime support component (which we don't test for).
|
||||||
set(lnf_ver 5.41)
|
|
||||||
|
|
||||||
find_package(KF5Config ${lnf_ver})
|
find_package(${kfname} ${KF_VERSION} QUIET COMPONENTS Config Plasma Package)
|
||||||
|
|
||||||
set_package_properties(KF5Config PROPERTIES PURPOSE "For finding default Plasma Look-and-Feel")
|
set_package_properties(KF5Config PROPERTIES PURPOSE "For finding default Plasma Look-and-Feel")
|
||||||
|
|
||||||
find_package(KF5Plasma ${lnf_ver})
|
|
||||||
set_package_properties(KF5Plasma PROPERTIES PURPOSE "For Plasma Look-and-Feel selection")
|
set_package_properties(KF5Plasma PROPERTIES PURPOSE "For Plasma Look-and-Feel selection")
|
||||||
|
|
||||||
find_package(KF5Package ${lnf_ver})
|
|
||||||
set_package_properties(KF5Package PROPERTIES PURPOSE "For Plasma Look-and-Feel selection")
|
set_package_properties(KF5Package PROPERTIES PURPOSE "For Plasma Look-and-Feel selection")
|
||||||
|
|
||||||
if(KF5Plasma_FOUND AND KF5Package_FOUND)
|
if(KF5Plasma_FOUND AND KF5Package_FOUND)
|
||||||
@ -35,8 +36,8 @@ if(KF5Plasma_FOUND AND KF5Package_FOUND)
|
|||||||
UI
|
UI
|
||||||
page_plasmalnf.ui
|
page_plasmalnf.ui
|
||||||
LINK_PRIVATE_LIBRARIES
|
LINK_PRIVATE_LIBRARIES
|
||||||
KF5::Package
|
${kfname}::Package
|
||||||
KF5::Plasma
|
${kfname}::Plasma
|
||||||
SHARED_LIB
|
SHARED_LIB
|
||||||
)
|
)
|
||||||
if(KF5Config_FOUND)
|
if(KF5Config_FOUND)
|
||||||
|
@ -9,6 +9,7 @@
|
|||||||
|
|
||||||
#include "GlobalStorage.h"
|
#include "GlobalStorage.h"
|
||||||
#include "JobQueue.h"
|
#include "JobQueue.h"
|
||||||
|
#include "compat/Variant.h"
|
||||||
#include "utils/CalamaresUtilsSystem.h"
|
#include "utils/CalamaresUtilsSystem.h"
|
||||||
#include "utils/Logger.h"
|
#include "utils/Logger.h"
|
||||||
#include "utils/Units.h"
|
#include "utils/Units.h"
|
||||||
@ -41,7 +42,7 @@ copy_file( const QString& source, const QString& dest )
|
|||||||
{
|
{
|
||||||
b = sourcef.read( 1_MiB );
|
b = sourcef.read( 1_MiB );
|
||||||
destf.write( b );
|
destf.write( b );
|
||||||
} while ( b.count() > 0 );
|
} while ( b.size() > 0 );
|
||||||
|
|
||||||
sourcef.close();
|
sourcef.close();
|
||||||
destf.close();
|
destf.close();
|
||||||
@ -52,7 +53,7 @@ copy_file( const QString& source, const QString& dest )
|
|||||||
Item
|
Item
|
||||||
Item::fromVariant( const QVariant& v, const CalamaresUtils::Permissions& defaultPermissions )
|
Item::fromVariant( const QVariant& v, const CalamaresUtils::Permissions& defaultPermissions )
|
||||||
{
|
{
|
||||||
if ( v.type() == QVariant::String )
|
if ( Calamares::typeOf( v ) == Calamares::StringVariantType )
|
||||||
{
|
{
|
||||||
QString filename = v.toString();
|
QString filename = v.toString();
|
||||||
if ( !filename.isEmpty() )
|
if ( !filename.isEmpty() )
|
||||||
@ -65,7 +66,7 @@ Item::fromVariant( const QVariant& v, const CalamaresUtils::Permissions& default
|
|||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if ( v.type() == QVariant::Map )
|
else if ( Calamares::typeOf( v ) == Calamares::MapVariantType )
|
||||||
{
|
{
|
||||||
const auto map = v.toMap();
|
const auto map = v.toMap();
|
||||||
|
|
||||||
|
@ -12,6 +12,7 @@
|
|||||||
#include "CalamaresVersion.h"
|
#include "CalamaresVersion.h"
|
||||||
#include "GlobalStorage.h"
|
#include "GlobalStorage.h"
|
||||||
#include "JobQueue.h"
|
#include "JobQueue.h"
|
||||||
|
#include "compat/Variant.h"
|
||||||
#include "utils/CalamaresUtilsSystem.h"
|
#include "utils/CalamaresUtilsSystem.h"
|
||||||
#include "utils/CommandList.h"
|
#include "utils/CommandList.h"
|
||||||
#include "utils/Logger.h"
|
#include "utils/Logger.h"
|
||||||
@ -97,7 +98,7 @@ PreserveFiles::setConfigurationMap( const QVariantMap& configurationMap )
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( files.type() != QVariant::List )
|
if ( Calamares::typeOf( files ) != Calamares::ListVariantType )
|
||||||
{
|
{
|
||||||
cDebug() << "Configuration key 'files' is not a list for preservefiles.";
|
cDebug() << "Configuration key 'files' is not a list for preservefiles.";
|
||||||
return;
|
return;
|
||||||
|
@ -73,7 +73,7 @@ PreserveFilesTests::testItems()
|
|||||||
QFETCH( bool, ok );
|
QFETCH( bool, ok );
|
||||||
QFETCH( int, type_i );
|
QFETCH( int, type_i );
|
||||||
|
|
||||||
QFile fi( QString( "%1/tests/%2" ).arg( BUILD_AS_TEST, filename ) );
|
QFileInfo fi( QString( "%1/tests/%2" ).arg( BUILD_AS_TEST, filename ) );
|
||||||
QVERIFY( fi.exists() );
|
QVERIFY( fi.exists() );
|
||||||
|
|
||||||
bool config_file_ok = false;
|
bool config_file_ok = false;
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
# SPDX-FileCopyrightText: 2020 Adriaan de Groot <groot@kde.org>
|
# SPDX-FileCopyrightText: 2020 Adriaan de Groot <groot@kde.org>
|
||||||
# SPDX-License-Identifier: BSD-2-Clause
|
# SPDX-License-Identifier: BSD-2-Clause
|
||||||
#
|
#
|
||||||
find_package(Qt5 ${QT_VERSION} CONFIG REQUIRED Core DBus Network)
|
find_package(${qtname} ${QT_VERSION} CONFIG REQUIRED Core DBus Network)
|
||||||
find_package(Crypt REQUIRED)
|
find_package(Crypt REQUIRED)
|
||||||
|
|
||||||
# Add optional libraries here
|
# Add optional libraries here
|
||||||
@ -50,8 +50,8 @@ calamares_add_library(
|
|||||||
SOURCES
|
SOURCES
|
||||||
${_users_src}
|
${_users_src}
|
||||||
LINK_LIBRARIES
|
LINK_LIBRARIES
|
||||||
KF5::CoreAddons
|
${kfname}::CoreAddons
|
||||||
Qt5::DBus
|
${qtname}::DBus
|
||||||
${CRYPT_LIBRARIES}
|
${CRYPT_LIBRARIES}
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -80,8 +80,8 @@ calamares_add_test(
|
|||||||
TestGroupInformation.cpp
|
TestGroupInformation.cpp
|
||||||
${_users_src} # Build again with test-visibility
|
${_users_src} # Build again with test-visibility
|
||||||
LIBRARIES
|
LIBRARIES
|
||||||
KF5::CoreAddons
|
${kfname}::CoreAddons
|
||||||
Qt5::DBus # HostName job can use DBus to systemd
|
${qtname}::DBus # HostName job can use DBus to systemd
|
||||||
${CRYPT_LIBRARIES} # SetPassword job uses crypt()
|
${CRYPT_LIBRARIES} # SetPassword job uses crypt()
|
||||||
${USER_EXTRA_LIB}
|
${USER_EXTRA_LIB}
|
||||||
)
|
)
|
||||||
@ -90,7 +90,7 @@ calamares_add_test(
|
|||||||
usershostnametest
|
usershostnametest
|
||||||
SOURCES TestSetHostNameJob.cpp SetHostNameJob.cpp
|
SOURCES TestSetHostNameJob.cpp SetHostNameJob.cpp
|
||||||
LIBRARIES
|
LIBRARIES
|
||||||
Qt5::DBus # HostName job can use DBus to systemd
|
${qtname}::DBus # HostName job can use DBus to systemd
|
||||||
)
|
)
|
||||||
|
|
||||||
calamares_add_test(
|
calamares_add_test(
|
||||||
@ -99,8 +99,8 @@ calamares_add_test(
|
|||||||
Tests.cpp
|
Tests.cpp
|
||||||
${_users_src} # Build again with test-visibility
|
${_users_src} # Build again with test-visibility
|
||||||
LIBRARIES
|
LIBRARIES
|
||||||
KF5::CoreAddons
|
${kfname}::CoreAddons
|
||||||
Qt5::DBus # HostName job can use DBus to systemd
|
${qtname}::DBus # HostName job can use DBus to systemd
|
||||||
${CRYPT_LIBRARIES} # SetPassword job uses crypt()
|
${CRYPT_LIBRARIES} # SetPassword job uses crypt()
|
||||||
${USER_EXTRA_LIB}
|
${USER_EXTRA_LIB}
|
||||||
)
|
)
|
||||||
|
@ -41,7 +41,7 @@ PasswordCheck::PasswordCheck( MessageFunc m, AcceptFunc a, Weight weight )
|
|||||||
DEFINE_CHECK_FUNC( minLength )
|
DEFINE_CHECK_FUNC( minLength )
|
||||||
{
|
{
|
||||||
int minLength = -1;
|
int minLength = -1;
|
||||||
if ( value.canConvert( QVariant::Int ) )
|
if ( value.canConvert< int >() )
|
||||||
{
|
{
|
||||||
minLength = value.toInt();
|
minLength = value.toInt();
|
||||||
}
|
}
|
||||||
@ -57,7 +57,7 @@ DEFINE_CHECK_FUNC( minLength )
|
|||||||
DEFINE_CHECK_FUNC( maxLength )
|
DEFINE_CHECK_FUNC( maxLength )
|
||||||
{
|
{
|
||||||
int maxLength = -1;
|
int maxLength = -1;
|
||||||
if ( value.canConvert( QVariant::Int ) )
|
if ( value.canConvert< int >() )
|
||||||
{
|
{
|
||||||
maxLength = value.toInt();
|
maxLength = value.toInt();
|
||||||
}
|
}
|
||||||
|
@ -16,6 +16,7 @@
|
|||||||
|
|
||||||
#include "GlobalStorage.h"
|
#include "GlobalStorage.h"
|
||||||
#include "JobQueue.h"
|
#include "JobQueue.h"
|
||||||
|
#include "compat/Variant.h"
|
||||||
#include "utils/Logger.h"
|
#include "utils/Logger.h"
|
||||||
#include "utils/String.h"
|
#include "utils/String.h"
|
||||||
#include "utils/StringExpander.h"
|
#include "utils/StringExpander.h"
|
||||||
@ -24,7 +25,7 @@
|
|||||||
#include <QCoreApplication>
|
#include <QCoreApplication>
|
||||||
#include <QFile>
|
#include <QFile>
|
||||||
#include <QMetaProperty>
|
#include <QMetaProperty>
|
||||||
#include <QRegExp>
|
#include <QRegularExpression>
|
||||||
#include <QTimer>
|
#include <QTimer>
|
||||||
|
|
||||||
#ifdef HAVE_ICU
|
#ifdef HAVE_ICU
|
||||||
@ -41,10 +42,10 @@ static const char TRANSLITERATOR_ID[] = "Russian-Latin/BGN;"
|
|||||||
|
|
||||||
#include <memory>
|
#include <memory>
|
||||||
|
|
||||||
static const QRegExp USERNAME_RX( "^[a-z_][a-z0-9_-]*[$]?$" );
|
static const QRegularExpression USERNAME_RX( "^[a-z_][a-z0-9_-]*[$]?$" ); // Note anchors begin and end
|
||||||
static constexpr const int USERNAME_MAX_LENGTH = 31;
|
static constexpr const int USERNAME_MAX_LENGTH = 31;
|
||||||
|
|
||||||
static const QRegExp HOSTNAME_RX( "^[a-zA-Z0-9][-a-zA-Z0-9_]*$" );
|
static const QRegularExpression HOSTNAME_RX( "^[a-zA-Z0-9][-a-zA-Z0-9_]*$" ); // Note anchors begin and end
|
||||||
static constexpr const int HOSTNAME_MIN_LENGTH = 2;
|
static constexpr const int HOSTNAME_MIN_LENGTH = 2;
|
||||||
static constexpr const int HOSTNAME_MAX_LENGTH = 63;
|
static constexpr const int HOSTNAME_MAX_LENGTH = 63;
|
||||||
|
|
||||||
@ -235,12 +236,12 @@ Config::loginNameStatus() const
|
|||||||
return tr( "Your username is too long." );
|
return tr( "Your username is too long." );
|
||||||
}
|
}
|
||||||
|
|
||||||
QRegExp validateFirstLetter( "^[a-z_]" );
|
QRegularExpression validateFirstLetter( "^[a-z_]" );
|
||||||
if ( validateFirstLetter.indexIn( m_loginName ) != 0 )
|
if ( m_loginName.indexOf( validateFirstLetter ) != 0 )
|
||||||
{
|
{
|
||||||
return tr( "Your username must start with a lowercase letter or underscore." );
|
return tr( "Your username must start with a lowercase letter or underscore." );
|
||||||
}
|
}
|
||||||
if ( !USERNAME_RX.exactMatch( m_loginName ) )
|
if ( m_loginName.indexOf( USERNAME_RX ) != 0 )
|
||||||
{
|
{
|
||||||
return tr( "Only lowercase letters, numbers, underscore and hyphen are allowed." );
|
return tr( "Only lowercase letters, numbers, underscore and hyphen are allowed." );
|
||||||
}
|
}
|
||||||
@ -310,7 +311,7 @@ Config::hostnameStatus() const
|
|||||||
return tr( "'%1' is not allowed as hostname." ).arg( m_hostname );
|
return tr( "'%1' is not allowed as hostname." ).arg( m_hostname );
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( !HOSTNAME_RX.exactMatch( m_hostname ) )
|
if ( m_hostname.indexOf( HOSTNAME_RX ) != 0 )
|
||||||
{
|
{
|
||||||
return tr( "Only letters, numbers, underscore and hyphen are allowed." );
|
return tr( "Only letters, numbers, underscore and hyphen are allowed." );
|
||||||
}
|
}
|
||||||
@ -321,7 +322,7 @@ Config::hostnameStatus() const
|
|||||||
static QString
|
static QString
|
||||||
cleanupForHostname( const QString& s )
|
cleanupForHostname( const QString& s )
|
||||||
{
|
{
|
||||||
QRegExp dmirx( "(^Apple|\\(.*\\)|[^a-zA-Z0-9])", Qt::CaseInsensitive );
|
QRegularExpression dmirx( "(^Apple|\\(.*\\)|[^a-zA-Z0-9])", QRegularExpression::CaseInsensitiveOption );
|
||||||
return s.toLower().replace( dmirx, " " ).remove( ' ' );
|
return s.toLower().replace( dmirx, " " ).remove( ' ' );
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -412,7 +413,7 @@ makeLoginNameSuggestion( const QStringList& parts )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return USERNAME_RX.indexIn( usernameSuggestion ) != -1 ? usernameSuggestion : QString();
|
return usernameSuggestion.indexOf( USERNAME_RX ) != -1 ? usernameSuggestion : QString();
|
||||||
}
|
}
|
||||||
|
|
||||||
/** @brief Return an invalid string for use in a hostname, if @p s is empty
|
/** @brief Return an invalid string for use in a hostname, if @p s is empty
|
||||||
@ -445,8 +446,8 @@ makeHostnameSuggestion( const QString& templateString, const QStringList& fullNa
|
|||||||
QString hostnameSuggestion = d.expand( templateString );
|
QString hostnameSuggestion = d.expand( templateString );
|
||||||
|
|
||||||
// RegExp for valid hostnames; if the suggestion produces a valid name, return it
|
// RegExp for valid hostnames; if the suggestion produces a valid name, return it
|
||||||
static const QRegExp HOSTNAME_RX( "^[a-zA-Z0-9][-a-zA-Z0-9_]*$" );
|
static const QRegularExpression HOSTNAME_RX( "^[a-zA-Z0-9][-a-zA-Z0-9_]*$" );
|
||||||
return HOSTNAME_RX.indexIn( hostnameSuggestion ) != -1 ? hostnameSuggestion : QString();
|
return hostnameSuggestion.indexOf( HOSTNAME_RX ) != -1 ? hostnameSuggestion : QString();
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@ -483,10 +484,10 @@ Config::setFullName( const QString& name )
|
|||||||
emit fullNameChanged( name );
|
emit fullNameChanged( name );
|
||||||
|
|
||||||
// Build login and hostname, if needed
|
// Build login and hostname, if needed
|
||||||
static QRegExp rx( "[^a-zA-Z0-9 ]", Qt::CaseInsensitive );
|
static QRegularExpression rx( "[^a-zA-Z0-9 ]" );
|
||||||
|
|
||||||
const QString cleanName = Calamares::String::removeDiacritics( transliterate( name ) )
|
const QString cleanName = Calamares::String::removeDiacritics( transliterate( name ) )
|
||||||
.replace( QRegExp( "[-']" ), "" )
|
.replace( QRegularExpression( "[-']" ), "" )
|
||||||
.replace( rx, " " )
|
.replace( rx, " " )
|
||||||
.toLower()
|
.toLower()
|
||||||
.simplified();
|
.simplified();
|
||||||
@ -751,7 +752,7 @@ setConfigurationDefaultGroups( const QVariantMap& map, QList< GroupDescription >
|
|||||||
auto groupsFromConfig = map.value( key ).toList();
|
auto groupsFromConfig = map.value( key ).toList();
|
||||||
if ( groupsFromConfig.isEmpty() )
|
if ( groupsFromConfig.isEmpty() )
|
||||||
{
|
{
|
||||||
if ( map.contains( key ) && map.value( key ).isValid() && map.value( key ).canConvert( QVariant::List ) )
|
if ( map.contains( key ) && map.value( key ).isValid() && map.value( key ).canConvert< QVariantList >() )
|
||||||
{
|
{
|
||||||
// Explicitly set, but empty: this is valid, but unusual.
|
// Explicitly set, but empty: this is valid, but unusual.
|
||||||
cDebug() << key << "has explicit empty value.";
|
cDebug() << key << "has explicit empty value.";
|
||||||
@ -772,11 +773,11 @@ setConfigurationDefaultGroups( const QVariantMap& map, QList< GroupDescription >
|
|||||||
{
|
{
|
||||||
for ( const auto& v : groupsFromConfig )
|
for ( const auto& v : groupsFromConfig )
|
||||||
{
|
{
|
||||||
if ( v.type() == QVariant::String )
|
if ( Calamares::typeOf( v ) == Calamares::StringVariantType )
|
||||||
{
|
{
|
||||||
defaultGroups.append( GroupDescription( v.toString() ) );
|
defaultGroups.append( GroupDescription( v.toString() ) );
|
||||||
}
|
}
|
||||||
else if ( v.type() == QVariant::Map )
|
else if ( Calamares::typeOf( v ) == Calamares::MapVariantType )
|
||||||
{
|
{
|
||||||
const auto innermap = v.toMap();
|
const auto innermap = v.toMap();
|
||||||
QString name = CalamaresUtils::getString( innermap, "name" );
|
QString name = CalamaresUtils::getString( innermap, "name" );
|
||||||
|
@ -79,7 +79,7 @@ void
|
|||||||
GroupTests::testCreateGroup()
|
GroupTests::testCreateGroup()
|
||||||
{
|
{
|
||||||
// BUILD_AS_TEST is the source-directory path
|
// BUILD_AS_TEST is the source-directory path
|
||||||
QFile fi( QString( "%1/tests/5-issue-1523.conf" ).arg( BUILD_AS_TEST ) );
|
QFileInfo fi( QString( "%1/tests/5-issue-1523.conf" ).arg( BUILD_AS_TEST ) );
|
||||||
QVERIFY( fi.exists() );
|
QVERIFY( fi.exists() );
|
||||||
|
|
||||||
bool ok = false;
|
bool ok = false;
|
||||||
|
@ -214,7 +214,7 @@ UserTests::testDefaultGroupsYAML()
|
|||||||
QFETCH( QString, group );
|
QFETCH( QString, group );
|
||||||
|
|
||||||
// BUILD_AS_TEST is the source-directory path
|
// BUILD_AS_TEST is the source-directory path
|
||||||
QFile fi( QString( "%1/%2" ).arg( BUILD_AS_TEST, filename ) );
|
QFileInfo fi( QString( "%1/%2" ).arg( BUILD_AS_TEST, filename ) );
|
||||||
QVERIFY( fi.exists() );
|
QVERIFY( fi.exists() );
|
||||||
|
|
||||||
bool ok = false;
|
bool ok = false;
|
||||||
@ -450,7 +450,7 @@ UserTests::testAutoLogin()
|
|||||||
QFETCH( QString, autoLoginGroupName );
|
QFETCH( QString, autoLoginGroupName );
|
||||||
|
|
||||||
// BUILD_AS_TEST is the source-directory path
|
// BUILD_AS_TEST is the source-directory path
|
||||||
QFile fi( QString( "%1/%2" ).arg( BUILD_AS_TEST, filename ) );
|
QFileInfo fi( QString( "%1/%2" ).arg( BUILD_AS_TEST, filename ) );
|
||||||
QVERIFY( fi.exists() );
|
QVERIFY( fi.exists() );
|
||||||
|
|
||||||
bool ok = false;
|
bool ok = false;
|
||||||
@ -502,7 +502,7 @@ UserTests::testUserYAML()
|
|||||||
QFETCH( QString, shell );
|
QFETCH( QString, shell );
|
||||||
|
|
||||||
// BUILD_AS_TEST is the source-directory path
|
// BUILD_AS_TEST is the source-directory path
|
||||||
QFile fi( QString( "%1/%2" ).arg( BUILD_AS_TEST, filename ) );
|
QFileInfo fi( QString( "%1/%2" ).arg( BUILD_AS_TEST, filename ) );
|
||||||
QVERIFY( fi.exists() );
|
QVERIFY( fi.exists() );
|
||||||
|
|
||||||
bool ok = false;
|
bool ok = false;
|
||||||
|
@ -8,7 +8,7 @@ if(NOT WITH_QML)
|
|||||||
return()
|
return()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
find_package(Qt5 ${QT_VERSION} CONFIG REQUIRED Core DBus Network)
|
find_package(${qtname} ${QT_VERSION} CONFIG REQUIRED Core DBus Network)
|
||||||
find_package(Crypt REQUIRED)
|
find_package(Crypt REQUIRED)
|
||||||
|
|
||||||
# Add optional libraries here
|
# Add optional libraries here
|
||||||
@ -46,6 +46,6 @@ calamares_add_plugin(usersq
|
|||||||
users_internal
|
users_internal
|
||||||
${CRYPT_LIBRARIES}
|
${CRYPT_LIBRARIES}
|
||||||
${USER_EXTRA_LIB}
|
${USER_EXTRA_LIB}
|
||||||
Qt5::DBus
|
${qtname}::DBus
|
||||||
SHARED_LIB
|
SHARED_LIB
|
||||||
)
|
)
|
||||||
|
@ -18,6 +18,7 @@
|
|||||||
#include "Settings.h"
|
#include "Settings.h"
|
||||||
|
|
||||||
#include <QProcess>
|
#include <QProcess>
|
||||||
|
#include <QRegularExpression>
|
||||||
|
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
|
||||||
@ -29,7 +30,7 @@
|
|||||||
static QString
|
static QString
|
||||||
alphaNumeric( QString input )
|
alphaNumeric( QString input )
|
||||||
{
|
{
|
||||||
return input.remove( QRegExp( "[^a-zA-Z\\d\\s]" ) );
|
return input.remove( QRegularExpression( "[^a-zA-Z\\d\\s]" ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
/** @brief Returns the best available device for zpool creation
|
/** @brief Returns the best available device for zpool creation
|
||||||
@ -107,7 +108,7 @@ ZfsJob::collectMountpoints( const QVariantList& partitions )
|
|||||||
m_mountpoints.empty();
|
m_mountpoints.empty();
|
||||||
for ( const QVariant& partition : partitions )
|
for ( const QVariant& partition : partitions )
|
||||||
{
|
{
|
||||||
if ( partition.canConvert( QVariant::Map ) )
|
if ( partition.canConvert< QVariantMap >() )
|
||||||
{
|
{
|
||||||
QString mountpoint = partition.toMap().value( "mountPoint" ).toString();
|
QString mountpoint = partition.toMap().value( "mountPoint" ).toString();
|
||||||
if ( !mountpoint.isEmpty() )
|
if ( !mountpoint.isEmpty() )
|
||||||
@ -170,7 +171,7 @@ ZfsJob::exec()
|
|||||||
{
|
{
|
||||||
QVariantList partitions;
|
QVariantList partitions;
|
||||||
Calamares::GlobalStorage* gs = Calamares::JobQueue::instance()->globalStorage();
|
Calamares::GlobalStorage* gs = Calamares::JobQueue::instance()->globalStorage();
|
||||||
if ( gs && gs->contains( "partitions" ) && gs->value( "partitions" ).canConvert( QVariant::List ) )
|
if ( gs && gs->contains( "partitions" ) && gs->value( "partitions" ).canConvert< QVariantList >() )
|
||||||
{
|
{
|
||||||
partitions = gs->value( "partitions" ).toList();
|
partitions = gs->value( "partitions" ).toList();
|
||||||
}
|
}
|
||||||
@ -187,7 +188,7 @@ ZfsJob::exec()
|
|||||||
QVariantList poolNames;
|
QVariantList poolNames;
|
||||||
|
|
||||||
// Check to ensure the list of zfs info from the partition module is available and convert it to a list
|
// Check to ensure the list of zfs info from the partition module is available and convert it to a list
|
||||||
if ( !gs->contains( "zfsInfo" ) && gs->value( "zfsInfo" ).canConvert( QVariant::List ) )
|
if ( !gs->contains( "zfsInfo" ) && gs->value( "zfsInfo" ).canConvert< QVariantList >() )
|
||||||
{
|
{
|
||||||
return Calamares::JobResult::error( tr( "Internal data missing" ), tr( "Failed to create zpool" ) );
|
return Calamares::JobResult::error( tr( "Internal data missing" ), tr( "Failed to create zpool" ) );
|
||||||
}
|
}
|
||||||
@ -196,7 +197,7 @@ ZfsJob::exec()
|
|||||||
for ( auto& partition : qAsConst( partitions ) )
|
for ( auto& partition : qAsConst( partitions ) )
|
||||||
{
|
{
|
||||||
QVariantMap pMap;
|
QVariantMap pMap;
|
||||||
if ( partition.canConvert( QVariant::Map ) )
|
if ( partition.canConvert< QVariantMap >() )
|
||||||
{
|
{
|
||||||
pMap = partition.toMap();
|
pMap = partition.toMap();
|
||||||
}
|
}
|
||||||
@ -233,7 +234,7 @@ ZfsJob::exec()
|
|||||||
QString passphrase;
|
QString passphrase;
|
||||||
for ( const QVariant& zfsInfo : qAsConst( zfsInfoList ) )
|
for ( const QVariant& zfsInfo : qAsConst( zfsInfoList ) )
|
||||||
{
|
{
|
||||||
if ( zfsInfo.canConvert( QVariant::Map ) && zfsInfo.toMap().value( "encrypted" ).toBool()
|
if ( zfsInfo.canConvert< QVariantMap >() && zfsInfo.toMap().value( "encrypted" ).toBool()
|
||||||
&& mountpoint == zfsInfo.toMap().value( "mountpoint" ) )
|
&& mountpoint == zfsInfo.toMap().value( "mountpoint" ) )
|
||||||
{
|
{
|
||||||
encrypt = true;
|
encrypt = true;
|
||||||
|
Loading…
Reference in New Issue
Block a user