Fix bug with app crash on exit. Add keyboard support in wordList, DictTypeSelectDialo...
[mdictionary] / src / mdictionary / qml / DictManagerWidget.qml
index ace01c9..bf9c2f0 100644 (file)
@@ -29,6 +29,16 @@ Rectangle {
 
     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;
@@ -48,6 +58,29 @@ Rectangle {
         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 {
@@ -71,40 +104,14 @@ Rectangle {
                 }
                 Row {
                     anchors.fill: parent
-                    Image {
-                        id: checkbox
-                        height: {
-                            var aspectRatio = sourceSize.height / sourceSize.width
-                            return checkbox.width * aspectRatio
-                        }
-                        anchors.verticalCenter: parent.verticalCenter
+                    Checkbox{
+                        id: check
                         width: nameText.height
-                        smooth: true
-                        states: [
-                            State {
-                                name: "checked";
-                                when: (isSelected == true);
-
-                                PropertyChanges { target: checkbox; source: "qrc:/button/checkboxChecked.png" }
-                            },
-                            State {
-                                name: "unchecked";
-                                when: (isSelected == false);
-
-                                PropertyChanges { target: checkbox; source: "qrc:/button/checkbox.png" }
-                            }
-                        ]
-                        MouseArea{
-                            anchors.fill: parent
-                            onClicked: {
-                                dictList.currentIndex = number
-                                dictModel.setModelProperty(dictList.currentIndex, !isSelected, "isSelected")
-                                rectangle1.setEnableRemove(true)
-                                rectangle1.setEnableSettings(true)
-                            }
-                        }
+                        selected: isSelected
+                        onChanged: rectangle1.changeDictionaryState(number, selected)
                     }
 
+
                     Image {
                         id: logo
                         source: iconPath
@@ -148,7 +155,7 @@ Rectangle {
             anchors.leftMargin: 4
             anchors.verticalCenter: parent.verticalCenter
             textInButton: qsTr("Add")
-            onClicked: rectangle1.addButtonClicked
+            onClicked: addButtonClicked();
         }
 
         Button {
@@ -160,7 +167,7 @@ Rectangle {
             anchors.verticalCenter: parent.verticalCenter
             textInButton: qsTr("Remove")
             enabled: false
-            onClicked: rectangle1.removeButtonClicked
+            onClicked: removeButtonClicked();
         }
 
         Button {
@@ -172,7 +179,7 @@ Rectangle {
             anchors.verticalCenter: parent.verticalCenter
             textInButton: qsTr("Settings")
             enabled: false
-            onClicked: rectangle1.settingsButtonClicked
+            onClicked: settingsButtonClicked();
         }
 
         Button {
@@ -185,7 +192,7 @@ Rectangle {
             anchors.rightMargin: 4
             anchors.verticalCenter: parent.verticalCenter
             textInButton: qsTr("Save")
-            onClicked: rectangle1.saveButtonClicked
+            onClicked: saveButtonClicked()
         }
 
     }