Fix bug with app crash on exit. Add keyboard support in wordList, DictTypeSelectDialo...
[mdictionary] / src / mdictionary / qml / DictManagerWidget.qml
index 2f7c1a0..bf9c2f0 100644 (file)
@@ -26,7 +26,25 @@ import Qt 4.7
 
 Rectangle {
     SystemPalette { id: myPalette; colorGroup: SystemPalette.Active }
-//    signal selectedRow(int nr)
+
+    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
@@ -37,32 +55,80 @@ Rectangle {
         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 ((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: typeText.height
+                height: {
+                    if (nameText.height + 4 > logo.height)
+                            return nameText.height + 4;
+                    else
+                            return logo.height;
+                }
                 MouseArea{
                     anchors.fill: parent
                     onClicked: {
-                        dictTypeList.currentIndex = number
+                        dictList.currentIndex = number
+                        rectangle1.setEnableRemove(true)
+                        rectangle1.setEnableSettings(true)
                     }
                     onDoubleClicked: {
-                        selectedRow(number)
+                        rectangle1.itemActivated(dictList.currentIndex)
                     }
                 }
                 Row {
-                    //image zaznacz/odznacz
-                    //image logo
+                    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
-//                        width: rectangle1.width
+                        anchors.leftMargin: 5
+                        anchors.verticalCenter: parent.verticalCenter
                     }
                 }
             }
@@ -71,6 +137,64 @@ Rectangle {
         model: dictModel
     }
 
-    //buttonki
+    //buttons
+
+    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()
+        }
+
+    }
 
 }