Warning, /graphics/koko/src/qml/ShareAction.qml is written in an unsupported language. File is not indexed.
0001 // SPDX-FileCopyrightText: 2021 Carl Schwan <carl@carlschwan.eu> 0002 // SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL 0003 0004 import QtQml.Models 0005 import QtQuick 0006 import QtQuick.Layouts 0007 import QtQuick.Controls 2 as Controls 0008 import org.kde.purpose 1 as Purpose 0009 import org.kde.kirigami 2 as Kirigami 0010 0011 /** 0012 * Action that allows an user to share data with other apps and service 0013 * installed on their computer. The goal of this high level API is to 0014 * adapte itself for each platform and adopt the native component. 0015 * 0016 * TODO add more doc, before moving to Peruse upstream 0017 * 0018 * TODO add Android support 0019 */ 0020 Kirigami.Action { 0021 id: shareAction 0022 icon.name: "emblem-shared-symbolic" 0023 text: i18n("Share") 0024 tooltip: i18n("Share the selected media") 0025 0026 /** 0027 * This property holds the input data for purpose. 0028 * 0029 * @code{.qml} 0030 * Purpose.ShareAction { 0031 * inputData: { 0032 * 'urls': ['file://home/notroot/Pictures/mypicture.png'], 0033 * 'mimeType': ['image/png'] 0034 * } 0035 * } 0036 * @endcode 0037 */ 0038 property var inputData: ({}) 0039 0040 onTriggered: { 0041 if (!Kirigami.Settings.isMobile) { 0042 return; 0043 } 0044 const shareDrawerComponent = Qt.createComponent('qrc:/qml/ShareDrawer.qml'); 0045 const drawer = shareDrawerComponent.createObject(applicationWindow().overlay, { 0046 inputData: shareAction.inputData, 0047 title: shareAction.text 0048 }); 0049 drawer.open(); 0050 } 0051 0052 property Instantiator _instantiator: Instantiator { 0053 active: !Kirigami.Settings.isMobile 0054 model: Purpose.PurposeAlternativesModel { 0055 pluginType: "Export" 0056 inputData: shareAction.inputData 0057 } 0058 0059 delegate: Kirigami.Action { 0060 property int index 0061 text: model.display 0062 icon.name: model.iconName 0063 onTriggered: { 0064 applicationWindow().pageStack.pushDialogLayer('qrc:/qml/ShareDialog.qml', { 0065 title: shareAction.tooltip, 0066 index: index, 0067 model: shareAction._instantiator.model 0068 }) 0069 } 0070 } 0071 onObjectAdded: (index, object) => { 0072 object.index = index; 0073 shareAction.children.push(object) 0074 } 0075 onObjectRemoved: (index, object) => { 0076 shareAction.children = Array.from(shareAction.children).filter(obj => obj.pluginId !== object.pluginId) 0077 } 0078 } 0079 }