Warning, /network/neochat/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 QtQuick 0005 import QtQuick.Layouts 0006 import org.kde.kirigami as Kirigami 0007 0008 /** 0009 * Action that allows an user to share data with other apps and service 0010 * installed on their computer. The goal of this high level API is to 0011 * adapte itself for each platform and adopt the native component. 0012 * 0013 * TODO add Android support 0014 */ 0015 Kirigami.Action { 0016 id: root 0017 0018 icon.name: "emblem-shared-symbolic" 0019 text: i18n("Share") 0020 tooltip: i18n("Share the selected media") 0021 0022 property var doBeforeSharing: () => {} 0023 visible: false 0024 0025 /** 0026 * This property holds the input data for purpose. 0027 * 0028 * @code{.qml} 0029 * Purpose.ShareAction { 0030 * inputData: { 0031 * 'urls': ['file://home/notroot/Pictures/mypicture.png'], 0032 * 'mimeType': ['image/png'] 0033 * } 0034 * } 0035 * @endcode 0036 */ 0037 property var inputData: ({}) 0038 0039 property Instantiator _instantiator: Instantiator { 0040 Component.onCompleted: { 0041 const purposeModel = Qt.createQmlObject('import org.kde.purpose as Purpose; 0042 Purpose.PurposeAlternativesModel { 0043 pluginType: "Export" 0044 }', root._instantiator); 0045 purposeModel.inputData = Qt.binding(function () { 0046 return root.inputData; 0047 }); 0048 _instantiator.model = purposeModel; 0049 root.visible = true; 0050 } 0051 0052 delegate: Kirigami.Action { 0053 property int index 0054 text: model.display 0055 icon.name: model.iconName 0056 onTriggered: { 0057 doBeforeSharing(); 0058 applicationWindow().pageStack.pushDialogLayer('qrc:/org/kde/neochat/qml/ShareDialog.qml', { 0059 title: root.tooltip, 0060 index: index, 0061 model: root._instantiator.model 0062 }); 0063 } 0064 } 0065 onObjectAdded: (index, object) => { 0066 object.index = index; 0067 root.children.push(object); 0068 } 0069 onObjectRemoved: (index, object) => root.children = Array.from(root.children).filter(obj => obj.pluginId !== object.pluginId) 0070 } 0071 }