=== modified file 'AllDayEventComponent.qml'
--- AllDayEventComponent.qml	2014-03-19 00:32:29 +0000
+++ AllDayEventComponent.qml	2014-04-05 06:36:44 +0000
@@ -3,7 +3,6 @@
 import Ubuntu.Components.Popups 0.1
 
 import "dateExt.js" as DateExt
-import "GlobalEventModel.js" as GlobalModel
 import "ViewType.js" as ViewType
 
 Rectangle{
@@ -11,6 +10,7 @@
 
     property var allDayEvents;
     property var startDay: DateExt.today();
+    property var model;
 
     property int type: ViewType.ViewTypeWeek
 
@@ -20,10 +20,9 @@
 
     function getAllDayEvents(startDate, endDate) {
         var map = {};
-        var itemIds = GlobalModel.globalModel().itemIds(startDate, endDate);
-        for(var i = 0 ; i < itemIds.length ; ++i) {
-            var eventId = itemIds[(i)];
-            var event = GlobalModel.globalModel().item(eventId);            
+        var items = model.getItems(startDate,endDate);
+        for(var i = 0 ; i < items.length ; ++i) {
+            var event = items[(i)];
             if( event && event.allDay ) {
                 var key  = Qt.formatDateTime(event.startDateTime, "dd-MMM-yyyy");
                 if( !(key in map)) {
@@ -44,15 +43,6 @@
         allDayEvents = getAllDayEvents(sd,ed);
     }
 
-    Component.onCompleted: {
-        var model = GlobalModel.globalModel();
-        model.reloaded.connect(root.createAllDayEvents);
-    }
-
-    onStartDayChanged: {
-        createAllDayEvents();
-    }
-
     Row {
         width: parent.width
         anchors.verticalCenter: parent.verticalCenter
@@ -81,7 +71,7 @@
                             if( allDayLabel.events.length > 1 ) {
                                 PopupUtils.open(popoverComponent, root,{"events": allDayLabel.events})
                             } else {
-                                pageStack.push(Qt.resolvedUrl("EventDetails.qml"),{"event":allDayLabel.events[0]});
+                                pageStack.push(Qt.resolvedUrl("EventDetails.qml"),{"event":allDayLabel.events[0],"model": model});
                             }
                         }
                     }
@@ -148,7 +138,7 @@
                         anchors.fill: parent
                         onClicked: {
                             popover.hide();
-                            pageStack.push(Qt.resolvedUrl("EventDetails.qml"),{"event":modelData});
+                            pageStack.push(Qt.resolvedUrl("EventDetails.qml"),{"event":modelData,"model": model});
                         }
                     }
                 }

=== modified file 'EventDetails.qml'
--- EventDetails.qml	2014-04-04 02:27:33 +0000
+++ EventDetails.qml	2014-04-05 06:36:44 +0000
@@ -5,7 +5,6 @@
 import Ubuntu.Components.Themes.Ambiance 0.1
 import QtOrganizer 5.0
 
-import "GlobalEventModel.js" as GlobalModel
 import "Defines.js" as Defines
 
 Page {
@@ -14,6 +13,8 @@
     property var event;
     property string headerColor :"black"
     property string detailColor :"grey"
+    property var model;
+
     anchors.fill: parent
     Component.onCompleted: {
         if( pageStack.header )
@@ -101,8 +102,7 @@
                 text: i18n.tr("Delete");
                 iconSource: "image://theme/delete,edit-delete-symbolic"
                 onTriggered: {
-                    var eventModel = GlobalModel.globalModel();
-                    eventModel.removeItem(event);
+                    model.removeItem(event);
                     pageStack.pop();
                 }
             }
@@ -113,7 +113,7 @@
                 text: i18n.tr("Edit");
                 iconSource: Qt.resolvedUrl("edit.svg");
                 onTriggered: {
-                   pageStack.push(Qt.resolvedUrl("NewEvent.qml"),{"event":event});
+                   pageStack.push(Qt.resolvedUrl("NewEvent.qml"),{"event":event,"model":model});
                 }
             }
         }

=== modified file 'EventListModel.qml'
--- EventListModel.qml	2014-02-26 13:42:20 +0000
+++ EventListModel.qml	2014-04-05 06:36:44 +0000
@@ -1,16 +1,26 @@
 import QtQuick 2.0
-import "dateExt.js" as DateExt
-
 import QtOrganizer 5.0
 
 OrganizerModel {
     id: eventModel
     manager:"eds"
-    autoUpdate: false
-
-    signal reloaded
+
+    property var listeners:[];
+
+    function addModelChangeListener(listener){
+        listeners.push(listener);
+    }
+
+    function getItems(startDate, endDate){
+        return itemsByTimePeriod(startDate,endDate);
+    }
 
     onModelChanged: {
-        reloaded();
+        if(listeners === undefined){
+            return;
+        }
+        for(var i=0; i < listeners.length ;++i){
+            (listeners[i])();
+        }
     }
 }

=== removed file 'GlobalEventModel.js'
--- GlobalEventModel.js	2014-01-31 03:20:40 +0000
+++ GlobalEventModel.js	1970-01-01 00:00:00 +0000
@@ -1,9 +0,0 @@
-.pragma library
-
-var model;
-function globalModel() {
-    if( !model) {
-        model = Qt.createQmlObject('import QtQuick 2.0; EventListModel {}', Qt.application, 'EventListModel.globalModel()')
-    }
-    return model;
-}

=== modified file 'NewEvent.qml'
--- NewEvent.qml	2014-03-27 14:54:30 +0000
+++ NewEvent.qml	2014-04-05 06:36:44 +0000
@@ -6,7 +6,6 @@
 import Ubuntu.Components.Themes.Ambiance 0.1
 import QtOrganizer 5.0
 
-import "GlobalEventModel.js" as GlobalModel
 import "Defines.js" as Defines
 
 Page {
@@ -14,6 +13,7 @@
     property var date: new Date();
 
     property var event:null;
+    property var model;
 
     property var startDate;
     property var endDate;
@@ -35,7 +35,6 @@
             endDate = new Date(date)
             endDate.setMinutes( endDate.getMinutes() + 30)
         }
-        internal.eventModel = GlobalModel.globalModel();
 
         if(event === null){
             isEdit =false;
@@ -154,7 +153,7 @@
                 event.setDetail(audibleReminder);
             }
 
-            internal.eventModel.saveItem(event);
+            model.saveItem(event);
             pageStack.pop();
         }
     }
@@ -426,7 +425,6 @@
 
     QtObject {
         id: internal
-        property var eventModel;
 
         function clearFocus() {
             Qt.inputMethod.hide()

=== modified file 'TimeLineBase.qml'
--- TimeLineBase.qml	2014-03-26 14:39:17 +0000
+++ TimeLineBase.qml	2014-04-05 06:36:44 +0000
@@ -1,7 +1,6 @@
 import QtQuick 2.0
 import Ubuntu.Components 0.1
 import "dateExt.js" as DateExt
-import "GlobalEventModel.js" as GlobalModel
 
 Item {
     id: bubbleOverLay
@@ -10,49 +9,38 @@
     property var day;
     property int hourHeight: units.gu(10)
 
-    Component.onCompleted: {
-        intern.model = GlobalModel.globalModel();
-        intern.model.reloaded.connect(bubbleOverLay.createEvents);
-    }
-
-    onDayChanged: {
-        if( intern.model)
-            bubbleOverLay.createEvents();
-    }
+    property var model;
 
     TimeSeparator{
         id: separator
         objectName: "separator"
         width:  bubbleOverLay.width
+        visible: false
         z:1
     }
 
     QtObject {
         id: intern
         property var now : new Date();
-        property var model;
     }
 
     function showEventDetails(event) {
-        pageStack.push(Qt.resolvedUrl("EventDetails.qml"),{"event":event});
+        pageStack.push(Qt.resolvedUrl("EventDetails.qml"),{"event":event,"model":model});
     }
 
     function createEvents() {
         if(!bubbleOverLay || bubbleOverLay == undefined) {
             return;
         }
-
-        bubbleOverLay.destroyAllChildren();
+        destroyAllChildren();
 
         var startDate = new Date(day).midnight();
-
         var endDate = new Date(day).endOfDay();
 
-        var itemIds = intern.model.itemIds(startDate,endDate);
-        for(var i = 0 ; i < itemIds.length ; ++i) {
-            var eventId = itemIds[(i)];
-            var event = intern.model.item(eventId);
-            if( event ) {
+        var items = model.getItems(startDate,endDate);
+        for(var i = 0 ; i < items.length ; ++i) {
+            var event = items[i];
+            if(event.allDay === false) {
                 bubbleOverLay.createEvent(event,event.startDateTime.getHours());
             }
         }
@@ -64,10 +52,8 @@
 
     function destroyAllChildren() {
         for( var i = children.length - 1; i >= 0; --i ) {
-            if( children[i].objectName === "separator") {
-                children[i].visible = false;
-            } else {
-                children[i].visible = false;
+            children[i].visible = false;
+            if( children[i].objectName !== "separator") {
                 children[i].destroy();
             }
         }
@@ -75,6 +61,7 @@
 
     function createEvent( event ,hour) {
         var eventBubble = delegate.createObject(bubbleOverLay);
+
         eventBubble.clicked.connect( bubbleOverLay.showEventDetails );
 
         var yPos = (( event.startDateTime.getMinutes() * hourHeight) / 60) + hour * hourHeight

=== modified file 'TimeLineBaseComponent.qml'
--- TimeLineBaseComponent.qml	2014-03-26 14:29:37 +0000
+++ TimeLineBaseComponent.qml	2014-04-05 06:36:44 +0000
@@ -27,6 +27,13 @@
         }
     }
 
+    EventListModel {
+        id: mainModel
+        startPeriod: startDay.midnight();
+        endPeriod: type == ViewType.ViewTypeWeek ? startPeriod.addDays(7).endOfDay(): startPeriod.endOfDay()
+    }
+
+
     Column {
         anchors.top: parent.top
 
@@ -37,6 +44,10 @@
             id: allDayContainer
             type: root.type
             startDay: root.startDay
+            model: mainModel
+            Component.onCompleted: {
+                model.addModelChangeListener(createAllDayEvents);
+            }
         }
 
         Flickable{
@@ -75,6 +86,11 @@
                         height: parent.height
                         delegate: comp
                         day: startDay.addDays(index)
+
+                        model: mainModel
+                        Component.onCompleted: {
+                            model.addModelChangeListener(createEvents);
+                        }
                     }
                 }
             }

=== modified file 'WeekView.qml'
--- WeekView.qml	2014-03-26 19:06:27 +0000
+++ WeekView.qml	2014-04-05 06:36:44 +0000
@@ -29,7 +29,7 @@
         id: weekHeader
         objectName: "weekHeader"
         type: ViewType.ViewTypeWeek
-        date: weekViewPath.weekStart
+        date: firstDay
 
         onDateSelected: {
             root.dateSelected(date);
@@ -39,9 +39,6 @@
     PathViewBase{
         id: weekViewPath
 
-        property var visibleWeek: dayStart.weekStart(Qt.locale().firstDayOfWeek);
-        property var weekStart: weekViewPath.visibleWeek
-
         width: parent.width
         height: root.height - weekViewPath.y
 
@@ -59,13 +56,11 @@
         }
 
         function nextWeek() {
-            var weekStartDay = visibleWeek.weekStart(Qt.locale().firstDayOfWeek);
-            dayStart = weekStartDay.addDays(7);
+            dayStart = firstDay.addDays(7);
         }
 
         function previousWeek(){
-            var weekStartDay = visibleWeek.weekStart(Qt.locale().firstDayOfWeek);
-            dayStart = weekStartDay.addDays(-7);
+            dayStart = firstDay.addDays(-7);
         }
 
         delegate: TimeLineBaseComponent {
@@ -76,7 +71,7 @@
             width: parent.width
             height: parent.height
 
-            startDay: getWeekStart();
+            startDay: firstDay.addDays( weekViewPath.indexType(index) * 7)
 
             Connections{
                 target: root
@@ -102,19 +97,6 @@
                 value: contentY
                 when: timeLineView.PathView.isCurrentItem
             }
-
-            function getWeekStart() {
-                switch( weekViewPath.indexType(index)) {
-                case 0:
-                    return weekViewPath.weekStart;
-                case -1:
-                    var weekStartDay= weekViewPath.weekStart.weekStart(Qt.locale().firstDayOfWeek);
-                    return weekStartDay.addDays(-7);
-                case 1:
-                    var weekStartDay = weekViewPath.weekStart.weekStart(Qt.locale().firstDayOfWeek);
-                    return weekStartDay.addDays(7);
-                }
-            }
         }
     }
 }

=== modified file 'calendar.qml'
--- calendar.qml	2014-04-04 02:38:06 +0000
+++ calendar.qml	2014-04-05 06:36:44 +0000
@@ -3,7 +3,6 @@
 import Ubuntu.Components.Popups 0.1
 
 import "dateExt.js" as DateExt
-import "GlobalEventModel.js" as GlobalModel
 
 MainView {
     id: mainView
@@ -68,7 +67,6 @@
             id: tabPage
 
             property var currentDay: DateExt.today();
-            property var globalModel;
 
             // Arguments on startup
             property bool newevent: false;
@@ -88,18 +86,6 @@
 
                 if( !weekView.dayStart.isSameDay(currentDay))
                     weekView.dayStart = currentDay
-
-                setStartEndDateToModel();
-            }
-
-            function setStartEndDateToModel() {
-                if(globalModel) {
-                    globalModel.startPeriod =  new Date(currentDay.getFullYear(),0,1,0,0,0,0);
-                    globalModel.endPeriod = new Date(currentDay.getFullYear(),11,31,0,0,0,0);
-                    // only enable auto update after set the date interval
-                    globalModel.autoUpdate = true
-                    globalModel.update()
-                }
             }
 
             function newEvent() {
@@ -124,7 +110,7 @@
                             endDate = new Date(endTime);
                     }
                 }
-                pageStack.push(Qt.resolvedUrl("NewEvent.qml"),{"startDate": startDate, "endDate": endDate});
+                pageStack.push(Qt.resolvedUrl("NewEvent.qml"),{"startDate": startDate, "endDate": endDate, "model":eventModel});
             }
 
             // This function calculate the difference between --endtime and --starttime and choose the better view
@@ -159,7 +145,6 @@
 
                 if (endtimepattern.test(url))
                     endtime = url.match(/endtime=(\d+)/)[0].replace("endtime=", '');
-
             }
 
             Component.onCompleted: {
@@ -194,9 +179,6 @@
                 else {
                     tabs.selectedTabIndex= 1;
                 }
-
-                globalModel = GlobalModel.globalModel();
-                setStartEndDateToModel();
             } // End of Component.onCompleted:
 
             // This is for wait that the app is load when newEvent is invoked by argument
@@ -210,6 +192,13 @@
                 }
             }
 
+            EventListModel{
+                id: eventModel
+                //This model is just for newevent
+                //so we dont need any update
+                autoUpdate: false
+            }
+
             ToolbarItems {
                 id: commonToolBar
 
@@ -229,7 +218,7 @@
                         iconSource: Qt.resolvedUrl("new-event.svg");
                         text: i18n.tr("New Event");
                         onTriggered: {
-                            pageStack.push(Qt.resolvedUrl("NewEvent.qml"),{"date":tabPage.currentDay});
+                            pageStack.push(Qt.resolvedUrl("NewEvent.qml"),{"date":tabPage.currentDay,"model":eventModel});
                         }
                     }
                 }

