diff --git a/kcms/translations/package/contents/ui/main.qml b/kcms/translations/package/contents/ui/main.qml --- a/kcms/translations/package/contents/ui/main.qml +++ b/kcms/translations/package/contents/ui/main.qml @@ -21,7 +21,7 @@ import QtQuick 2.1 import QtQuick.Layouts 1.1 import QtQuick.Controls 2.3 as QtControls -import org.kde.kirigami 2.4 as Kirigami +import org.kde.kirigami 2.5 as Kirigami import org.kde.plasma.core 2.1 as PlasmaCore import org.kde.kcm 1.2 @@ -57,12 +57,10 @@ onSheetOpenChanged: selectedLanguages = [] - ListView { - implicitWidth: 18 * Kirigami.Units.gridUnit - - model: availableLanguagesModel + Component { + id: addLanguageItemComponent - delegate: Kirigami.BasicListItem { + Kirigami.BasicListItem { property string languageCode: model.LanguageCode reserveSpaceForIcon: false @@ -92,6 +90,18 @@ } } + ListView { + implicitWidth: 18 * Kirigami.Units.gridUnit + + model: availableLanguagesModel + + delegate: Kirigami.DelegateRecycler { + width: parent.width + + sourceComponent: addLanguageItemComponent + } + } + footer: RowLayout { QtControls.Button { id: addLanguagesButton @@ -165,19 +175,10 @@ } } - view: ListView { - id: languagesList - - model: PlasmaCore.SortFilterModel { - sourceModel: kcm.translationsModel - - filterRole: "IsSelected" - filterCallback: function(source_row, value) { return value; } - - sortRole: "SelectedPriority" - } + Component { + id: languagesListItemComponent - delegate: Kirigami.SwipeListItem { + Kirigami.SwipeListItem { id: listItem width: ListView.view.width @@ -188,6 +189,12 @@ anchors.verticalCenter: parent.verticalCenter + Kirigami.ListItemDragHandle { + listItem: listItem + listView: languagesList + onMoveRequested: kcm.translationsModel.moveSelectedLanguage(oldIndex, newIndex) + } + Kirigami.Icon { visible: model.IsMissing @@ -220,18 +227,6 @@ tooltip: i18nc("@info:tooltip", "Promote to default") onTriggered: kcm.translationsModel.moveSelectedLanguage(index, 0) }, - Kirigami.Action { - enabled: !model.IsMissing && index > 0 - iconName: "go-up" - tooltip: i18nc("@info:tooltip", "Move up") - onTriggered: kcm.translationsModel.moveSelectedLanguage(index, index - 1) - }, - Kirigami.Action { - enabled: !model.IsMissing && index < (languagesList.count - 1) - iconName: "go-down" - tooltip: i18nc("@info:tooltip", "Move down") - onTriggered: kcm.translationsModel.moveSelectedLanguage(index, index + 1) - }, Kirigami.Action { enabled: !model.IsMissing iconName: "list-remove" @@ -241,6 +236,25 @@ } } + view: ListView { + id: languagesList + + model: PlasmaCore.SortFilterModel { + sourceModel: kcm.translationsModel + + filterRole: "IsSelected" + filterCallback: function(source_row, value) { return value; } + + sortRole: "SelectedPriority" + } + + delegate: Kirigami.DelegateRecycler { + width: languagesList.width + + sourceComponent: languagesListItemComponent + } + } + footer: RowLayout { id: footerLayout