/******************************************************************************* This file is part of mDictionary. mDictionary is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. mDictionary 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 General Public License for more details. You should have received a copy of the GNU General Public License along with mDictionary. If not, see . Copyright 2010 Comarch S.A. *******************************************************************************/ /*! author: Marcin Kaźmierczak */ import Qt 4.7 Rectangle { id: rectangle1 color: myPalette.base anchors.fill: parent function changeWordState(nr, state) { wordList.currentIndex = nr wordModel.setModelProperty(wordList.currentIndex, state, "isBookmarked") } function changeWordStateByIndex() { wordModel.setModelPropertyByIndex(wordList.currentIndex, "isBookmarked") } function setEnabled(Boolean) { wordList.enabled = Boolean } function setWordListEmpty(Boolean) { wordList.empty = Boolean } function setFocus() { wordList.setFocus() } signal wordSelected(string word); signal wordSelectedByIndex(int nr); signal checkFocus(); SystemPalette { id: myPalette; colorGroup: SystemPalette.Active } ElementsListView{ id: wordList width: rectangle1.width anchors.fill: parent highlightResizeSpeed: 1000 property bool empty: false Keys.onPressed: { if ((currentIndex < 0 || currentIndex >= count) && (event.key == Qt.Key_Up || event.key == Qt.Key_Down)){ currentIndex = 0 } if (event.key == Qt.Key_Space && currentIndex >= 0){ rectangle1.changeWordStateByIndex(); } else if ((event.key == Qt.Key_Return || event.key == Qt.Key_Enter) && currentIndex >= 0){ rectangle1.wordSelectedByIndex(currentIndex) } } delegate: Component{ id: wordListDelegate Item { onActiveFocusChanged: rectangle1.checkFocus(); width: rectangle1.width height: { if (wordText.height + 4 > check.height) return wordText.height + 4; else return check.height; } MouseArea{ anchors.fill: parent onClicked: wordList.currentIndex = index onDoubleClicked: { wordList.currentIndex = number rectangle1.wordSelected(word) } } Text { id: wordText anchors.verticalCenter: parent.verticalCenter text: word } Checkbox{ id: check width: wordText.height selected: isBookmarked pathToCheckedImage: CheckedPath pathToUncheckedImage: UncheckedPath anchors.right: parent.right anchors.rightMargin: 5 pathToCheckedDicImage: CheckedPath pathToUncheckedDicImage: UncheckedPath anchors.verticalCenter: parent.verticalCenter onChanged: rectangle1.changeWordState(number, selected) } } } Text { id: emptyText anchors.top: parent.top anchors.left: parent.left text: qsTr("Can't find any matching words") } Rectangle { id: shadeDisable anchors.centerIn: parent; color: "grey"; opacity: 0 width: parent.width; height: parent.height; } model: wordModel states: [ State { name: "empty" when: (wordList.empty == true); PropertyChanges { target: emptyText; visible: true} }, State { name: "non-empty" when: (wordList.empty == false); PropertyChanges { target: emptyText; visible: false} }, State { name: "enabled" when: (wordList.enabled == true); PropertyChanges { target: shadeDisable; z: 30; opacity: 0.5 } }, State { name: "disabled" when: (wordList.enabled == false); PropertyChanges { target: shadeDisable; z: 30; opacity: 0.0 } } ] } states: [ State { name: "noFocus"; when: ((!wordList.focus) && (!rectangle1.focus)) PropertyChanges { target: wordList.highlightItem; opacity:0} } ] }