Version 0.7-0
[vicar] / src / vicar-config-qml / qml / vicarconfigqml / addrulesheet.qml
1 import QtQuick 1.1
2 import com.nokia.meego 1.0
3 import "Library/js/DBUtility.js" as DBUtility
4
5 Sheet{
6     id: screen
7     acceptButtonText: qsTr("Done")
8     rejectButtonText: qsTr("Cancel")
9
10     signal sheetDestroyed()
11
12     property int ruleID:0
13     property string numberpattern:""
14     property string gatewaynumber:""
15     property string dtmfformat:""
16     property int numberFormatIndex:0
17     property string dtmfprefix: ""
18     property string dtmfsuffix: ""
19
20     Component.onCompleted: {
21         if (ruleID != 0){
22             var ruleObj = DBUtility.getRuleByID(ruleID);
23             if (ruleObj !== null){
24                 numberpattern = ruleObj.numberpattern;
25                 gatewaynumber = ruleObj.gatewaynumber;
26                 dtmfformat = ruleObj.dtmfformat;
27                 var i;
28                 for (i = 0; i < numberFormatModel.count; i++){
29                     if (numberFormatModel.get(i).name == dtmfformat) {
30                         numberFormatIndex = i;
31                         break;
32                     }
33                 }
34                 dtmfprefix = ruleObj.dtmfprefix;
35                 dtmfsuffix = ruleObj.dtmfsuffix;
36             }
37         }
38     }
39
40     Component.onDestruction: {
41         console.log("OnDestruction");
42         sheetDestroyed();
43     }
44
45     ListModel {
46         id: numberFormatModel
47         ListElement { name: "<Country Code><Area Code><Phone Number>" }
48         ListElement { name: "+<Country Code><Area Code><Phone Number>" }
49         ListElement { name: "00<Country Code><Area Code><Phone Number>" }
50         ListElement { name: "011<Country Code><Area Code><Phone Number>" }
51     }
52
53     SelectionDialog {
54         id: numberFormatDialog
55         titleText: "Number Format"
56         width: container.width
57         selectedIndex: numberFormatIndex
58         model: numberFormatModel
59     }
60
61     content: Flickable {
62         id: container
63         anchors.fill: parent
64         anchors.leftMargin: 10
65         anchors.topMargin: 10
66         flickableDirection: Flickable.VerticalFlick
67
68         Column {
69             id: col
70             width: parent.width
71             spacing: 10
72             Label { text: (ruleID != 0)? qsTr("Edit Rule"):qsTr("Add Rule"); font.bold: true; }
73             Label { text: qsTr("For numbers starting with:") }
74             TextField {
75                 id: numberStartingWith
76                 anchors { left: parent.left; right: parent.right; }
77                 //height: implicitHeight
78                 inputMethodHints: Qt.ImhDialableCharactersOnly | Qt.ImhNoPredictiveText
79                 text: screen.numberpattern
80             }
81             Label { text: qsTr("Route call via:") }
82             TextField {
83                 id: gatewayNumber
84                 anchors { left: parent.left; right: parent.right; }
85                 //height: implicitHeight
86                 inputMethodHints: Qt.ImhDialableCharactersOnly | Qt.ImhNoPredictiveText
87                 text: screen.gatewaynumber
88             }
89
90             Label { text: qsTr("Dial number in this format:") }
91
92             Button {
93                 anchors { horizontalCenter: parent.horizontalCenter }
94                 //height: implicitHeight
95                 text: "Change Format"
96                 onClicked: {
97                     numberFormatDialog.open();
98                 }
99             }
100
101             Rectangle {
102                 width: parent.width
103                 height: 30
104                 color: "lightgray"
105                 Text {
106                     anchors.horizontalCenter: parent.horizontalCenter
107                     text: numberFormatDialog.selectedIndex >= 0 ? numberFormatDialog.model.get(numberFormatDialog.selectedIndex).name : "None"
108                     font.pixelSize: 16
109                     //font.bold: true
110                 }
111             }
112
113             Label { text: qsTr("Include this tone before dialing:") }
114             TextField {
115                 id: dtmfPrefix
116                 anchors { left: parent.left; right: parent.right; }
117                 height: implicitHeight
118                 inputMethodHints: Qt.ImhDialableCharactersOnly | Qt.ImhNoPredictiveText
119             }
120
121             Label { text: qsTr("Include this tone after dialing:") }
122             TextField {
123                 id: dtmfSuffix
124                 anchors { left: parent.left; right: parent.right; }
125                 height: implicitHeight
126                 inputMethodHints: Qt.ImhDialableCharactersOnly | Qt.ImhNoPredictiveText
127             }
128         }
129     }
130     onAccepted: {
131         //id, numberpattern, gatewaynumber, dtmfformat, dtmfprefix, dtmfsuffix
132         var ruleObj = new Object();
133         ruleObj.id = ruleID;
134         ruleObj.numberpattern = numberStartingWith.text;
135         ruleObj.gatewaynumber = gatewayNumber.text;
136         ruleObj.dtmfformat = numberFormatDialog.model.get(numberFormatDialog.selectedIndex).name;
137         ruleObj.dtmfprefix = dtmfPrefix.text;
138         ruleObj.dtmfsuffix = dtmfSuffix.text;
139         if (ruleID != 0)
140             DBUtility.updateRule(ruleID,ruleObj);
141         else
142             DBUtility.addRule(ruleObj);
143         destroy();
144     }
145     onRejected: destroy();
146 }