~mihirsoni/ubuntu-calendar-app/dateSelectNewEventTest

« back to all changes in this revision

Viewing changes to EventListModel.qml

  • Committer: Mihir Soni
  • Date: 2014-10-23 23:15:56 UTC
  • Revision ID: mihirsoni.123@gmail.com-20141023231556-w0vdpos7cfk4mq4c
pep8 fixes

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
import QtQuick 2.0
2
 
import "dateExt.js" as DateExt
3
 
import "dataService.js" as DataService
4
 
 
5
 
ListModel {
6
 
    id: model
7
 
 
8
 
    property var termStart: new Date()
9
 
    property var termLength: Date.msPerDay
10
 
 
11
 
    signal reload
12
 
 
13
 
    onReload: {
14
 
        var t0 = termStart.getTime()
15
 
        var t1 = t0 + termLength
16
 
        model.clear()
17
 
        DataService.getEvents(t0, t1, model)
18
 
        // for (var i = 0; i < model.count; ++i)
19
 
        //     DataService.printEvent(model.get(i))
20
 
    }
21
 
    Component.onCompleted: {
22
 
        reload()
23
 
        DataService.eventsNotifier().dataChanged.connect(reload)
24
 
        termStartChanged.connect(reload)
 
1
/*
 
2
 * Copyright (C) 2013-2014 Canonical Ltd
 
3
 *
 
4
 * This file is part of Ubuntu Calendar App
 
5
 *
 
6
 * Ubuntu Calendar App is free software: you can redistribute it and/or modify
 
7
 * it under the terms of the GNU General Public License version 3 as
 
8
 * published by the Free Software Foundation.
 
9
 *
 
10
 * Ubuntu Calendar App is distributed in the hope that it will be useful,
 
11
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 
12
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
13
 * GNU General Public License for more details.
 
14
 *
 
15
 * You should have received a copy of the GNU General Public License
 
16
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
17
 */
 
18
import QtQuick 2.3
 
19
import QtOrganizer 5.0
 
20
 
 
21
OrganizerModel {
 
22
    id: eventModel
 
23
    manager:"eds"
 
24
 
 
25
    property var listeners:[];
 
26
    property bool isLoading: false
 
27
 
 
28
    function addModelChangeListener(listener){
 
29
        listeners.push(listener);
 
30
    }
 
31
 
 
32
    function removeModelChangeListener(listener) {
 
33
        var i = listeners.indexOf(listener);
 
34
        if(i != -1) {
 
35
            listeners.splice(i, 1);
 
36
        }
 
37
    }
 
38
 
 
39
    function getItems(startDate, endDate){
 
40
        return itemsByTimePeriod(startDate,endDate);
 
41
    }
 
42
 
 
43
    function startLoadingTimer() {
 
44
        var newObject = Qt.createQmlObject("import QtQuick 2.3; Timer {interval: 1000; running: true; repeat: false;}",
 
45
            eventModel, "EventListMode.qml");
 
46
        newObject.onTriggered.connect( function(){
 
47
            var items = getItems(eventModel.startPeriod, eventModel.endPeriod);
 
48
            if( isLoading == true && items.length === 0) {
 
49
                isLoading = false;
 
50
                modelChanged();
 
51
            }
 
52
            newObject.destroy();
 
53
        });
 
54
    }
 
55
 
 
56
 
 
57
    onModelChanged: {
 
58
        isLoading = false
 
59
        if(listeners === undefined){
 
60
            return;
 
61
        }
 
62
        for(var i=0; i < listeners.length ;++i){
 
63
            (listeners[i])();
 
64
        }
 
65
    }
 
66
 
 
67
    function getCollections(){
 
68
        var cals = [];
 
69
        var collections = eventModel.collections;
 
70
        for(var i = 0 ; i < collections.length ; ++i) {
 
71
            var cal = collections[i];
 
72
            if( cal.extendedMetaData("collection-type") === "Calendar" ) {
 
73
                cals.push(cal);
 
74
            }
 
75
        }
 
76
        return cals;
 
77
        }
 
78
 
 
79
    onStartPeriodChanged: {
 
80
        isLoading = true
 
81
    }
 
82
 
 
83
    onIsLoadingChanged: {
 
84
        if( isLoading ) {
 
85
            startLoadingTimer();
 
86
        }
25
87
    }
26
88
}