~mihirsoni/ubuntu-calendar-app/1280598

« back to all changes in this revision

Viewing changes to EventDetails.qml

  • Committer: Mihir Soni
  • Date: 2014-05-08 05:58:17 UTC
  • mfrom: (261.2.3 trunk)
  • Revision ID: mihirsoni.123@gmail.com-20140508055817-449hx7er3p7bqz4m
merge with trunk

Show diffs side-by-side

added added

removed removed

Lines of Context:
37
37
            }
38
38
        }
39
39
    }
 
40
 
 
41
    function updateRecurrence( event ) {
 
42
        var index = 0;
 
43
        if(event.recurrence ) {
 
44
            var recurrenceRule = event.recurrence.recurrenceRules;
 
45
            if(recurrenceRule.length > 0){
 
46
                index =  recurrenceRule[0].frequency ;
 
47
            }
 
48
            else{
 
49
                index = 0
 
50
            }
 
51
        }
 
52
        recurrentHeader.value = Defines.recurrenceLabel[index];
 
53
    }
 
54
 
 
55
    function updateContacts(event) {
 
56
        var attendees = event.attendees;
 
57
        contactModel.clear();
 
58
        if( attendees !== undefined ) {
 
59
            for( var j = 0 ; j < attendees.length ; ++j ) {
 
60
                contactModel.append( {"name": attendees[j].name,"participationStatus": attendees[j].participationStatus }  );
 
61
            }
 
62
        }
 
63
    }
 
64
 
 
65
    function updateReminder(event) {
 
66
        var index = 0;
 
67
        var reminder = event.detail( Detail.VisualReminder);
 
68
        if( reminder ) {
 
69
            var reminderTime = reminder.secondsBeforeStart;
 
70
            var foundIndex = Defines.reminderValue.indexOf(reminderTime);
 
71
            index = foundIndex != -1 ? foundIndex : 0;
 
72
        }
 
73
        reminderHeader.value = Defines.reminderLabel[index];
 
74
    }
 
75
 
 
76
    function updateLocation(event) {
 
77
        if( event.location ) {
 
78
            locationLabel.text = event.location;
 
79
 
 
80
            // FIXME: need to cache map image to avoid duplicate download every time
 
81
            var imageSrc = "http://maps.googleapis.com/maps/api/staticmap?center="+event.location+
 
82
                    "&markers=color:red|"+event.location+"&zoom=15&size="+mapContainer.width+
 
83
                    "x"+mapContainer.height+"&sensor=false";
 
84
            mapImage.source = imageSrc;
 
85
        }
 
86
        else {
 
87
            // TODO: use different color for empty text
 
88
            locationLabel.text = i18n.tr("Not specified")
 
89
            mapImage.source = "";
 
90
        }
 
91
    }
 
92
 
40
93
    function showEvent(e) {
41
 
 
42
94
        // TRANSLATORS: this is a time & Date formatting string,
43
95
        //http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details
44
96
        var timeFormat = i18n.tr("hh:mm");
46
98
        eventDate.value = e.startDateTime.toLocaleString(Qt.locale(),dateFormat);
47
99
        var startTime = e.startDateTime.toLocaleTimeString(Qt.locale(), timeFormat);
48
100
        var endTime = e.endDateTime.toLocaleTimeString(Qt.locale(), timeFormat);
 
101
 
 
102
        var parentEvent;
 
103
        if( e.parentId ){
 
104
            var requestId = -1;
 
105
            model.onItemsFetched.connect( function(id,fetchedItems){
 
106
                if(requestId === id && fetchedItems.length > 0) {
 
107
                    parentEvent = fetchedItems[0];
 
108
                    updateRecurrence(parentEvent);
 
109
                    updateContacts(parentEvent);
 
110
                }
 
111
            });
 
112
            requestId = model.fetchItems([e.parentId]);
 
113
        }
 
114
 
49
115
        startHeader.value = startTime;
50
116
        endHeader.value = endTime;
51
117
 
59
125
        if( e.description ) {
60
126
            descLabel.text = e.description;
61
127
        }
62
 
        var attendees = e.attendees;
63
 
        contactModel.clear();
64
 
        if( attendees !== undefined ) {
65
 
            for( var j = 0 ; j < attendees.length ; ++j ) {
66
 
                contactModel.append( {"name": attendees[j].name,"participationStatus": attendees[j].participationStatus }  );
67
 
            }
68
 
        }
69
 
 
70
 
        var index = 0;
71
 
        if(e.recurrence ) {
72
 
            var recurrenceRule = e.recurrence.recurrenceRules;
73
 
            index = ( recurrenceRule.length > 0 ) ? recurrenceRule[0].frequency : 0;
74
 
        }
75
 
        recurrentHeader.value = Defines.recurrenceLabel[index];
76
 
 
77
 
        index = 0;
78
 
        var reminder = e.detail( Detail.VisualReminder);
79
 
        if( reminder ) {
80
 
            var reminderTime = reminder.secondsBeforeStart;
81
 
            var foundIndex = Defines.reminderValue.indexOf(reminderTime);
82
 
            index = foundIndex != -1 ? foundIndex : 0;
83
 
        }
84
 
        reminderHeader.value = Defines.reminderLabel[index];
85
 
 
86
 
        if( e.location ) {
87
 
            locationLabel.text = e.location;
88
 
 
89
 
            // FIXME: need to cache map image to avoid duplicate download every time
90
 
            var imageSrc = "http://maps.googleapis.com/maps/api/staticmap?center="+e.location+
91
 
                    "&markers=color:red|"+e.location+"&zoom=15&size="+mapContainer.width+
92
 
                    "x"+mapContainer.height+"&sensor=false";
93
 
            mapImage.source = imageSrc;
94
 
        }
95
 
        else {
96
 
            // TODO: use different color for empty text
97
 
            locationLabel.text = i18n.tr("Not specified")
98
 
            mapImage.source = "";
99
 
        }
 
128
 
 
129
        updateContacts(e);
 
130
 
 
131
        updateRecurrence(e);
 
132
 
 
133
        updateReminder(e);
 
134
 
 
135
        updateLocation(e);
100
136
    }
101
137
 
102
138
    Keys.onEscapePressed: {
281
317
                id: recurrentHeader
282
318
                xMargin: column.recurranceAreaMaxWidth
283
319
                header: i18n.tr("This happens")
284
 
                value :"Only once" //Neds to change
285
320
            }
286
321
            EventDetailsInfo{
287
322
                id: reminderHeader