Warning, /pim/kube/framework/qml/SelectableItem.qml is written in an unsupported language. File is not indexed.
0001 /* 0002 * Copyright (C) 2017 Michael Bohlender, <bohlender@kolabsys.com> 0003 * Copyright (C) 2017 Christian Mollekopf, <mollekopf@kolabsys.com> 0004 * 0005 * This program is free software; you can redistribute it and/or modify 0006 * it under the terms of the GNU General Public License as published by 0007 * the Free Software Foundation; either version 2 of the License, or 0008 * (at your option) any later version. 0009 * 0010 * This program is distributed in the hope that it will be useful, 0011 * but WITHOUT ANY WARRANTY; without even the implied warranty of 0012 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 0013 * GNU General Public License for more details. 0014 * 0015 * You should have received a copy of the GNU General Public License along 0016 * with this program; if not, write to the Free Software Foundation, Inc., 0017 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 0018 */ 0019 0020 import QtQuick 2.7 0021 import QtQuick.Controls 2.2 0022 import org.kube.framework 1.0 as Kube 0023 import QtQuick.Layouts 1.3 0024 0025 QtObject { 0026 id: root 0027 property string text: "" 0028 property var layout: null 0029 property var visualParent: layout ? layout.parent : null 0030 onVisualParentChanged: { 0031 component.createObject(visualParent) 0032 } 0033 0034 /** 0035 * This assumes a layout filled with labels. 0036 * We iterate over all elements, extract the text, insert a linebreak after every line and a space otherwise. 0037 */ 0038 function gatherText() { 0039 var gatheredText = ""; 0040 var length = layout.visibleChildren.length 0041 for (var i = 0; i < length; i++) { 0042 var item = layout.visibleChildren[i] 0043 0044 if (item && item.text) { 0045 gatheredText += item.text; 0046 } 0047 if (layout.columns && (((i + 1) % layout.columns) == 0)) { 0048 gatheredText += "\n"; 0049 } else if (i != length - 1){ 0050 gatheredText += " "; 0051 } 0052 } 0053 // console.warn("Gathered text: ", gatheredText) 0054 return gatheredText 0055 } 0056 0057 property var comp: Component { 0058 id: component 0059 ContextMenuOverlay { 0060 id: menu 0061 anchors.fill: visualParent 0062 Kube.TextButton { 0063 id: button 0064 text: qsTr("Copy") 0065 onClicked: { 0066 if (root.text) { 0067 clipboard.text = root.text 0068 } else { 0069 clipboard.text = gatherText() 0070 } 0071 menu.close() 0072 } 0073 Kube.Clipboard { 0074 id: clipboard 0075 } 0076 } 0077 } 0078 } 0079 }