Merge branch 'master' of https://github.com/calamares/calamares into development
This commit is contained in:
commit
af89d58647
@ -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;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user