qgsprocessingoutputdestinationwidget.cpp: fix widget and avoid error with localization

This commit is contained in:
Loïc Bartoletti 2023-06-20 10:56:56 +02:00 committed by Nyall Dawson
parent 9bd8c1298c
commit ed1867436d

View File

@ -54,12 +54,14 @@ QgsProcessingLayerOutputDestinationWidget::QgsProcessingLayerOutputDestinationWi
QgsSettings settings;
mEncoding = settings.value( QStringLiteral( "/Processing/encoding" ), QStringLiteral( "System" ) ).toString();
if ( mEncoding == "System" )
if ( ( mEncoding == "System" ) || ( ! QTextCodec::availableCodecs().contains( mEncoding.toLatin1() ) ) )
{
const QString systemCodec = QTextCodec::codecForLocale()->name();
if ( ! systemCodec.isEmpty() )
{
mEncoding = systemCodec;
settings.setValue( QStringLiteral( "/Processing/encoding" ), mEncoding );
}
}
@ -613,6 +615,15 @@ void QgsProcessingLayerOutputDestinationWidget::selectEncoding()
if ( dialog.exec() )
{
mEncoding = dialog.encoding();
if ( ( mEncoding == "System" ) || ( ! QTextCodec::availableCodecs().contains( mEncoding.toLatin1() ) ) )
{
const QString systemCodec = QTextCodec::codecForLocale()->name();
if ( ! systemCodec.isEmpty() )
{
mEncoding = systemCodec;
}
}
QgsSettings settings;
settings.setValue( QStringLiteral( "/Processing/encoding" ), mEncoding );
emit destinationChanged();