@@ -0,0 +1,101 @@
2+ * Copyright (C) 2015 Canonical, Ltd.
4+ * This program is free software; you can redistribute it and/or modify
5+ * it under the terms of the GNU General Public License as published by
6+ * the Free Software Foundation; version 3.
8+ * This program is distributed in the hope that it will be useful,
9+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+ * GNU General Public License for more details.
13+ * You should have received a copy of the GNU General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
18+import Ubuntu.Components 1.3
19+import Ubuntu.Content 1.1
23+ implicitHeight: button.height
24+ implicitWidth: button.width
26+ property var shareUris
27+ readonly property bool isUrlExternal: url && url.indexOf("file:///") != 0 && url.indexOf("/") != 0
28+ readonly property string contentType: shareUris ? shareUris["contentType"] : ""
29+ readonly property string url: shareUris ? shareUris["uri"] : ""
30+ readonly property Item rootItem: QuickUtils.rootItem(root)
38+ onClicked: peerPicker.visible = true
41+ anchors.centerIn: parent
44+ source: "image://theme/share"
49+ id: exportItemComponent
51+ name: i18n.tr("Preview Share Item")
56+ id: contentPeerComponent
58+ handler: ContentHandler.Share
60+ // for now, treat all external urls as Links, or it will break contenthub
61+ if (root.isUrlExternal) return ContentType.Links;
63+ switch(root.contentType) {
64+ case "all": return ContentType.All;
65+ case "contacts": return ContentType.Contacts;
66+ case "documents": return ContentType.Documents;
67+ case "links": return ContentType.Links;
68+ case "music": return ContentType.Music;
69+ case "pictures": return ContentType.Pictures;
70+ case "text": return ContentType.Text;
72+ case "unknown": return ContentType.Unknown;
73+ case "videos": return ContentType.Videos;
78+ var transfer = peer.request();
79+ if (transfer.state === ContentTransfer.InProgress) {
80+ var items = new Array();
81+ var exportItem = exportItemComponent.createObject();
82+ exportItem.url = url;
83+ items.push(exportItem);
84+ transfer.items = items;
85+ transfer.state = ContentTransfer.Charged;
87+ peerPicker.visible = false;
89+ onCancelPressed: peerPicker.visible = false;
99+ sourceComponent: root.visible ? contentPeerComponent : undefined