Warning, /plasma/latte-dock/shell/package/contents/controls/CustomVisibilityModeButton.qml is written in an unsupported language. File is not indexed.
0001 /*
0002 SPDX-FileCopyrightText: 2020 Michail Vourlakos <mvourlakos@gmail.com>
0003 SPDX-License-Identifier: GPL-2.0-or-later
0004 */
0005
0006 import QtQuick 2.1
0007
0008 import org.kde.plasma.plasmoid 2.0
0009 import org.kde.plasma.core 2.0 as PlasmaCore
0010
0011 import org.kde.latte.core 0.2 as LatteCore
0012 import org.kde.latte.components 1.0 as LatteComponents
0013
0014 LatteComponents.ComboBoxButton{
0015 id: custom
0016 checkable: true
0017
0018 buttonText: modes[currentModeIndex].name
0019 buttonToolTip: modes[currentModeIndex].tooltip
0020
0021 comboBoxTextRole: "name"
0022 comboBoxMinimumPopUpWidth: width
0023 comboBoxBlankSpaceForEmptyIcons: false
0024 comboBoxForcePressed: checked // latteView.visibility.mode === mode
0025 comboBoxPopUpAlignRight: Qt.application.layoutDirection !== Qt.RightToLeft
0026 comboBoxPopupTextHorizontalAlignment: Text.AlignHCenter
0027
0028 property int mode: LatteCore.Types.WindowsGoBelow
0029 readonly property int currentModeIndex: {
0030 for (var i=0; i<modes.length; ++i) {
0031 if (modes[i].pluginId === mode) {
0032 return i;
0033 }
0034 }
0035
0036 return 0;
0037 }
0038
0039 readonly property int firstVisibilityMode: modes[0].pluginId
0040 readonly property int lastVisibilityMode: modes[modes.length - 1].pluginId
0041
0042 property variant modes: []
0043
0044 signal viewRelevantVisibilityModeChanged();
0045
0046 Component.onCompleted: {
0047 reloadModel();
0048 }
0049
0050 ListModel {
0051 id: actionsModel
0052 }
0053
0054 Connections{
0055 target: custom.button
0056 onClicked: {
0057 latteView.visibility.mode = custom.mode;
0058 }
0059 }
0060
0061 Connections{
0062 target: custom.comboBox.popup
0063 onVisibleChanged: {
0064 if (visible) {
0065 custom.selectChosenType();
0066 }
0067 }
0068 }
0069
0070 Connections {
0071 target: latteView.visibility
0072 onModeChanged: {
0073 for (var i=0; i<custom.modes.length; ++i) {
0074 if (custom.modes[i].pluginId === latteView.visibility.mode) {
0075 custom.viewRelevantVisibilityModeChanged();
0076 return;
0077 }
0078 }
0079 }
0080 }
0081
0082 Connections{
0083 target: custom.comboBox
0084
0085 onActivated: {
0086 if (index>=0) {
0087 var item = actionsModel.get(index);
0088 latteView.visibility.mode = item.pluginId;
0089 }
0090 }
0091 }
0092
0093 function reloadModel() {
0094 actionsModel.clear();
0095 appendDefaults();
0096 comboBox.model = actionsModel;
0097 selectChosenType();
0098 }
0099
0100 function selectChosenType() {
0101 var found = false;
0102
0103 for (var i=0; i<actionsModel.count; ++i) {
0104 if (actionsModel.get(i).pluginId === custom.mode) {
0105 found = true;
0106 custom.comboBox.currentIndex = i;
0107 break;
0108 }
0109 }
0110
0111 if (!found) {
0112 custom.comboBox.currentIndex = -1;
0113 }
0114 }
0115
0116 function emptyModel() {
0117 actionsModel.clear();
0118 appendDefaults();
0119
0120 comboBox.model = actionsModel;
0121 comboBox.currentIndex = -1;
0122 }
0123
0124 function appendDefaults() {
0125 for (var i=0; i<modes.length; ++i) {
0126 actionsModel.append(modes[i]);
0127 }
0128 }
0129 }