[keyboard] Minor additional layout info rework
This commit is contained in:
parent
17b9647016
commit
09b5e42734
@ -109,14 +109,13 @@ xkbmap_query_grp_option()
|
|||||||
return outputLine.mid( index, lastIndex-1 );
|
return outputLine.mid( index, lastIndex-1 );
|
||||||
}
|
}
|
||||||
|
|
||||||
AdditionalLayoutInfo Config::getAdditionalLayoutInfo( const QString &layout, bool* found )
|
AdditionalLayoutInfo Config::getAdditionalLayoutInfo( const QString &layout )
|
||||||
{
|
{
|
||||||
QFile layoutTable(":/non-ascii-layouts");
|
QFile layoutTable( ":/non-ascii-layouts" );
|
||||||
|
|
||||||
if(!layoutTable.open(QIODevice::ReadOnly | QIODevice::Text)) {
|
if( !layoutTable.open( QIODevice::ReadOnly | QIODevice::Text ) ) {
|
||||||
cError() << "Non-ASCII layout table could not be opened";
|
cError() << "Non-ASCII layout table could not be opened";
|
||||||
*found = false;
|
return AdditionalLayoutInfo();
|
||||||
return {};
|
|
||||||
}
|
}
|
||||||
|
|
||||||
QString tableLine;
|
QString tableLine;
|
||||||
@ -125,22 +124,19 @@ AdditionalLayoutInfo Config::getAdditionalLayoutInfo( const QString &layout, boo
|
|||||||
{
|
{
|
||||||
tableLine = layoutTable.readLine();
|
tableLine = layoutTable.readLine();
|
||||||
}
|
}
|
||||||
while( !layoutTable.atEnd() || !tableLine.startsWith(layout) );
|
while( !layoutTable.atEnd() || !tableLine.startsWith( layout ) );
|
||||||
|
|
||||||
if( !tableLine.startsWith(layout) ){
|
if( !tableLine.startsWith( layout ) )
|
||||||
*found = false;
|
{
|
||||||
return {};
|
return AdditionalLayoutInfo();
|
||||||
}
|
}
|
||||||
|
|
||||||
*found = true;
|
QStringList tableEntries = tableLine.split( " ", SplitSkipEmptyParts );
|
||||||
|
|
||||||
QStringList tableEntries = tableLine.split(" ", SplitSkipEmptyParts);
|
|
||||||
|
|
||||||
AdditionalLayoutInfo r;
|
AdditionalLayoutInfo r;
|
||||||
|
|
||||||
r.name = tableEntries[0];
|
|
||||||
r.additionalLayout = tableEntries[1];
|
r.additionalLayout = tableEntries[1];
|
||||||
r.additionalVariant = tableEntries[2];
|
r.additionalVariant = tableEntries[2] == "-" ? "" : tableEntries[2];
|
||||||
|
|
||||||
r.vconsoleKeymap = tableEntries[3];
|
r.vconsoleKeymap = tableEntries[3];
|
||||||
|
|
||||||
@ -180,10 +176,9 @@ Config::Config( QObject* parent )
|
|||||||
}
|
}
|
||||||
|
|
||||||
connect( &m_setxkbmapTimer, &QTimer::timeout, this, [=] {
|
connect( &m_setxkbmapTimer, &QTimer::timeout, this, [=] {
|
||||||
bool isNotAsciiCapable = false;
|
AdditionalLayoutInfo info = getAdditionalLayoutInfo( m_selectedLayout);
|
||||||
AdditionalLayoutInfo info = getAdditionalLayoutInfo( m_selectedLayout, &isNotAsciiCapable );
|
|
||||||
|
|
||||||
if(isNotAsciiCapable)
|
if(!info.additionalLayout.isEmpty())
|
||||||
{
|
{
|
||||||
m_selectedLayoutsAdditionalLayoutInfo = info;
|
m_selectedLayoutsAdditionalLayoutInfo = info;
|
||||||
QString switchOption = xkbmap_query_grp_option();
|
QString switchOption = xkbmap_query_grp_option();
|
||||||
@ -195,8 +190,7 @@ Config::Config( QObject* parent )
|
|||||||
switchOption.isEmpty()?"grp:alt_shift_toggle":QString() )
|
switchOption.isEmpty()?"grp:alt_shift_toggle":QString() )
|
||||||
);
|
);
|
||||||
cDebug() << "xkbmap selection changed to: " << m_selectedLayout << '-' << m_selectedVariant
|
cDebug() << "xkbmap selection changed to: " << m_selectedLayout << '-' << m_selectedVariant
|
||||||
<< "(added " << info.additionalLayout << "-" << info.additionalVariant << " since target layout is not ASCII-capable)";
|
<< "(added " << info.additionalLayout << "-" << info.additionalVariant << " since current layout is not ASCII-capable)";
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -494,7 +488,7 @@ Config::finalize()
|
|||||||
gs->insert( "keyboardLayout", m_selectedLayout );
|
gs->insert( "keyboardLayout", m_selectedLayout );
|
||||||
gs->insert( "keyboardVariant", m_selectedVariant ); //empty means default variant
|
gs->insert( "keyboardVariant", m_selectedVariant ); //empty means default variant
|
||||||
|
|
||||||
if ( !m_selectedLayoutsAdditionalLayoutInfo.name.isEmpty() )
|
if ( !m_selectedLayoutsAdditionalLayoutInfo.additionalLayout.isEmpty() )
|
||||||
{
|
{
|
||||||
gs->insert( "keyboardAdditionalLayout", m_selectedLayoutsAdditionalLayoutInfo.additionalLayout);
|
gs->insert( "keyboardAdditionalLayout", m_selectedLayoutsAdditionalLayoutInfo.additionalLayout);
|
||||||
gs->insert( "keyboardAdditionalLayout", m_selectedLayoutsAdditionalLayoutInfo.additionalVariant);
|
gs->insert( "keyboardAdditionalLayout", m_selectedLayoutsAdditionalLayoutInfo.additionalVariant);
|
||||||
|
@ -21,8 +21,6 @@
|
|||||||
#include <QUrl>
|
#include <QUrl>
|
||||||
|
|
||||||
struct AdditionalLayoutInfo {
|
struct AdditionalLayoutInfo {
|
||||||
QString name;
|
|
||||||
|
|
||||||
QString additionalLayout;
|
QString additionalLayout;
|
||||||
QString additionalVariant;
|
QString additionalVariant;
|
||||||
|
|
||||||
@ -50,7 +48,7 @@ public:
|
|||||||
|
|
||||||
void setConfigurationMap( const QVariantMap& configurationMap );
|
void setConfigurationMap( const QVariantMap& configurationMap );
|
||||||
|
|
||||||
static AdditionalLayoutInfo getAdditionalLayoutInfo( const QString& layout, bool* found );
|
static AdditionalLayoutInfo getAdditionalLayoutInfo( const QString& layout );
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void guessLayout( const QStringList& langParts );
|
void guessLayout( const QStringList& langParts );
|
||||||
|
Loading…
Reference in New Issue
Block a user