forked from qt-creator/qt-creator
		
	Change-Id: If18afb5d4665924e7d9250dccbc60a65e6daa75e Reviewed-by: Eike Ziller <eike.ziller@nokia.com>
		
			
				
	
	
		
			159 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			QML
		
	
	
	
	
	
			
		
		
	
	
			159 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			QML
		
	
	
	
	
	
| /**************************************************************************
 | |
| **
 | |
| ** This file is part of Qt Creator
 | |
| **
 | |
| ** Copyright (c) 2011 Nokia Corporation and/or its subsidiary(-ies).
 | |
| **
 | |
| ** Contact: Nokia Corporation (qt-info@nokia.com)
 | |
| **
 | |
| **
 | |
| ** GNU Lesser General Public License Usage
 | |
| **
 | |
| ** This file may be used under the terms of the GNU Lesser General Public
 | |
| ** License version 2.1 as published by the Free Software Foundation and
 | |
| ** appearing in the file LICENSE.LGPL included in the packaging of this file.
 | |
| ** Please review the following information to ensure the GNU Lesser General
 | |
| ** Public License version 2.1 requirements will be met:
 | |
| ** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
 | |
| **
 | |
| ** In addition, as a special exception, Nokia gives you certain additional
 | |
| ** rights. These rights are described in the Nokia Qt LGPL Exception
 | |
| ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
 | |
| **
 | |
| ** Other Usage
 | |
| **
 | |
| ** Alternatively, this file may be used in accordance with the terms and
 | |
| ** conditions contained in a signed written agreement between you and Nokia.
 | |
| **
 | |
| ** If you have questions regarding the use of this file, please contact
 | |
| ** Nokia at qt-info@nokia.com.
 | |
| **
 | |
| **************************************************************************/
 | |
| 
 | |
| import QtQuick 1.0
 | |
| import "./behaviors"    // TextEditMouseBehavior
 | |
| 
 | |
| // KNOWN ISSUES
 | |
| // 1) TextField does not loose focus when !enabled if it is a FocusScope (see QTBUG-16161)
 | |
| 
 | |
| FocusScope {
 | |
|     id: textField
 | |
| 
 | |
|     property alias text: textInput.text
 | |
|     property alias font: textInput.font
 | |
| 
 | |
|     property int inputHint // values tbd
 | |
|     property bool acceptableInput: textInput.acceptableInput // read only
 | |
|     property bool readOnly: textInput.readOnly // read only
 | |
|     property alias placeholderText: placeholderTextComponent.text
 | |
|     property bool  passwordMode: false
 | |
|     property alias selectedText: textInput.selectedText
 | |
|     property alias selectionEnd: textInput.selectionEnd
 | |
|     property alias selectionStart: textInput.selectionStart
 | |
|     property alias validator: textInput.validator
 | |
|     property alias inputMask: textInput.inputMask
 | |
|     property alias horizontalalignment: textInput.horizontalAlignment
 | |
|     property alias echoMode: textInput.echoMode
 | |
|     property alias cursorPosition: textInput.cursorPosition
 | |
|     property alias inputMethodHints: textInput.inputMethodHints
 | |
| 
 | |
|     property color textColor: syspal.text
 | |
|     property color backgroundColor: syspal.base
 | |
|     property alias containsMouse: mouseArea.containsMouse
 | |
| 
 | |
|     property Component background: null
 | |
|     property Component hints: null
 | |
|     property Item backgroundItem: backgroundLoader.item
 | |
| 
 | |
|     property int minimumWidth: 0
 | |
|     property int minimumHeight: 0
 | |
| 
 | |
|     property int leftMargin: 0
 | |
|     property int topMargin: 0
 | |
|     property int rightMargin: 0
 | |
|     property int bottomMargin: 0
 | |
| 
 | |
|     function copy() {
 | |
|         textInput.copy()
 | |
|     }
 | |
| 
 | |
|     function paste() {
 | |
|         textInput.paste()
 | |
|     }
 | |
| 
 | |
|     function cut() {
 | |
|         textInput.cut()
 | |
|     }
 | |
| 
 | |
|     function select(start, end) {
 | |
|         textInput.select(start, end)
 | |
|     }
 | |
| 
 | |
|     function selectAll() {
 | |
|         textInput.selectAll()
 | |
|     }
 | |
| 
 | |
|     function selectWord() {
 | |
|         textInput.selectWord()
 | |
|     }
 | |
| 
 | |
|     function positionAt(x) {
 | |
|         var p = mapToItem(textInput, x, 0);
 | |
|         return textInput.positionAt(p.x);
 | |
|     }
 | |
| 
 | |
|     function positionToRectangle(pos) {
 | |
|         var p = mapToItem(textInput, pos.x, pos.y);
 | |
|         return textInput.positionToRectangle(p);
 | |
|     }
 | |
| 
 | |
|     width: Math.max(minimumWidth,
 | |
|                     textInput.width + leftMargin + rightMargin)
 | |
| 
 | |
|     height: Math.max(minimumHeight,
 | |
|                      textInput.height + topMargin + bottomMargin)
 | |
| 
 | |
|     // Implementation
 | |
|     clip: true
 | |
| 
 | |
|     SystemPalette { id: syspal }
 | |
|     Loader { id: hintsLoader; sourceComponent: hints }
 | |
|     Loader { id: backgroundLoader; sourceComponent: background; anchors.fill:parent}
 | |
| 
 | |
|     MouseArea {
 | |
|         id: mouseArea
 | |
|         anchors.fill: parent
 | |
|         hoverEnabled: true
 | |
|     }
 | |
| 
 | |
|     TextInput { // see QTBUG-14936
 | |
|         id: textInput
 | |
|         selectByMouse:true
 | |
|         font.pixelSize: hintsLoader.item != null ? hintsLoader.item.fontPixelSize: 14
 | |
|         font.bold: hintsLoader.item != null ? hintsLoader.item.fontBold : false
 | |
| 
 | |
|         anchors.leftMargin: leftMargin
 | |
|         anchors.topMargin: topMargin
 | |
|         anchors.rightMargin: rightMargin
 | |
|         anchors.bottomMargin: bottomMargin
 | |
| 
 | |
|         anchors.left: parent.left
 | |
|         anchors.right: parent.right
 | |
|         anchors.verticalCenter: parent.verticalCenter
 | |
| 
 | |
|         color: enabled ? textColor : Qt.tint(textColor, "#80ffffff")
 | |
|         echoMode: passwordMode ? _hints.passwordEchoMode : TextInput.Normal
 | |
|     }
 | |
| 
 | |
|     Text {
 | |
|         id: placeholderTextComponent
 | |
|         anchors.fill: textInput
 | |
|         font: textInput.font
 | |
|         opacity: !textInput.text.length && !textInput.activeFocus ? 1 : 0
 | |
|         color: "gray"
 | |
|         text: "Enter text"
 | |
|         elide: Text.ElideRight
 | |
|         Behavior on opacity { NumberAnimation { duration: 90 } }
 | |
|     }
 | |
| }
 |