From d56707af8b9c856776b546952a23686b210f22d8 Mon Sep 17 00:00:00 2001 From: "A. Wilcox" Date: Fri, 27 Sep 2024 23:17:33 -0500 Subject: Add friendly names for keymaps This allows users to choose the "friendly name" for their keyboard layout instead of the internal XKB name. Closes: #386 Suggested-by: Jesse Smith Reviewed-by: Zach van Rijn In-memory-of: Sammie the Cat --- ui/qt5/commitpage.cc | 2 +- ui/qt5/horizonwizard.cc | 4 ++-- ui/qt5/inputpage.cc | 12 +++++++++--- 3 files changed, 12 insertions(+), 6 deletions(-) (limited to 'ui') diff --git a/ui/qt5/commitpage.cc b/ui/qt5/commitpage.cc index 7856a4a..6d9883b 100644 --- a/ui/qt5/commitpage.cc +++ b/ui/qt5/commitpage.cc @@ -105,7 +105,7 @@ void CommitPage::initializePage() { "

Root Passphrase: [saved]

\n" "
") .arg(diskString) - .arg(QString::fromStdString(*iterator)) + .arg(QString::fromStdString(iterator->second)) .arg(netString) .arg(zoneString) .arg(softString) diff --git a/ui/qt5/horizonwizard.cc b/ui/qt5/horizonwizard.cc index b3e53fd..d410370 100644 --- a/ui/qt5/horizonwizard.cc +++ b/ui/qt5/horizonwizard.cc @@ -727,8 +727,8 @@ QString HorizonWizard::toHScript() { lines << "rootshell /bin/zsh"; auto iterator = valid_keymaps.begin(); - std::advance(iterator, field("keymap").toInt()); - lines << ("keymap " + QString::fromStdString(*iterator)); + std::advance(iterator, field("keymap").toUInt()); + lines << ("keymap " + QString::fromStdString(iterator->first)); #ifdef NON_LIBRE_FIRMWARE if(this->firmware) { diff --git a/ui/qt5/inputpage.cc b/ui/qt5/inputpage.cc index 11d9993..5e1958e 100644 --- a/ui/qt5/inputpage.cc +++ b/ui/qt5/inputpage.cc @@ -41,7 +41,8 @@ InputPage::InputPage(QWidget *parent) : HorizonWizardPage(parent) { layoutList->setWhatsThis(tr("This is a list of keyboard layouts. Select one to choose the layout of the keyboard you will be using on your Adélie Linux computer.")); for(auto &map : valid_keymaps) { QIcon myIcon = QIcon::fromTheme("input-keyboard"); - new QListWidgetItem(myIcon, map.c_str(), layoutList); + auto widgetItem = new QListWidgetItem(myIcon, map.second.c_str(), layoutList); + widgetItem->setData(Qt::ToolTipRole, QVariant(QString::fromStdString(map.first))); } registerField("keymap*", layoutList); @@ -81,8 +82,13 @@ void InputPage::initializePage() { if(dpy != nullptr) { XkbRF_VarDefsRec vardefs{}; XkbRF_GetNamesProp(dpy, nullptr, &vardefs); - QList items = layoutList->findItems(vardefs.layout, Qt::MatchExactly); - if(!items.empty()) layoutList->setCurrentItem(items.at(0)); + QList items = layoutList->items(); + for(int idx = 0; idx < items.size(); ++idx) { + if(items.at(idx)->data(Qt::ToolTipRole).toString == vardefs.layout) { + layoutList->setCurrentItem(items.at(idx)); + break; + } + } free(vardefs.model); free(vardefs.layout); free(vardefs.variant); -- cgit v1.2.3-70-g09d2