/* * Copyright (c) 2014, Stefan Brand * All rights reserved. * * Redistribution and use in source and binary forms, with or without modification, * are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright notice, this * list of conditions and the following disclaimer in the documentation and/or other * materials provided with the distribution. * * 3. The names of the contributors may not be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ import QtQuick 2.0 import Sailfish.Silica 1.0 MouseArea { id: notifyBanner width: Screen.width height: notifyText.height + 2*Theme.paddingMedium visible: showBanner property bool showBanner: false property color bgColor: Theme.secondaryHighlightColor property color fgColor: Theme.primaryColor function show(text, params) { // Do nothing if no text was given if (text === undefined) return false; // Set values from parameters notifyText.text = text; timeout.interval = (params !== undefined && "time" in params && params.time !== undefined) ? params.time : 3000; bgColor = (params !== undefined && params.bgColor !== undefined) ? params.bgColor : Theme.secondaryHighlightColor fgColor = (params !== undefined && params.fgColor !== undefined) ? params.fgColor : Theme.primaryColor showBanner = true; timeout.start(); } Timer { id: timeout interval: 3000 onTriggered: { showBanner = false } } Rectangle { id: banner anchors.fill: parent color: bgColor Text { id: notifyText anchors.left: parent.left anchors.right: parent.right anchors.verticalCenter: parent.verticalCenter anchors.margins: Theme.paddingLarge font.pixelSize: Theme.fontSizeSmall color: fgColor wrapMode: Text.Wrap elide: Text.ElideRight maximumLineCount: 3 } } onClicked: { showBanner = false timeout.stop() } }