Merge branch 'qml'
[mdictionary] / src / mdictionary / qml / SearchBarWidget.qml
index 689480d..6590e45 100644 (file)
@@ -6,19 +6,75 @@ Rectangle {
     color : myPalette.window;
 
     property alias enableLineEdit: inputSearchText.enabled;
+    property int focusIndex:-1;
+
 
     function setButtonText(string) { searchButton.setText(string) }
     function setEnableHistoryPrev(Boolean) { historyPrevToolButton.enabled = Boolean }
     function setEnableHistoryNext(Boolean) { historyNextToolButton.enabled = Boolean }
     function setEnableHistoryShow(Boolean) { historyShowToolButton.enabled = Boolean }
     function setEnableLineEdit(Boolean) { enableLineEdit = Boolean }
-    function setLineEditText(string) { inputSearchText.setText(string) }
     function clear() { inputSearchText.setText("") }
 
+    function setLineEditText(string) { inputSearchText.setText(string) }
+    function setCompleterText(string) { inputSearchText.setCompleter(string) }
+
+    function setFocus(){
+        if(focusIndex==0){
+            inputSearchText.setFocus();
+            if(!inputSearchText.enabled)
+                focusIndex++;
+        }
+        if(focusIndex==1)
+            clearButton.focus=true;
+
+        if(focusIndex==2){
+            searchButton.focus = true
+            if(!searchButton.enabled)
+                focusIndex++;
+        }
+
+        if(focusIndex==3){
+            historyPrevToolButton.focus = true
+            if(!historyPrevToolButton.enabled)
+                focusIndex++;
+        }
+
+        if(focusIndex==4){
+            historyShowToolButton.focus = true
+            if(!historyShowToolButton.enabled)
+                focusIndex++;
+        }
+
+        if(focusIndex==5){
+            historyNextToolButton.focus = true
+            if(!historyNextToolButton.enabled)
+                focusIndex++;
+        }
+
+        if (focusIndex>5){
+            nextFocus();
+            focusIndex=-1;
+            focus=true;
+        }
+    }
+
+    function focusOff(){ focus=true; focusIndex=-1;}
+
+    signal nextFocus();
+    signal checkFocus();
     signal searchButtonClicked(string text);
     signal historyNextToolButtonClicked;
     signal historyShowToolButtonClicked;
     signal historyPrevToolButtonClicked;
+    signal textChange(string text);
+    signal nextCompleter();
+    signal prevCompleter();
+
+    Keys.onTabPressed: {
+        focusIndex++;
+        setFocus();
+    }
 
     MyTextLineEdit{
         id: inputSearchText
@@ -27,7 +83,7 @@ Rectangle {
         anchors.left: parent.left
         anchors.verticalCenter: parent.verticalCenter
         onEnterPressed: searchBarWidget.searchButtonClicked(text);
-        focus: searchBarWidget.focus
+        useCompleter: true;
         IconButton {
             id: clearButton;
             width:  inputSearchText.height-6;
@@ -38,7 +94,13 @@ Rectangle {
             enabled: true;
             pathToIcon: "qrc:/button/go-clear.png";
             onClicked: clear();
+            onActiveFocusChanged:searchBarWidget.checkFocus();
         }
+        onTextChange: searchBarWidget.textChange(text)
+        onNextCompleter: searchBarWidget.nextCompleter();
+        onPrevCompleter: searchBarWidget.prevCompleter();
+        onIsFocused: searchBarWidget.focusIndex=0;
+        onCheckFocus: searchBarWidget.checkFocus();
     }
 
     Item {
@@ -56,7 +118,11 @@ Rectangle {
             anchors.right: historyPrevToolButton.left
             anchors.verticalCenter: parent.verticalCenter
             textInButton: qsTr("Search")
-            onClicked: searchBarWidget.searchButtonClicked(inputSearchText.textInLineEdit);
+            onClicked:{
+                searchBarWidget.searchButtonClicked(inputSearchText.textInLineEdit);
+                inputSearchText.hideCompleter();
+            }
+            onActiveFocusChanged:searchBarWidget.checkFocus();
         }
 
         IconButton {
@@ -68,6 +134,7 @@ Rectangle {
             enabled: true;
             pathToIcon: "qrc:/button/go-next.png";
             onClicked: searchBarWidget.historyNextToolButtonClicked();
+            onActiveFocusChanged:searchBarWidget.checkFocus();
         }
 
         IconButton {
@@ -80,6 +147,7 @@ Rectangle {
             enabled: true;
             pathToIcon: "qrc:/button/go-show.png";
             onClicked: searchBarWidget.historyShowToolButtonClicked();
+            onActiveFocusChanged:searchBarWidget.checkFocus();
         }
 
         IconButton {
@@ -92,6 +160,7 @@ Rectangle {
             enabled: true;
             pathToIcon: "qrc:/button/go-previous.png";
             onClicked: searchBarWidget.historyPrevToolButtonClicked();
+            onActiveFocusChanged:searchBarWidget.checkFocus();
         }
     }
 }