1 /* 2 * SPDX-FileCopyrightText: 2012 Sebastian Gottfried <sebastiangottfried@web.de> 3 * 4 * SPDX-License-Identifier: GPL-2.0-or-later 5 */ 6 7 8 #include "keyboardlayoutcombobox.h" 9 10 #include "models/categorizedresourcesortfilterproxymodel.h" 11 12 KeyboardLayoutComboBox(QWidget * parent)13KeyboardLayoutComboBox::KeyboardLayoutComboBox(QWidget* parent) : 14 KComboBox(parent), 15 m_filteredResourceModel(new CategorizedResourceSortFilterProxyModel(this)), 16 m_resourceModel(0) 17 { 18 m_filteredResourceModel->setResourceTypeFilter(ResourceModel::KeyboardLayoutItem); 19 setModel(m_filteredResourceModel); 20 } 21 resourceModel() const22ResourceModel* KeyboardLayoutComboBox::resourceModel() const 23 { 24 return m_resourceModel; 25 } 26 setResourceModel(ResourceModel * model)27void KeyboardLayoutComboBox::setResourceModel(ResourceModel* model) 28 { 29 if (model != m_resourceModel) 30 { 31 m_resourceModel = model; 32 m_filteredResourceModel->setResourceModel(model); 33 } 34 } 35 keyboardLayoutAt(int index) const36DataIndexKeyboardLayout* KeyboardLayoutComboBox::keyboardLayoutAt(int index) const 37 { 38 const QModelIndex modelIndex = model()->index(index, 0); 39 const QVariant variant = model()->data(modelIndex, ResourceModel::DataRole); 40 QObject* const object = qvariant_cast<QObject*>(variant); 41 DataIndexKeyboardLayout* const layout = qobject_cast<DataIndexKeyboardLayout*>(object); 42 43 return layout; 44 45 } 46 selectedKeyboardLayout() const47DataIndexKeyboardLayout* KeyboardLayoutComboBox::selectedKeyboardLayout() const 48 { 49 if (currentIndex() == -1) 50 return 0; 51 52 53 return keyboardLayoutAt(currentIndex()); 54 } 55 selectKeyboardLayout(DataIndexKeyboardLayout * layout)56void KeyboardLayoutComboBox::selectKeyboardLayout(DataIndexKeyboardLayout* layout) 57 { 58 for (int i = 0; i < model()->rowCount(); i++) 59 { 60 if (keyboardLayoutAt(i) == layout) 61 { 62 setCurrentIndex(i); 63 break; 64 } 65 } 66 } 67