Merge branch 'master' of https://github.com/calamares/calamares into development

This commit is contained in:
Philip 2017-06-19 18:24:14 +02:00
commit af89d58647

View File

@ -37,6 +37,21 @@
#include <QProcess>
#include <QPushButton>
static QPersistentModelIndex
findLayout( const KeyboardLayoutModel* klm, const QString& currentLayout )
{
QPersistentModelIndex currentLayoutItem;
for ( int i = 0; i < klm->rowCount(); ++i )
{
QModelIndex idx = klm->index( i );
if ( idx.isValid() &&
idx.data( KeyboardLayoutModel::KeyboardLayoutKeyRole ).toString() == currentLayout )
currentLayoutItem = idx;
}
return currentLayoutItem;
}
KeyboardPage::KeyboardPage( QWidget* parent )
: QWidget()
@ -68,8 +83,8 @@ KeyboardPage::KeyboardPage( QWidget* parent )
QString model = m_models.value( text, "pc105" );
// Set Xorg keyboard model
QProcess::execute( QString( "setxkbmap -model \"%1\"" )
.arg( model ).toUtf8() );
QProcess::execute( QLatin1Literal( "setxkbmap" ),
QStringList() << "-model" << model );
});
CALAMARES_RETRANSLATE( ui->retranslateUi( this ); )
@ -160,14 +175,13 @@ KeyboardPage::init()
// Block signals
ui->listLayout->blockSignals( true );
QPersistentModelIndex currentLayoutItem;
for ( int i = 0; i < klm->rowCount(); ++i )
QPersistentModelIndex currentLayoutItem = findLayout( klm, currentLayout );
if ( !currentLayoutItem.isValid() && (
( currentLayout == "latin" )
|| ( currentLayout == "pc" ) ) )
{
QModelIndex idx = klm->index( i );
if ( idx.isValid() &&
idx.data( KeyboardLayoutModel::KeyboardLayoutKeyRole ).toString() == currentLayout )
currentLayoutItem = idx;
currentLayout = "us";
currentLayoutItem = findLayout( klm, currentLayout );
}
// Set current layout and variant
@ -341,6 +355,16 @@ KeyboardPage::onListLayoutCurrentItemChanged( const QModelIndex& current,
updateVariants( QPersistentModelIndex( current ) );
}
/* Returns stringlist with suitable setxkbmap command-line arguments
* to set the given @p layout and @p variant.
*/
static inline QStringList xkbmap_args( QStringList&& r, const QString& layout, const QString& variant)
{
r << "-layout" << layout;
if ( !variant.isEmpty() )
r << "-variant" << variant;
return r;
}
void
KeyboardPage::onListVariantCurrentItemChanged( QListWidgetItem* current, QListWidgetItem* previous )
@ -369,8 +393,8 @@ KeyboardPage::onListVariantCurrentItemChanged( QListWidgetItem* current, QListWi
connect( &m_setxkbmapTimer, &QTimer::timeout,
this, [=]
{
QProcess::execute( QString( "setxkbmap -layout \"%1\" -variant \"%2\"" )
.arg( layout, variant ).toUtf8() );
QProcess::execute( QLatin1Literal( "setxkbmap" ),
xkbmap_args( QStringList(), layout, variant ) );
cDebug() << "xkbmap selection changed to: " << layout << "-" << variant;
m_setxkbmapTimer.disconnect( this );
} );
@ -379,4 +403,3 @@ KeyboardPage::onListVariantCurrentItemChanged( QListWidgetItem* current, QListWi
m_selectedLayout = layout;
m_selectedVariant = variant;
}