/*******************************************************************************
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 {
SystemPalette { id: myPalette; colorGroup: SystemPalette.Active }
function setEnableRemove(Boolean) { removeButton.enabled = Boolean }
function setEnableSettings(Boolean) { settingsButton.enabled = Boolean }
function changeDictionaryState(nr, state) {
dictList.currentIndex = nr
dictModel.setModelProperty(dictList.currentIndex, state, "isSelected")
rectangle1.setEnableRemove(true)
rectangle1.setEnableSettings(true)
}
function setFocus() {
dictList.setFocus()
}
signal addButtonClicked;
signal removeButtonClicked;
signal settingsButtonClicked;
signal saveButtonClicked;
signal itemActivated(int nr);
id: rectangle1
color: myPalette.base
anchors.fill: parent
ElementsListView{
id: dictList
width: rectangle1.width
// height: rectangle1.height
anchors.top: parent.top
anchors.bottom: buttonsBox.top
anchors.bottomMargin: buttonsBox.height + buttonsBox.anchors.topMargin
highlightResizeSpeed: 1000
Keys.onPressed: {
if ((currentIndex < 0 || currentIndex >= count) && (event.key == Qt.Key_Up || event.key == Qt.Key_Down)){
currentIndex = 0
}
if ((event.key == Qt.Key_Return || event.key == Qt.Key_Enter) && currentIndex >= 0){
itemActivated(currentIndex)
}
if ((event.key == Qt.Key_Delete) && currentIndex >= 0){
removeButtonClicked()
}
if (event.key == Qt.Key_S && event.modifiers == Qt.ControlModifier){
saveButtonClicked()
}
if (event.key == Qt.Key_T && event.modifiers == Qt.ControlModifier){
addButtonClicked()
}
if ((event.key == Qt.Key_Space) && currentIndex >= 0){
dictModel.setModelProperty(dictList.currentIndex, "isSelected")
}
}
onCurrentIndexChanged: {
dictModel.itemSelected(dictList.currentIndex)
}
delegate: Component{
id: dictListDelegate
Item {
width: rectangle1.width
height: {
if (nameText.height + 4 > logo.height)
return nameText.height + 4;
else
return logo.height;
}
MouseArea{
anchors.fill: parent
onClicked: {
dictList.currentIndex = number
rectangle1.setEnableRemove(true)
rectangle1.setEnableSettings(true)
}
onDoubleClicked: {
rectangle1.itemActivated(dictList.currentIndex)
}
}
Row {
anchors.fill: parent
Checkbox{
id: check
width: nameText.height
selected: isSelected
onChanged: rectangle1.changeDictionaryState(number, selected)
}
Image {
id: logo
source: iconPath
height: {
var aspectRatio = sourceSize.height / sourceSize.width
return logo.width * aspectRatio
}
anchors.leftMargin: 5
anchors.verticalCenter: parent.verticalCenter
width: nameText.height + 4
smooth: true
}
Text {
id: nameText
text: name
anchors.leftMargin: 5
anchors.verticalCenter: parent.verticalCenter
}
}
}
}
model: dictModel
}
Item {
id: buttonsBox
width: parent.width
height: 30
anchors.bottom: parent.bottom
anchors.top: dictList.bottom
anchors.topMargin: 8
Button {
id: addButton
width: (parent.width - 4) / 4
height: buttonsBox.height
anchors.left: buttonsBox.left
anchors.leftMargin: 4
anchors.verticalCenter: parent.verticalCenter
textInButton: qsTr("Add")
onClicked: addButtonClicked();
}
Button {
id: removeButton
width: (parent.width - 4) / 4
height: buttonsBox.height
anchors.left: addButton.right
anchors.leftMargin: 4
anchors.verticalCenter: parent.verticalCenter
textInButton: qsTr("Remove")
enabled: false
onClicked: removeButtonClicked();
}
Button {
id: settingsButton
width: (parent.width - 4) / 4
height: buttonsBox.height
anchors.left: removeButton.right
anchors.leftMargin: 4
anchors.verticalCenter: parent.verticalCenter
textInButton: qsTr("Settings")
enabled: false
onClicked: settingsButtonClicked();
}
Button {
id: saveButton
width: (parent.width - 4) / 4
height: buttonsBox.height
anchors.left: settingsButton.right
anchors.leftMargin: 4
anchors.right: buttonsBox.right
anchors.rightMargin: 4
anchors.verticalCenter: parent.verticalCenter
textInButton: qsTr("Save")
onClicked: saveButtonClicked()
}
}
}