diff options
author | Jens Bache-Wiig <jens.bache-wiig@digia.com> | 2013-08-16 13:20:11 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-09-17 17:18:02 +0200 |
commit | 4c184095d378622fb0c3bb1692b331b3cc04e010 (patch) | |
tree | fe097a46b7e451f240a1033fbb37a7b0aace9ca6 /tests/auto/controls/data/tst_combobox.qml | |
parent | 9cde5d427a1fc1c2d36b853e1261d08f8dbfa126 (diff) | |
download | qtquickcontrols-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.qml | 252 |
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() { |