/* * This file is part of Remote Support Desktop * https://gitlab.das-netzwerkteam.de/RemoteWebApp/remote-support-desktop * Copyright 2020, 2021 Daniel Teichmann * Copyright 2020, 2021 Mike Gabriel * SPDX-License-Identifier: GPL-2.0-or-later * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the * Free Software Foundation, Inc., * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ import QtQuick 2.0 /** * adapted from StackOverflow: * http://stackoverflow.com/questions/26879266/make-toast-in-android-by-qml * GitHub Gist: https://gist.github.com/jonmcclung/bae669101d17b103e94790341301c129 * @brief Manager that creates Toasts dynamically */ ListView { /** * Public */ /** * @brief Shows a Toast * * @param {string} text Text to show * @param {real} duration Duration to show in milliseconds, defaults to 3000 * @param {enum} type Type of toast. Available is: * ToastType.Standard, ToastType.Info, ToastType.Warning * ToastType.Success, ToastType.Error */ function show(text, duration, type) { model.insert(0, {text: text, duration: duration, type: type}); } /** * Private */ id: root z: Infinity spacing: 5 anchors.fill: parent // parent.height * 0.1 = height of blue header rectangle on main anchors.topMargin: parent.height * 0.1 + 5 verticalLayoutDirection: ListView.TopToBottom interactive: false displaced: Transition { NumberAnimation { properties: "y" easing.type: Easing.InOutQuad } } delegate: Toast { Component.onCompleted: { if (typeof duration === "undefined" && typeof type === "undefined") { show(text, ToastType.ToastStandard); } else if (typeof duration === "undefined" && typeof type !== "undefined") { show(text, type); } else { show(text, duration, type); } } } model: ListModel {id: model} }