summaryrefslogtreecommitdiff
path: root/tests/auto/controls/data/tst_combobox.qml
diff options
context:
space:
mode:
authorJens Bache-Wiig <jens.bache-wiig@digia.com>2013-08-16 13:20:11 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-09-17 17:18:02 +0200
commit4c184095d378622fb0c3bb1692b331b3cc04e010 (patch)
treefe097a46b7e451f240a1033fbb37a7b0aace9ca6 /tests/auto/controls/data/tst_combobox.qml
parent9cde5d427a1fc1c2d36b853e1261d08f8dbfa126 (diff)
downloadqtquickcontrols-4c184095d378622fb0c3bb1692b331b3cc04e010.tar.gz
Make ComboBox editable
In addition - Added text completion - Added validator - Added accepted signal - Added activated signal - Added textAt function - Added find function - Added keyboard indexing for non-editable as well Note that we do not support adding values to the model, but leave this up to the user to handle in onAccepted. Change-Id: I1d76fa83aea0e488959c418d22ce7b6027675d86 Reviewed-by: Caroline Chao <caroline.chao@digia.com> Reviewed-by: J-P Nurmi <jpnurmi@digia.com>
Diffstat (limited to 'tests/auto/controls/data/tst_combobox.qml')
-rw-r--r--tests/auto/controls/data/tst_combobox.qml252
1 files changed, 252 insertions, 0 deletions
diff --git a/tests/auto/controls/data/tst_combobox.qml b/tests/auto/controls/data/tst_combobox.qml
index aed53c5b..e6ea7c5c 100644
--- a/tests/auto/controls/data/tst_combobox.qml
+++ b/tests/auto/controls/data/tst_combobox.qml
@@ -142,6 +142,258 @@ TestCase {
compare(comboBox.currentIndex, 0)
compare(comboBox.currentText, "Banana")
comboBox.destroy()
+
+ comboBox = Qt.createQmlObject('import QtQuick.Controls 1.1 ; ComboBox {}', testCase, '');
+ comboBox.editable = true
+ comboBox.model = arrayModel
+ compare(comboBox.currentIndex, 0)
+ compare(comboBox.currentText, "Banana")
+ comboBox.destroy()
+ }
+
+ function test_validator() {
+ var comboBox = Qt.createQmlObject('import QtQuick 2.1; \
+ import QtQuick.Controls 1.1; \
+ ComboBox { \
+ editable: true; \
+ validator: RegExpValidator { \
+ regExp: /(red|blue|green)?/ \
+ }}', testCase, '')
+
+ comboBox.editText = "blu"
+ compare(comboBox.acceptableInput, false)
+ comboBox.editText = "blue"
+ compare(comboBox.acceptableInput, true)
+ comboBox.editText = "bluee"
+ compare(comboBox.acceptableInput, false)
+ comboBox.editText = ""
+ compare(comboBox.acceptableInput, true)
+ comboBox.editText = ""
+ comboBox.forceActiveFocus()
+ keyPress(Qt.Key_A)
+ compare(comboBox.editText, "")
+ keyPress(Qt.Key_A)
+ compare(comboBox.editText, "")
+ keyPress(Qt.Key_R)
+ compare(comboBox.editText, "r")
+ keyPress(Qt.Key_A)
+ compare(comboBox.editText, "r")
+ compare(comboBox.acceptableInput, false)
+ keyPress(Qt.Key_E)
+ compare(comboBox.editText, "re")
+ compare(comboBox.acceptableInput, false)
+ keyPress(Qt.Key_D)
+ compare(comboBox.editText, "red")
+ compare(comboBox.acceptableInput, true)
+ comboBox.destroy()
+ }
+
+ function test_append_find() {
+ var comboBox = Qt.createQmlObject( 'import QtQuick.Controls 1.1; \
+ import QtQuick 2.2; \
+ ComboBox { \
+ model:ListModel{ListElement{text:"first"}} \
+ onAccepted: { \
+ if (find(currentText) === -1) { \
+ model.append({text: editText}); \
+ currentIndex = find(editText); \
+ } \
+ } \
+ }', testCase, '')
+
+ comboBox.editable = true
+ compare(comboBox.currentIndex, 0)
+ compare(comboBox.currentText, "first")
+ comboBox.forceActiveFocus();
+
+ comboBox.selectAll();
+ keyPress(Qt.Key_T)
+ keyPress(Qt.Key_H)
+ keyPress(Qt.Key_I)
+ keyPress(Qt.Key_R)
+ keyPress(Qt.Key_D)
+ compare(comboBox.count, 1)
+ compare(comboBox.currentText, "first")
+ compare(comboBox.editText, "third")
+
+ keyPress(Qt.Key_Enter)
+ compare(comboBox.count, 2)
+ compare(comboBox.currentIndex, 1)
+ compare(comboBox.currentText, "third")
+ comboBox.destroy()
+ }
+
+ function test_editable() {
+ var arrayModel = ['Banana', 'Coco', 'Coconut', 'Apple', 'Cocomuffin' ]
+ var comboBox = Qt.createQmlObject('import QtQuick.Controls 1.1; \
+ ComboBox { \
+ property int acceptedCount: 0; \
+ onAccepted: ++acceptedCount; \
+ }'
+ , testCase, '');
+ comboBox.model = arrayModel
+ comboBox.editable = true
+ compare(comboBox.currentIndex, 0)
+ compare(comboBox.currentText, "Banana")
+ compare(comboBox.acceptedCount, 0)
+ comboBox.forceActiveFocus()
+ comboBox.editText = ""
+
+ keyPress(Qt.Key_C)
+ compare(comboBox.currentText, "Banana")
+ compare(comboBox.editText, "coco")
+ compare(comboBox.currentIndex, 0)
+
+ keyPress(Qt.Key_Right)
+ keyPress(Qt.Key_N)
+ compare(comboBox.currentText, "Banana")
+ compare(comboBox.editText, "coconut")
+ keyPress(Qt.Key_Enter) // Accept
+
+ compare(comboBox.currentText, "Coconut")
+ compare(comboBox.currentIndex, 2)
+
+ keyPress(Qt.Key_Backspace)
+ keyPress(Qt.Key_Backspace)
+ keyPress(Qt.Key_Backspace)
+ keyPress(Qt.Key_M)
+ compare(comboBox.currentText, "Coconut")
+ compare(comboBox.editText, "Cocomuffin")
+ keyPress(Qt.Key_Enter) // Accept
+
+ compare(comboBox.currentText, "Cocomuffin")
+ compare(comboBox.currentIndex, 4)
+ keyPress(Qt.Key_Return) // Accept
+ compare(comboBox.acceptedCount, 3)
+
+ comboBox.editText = ""
+
+ keyPress(Qt.Key_A)
+ compare(comboBox.currentText, "Cocomuffin")
+ keyPress(Qt.Key_Return) // Accept
+
+ compare(comboBox.currentText, "Apple")
+ compare(comboBox.editText, "Apple")
+ compare(comboBox.currentIndex, 3)
+
+ comboBox.editText = ""
+ keyPress(Qt.Key_A)
+ keyPress(Qt.Key_B)
+ compare(comboBox.currentText, "Apple")
+ compare(comboBox.editText, "ab")
+ compare(comboBox.currentIndex, 3)
+
+ keyPress(Qt.Key_Return) // Accept
+ compare(comboBox.currentText, "ab")
+ compare(comboBox.currentIndex, -1)
+
+ // Test up down
+ comboBox.editText = ""
+
+ keyPress(Qt.Key_C)
+ compare(comboBox.currentText, "ab")
+ keyPress(Qt.Key_Return) // Accept
+ compare(comboBox.currentText, "Coco")
+ compare(comboBox.editText, "Coco")
+ compare(comboBox.currentIndex, 1)
+
+ keyPress(Qt.Key_Down)
+ compare(comboBox.currentText, "Coconut")
+ compare(comboBox.editText, "Coconut")
+ compare(comboBox.currentIndex, 2)
+
+ keyPress(Qt.Key_Up)
+ compare(comboBox.currentText, "Coco")
+ compare(comboBox.editText, "Coco")
+ compare(comboBox.currentIndex, 1)
+
+ comboBox.destroy()
+ }
+
+ function test_keySearch() {
+ var arrayModel = ['Banana', 'Coco', 'Coconut', 'Apple', 'Cocomuffin' ]
+ var comboBox = Qt.createQmlObject('import QtQuick.Controls 1.1 ; ComboBox {}', testCase, '');
+ comboBox.model = arrayModel
+ compare(comboBox.currentIndex, 0)
+ compare(comboBox.currentText, "Banana")
+ comboBox.forceActiveFocus()
+
+ keyPress(Qt.Key_C)
+ compare(comboBox.editText, "Coco")
+ compare(comboBox.currentText, "Coco")
+ compare(comboBox.currentIndex, 1)
+
+ keyPress(Qt.Key_N)
+ compare(comboBox.editText, "Coco")
+ compare(comboBox.currentText, "Coco")
+ compare(comboBox.currentIndex, 1)
+
+ keyPress(Qt.Key_A)
+ compare(comboBox.editText, "Apple")
+ compare(comboBox.currentText, "Apple")
+ compare(comboBox.currentIndex, 3)
+
+ keyPress(Qt.Key_B)
+ compare(comboBox.editText, "Banana")
+ compare(comboBox.currentText, "Banana")
+ compare(comboBox.currentIndex, 0)
+
+ comboBox.destroy()
+ }
+
+ function test_textAt() {
+ var arrayModel = ['Banana', 'Coco', 'Coconut', 'Apple', 'Cocomuffin' ]
+ var comboBox = Qt.createQmlObject('import QtQuick.Controls 1.1 ; ComboBox {}', testCase, '');
+ comboBox.model = arrayModel
+ compare(comboBox.currentIndex, 0)
+ compare(comboBox.currentText, "Banana")
+ compare(comboBox.textAt(5), null)
+ compare(comboBox.textAt(-1), null)
+ compare(comboBox.textAt(0), "Banana")
+ compare(comboBox.textAt(1), "Coco")
+ compare(comboBox.textAt(2), "Coconut")
+ compare(comboBox.textAt(3), "Apple")
+ compare(comboBox.textAt(4), "Cocomuffin")
+ comboBox.destroy()
+ }
+
+ function test_find() {
+ var arrayModel = ['Banana', 'banana', 'Coconut', 'Apple', 'Cocomuffin' ]
+ var comboBox = Qt.createQmlObject('import QtQuick.Controls 1.1 ; ComboBox {}', testCase, '');
+ comboBox.model = arrayModel
+ compare(comboBox.currentIndex, 0)
+ compare(comboBox.currentText, "Banana")
+ compare(comboBox.find("Banana"), 0)
+ compare(comboBox.find("banana"), 1)
+ compare(comboBox.find("bananas"), -1)
+ compare(comboBox.find("Apple"), 3)
+ compare(comboBox.find("Cocomuffin"), 4)
+ comboBox.destroy()
+ }
+
+ function test_activated() {
+ var arrayModel = ['Banana', 'Coco', 'Coconut', 'Apple', 'Cocomuffin' ]
+ var comboBox = Qt.createQmlObject('import QtQuick.Controls 1.1; \
+ ComboBox { \
+ property int activatedCount: 0; \
+ onActivated: ++activatedCount; \
+ }'
+ , testCase, '');
+ comboBox.model = arrayModel
+ compare(comboBox.currentIndex, 0)
+ comboBox.forceActiveFocus()
+
+ keyPress(Qt.Key_Down)
+ compare(comboBox.activatedCount, 1)
+ keyPress(Qt.Key_Down)
+ compare(comboBox.activatedCount, 2)
+ keyPress(Qt.Key_Up)
+ compare(comboBox.activatedCount, 3)
+ keyPress(Qt.Key_B)
+ compare(comboBox.activatedCount, 4)
+ keyPress(Qt.Key_B)
+ compare(comboBox.activatedCount, 4)
+ comboBox.destroy()
}
function test_activeFocusOnTab() {