/**************************************************************************** ** ** Copyright (C) 2019 Luxoft Sweden AB ** Copyright (C) 2018 Pelagicore AG ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the Neptune 3 UI. ** ** $QT_BEGIN_LICENSE:GPL-QTAS$ ** Commercial License Usage ** Licensees holding valid commercial Qt Automotive Suite licenses may use ** this file in accordance with the commercial license agreement provided ** with the Software or, alternatively, in accordance with the terms ** contained in a written agreement between you and The Qt Company. For ** licensing terms and conditions see https://www.qt.io/terms-conditions. ** For further information use the contact form at https://www.qt.io/contact-us. ** ** GNU General Public License Usage ** Alternatively, this file may be used under the terms of the GNU ** General Public License version 3 or (at your option) any later version ** approved by the KDE Free Qt Foundation. The licenses are as published by ** the Free Software Foundation and appearing in the file LICENSE.GPL3 ** included in the packaging of this file. Please review the following ** information to ensure the GNU General Public License requirements will ** be met: https://www.gnu.org/licenses/gpl-3.0.html. ** ** $QT_END_LICENSE$ ** ** SPDX-License-Identifier: GPL-3.0 ** ****************************************************************************/ import QtQuick import QtQml /* Loads a PopupItem on demand It provides the same API as PopupItem so that it can be used as a drop-in replacement. */ Loader { id: root active: false // to be set/called from outside property Item popupParent property Item originItem property real originItemX property real originItemY property var popupX: null property var popupY: null function open() { if (!active) { active = true; } else { item.open(); } } signal closed() Connections { target: item function onClosed() { root.closed(); } } onStatusChanged: { if (status === Loader.Ready) { root.item.open(); } } Binding { restoreMode: Binding.RestoreBinding; target: root.item; property: "parent"; value: root.popupParent; } Binding { restoreMode: Binding.RestoreBinding; target: root.item; property: "originItem"; value: root.originItem; } Binding { restoreMode: Binding.RestoreBinding; target: root.item; property: "originItemX"; value: root.originItemX; } Binding { restoreMode: Binding.RestoreBinding; target: root.item; property: "originItemY"; value: root.originItemY; } Binding { restoreMode: Binding.RestoreBinding; target: root.item; when: root.popupX !== null; property: "popupX"; value: root.popupX; } Binding { restoreMode: Binding.RestoreBinding; target: root.item; when: root.popupY !== null; property: "popupY"; value: root.popupY; } }