diff --git a/applets/mediaframe/package/contents/ui/ConfigPaths.qml b/applets/mediaframe/package/contents/ui/ConfigPaths.qml index d45f6dc44..838be23b8 100644 --- a/applets/mediaframe/package/contents/ui/ConfigPaths.qml +++ b/applets/mediaframe/package/contents/ui/ConfigPaths.qml @@ -1,169 +1,173 @@ /* * Copyright 2015 Lars Pontoppidan * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 2.010-1301, USA. */ import QtQuick 2.1 import QtQuick.Controls 1.1 import QtQuick.Dialogs 1.2 import QtQuick.Layouts 1.1 import org.kde.plasma.plasmoid 2.0 ColumnLayout { id: root + signal configurationChanged + property var cfg_pathList: [] function addPath(object) { pathModel.append( object ) cfg_pathList.push( JSON.stringify(object) ) + configurationChanged(); } function removePath(index) { if(pathModel.count > 0) { pathModel.remove(index) cfg_pathList.splice(index,1) + configurationChanged(); } } Component.onCompleted: { // Load the list back in var list = plasmoid.configuration.pathList cfg_pathList = [] for(var i in list) { addPath( JSON.parse(list[i]) ) } } FileDialog { id: fileDialog visible: false title: i18nc("@title:window", "Choose Files") folder: shortcuts.pictures selectMultiple: true // TODO get valid filter list from native code? //nameFilters: [ "Image files (*.png *.jpg)", "All files (*)" ] //selectedNameFilter: "All files (*)" onAccepted: { console.log("Accepted: " + fileUrls) for (var i = 0; i < fileUrls.length; ++i) { var item = { 'path':fileUrls[i], 'type':'file' } addPath(item) } } onRejected: { console.log("Canceled") } } FileDialog { id: folderDialog visible: false title: i18nc("@title:window", "Choose a Folder") folder: shortcuts.pictures selectFolder: true onAccepted: { console.log("Accepted: " + fileUrls) for (var i = 0; i < fileUrls.length; ++i) { var item = { 'path':fileUrls[i], 'type':'folder' } addPath(item) } } onRejected: { console.log("Canceled") } } RowLayout { Layout.fillWidth: true Button { iconName: "folder-new" onClicked: folderDialog.visible = true text: i18nc("@action:button", "Add Folder...") } Button { iconName: "document-new" onClicked: fileDialog.visible = true text: i18nc("@action:button", "Add Files...") } } Label { Layout.fillWidth: true text: i18nc("@label:listbox", "Paths:") } ListModel { id: pathModel } RowLayout { Layout.fillWidth: true Layout.fillHeight: true ScrollView { Layout.fillWidth: true Layout.fillHeight: true frameVisible: true ListView { width: parent.width model: pathModel delegate: RowLayout { width: parent.width Label { id: pathText Layout.fillWidth: true text: model.path } Button { id: removePathButton iconName: "list-remove" onClicked: removePath(model.index) } } } } } }