Warning, /plasma/kdeplasma-addons/applets/dict/package/contents/ui/ConfigDictionaries.qml is written in an unsupported language. File is not indexed.

0001 /*
0002  *  SPDX-FileCopyrightText: 2017 David Faure <faure@kde.org>
0003  *
0004  *  SPDX-License-Identifier: GPL-2.0-or-later
0005  */
0006 
0007 import QtQuick 2.15
0008 import QtQuick.Controls 2.5
0009 import QtQuick.Layouts 1.15
0010 import org.kde.kirigami 2.19 as Kirigami
0011 import org.kde.kcmutils as KCM
0012 import org.kde.plasma.private.dict 1.0
0013 
0014 KCM.ScrollViewKCM {
0015 
0016     property string cfg_dictionary: ""
0017 
0018     DictionariesModel {
0019         id: dictionariesModel
0020         Component.onCompleted: enabledDicts = cfg_dictionary
0021         onEnabledDictsChanged: cfg_dictionary = enabledDicts
0022     }
0023 
0024     AvailableDictSheet {
0025         id: sheet
0026     }
0027 
0028     view: ListView {
0029         id: listView
0030 
0031         model: dictionariesModel.enabledDictModel
0032         reuseItems: true
0033 
0034         displaced: Transition {
0035             NumberAnimation {
0036                 properties: "y"
0037                 duration: Kirigami.Units.longDuration
0038             }
0039         }
0040 
0041         delegate: DictItemDelegate {
0042             width: listView.width
0043             view: listView
0044 
0045             onMoveRequested: (oldIndex, newIndex) => {
0046                 dictionariesModel.move(oldIndex, newIndex);
0047             }
0048             onRemoved: index => {
0049                 dictionariesModel.setDisabled(index);
0050             }
0051         }
0052 
0053         Loader {
0054             active: dictionariesModel.loading || sheet.view.count === 0 || listView.count === 0
0055             asynchronous: true
0056 
0057             anchors.centerIn: parent
0058             visible: active
0059 
0060             sourceComponent: dictionariesModel.loading ? loadingPlaceHolder : (sheet.view.count === 0 ? errorPlaceHolder : emptyPlaceholder)
0061 
0062             Component {
0063                 id: loadingPlaceHolder
0064 
0065                 Kirigami.LoadingPlaceholder {
0066                     anchors.centerIn: parent
0067                 }
0068             }
0069 
0070             Component {
0071                 id: errorPlaceHolder
0072 
0073                 Kirigami.PlaceholderMessage {
0074                     anchors.centerIn: parent
0075                     width: root.width - (Kirigami.Units.largeSpacing * 4)
0076                     icon.name: "network-disconnect"
0077                     text: i18n("Unable to load dictionary list")
0078                     explanation: i18nc("%2 human-readable error string", "Error code: %1 (%2)", dictionariesModel.errorCode, dictionariesModel.errorString)
0079                 }
0080             }
0081 
0082             Component {
0083                 id: emptyPlaceholder
0084 
0085                 Kirigami.PlaceholderMessage {
0086                     anchors.centerIn: parent
0087                     width: root.width - (Kirigami.Units.largeSpacing * 4)
0088                     icon.name: "edit-none"
0089                     text: i18n("No dictionaries")
0090                 }
0091             }
0092         }
0093     }
0094 
0095     footer: RowLayout {
0096         Button {
0097             enabled: sheet.view.count > 0
0098             text: i18n("Add Moreā€¦")
0099             icon.name: "list-add"
0100             onClicked: {
0101                 sheet.open();
0102             }
0103         }
0104     }
0105 }