mirror of
https://github.com/parchlinux/calamares.git
synced 2025-06-30 10:55:37 -04:00
[keyboard] changes to the keyboardmodel to work with qml
This commit is contained in:
parent
0872de7910
commit
1a46e08cc2
4 changed files with 63 additions and 20 deletions
|
@ -23,12 +23,11 @@
|
|||
|
||||
|
||||
KeyboardLayoutModel::KeyboardLayoutModel( QObject* parent )
|
||||
: QAbstractListModel( parent )
|
||||
: QAbstractListModel( parent )
|
||||
{
|
||||
init();
|
||||
}
|
||||
|
||||
|
||||
int
|
||||
KeyboardLayoutModel::rowCount( const QModelIndex& parent ) const
|
||||
{
|
||||
|
@ -45,30 +44,60 @@ KeyboardLayoutModel::data( const QModelIndex& index, int role ) const
|
|||
|
||||
switch ( role )
|
||||
{
|
||||
case Qt::DisplayRole:
|
||||
return m_layouts.at( index.row() ).second.description;
|
||||
case KeyboardVariantsRole:
|
||||
return QVariant::fromValue( m_layouts.at( index.row() ).second.variants );
|
||||
case KeyboardLayoutKeyRole:
|
||||
return m_layouts.at( index.row() ).first;
|
||||
case Qt::DisplayRole:
|
||||
return m_layouts.at( index.row() ).second.description;
|
||||
case KeyboardVariantsRole:
|
||||
return QVariant::fromValue( m_layouts.at( index.row() ).second.variants );
|
||||
case KeyboardLayoutKeyRole:
|
||||
return m_layouts.at( index.row() ).first;
|
||||
}
|
||||
|
||||
return QVariant();
|
||||
}
|
||||
|
||||
const QPair< QString, KeyboardGlobal::KeyboardInfo >
|
||||
KeyboardLayoutModel::item(const int &index) const
|
||||
{
|
||||
if(index >= m_layouts.count() || index < 0)
|
||||
return QPair< QString, KeyboardGlobal::KeyboardInfo >();
|
||||
|
||||
return m_layouts.at(index);
|
||||
}
|
||||
|
||||
void
|
||||
KeyboardLayoutModel::init()
|
||||
{
|
||||
KeyboardGlobal::LayoutsMap layouts =
|
||||
KeyboardGlobal::getKeyboardLayouts();
|
||||
KeyboardGlobal::getKeyboardLayouts();
|
||||
for ( KeyboardGlobal::LayoutsMap::const_iterator it = layouts.constBegin();
|
||||
it != layouts.constEnd(); ++it )
|
||||
m_layouts.append( qMakePair( it.key(), it.value() ) );
|
||||
it != layouts.constEnd(); ++it )
|
||||
m_layouts.append( qMakePair( it.key(), it.value() ) );
|
||||
|
||||
std::stable_sort( m_layouts.begin(), m_layouts.end(), []( const QPair< QString, KeyboardGlobal::KeyboardInfo >& a,
|
||||
const QPair< QString, KeyboardGlobal::KeyboardInfo >& b )
|
||||
const QPair< QString, KeyboardGlobal::KeyboardInfo >& b )
|
||||
{
|
||||
return a.second.description < b.second.description;
|
||||
} );
|
||||
}
|
||||
|
||||
QHash<int, QByteArray>
|
||||
KeyboardLayoutModel::roleNames() const
|
||||
{
|
||||
return {{Qt::DisplayRole, "label"}, {KeyboardLayoutKeyRole, "key"}, {KeyboardVariantsRole, "variants"}};
|
||||
}
|
||||
|
||||
void
|
||||
KeyboardLayoutModel::setCurrentIndex(const int &index)
|
||||
{
|
||||
if(index >= m_layouts.count() || index < 0)
|
||||
return;
|
||||
|
||||
m_currentIndex = index;
|
||||
emit currentIndexChanged(m_currentIndex);
|
||||
}
|
||||
|
||||
int
|
||||
KeyboardLayoutModel::currentIndex() const
|
||||
{
|
||||
return m_currentIndex;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue