Warning, /games/kreversi/src/qml/Popup.qml is written in an unsupported language. File is not indexed.
0001 /* 0002 SPDX-FileCopyrightText: 2007 Dmitry Suzdalev <dimsuz@gmail.com> 0003 SPDX-FileCopyrightText: 2012 Viranch Mehta <viranch.mehta@gmail.com 0004 SPDX-FileCopyrightText: 2013 Denis Kuplyakov <dener.kup@gmail.com> 0005 0006 SPDX-License-Identifier: GPL-2.0-or-later 0007 */ 0008 0009 import QtQuick 2.3 0010 import ColorScheme 1.0 0011 0012 /** 0013 * Popup 0014 * 0015 * Represents popup. It's analog of KGamePopupItem. 0016 * 0017 * TODO: move it to libkdegames 0018 */ 0019 0020 Rectangle { 0021 id: popup 0022 0023 // constants 0024 0025 /** 0026 * Margin on the sides of message box 0027 */ 0028 property int marginOnSides: 15 0029 /** 0030 * Space between pixmap and text 0031 */ 0032 property int marginIconText: 10 0033 0034 // API properties 0035 0036 // TODO: If item is hovered with mouse it will hide only after user moves the mouse away 0037 /** 0038 * The amount of time the item will stay visible on screen before it goes away. 0039 * By default item is shown for 2000 msec. 0040 */ 0041 property int timeout: 2000 0042 /** 0043 * The popup angles sharpness 0044 */ 0045 property alias sharpness: popup.radius 0046 /** 0047 * Name of the icon to show at popup 0048 */ 0049 property string iconName: "dialog-information" 0050 /** 0051 * Sets whether to hide this popup item on mouse click. 0052 * 0053 * By default a mouse click will cause an item to hide 0054 */ 0055 property alias hideOnMouseClick: mouseArea.enabled 0056 /** 0057 * Sets default color for unformatted text. 0058 * By default system-default color is used. 0059 */ 0060 property alias textColor: text.color 0061 /** 0062 * Sets default color for background. 0063 * By default system-default color is used. 0064 */ 0065 property alias backgroundColor: popup.color 0066 /** 0067 * Sets whether to use custom border color or system-default one. 0068 * By default system-default color is used. 0069 */ 0070 property bool useCustomBorderColor: false 0071 /** 0072 * Border's color. 0073 * By default system-default color is used. 0074 */ 0075 property color borderColor: popup.border.color 0076 /** 0077 * Border's width in pixels. 0078 * By default it's equals 1 0079 */ 0080 property int borderWidth: 1 0081 /** 0082 * Sets whether new message is replacing already showing one or ignored 0083 */ 0084 property bool isReplacing: false 0085 0086 // API signals 0087 /** 0088 * Emitted when user clicks on a link in item. 0089 */ 0090 signal linkActivated(string link) 0091 /** 0092 * Emitted when popup hides. 0093 */ 0094 signal hidden() 0095 0096 // private properties 0097 height: row.height + 2 * marginOnSides 0098 width: row.width + 2 * marginOnSides 0099 0100 color: colorScheme.background 0101 border.color: useCustomBorderColor ? black : colorScheme.border 0102 border.width: borderWidth 0103 0104 function show(message, showing_state) { 0105 if (!timer.running || isReplacing) { 0106 text.text = message 0107 timer.restart() 0108 state = showing_state 0109 } 0110 } 0111 0112 ColorScheme { 0113 id: colorScheme 0114 } 0115 0116 Timer { 0117 id: timer 0118 repeat: false 0119 interval: timeout 0120 onTriggered: { 0121 state = "" 0122 hidden() 0123 } 0124 } 0125 0126 Row { 0127 id: row 0128 anchors.centerIn: parent 0129 spacing: marginIconText 0130 0131 Image { 0132 id: icon 0133 anchors.verticalCenter: parent.verticalCenter 0134 width: visible ? 32 : 0 0135 height: width 0136 0137 visible: iconName != "" 0138 0139 source: "image://icon/" + iconName 0140 } 0141 0142 0143 Text { 0144 id: text 0145 anchors.verticalCenter: parent.verticalCenter 0146 color: colorScheme.foreground 0147 wrapMode: Text.WordWrap 0148 0149 onLinkActivated: popup.linkActivated(link); 0150 } 0151 } 0152 0153 MouseArea { 0154 id: mouseArea 0155 anchors.fill: parent 0156 0157 onClicked: { 0158 popup.state = "" 0159 timer.stop() 0160 hidden() 0161 } 0162 } 0163 }