Warning, /multimedia/haruna/src/qml/Haruna/Components/SubtitlesFolders.qml is written in an unsupported language. File is not indexed.
0001 /* 0002 * SPDX-FileCopyrightText: 2020 George Florea Bănuș <georgefb899@gmail.com> 0003 * 0004 * SPDX-License-Identifier: GPL-3.0-or-later 0005 */ 0006 0007 import QtQuick 0008 import QtQuick.Layouts 0009 import QtQuick.Controls 0010 0011 import org.kde.kirigami as Kirigami 0012 0013 // Subtitles Folders 0014 Item { 0015 id: root 0016 0017 // prevent creating multiple empty items 0018 // until the new one has been saved 0019 property bool canAddFolder: true 0020 0021 implicitHeight: sectionTitle.height + sfListView.implicitHeight + sfAddFolder.height + 25 0022 0023 Label { 0024 id: sectionTitle 0025 0026 text: i18nc("@title", "Load subtitles from") 0027 bottomPadding: 10 0028 } 0029 0030 ListView { 0031 id: sfListView 0032 property int sfDelegateHeight: 40 0033 0034 anchors.top: sectionTitle.bottom 0035 anchors.left: parent.left 0036 anchors.right: parent.right 0037 implicitHeight: count > 5 0038 ? 5 * sfListView.sfDelegateHeight + (sfListView.spacing * 4) 0039 : count * sfListView.sfDelegateHeight + (sfListView.spacing * (count - 1)) 0040 spacing: 5 0041 clip: true 0042 model: subtitlesFoldersModel 0043 Layout.fillWidth: true 0044 ScrollBar.vertical: ScrollBar { id: scrollBar } 0045 delegate: Rectangle { 0046 id: sfDelegate 0047 width: root.width 0048 height: sfListView.sfDelegateHeight 0049 color: Kirigami.Theme.alternateBackgroundColor 0050 0051 Loader { 0052 id: sfLoader 0053 anchors.fill: parent 0054 sourceComponent: model.display === "" ? sfEditComponent : sfDisplayComponent 0055 } 0056 0057 Component { 0058 id: sfDisplayComponent 0059 0060 RowLayout { 0061 0062 Label { 0063 id: sfLabel 0064 text: model.display 0065 leftPadding: 10 0066 Layout.fillWidth: true 0067 } 0068 0069 Button { 0070 icon.name: "edit-entry" 0071 flat: true 0072 onClicked: { 0073 sfLoader.sourceComponent = sfEditComponent 0074 } 0075 } 0076 0077 Item { width: scrollBar.width } 0078 } 0079 } // Component: display 0080 0081 Component { 0082 id: sfEditComponent 0083 0084 RowLayout { 0085 0086 TextField { 0087 id: editField 0088 leftPadding: 10 0089 text: model.display 0090 Layout.leftMargin: 5 0091 Layout.fillWidth: true 0092 Component.onCompleted: editField.forceActiveFocus(Qt.MouseFocusReason) 0093 } 0094 0095 Button { 0096 property bool canDelete: editField.text === "" 0097 icon.name: "delete" 0098 flat: true 0099 onClicked: { 0100 if (!canDelete) { 0101 text = i18nc("@action:button", "Confirm deletion") 0102 canDelete = true 0103 return 0104 } 0105 0106 if (model.row === sfListView.count - 1) { 0107 root.canAddFolder = true 0108 } 0109 subtitlesFoldersModel.deleteFolder(model.row) 0110 const rows = sfListView.count 0111 sfListView.implicitHeight = rows > 5 0112 ? 5 * sfListView.sfDelegateHeight + (sfListView.spacing * 4) 0113 : rows * sfListView.sfDelegateHeight + (sfListView.spacing * (rows - 1)) 0114 0115 } 0116 ToolTip { 0117 text: i18nc("@info:tooltip", "Delete this folder from list") 0118 } 0119 } 0120 0121 Button { 0122 icon.name: "dialog-ok" 0123 flat: true 0124 enabled: editField.text !== "" ? true : false 0125 onClicked: { 0126 subtitlesFoldersModel.updateFolder(editField.text, model.row) 0127 sfLoader.sourceComponent = sfDisplayComponent 0128 if (model.row === sfListView.count - 1) { 0129 root.canAddFolder = true 0130 } 0131 } 0132 ToolTip { 0133 text: i18nc("@info:tooltip", "Save changes") 0134 } 0135 } 0136 0137 Item { width: scrollBar.width } 0138 } 0139 } // Component: edit 0140 } // delegate: Rectangle 0141 } 0142 0143 Item { 0144 id: spacer 0145 anchors.top: sfListView.bottom 0146 height: 5 0147 } 0148 0149 Button { 0150 id: sfAddFolder 0151 0152 anchors.left: parent.left 0153 anchors.top: spacer.bottom 0154 icon.name: "list-add" 0155 text: i18nc("@action:button", "Add new folder") 0156 enabled: root.canAddFolder 0157 onClicked: { 0158 subtitlesFoldersModel.addFolder() 0159 const rows = sfListView.count 0160 sfListView.implicitHeight = rows > 5 0161 ? 5 * sfListView.sfDelegateHeight + (sfListView.spacing * 4) 0162 : rows * sfListView.sfDelegateHeight + (sfListView.spacing * (rows - 1)) 0163 root.canAddFolder = false 0164 } 0165 } 0166 }