mirror of
				https://github.com/subsurface/subsurface.git
				synced 2025-02-19 22:16:15 +00:00 
			
		
		
		
	
		
			
	
	
		
			130 lines
		
	
	
	
		
			3.8 KiB
		
	
	
	
		
			QML
		
	
	
	
	
	
		
		
			
		
	
	
			130 lines
		
	
	
	
		
			3.8 KiB
		
	
	
	
		
			QML
		
	
	
	
	
	
|  | /* | ||
|  |  *   Copyright 2010 Marco Martin <notmart@gmail.com> | ||
|  |  * | ||
|  |  *   This program is free software; you can redistribute it and/or modify | ||
|  |  *   it under the terms of the GNU Library General Public License as | ||
|  |  *   published by the Free Software Foundation; either version 2, 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 Library General Public License for more details | ||
|  |  * | ||
|  |  *   You should have received a copy of the GNU Library General Public | ||
|  |  *   License along with this program; if not, write to the | ||
|  |  *   Free Software Foundation, Inc., | ||
|  |  *   51 Franklin Street, Fifth Floor, Boston, MA  2.010-1301, USA. | ||
|  |  */ | ||
|  | 
 | ||
|  | import QtQuick 2.1 | ||
|  | import org.kde.plasma.mobilecomponents 0.2 | ||
|  | 
 | ||
|  | /** | ||
|  |  * An item delegate for the primitive ListView component. | ||
|  |  * | ||
|  |  * It's intended to make all listviews look coherent. | ||
|  |  * | ||
|  |  * @inherit QtQuick.Item | ||
|  |  */ | ||
|  | Item { | ||
|  |     id: listItem | ||
|  |     default property alias content: paddingItem.data | ||
|  | 
 | ||
|  |     /** | ||
|  |      * type:bool Holds if the item emits signals related to mouse interaction. | ||
|  |      * | ||
|  |      * The default value is false. | ||
|  |      */ | ||
|  |     property alias enabled: itemMouse.enabled | ||
|  |     //item has been clicked or pressed+hold
 | ||
|  | 
 | ||
|  |     /** | ||
|  |      * This signal is emitted when there is a click. | ||
|  |      * | ||
|  |      * This is disabled by default, set enabled to true to use it. | ||
|  |      * @see enabled | ||
|  |      */ | ||
|  |     signal clicked | ||
|  | 
 | ||
|  | 
 | ||
|  |     /** | ||
|  |      * The user pressed the item with the mouse and didn't release it for a | ||
|  |      * certain amount of time. | ||
|  |      * | ||
|  |      * This is disabled by default, set enabled to true to use it. | ||
|  |      * @see enabled | ||
|  |      */ | ||
|  |     signal pressAndHold | ||
|  | 
 | ||
|  |     /** | ||
|  |      * If true makes the list item look as checked or pressed. It has to be set | ||
|  |      * from the code, it won't change by itself. | ||
|  |      */ | ||
|  |     //plasma extension
 | ||
|  |     //always look pressed?
 | ||
|  |     property bool checked: false | ||
|  | 
 | ||
|  |     /** | ||
|  |      * If true the item will be a delegate for a section, so will look like a | ||
|  |      * "title" for the otems under it. | ||
|  |      */ | ||
|  |     //is this to be used as section delegate?
 | ||
|  |     property bool sectionDelegate: false | ||
|  | 
 | ||
|  |     /** | ||
|  |      * True if the list item contains mouse | ||
|  |      */ | ||
|  |     property alias containsMouse: itemMouse.containsMouse | ||
|  | 
 | ||
|  |     width: parent ? parent.width : childrenRect.width | ||
|  |     height: paddingItem.childrenRect.height + Units.smallSpacing*2 | ||
|  | 
 | ||
|  |     property int implicitHeight: paddingItem.childrenRect.height + Units.smallSpacing*2 | ||
|  | 
 | ||
|  | 
 | ||
|  |     MouseArea { | ||
|  |         id: itemMouse | ||
|  |         property bool changeBackgroundOnPress: !listItem.checked && !listItem.sectionDelegate | ||
|  |         anchors.fill: parent | ||
|  |         enabled: false | ||
|  |         hoverEnabled: true | ||
|  | 
 | ||
|  |         onClicked: listItem.clicked() | ||
|  |         onPressAndHold: listItem.pressAndHold() | ||
|  | 
 | ||
|  |         Rectangle { | ||
|  |             id : background | ||
|  |             color: listItem.checked || (itemMouse.pressed && itemMouse.changeBackgroundOnPress) ? Theme.highlightColor : Theme.viewBackgroundColor | ||
|  | 
 | ||
|  |             anchors.fill: parent | ||
|  |             visible: listItem.ListView.view ? listItem.ListView.view.highlight === null : true | ||
|  |             opacity: itemMouse.containsMouse && !itemMouse.pressed ? 0.5 : 1 | ||
|  |             Behavior on color { | ||
|  |                 ColorAnimation { duration: Units.longDuration } | ||
|  |             } | ||
|  |             Behavior on opacity { NumberAnimation { duration: Units.longDuration } } | ||
|  |         } | ||
|  |         Item { | ||
|  |             id: paddingItem | ||
|  |             anchors { | ||
|  |                 fill: parent | ||
|  |                 margins: Units.smallSpacing | ||
|  |             } | ||
|  |         } | ||
|  |     } | ||
|  | 
 | ||
|  |     Rectangle { | ||
|  |         color: Theme.textColor | ||
|  |         opacity: 0.2 | ||
|  |         anchors { | ||
|  |             left: parent.left | ||
|  |             right: parent.right | ||
|  |             bottom: parent.bottom | ||
|  |         } | ||
|  |         height: 1 | ||
|  |     } | ||
|  | 
 | ||
|  |     Accessible.role: Accessible.ListItem | ||
|  | } |