qtmobility/examples/declarative-sfw-notes/declarative-sfw-notes.qml
changeset 5 453da2cfceef
child 11 06b8e2af4411
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/qtmobility/examples/declarative-sfw-notes/declarative-sfw-notes.qml	Fri May 14 16:41:33 2010 +0300
@@ -0,0 +1,290 @@
+import Qt 4.7
+// ![0]
+import QtMobility.serviceframework 1.0
+// ![0]
+import "content"
+
+Rectangle {
+    property int size: 0
+    property int curr: 0
+    property string searchText: ""
+    property bool validService: false
+
+    // ![1]
+    property var notesManager: notesService.serviceObject
+    // ![1]
+
+    id: mainWindow
+    color: "lightgray"
+    width: 220; height: 265
+
+    SystemPalette { id: activePalette }
+
+    Rectangle {
+        id: datetimeArea
+        width: 160; height: 20
+        x: 30; y: 120
+        color: "#FFFF7F"
+    }
+
+    Rectangle {
+        id: noteArea
+        width: 160; height: 110
+        x: 30; y: 140
+        color: "#FFFF7F"
+    }
+
+    Text {
+        id: title
+        text: "ToDoTool"
+        font.pointSize: 24; font.family: "Nimbus Roman No9 L"; font.bold: true; font.italic:true 
+        color: "blue"
+        y: 5; anchors.horizontalCenter: mainWindow.horizontalCenter
+    }
+
+    Text {
+        id: countLabel
+        text: curr + "/" + size
+        font.pointSize:10
+        y: 90
+        anchors.horizontalCenter: mainWindow.horizontalCenter
+    }
+
+    Text {
+        id: datetimeLabel
+        text: ""
+        font.pointSize:10
+        x: 30; y: 120
+        anchors.right: datetimeArea.right
+    }
+
+    Text {
+        id: noteLabel
+        text: ""
+        font.pointSize: 18; font.family: "Comic Sans MS"; font.italic:true
+        horizontalAlignment: Text.AlignHCenter
+        wrapMode: Text.WordWrap
+        width: noteArea.width
+        anchors.verticalCenter: noteArea.verticalCenter
+        anchors.horizontalCenter: title.horizontalCenter
+    }
+
+    Button {
+        id: addButton
+        image: "icons/addIcon.png"
+        width: 60; height: 30
+        x: 20; y: 40
+
+        onClicked: {
+            if (validService) { addDialog.opacity = 1; }
+        }
+    }
+
+    Button {
+        id: deleteButton
+        image: "icons/deleteIcon.png"
+        width: 60; height: 30
+        x: 80; y: 40
+
+        onClicked: {
+            if (validService && size > 0) { deleteDialog.opacity = 1; }
+        }
+    }
+
+    Button {
+        id: searchButton
+        image: "icons/searchIcon.png"
+        width: 60; height: 30
+        x: 140; y: 40
+
+        onClicked: {
+            if (validService) { searchDialog.opacity = 1; }
+        }
+    }
+
+    Button {
+        id: nextButton
+        image: "icons/nextIcon.png"
+        width: 40; height: 30
+        x: 130; y: 80
+
+        onClicked: { 
+            if (validService && curr < size) { 
+                curr++;
+                refreshNotes();
+            }
+        }
+    }
+
+    Button {
+        id: prevButton
+        image: "icons/prevIcon.png"
+        width: 40; height: 30
+        x: 50; y: 80
+
+        onClicked: {
+            if (validService && curr > 1) {
+                curr--;
+                refreshNotes();
+            }
+        }
+    }
+
+    InputDialog {
+        id: interfaceDialog
+        text: "Specify Notes Manager Interface"
+        defaultText: "com.nokia.qt.examples.NotesManager"
+        cancelable: false
+        opacity: 1
+
+        onConfirmed: {
+            interfaceDialog.defaultText = input;
+            
+            // ![2]
+            notesService.interfaceName = input;
+
+            if (notesService.valid) {
+                notesManager = notesService.serviceObject;
+            // ![2]
+                var list = notesManager.noteSet;
+                if (list.length > 0) {curr = 1;}
+
+                refreshNotes();
+                
+                validService = true;
+            } else {
+                invalidDialog.opacity = 1;
+                noteLabel.text = "Notes Manager service not found"
+            }
+        }
+    }
+
+    InputDialog {
+        id: addDialog
+        text: "Add a new note + alarm of format:\nnote#yyyy-mm-dd#hh:mm"
+
+        onConfirmed: {
+            var note = input.split("#");
+
+            if (note.length == 3) {
+                var date = note[1].split("-");
+                var time = note[2].split(":");
+
+                if (date.length == 3 && time.length ==2) {
+                    notesManager.addNote(note[0], note[1] + " " + note[2] + ":00");
+                }
+            } else {
+                    notesManager.addNote(note[0], currentDateTime() + ":00");
+            }
+
+            refreshNotes();
+        }
+    }
+
+    InputDialog {
+        id: searchDialog
+        text: "Find a note:"
+        size: 100
+
+        onConfirmed: {
+            searchText = input;
+            curr = 1; 
+            refreshNotes()
+        }
+    }
+
+    Connections {
+        target: notesManager
+        
+        onSoundAlarm: {
+            alarmDialog.text = "ALERT SOUNDED!!!" + "\n\n" + 
+                               formatDateTime(alarm) + "\n\n" + notesManager.alarmMessage;
+            alarmDialog.opacity = 1;
+        }
+    }
+
+    Dialog {
+        id: deleteDialog
+        text: "Confirm removing this note item?"
+
+        onConfirmed: {
+            // ![3]
+            var list = notesManager.noteSet;
+            notesManager.removeNote(list[curr-1].index);
+            // ![3]
+
+            if (curr > 1) { curr--; }
+
+            refreshNotes();
+        }
+    }
+
+    Dialog {
+        id: alarmDialog
+        text: "ALERT SOUNDED!!!"
+        cancelable: false
+    }
+
+    Dialog {
+        id: invalidDialog
+        text: "No valid default interface for:\n\n\"" + interfaceDialog.defaultText + "\""
+        cancelable: false
+    }
+
+    function refreshNotes()
+    {
+        // ![4]
+        notesManager.setSearch(searchText);
+        var list = notesManager.noteSet;
+        size = list.length;
+        
+        // ![4]
+       
+        if (size < 1) curr = 0;
+        else if (size > 0 && curr == 0) curr = 1;
+      
+        // ![5]
+        if (size > 0) {
+            noteLabel.text = list[curr-1].message;
+            datetimeLabel.text = formatDateTime(list[curr-1].alarm);
+        }
+        // ![5]
+        else {
+            noteLabel.text = "Click + to add a new note";
+            datetimeLabel.text = "";
+        }
+    }
+
+    function formatDateTime(datetime)
+    {
+        var dt = new Date(datetime);
+
+        var month = (dt.getMonth() + 1) + ""; 
+        if (month.length == 1)  month = "0" + month;
+
+        var date = dt.getDate() + ""; 
+        if (date.length == 1)  date= "0" + date;
+            
+        var hour = dt.getHours() + ""; 
+        if (hour.length == 1)  hour = "0" + hour;
+            
+        var mins = dt.getMinutes() + ""; 
+        if (mins.length == 1)  mins = "0" + mins;
+
+        return (dt.getFullYear() + "-" + month + "-" + date + " " + hour + ":" + mins);
+    }
+
+    function currentDateTime()
+    {
+        var dt = new Date();
+
+        return formatDateTime(dt);
+    }
+
+    // ![6]
+    Service {
+        id: notesService
+        interfaceName: "com.nokia.qt.examples.NotesManager"
+    }
+    // ![6]
+}