Merge lp:~nik90/ubuntu-calendar-app/revamp-eventdetails-page into lp:ubuntu-calendar-app
- revamp-eventdetails-page
- Merge into trunk
Status: | Merged | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Approved by: | Renato Araujo Oliveira Filho | ||||||||||||
Approved revision: | 789 | ||||||||||||
Merged at revision: | 790 | ||||||||||||
Proposed branch: | lp:~nik90/ubuntu-calendar-app/revamp-eventdetails-page | ||||||||||||
Merge into: | lp:ubuntu-calendar-app | ||||||||||||
Diff against target: |
1136 lines (+337/-394) 7 files modified
AgendaView.qml (+2/-2) AllDayEventComponent.qml (+2/-4) CMakeLists.txt (+22/-14) EventDetails.qml (+232/-258) HeaderDateComponent.qml (+1/-1) MonthComponent.qml (+2/-0) po/com.ubuntu.calendar.pot (+76/-115) |
||||||||||||
To merge this branch: | bzr merge lp:~nik90/ubuntu-calendar-app/revamp-eventdetails-page | ||||||||||||
Related bugs: |
|
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Renato Araujo Oliveira Filho (community) | Approve | ||
Jenkins Bot | continuous-integration | Approve | |
Review via email: mp+288492@code.launchpad.net |
Commit message
- Transitioned EventsDetails.qml to PageHeader
- Removed uses of deprecated ListItems like Subtitled, Header etc
- Fixed translator comments and removed incorrect uses of i18n.tr() calls
- Sorted and categorized guests list into Attending, Not Attending and No Reply as per design
- Cleaned up code
Description of the change
- Transitioned EventsDetails.qml to PageHeader
- Removed uses of deprecated ListItems like Subtitled, Header etc
- Fixed translator comments and removed incorrect uses of i18n.tr() calls
- Sorted and categorized guests list into Attending, Not Attending and No Reply as per design
- Cleaned up code
Jenkins Bot (ubuntu-core-apps-jenkins-bot) wrote : | # |
Szymon Waliczek (majster-pl) : | # |
- 784. By Nekhelesh Ramananthan
-
merged lp:ubuntu-calendar-app
Jenkins Bot (ubuntu-core-apps-jenkins-bot) wrote : | # |
PASSED: Continuous integration, rev:784
https:/
Executed test runs:
None: https:/
Click here to trigger a rebuild:
https:/
- 785. By Nekhelesh Ramananthan
-
Fixed szymon's review
Jenkins Bot (ubuntu-core-apps-jenkins-bot) wrote : | # |
PASSED: Continuous integration, rev:785
https:/
Executed test runs:
None: https:/
Click here to trigger a rebuild:
https:/
Renato Araujo Oliveira Filho (renatofilho) wrote : | # |
some comments inline.
Nekhelesh Ramananthan (nik90) wrote : | # |
@Renator Replied to your inline comments.
- 786. By Nekhelesh Ramananthan
-
Added keyboard shortcut to edit action
- 787. By Nekhelesh Ramananthan
-
Removed pagestack connection since it doesn't have any merit of being included there
Jenkins Bot (ubuntu-core-apps-jenkins-bot) wrote : | # |
PASSED: Continuous integration, rev:787
https:/
Executed test runs:
None: https:/
Click here to trigger a rebuild:
https:/
Renato Araujo Oliveira Filho (renatofilho) wrote : | # |
@nick90: Since you are revamp the page is better to fix/update wrong code if necessary.
Check my inline comments.
Renato Araujo Oliveira Filho (renatofilho) wrote : | # |
The visual looks different from this doc: https:/
In the current implementation only the event title has the collection color as background in the doc it shows the event title and time over the collection color background.
- 788. By Nekhelesh Ramananthan
-
Added connection to detect external event changes and modify the event details page
Renato Araujo Oliveira Filho (renatofilho) wrote : | # |
Long event description is clipped even if there is still space on the screen.
check screenshot.http://
- 789. By Nekhelesh Ramananthan
-
Fixed issues pointed by renato regarding description getting truncated and including location, date in the colored rectangle
Nekhelesh Ramananthan (nik90) wrote : | # |
Fixed remaining issues.
Renato Araujo Oliveira Filho (renatofilho) wrote : | # |
looks good. Thanks.
Preview Diff
1 | === modified file 'AgendaView.qml' | |||
2 | --- AgendaView.qml 2016-03-14 16:22:46 +0000 | |||
3 | +++ AgendaView.qml 2016-03-16 16:44:44 +0000 | |||
4 | @@ -164,8 +164,8 @@ | |||
5 | 164 | ListItemLayout { | 164 | ListItemLayout { |
6 | 165 | id: listitemlayout | 165 | id: listitemlayout |
7 | 166 | padding.top: units.gu(1) | 166 | padding.top: units.gu(1) |
10 | 167 | title.text: mainView.displayLunarCalendar ? i18n.tr("%1 %2 %3 %4 %5").arg(lunarDate.gzYear).arg(lunarDate .IMonthCn).arg(lunarDate.IDayCn) | 167 | title.text: mainView.displayLunarCalendar ? ("%1 %2 %3 %4 %5").arg(lunarDate.gzYear).arg(lunarDate .IMonthCn).arg(lunarDate.IDayCn) |
11 | 168 | .arg(lunarDate.gzDay).arg(lunarDate.isTerm ? lunarDate.Term : "") | 168 | .arg(lunarDate.gzDay).arg(lunarDate.isTerm ? lunarDate.Term : "") |
12 | 169 | : date | 169 | : date |
13 | 170 | title.color: event.startDateTime.toLocaleDateString() === new Date().toLocaleDateString() ? UbuntuColors.orange : UbuntuColors.darkGrey | 170 | title.color: event.startDateTime.toLocaleDateString() === new Date().toLocaleDateString() ? UbuntuColors.orange : UbuntuColors.darkGrey |
14 | 171 | } | 171 | } |
15 | 172 | 172 | ||
16 | === modified file 'AllDayEventComponent.qml' | |||
17 | --- AllDayEventComponent.qml 2016-03-04 03:08:09 +0000 | |||
18 | +++ AllDayEventComponent.qml 2016-03-16 16:44:44 +0000 | |||
19 | @@ -143,10 +143,8 @@ | |||
20 | 143 | } | 143 | } |
21 | 144 | 144 | ||
22 | 145 | if(repeater.compactView) { | 145 | if(repeater.compactView) { |
27 | 146 | // TRANSLATORS: the first parameter refers to the number of all-day events | 146 | // TRANSLATORS: Please keep the translation of this string to a max of |
28 | 147 | // on a given day. "Ev." is short form for "Events". | 147 | // 5 characters as the week view where it is shown has limited space. |
25 | 148 | // Please keep the translation of "Ev." to 3 characters only, as the week view | ||
26 | 149 | // where it's shown has limited space | ||
29 | 150 | return i18n.tr("%1 event", "%1 events", events.length).arg(events.length) | 148 | return i18n.tr("%1 event", "%1 events", events.length).arg(events.length) |
30 | 151 | } else { | 149 | } else { |
31 | 152 | if( events.length > 1) { | 150 | if( events.length > 1) { |
32 | 153 | 151 | ||
33 | === modified file 'CMakeLists.txt' | |||
34 | --- CMakeLists.txt 2015-11-23 09:21:05 +0000 | |||
35 | +++ CMakeLists.txt 2016-03-16 16:44:44 +0000 | |||
36 | @@ -1,23 +1,34 @@ | |||
37 | 1 | project(com.ubuntu.calendar) | 1 | project(com.ubuntu.calendar) |
38 | 2 | cmake_minimum_required(VERSION 2.8.9) | 2 | cmake_minimum_required(VERSION 2.8.9) |
39 | 3 | |||
40 | 3 | find_program(INTLTOOL_MERGE intltool-merge) | 4 | find_program(INTLTOOL_MERGE intltool-merge) |
41 | 5 | if(NOT INTLTOOL_MERGE) | ||
42 | 6 | message(FATAL_ERROR "Could not find intltool-merge, please install the intltool package") | ||
43 | 7 | endif() | ||
44 | 8 | |||
45 | 4 | find_program(INTLTOOL_EXTRACT intltool-extract) | 9 | find_program(INTLTOOL_EXTRACT intltool-extract) |
46 | 10 | if(NOT INTLTOOL_EXTRACT) | ||
47 | 11 | message(FATAL_ERROR "Could not find intltool-extract, please install the intltool package") | ||
48 | 12 | endif() | ||
49 | 13 | |||
50 | 14 | option(INSTALL_TESTS "Install the tests on make install" on) | ||
51 | 15 | option(CLICK_MODE "Installs to a contained location" on) | ||
52 | 5 | 16 | ||
53 | 6 | # Standard install paths | 17 | # Standard install paths |
54 | 7 | include(GNUInstallDirs) | 18 | include(GNUInstallDirs) |
55 | 8 | 19 | ||
58 | 9 | option(INSTALL_TESTS "Install the tests on make install" on) | 20 | # Tests |
59 | 10 | option(CLICK_MODE "Installs to a contained location" on) | 21 | enable_testing() |
60 | 11 | 22 | ||
70 | 12 | set(APP_NAME calendar) | 23 | set(APP_NAME calendar) |
71 | 13 | set(DESKTOP_FILE "${PROJECT_NAME}_${APP_NAME}.desktop") | 24 | set(DESKTOP_FILE "${PROJECT_NAME}_${APP_NAME}.desktop") |
72 | 14 | set(APPLICATION_FILE "${PROJECT_NAME}_${APP_NAME}.application") | 25 | set(APPLICATION_FILE "${PROJECT_NAME}_${APP_NAME}.application") |
73 | 15 | set(URLS_FILE "${PROJECT_NAME}_${APP_NAME}.url-dispatcher") | 26 | set(URLS_FILE "${PROJECT_NAME}_${APP_NAME}.url-dispatcher") |
74 | 16 | set(MAIN_QML calendar.qml) | 27 | set(MAIN_QML calendar.qml) |
75 | 17 | set(ICON_FILE calendar-app@30.png) | 28 | set(ICON_FILE calendar-app@30.png) |
76 | 18 | set(AUTOPILOT_DIR calendar_app) | 29 | set(AUTOPILOT_DIR calendar_app) |
77 | 19 | set(APP_HARDCODE calendar-app) | 30 | set(APP_HARDCODE calendar-app) |
78 | 20 | set(UBUNTU_MANIFEST_PATH "click/manifest.json.in" CACHE INTERNAL "Relative path to the manifest file") | 31 | set(UBUNTU_MANIFEST_PATH "click/manifest.json.in" CACHE INTERNAL "Relative path to the manifest file") |
79 | 21 | 32 | ||
80 | 22 | if(CLICK_MODE) | 33 | if(CLICK_MODE) |
81 | 23 | if(NOT DEFINED BZR_SOURCE) | 34 | if(NOT DEFINED BZR_SOURCE) |
82 | @@ -77,9 +88,6 @@ | |||
83 | 77 | 88 | ||
84 | 78 | install(DIRECTORY "3rd-party" DESTINATION ${DATA_DIR}) | 89 | install(DIRECTORY "3rd-party" DESTINATION ${DATA_DIR}) |
85 | 79 | 90 | ||
86 | 80 | # Tests | ||
87 | 81 | enable_testing() | ||
88 | 82 | |||
89 | 83 | add_subdirectory(click) | 91 | add_subdirectory(click) |
90 | 84 | add_subdirectory(po) | 92 | add_subdirectory(po) |
91 | 85 | add_subdirectory(tests) | 93 | add_subdirectory(tests) |
92 | 86 | 94 | ||
93 | === modified file 'EventDetails.qml' | |||
94 | --- EventDetails.qml 2016-03-02 19:55:52 +0000 | |||
95 | +++ EventDetails.qml 2016-03-16 16:44:44 +0000 | |||
96 | @@ -1,5 +1,5 @@ | |||
97 | 1 | /* | 1 | /* |
99 | 2 | * Copyright (C) 2013-2014 Canonical Ltd | 2 | * Copyright (C) 2013-2016 Canonical Ltd |
100 | 3 | * | 3 | * |
101 | 4 | * This file is part of Ubuntu Calendar App | 4 | * This file is part of Ubuntu Calendar App |
102 | 5 | * | 5 | * |
103 | @@ -15,11 +15,10 @@ | |||
104 | 15 | * You should have received a copy of the GNU General Public License | 15 | * You should have received a copy of the GNU General Public License |
105 | 16 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | 16 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
106 | 17 | */ | 17 | */ |
107 | 18 | |||
108 | 18 | import QtQuick 2.4 | 19 | import QtQuick 2.4 |
109 | 19 | import Ubuntu.Components 1.3 | 20 | import Ubuntu.Components 1.3 |
113 | 20 | import Ubuntu.Components.ListItems 1.0 as ListItem | 21 | import Ubuntu.Components.Popups 1.3 |
111 | 21 | import Ubuntu.Components.Themes.Ambiance 1.0 | ||
112 | 22 | import Ubuntu.Components.Popups 1.0 | ||
114 | 23 | import QtOrganizer 5.0 | 22 | import QtOrganizer 5.0 |
115 | 24 | 23 | ||
116 | 25 | import "Defines.js" as Defines | 24 | import "Defines.js" as Defines |
117 | @@ -32,46 +31,45 @@ | |||
118 | 32 | 31 | ||
119 | 33 | property var event | 32 | property var event |
120 | 34 | property var model | 33 | property var model |
121 | 34 | property var collection: model.collection(event.collectionId); | ||
122 | 35 | 35 | ||
127 | 36 | anchors{ | 36 | header: PageHeader { |
128 | 37 | left: parent.left | 37 | title: i18n.tr("Event Details") |
129 | 38 | right: parent.right | 38 | flickable: flicable |
130 | 39 | bottom: parent.bottom | 39 | trailingActionBar.actions: Action { |
131 | 40 | text: i18n.tr("Edit"); | ||
132 | 41 | objectName: "edit" | ||
133 | 42 | iconName: "edit"; | ||
134 | 43 | enabled: !collection.extendedMetaData("collection-readonly") | ||
135 | 44 | shortcut: "Ctrl+E" | ||
136 | 45 | onTriggered: { | ||
137 | 46 | if( event.itemType === Type.EventOccurrence ) { | ||
138 | 47 | var dialog = PopupUtils.open(Qt.resolvedUrl("EditEventConfirmationDialog.qml"),root,{"event": event}); | ||
139 | 48 | dialog.editEvent.connect( function(eventId){ | ||
140 | 49 | if( eventId === event.parentId ) { | ||
141 | 50 | showEditEventPage(internal.parentEvent, model) | ||
142 | 51 | } else { | ||
143 | 52 | showEditEventPage(event, model) | ||
144 | 53 | } | ||
145 | 54 | }); | ||
146 | 55 | } else { | ||
147 | 56 | showEditEventPage(event, model) | ||
148 | 57 | } | ||
149 | 58 | } | ||
150 | 59 | } | ||
151 | 40 | } | 60 | } |
152 | 41 | 61 | ||
153 | 42 | flickable: null | ||
154 | 43 | |||
155 | 44 | title: i18n.tr("Event Details") | ||
156 | 45 | |||
157 | 46 | Component.onCompleted: { | 62 | Component.onCompleted: { |
158 | 47 | showEvent(event) | 63 | showEvent(event) |
159 | 48 | } | 64 | } |
160 | 49 | 65 | ||
186 | 50 | Connections{ | 66 | Keys.onEscapePressed: { |
187 | 51 | target: pageStack | 67 | pageStack.pop(); |
188 | 52 | onCurrentPageChanged:{ | 68 | } |
189 | 53 | if( pageStack.currentPage === root) { | 69 | |
190 | 54 | showEvent(event) | 70 | Connections { |
191 | 55 | } | 71 | target: event |
192 | 56 | } | 72 | onItemChanged: showEvent(event) |
168 | 57 | } | ||
169 | 58 | |||
170 | 59 | RemindersModel { | ||
171 | 60 | id: reminderModel | ||
172 | 61 | } | ||
173 | 62 | |||
174 | 63 | function updateCollection(event) { | ||
175 | 64 | |||
176 | 65 | var collection = model.collection( event.collectionId ); | ||
177 | 66 | calendarIndicator.color = collection.color | ||
178 | 67 | eventInfo.color=collection.color | ||
179 | 68 | // TRANSLATORS: the first parameter refers to the name of event calendar. | ||
180 | 69 | calendarName.text = i18n.tr("%1 Calendar").arg( collection.name) | ||
181 | 70 | |||
182 | 71 | //disable edit in case of read only calendar | ||
183 | 72 | if( collection.extendedMetaData("collection-readonly") === true ) { | ||
184 | 73 | editAction.enabled = false | ||
185 | 74 | } | ||
193 | 75 | } | 73 | } |
194 | 76 | 74 | ||
195 | 77 | function updateRecurrence( event ) { | 75 | function updateRecurrence( event ) { |
196 | @@ -79,103 +77,124 @@ | |||
197 | 79 | if (event.recurrence) { | 77 | if (event.recurrence) { |
198 | 80 | if(event.recurrence.recurrenceRules[0] !== undefined){ | 78 | if(event.recurrence.recurrenceRules[0] !== undefined){ |
199 | 81 | var rule = event.recurrence.recurrenceRules[0]; | 79 | var rule = event.recurrence.recurrenceRules[0]; |
201 | 82 | repeatLabel.text = eventUtils.getRecurrenceString(rule) | 80 | recurrenceLabel.text = eventUtils.getRecurrenceString(rule) |
202 | 83 | } else { | 81 | } else { |
203 | 84 | //For event occurs once, event.recurrence.recurrenceRules == [] | 82 | //For event occurs once, event.recurrence.recurrenceRules == [] |
205 | 85 | repeatLabel.text = Defines.recurrenceLabel[0]; | 83 | recurrenceLabel.text = Defines.recurrenceLabel[0]; |
206 | 86 | } | 84 | } |
207 | 87 | } | 85 | } |
208 | 88 | } | 86 | } |
209 | 89 | 87 | ||
210 | 90 | function updateContacts(event) { | 88 | function updateContacts(event) { |
212 | 91 | var attendees = event.attendees; | 89 | var attendees |
213 | 90 | var attendingCount, notAttendingCount | ||
214 | 91 | |||
215 | 92 | attendingCount = 0 | ||
216 | 93 | notAttendingCount = 0 | ||
217 | 94 | attendees = event.attendees | ||
218 | 95 | |||
219 | 92 | contactModel.clear(); | 96 | contactModel.clear(); |
220 | 97 | |||
221 | 93 | if( attendees !== undefined ) { | 98 | if( attendees !== undefined ) { |
222 | 94 | for (var j = 0 ; j < attendees.length ; ++j) { | 99 | for (var j = 0 ; j < attendees.length ; ++j) { |
228 | 95 | var name = attendees[j].name.trim().length === 0 ? | 100 | var name = attendees[j].name.trim().length === 0 ? attendees[j].emailAddress.replace("mailto:", "") |
229 | 96 | attendees[j].emailAddress.replace("mailto:", ""): | 101 | : attendees[j].name |
230 | 97 | attendees[j].name | 102 | |
231 | 98 | 103 | // Sort the participating guests by Attending, Not-Attending and No-Reply for easier diaply in the list view. | |
232 | 99 | contactModel.append( {"name": name,"participationStatus": attendees[j].participationStatus } ); | 104 | if(attendees[j].participationStatus === 0) { |
233 | 105 | contactModel.insert(attendingCount+notAttendingCount, {"name": name,"participationStatus": attendees[j].participationStatus}) | ||
234 | 106 | notAttendingCount++ | ||
235 | 107 | } | ||
236 | 108 | |||
237 | 109 | else if(attendees[j].participationStatus === 1) { | ||
238 | 110 | contactModel.insert(attendingCount, {"name": name,"participationStatus": attendees[j].participationStatus}) | ||
239 | 111 | attendingCount++ | ||
240 | 112 | } | ||
241 | 113 | |||
242 | 114 | else { | ||
243 | 115 | contactModel.append({"name": name,"participationStatus": attendees[j].participationStatus}); | ||
244 | 116 | } | ||
245 | 100 | } | 117 | } |
246 | 101 | } | 118 | } |
247 | 102 | } | 119 | } |
248 | 103 | 120 | ||
249 | 104 | function updateReminder(event) { | 121 | function updateReminder(event) { |
251 | 105 | var reminder = event.detail( Detail.VisualReminder) | 122 | var reminder = event.detail(Detail.VisualReminder) |
252 | 106 | if(reminder) { | 123 | if(reminder) { |
253 | 107 | for(var i=0; i<reminderModel.count; i++) { | 124 | for(var i=0; i<reminderModel.count; i++) { |
254 | 108 | if(reminder.secondsBeforeStart === reminderModel.get(i).value) { | 125 | if(reminder.secondsBeforeStart === reminderModel.get(i).value) { |
256 | 109 | reminderHeader.subText = reminderModel.get(i).label | 126 | reminderLayout.subtitle.text = reminderModel.get(i).label |
257 | 110 | } | 127 | } |
258 | 111 | } | 128 | } |
259 | 112 | } else { | 129 | } else { |
271 | 113 | reminderHeader.subText = reminderModel.get(0).label | 130 | reminderLayout.subtitle.text = reminderModel.get(0).label |
272 | 114 | } | 131 | } |
273 | 115 | } | 132 | } |
274 | 116 | 133 | ||
275 | 117 | function updateLocation(event) { | 134 | function getDate(e) { |
276 | 118 | if( event.location ) { | 135 | var dateLabel = null |
277 | 119 | locationLabel.text = event.location | 136 | |
267 | 120 | } | ||
268 | 121 | } | ||
269 | 122 | |||
270 | 123 | function showEvent(e) { | ||
278 | 124 | var startTime = e.startDateTime.toLocaleTimeString(Qt.locale(), Locale.ShortFormat) | 137 | var startTime = e.startDateTime.toLocaleTimeString(Qt.locale(), Locale.ShortFormat) |
279 | 125 | var endTime = e.endDateTime.toLocaleTimeString(Qt.locale(), Locale.ShortFormat) | 138 | var endTime = e.endDateTime.toLocaleTimeString(Qt.locale(), Locale.ShortFormat) |
283 | 126 | 139 | var startDay = e.startDateTime.toLocaleDateString(Qt.locale(), Locale.LongFormat) | |
284 | 127 | var lunarStartDate = null; | 140 | var endDay = e.endDateTime.toLocaleDateString(Qt.locale(), Locale.LongFormat) |
285 | 128 | var lunarEndDate = null; | 141 | |
286 | 142 | var lunarStartDate = null | ||
287 | 143 | var lunarEndDate = null | ||
288 | 144 | |||
289 | 145 | var allDayString = "(%1)".arg(i18n.tr("All Day")) | ||
290 | 146 | |||
291 | 129 | if (mainView.displayLunarCalendar) { | 147 | if (mainView.displayLunarCalendar) { |
292 | 130 | lunarStartDate = Lunar.calendar.solar2lunar(e.startDateTime.getFullYear(), | 148 | lunarStartDate = Lunar.calendar.solar2lunar(e.startDateTime.getFullYear(), |
295 | 131 | e.startDateTime.getMonth() + 1, | 149 | e.startDateTime.getMonth() + 1, |
296 | 132 | e.startDateTime.getDate()) | 150 | e.startDateTime.getDate()) |
297 | 133 | 151 | ||
298 | 134 | lunarEndDate = Lunar.calendar.solar2lunar(e.endDateTime.getFullYear(), | 152 | lunarEndDate = Lunar.calendar.solar2lunar(e.endDateTime.getFullYear(), |
301 | 135 | e.endDateTime.getMonth() + 1, | 153 | e.endDateTime.getMonth() + 1, |
302 | 136 | e.endDateTime.getDate()) | 154 | e.endDateTime.getDate()) |
303 | 137 | } | 155 | } |
304 | 138 | 156 | ||
305 | 139 | if( e.allDay ) { | 157 | if( e.allDay ) { |
306 | 140 | var days = Math.floor((e.endDateTime - e.startDateTime) / Date.msPerDay); | 158 | var days = Math.floor((e.endDateTime - e.startDateTime) / Date.msPerDay); |
307 | 141 | if( days !== 1 ) { | 159 | if( days !== 1 ) { |
308 | 142 | if (mainView.displayLunarCalendar) { | 160 | if (mainView.displayLunarCalendar) { |
311 | 143 | dateLabel.text = i18n.tr("%1 %2 %3 - %4 %5 %6 (All Day)") | 161 | dateLabel = ("%1 %2 %3 - %4 %5 %6").arg(lunarStartDate.gzYear).arg(lunarStartDate .IMonthCn).arg(lunarStartDate.IDayCn) |
310 | 144 | .arg(lunarStartDate.gzYear).arg(lunarStartDate .IMonthCn).arg(lunarStartDate.IDayCn) | ||
312 | 145 | .arg(lunarEndDate.gzYear).arg(lunarEndDate .IMonthCn).arg(lunarEndDate.IDayCn) | 162 | .arg(lunarEndDate.gzYear).arg(lunarEndDate .IMonthCn).arg(lunarEndDate.IDayCn) |
313 | 146 | } else { | 163 | } else { |
317 | 147 | dateLabel.text = i18n.tr("%1 - %2 (All Day)") | 164 | dateLabel = ("%1 - %2").arg(startDay).arg(e.endDateTime.addDays(-1).toLocaleDateString(Qt.locale(), Locale.LongFormat)) |
315 | 148 | .arg( e.startDateTime.toLocaleDateString(Qt.locale(), Locale.LongFormat)) | ||
316 | 149 | .arg( e.endDateTime.addDays(-1).toLocaleDateString(Qt.locale(), Locale.LongFormat)) | ||
318 | 150 | } | 165 | } |
319 | 151 | } else { | 166 | } else { |
320 | 152 | if (mainView.displayLunarCalendar) { | 167 | if (mainView.displayLunarCalendar) { |
323 | 153 | dateLabel.text = i18n.tr("%1 %2 %3 (All Day)") | 168 | dateLabel = ("%1 %2 %3").arg(lunarStartDate.gzYear).arg(lunarStartDate .IMonthCn).arg(lunarStartDate.IDayCn) |
322 | 154 | .arg(lunarStartDate.gzYear).arg(lunarStartDate .IMonthCn).arg(lunarStartDate.IDayCn) | ||
324 | 155 | } else { | 169 | } else { |
326 | 156 | dateLabel.text = i18n.tr("%1 (All Day)").arg( e.startDateTime.toLocaleDateString(Qt.locale(), Locale.LongFormat)) | 170 | dateLabel = startDay |
327 | 157 | } | 171 | } |
328 | 158 | } | 172 | } |
330 | 159 | } else { | 173 | |
331 | 174 | dateLabel = dateLabel.concat(" ", allDayString) | ||
332 | 175 | } | ||
333 | 176 | |||
334 | 177 | else { | ||
335 | 160 | if (e.endDateTime.getDate() !== e.startDateTime.getDate()) { | 178 | if (e.endDateTime.getDate() !== e.startDateTime.getDate()) { |
336 | 161 | if (mainView.displayLunarCalendar) { | 179 | if (mainView.displayLunarCalendar) { |
339 | 162 | dateLabel.text = i18n.tr("%1 %2 %3, %4 - %5 %6 %7, %8") | 180 | dateLabel = ("%1 %2 %3, %4 - %5 %6 %7, %8").arg(lunarStartDate.gzYear).arg(lunarStartDate .IMonthCn).arg(lunarStartDate.IDayCn).arg(startTime) |
338 | 163 | .arg(lunarStartDate.gzYear).arg(lunarStartDate .IMonthCn).arg(lunarStartDate.IDayCn).arg(startTime) | ||
340 | 164 | .arg(lunarEndDate.gzYear).arg(lunarEndDate .IMonthCn).arg(lunarEndDate.IDayCn).arg(endTime); | 181 | .arg(lunarEndDate.gzYear).arg(lunarEndDate .IMonthCn).arg(lunarEndDate.IDayCn).arg(endTime); |
341 | 165 | } else { | 182 | } else { |
344 | 166 | dateLabel.text = e.startDateTime.toLocaleDateString(Qt.locale(), Locale.LongFormat) + ", " +startTime + " - " | 183 | dateLabel = ("%1, %2 - %3, %4").arg(startDay).arg(startTime).arg(endDay).arg(endTime) |
343 | 167 | + e.endDateTime.toLocaleDateString(Qt.locale(), Locale.LongFormat) + ", " + endTime; | ||
345 | 168 | } | 184 | } |
346 | 169 | } else { | 185 | } else { |
347 | 170 | if (mainView.displayLunarCalendar) { | 186 | if (mainView.displayLunarCalendar) { |
350 | 171 | dateLabel.text = i18n.tr("%1 %2 %3, %4 - %5") | 187 | dateLabel = ("%1 %2 %3, %4 - %5").arg(lunarStartDate.gzYear).arg(lunarStartDate .IMonthCn).arg(lunarStartDate.IDayCn).arg(startTime).arg(endTime) |
349 | 172 | .arg(lunarStartDate.gzYear).arg(lunarStartDate .IMonthCn).arg(lunarStartDate.IDayCn).arg(startTime).arg(endTime); | ||
351 | 173 | } else { | 188 | } else { |
353 | 174 | dateLabel.text = e.startDateTime.toLocaleDateString(Qt.locale(), Locale.LongFormat) + ", " +startTime + " - " + endTime; | 189 | dateLabel = ("%1, %2 - %3").arg(startDay).arg(startTime).arg(endTime) |
354 | 175 | } | 190 | } |
355 | 176 | } | 191 | } |
356 | 177 | } | 192 | } |
357 | 178 | 193 | ||
358 | 194 | return dateLabel | ||
359 | 195 | } | ||
360 | 196 | |||
361 | 197 | function showEvent(e) { | ||
362 | 179 | if( e.itemType === Type.EventOccurrence ){ | 198 | if( e.itemType === Type.EventOccurrence ){ |
363 | 180 | var requestId = -1; | 199 | var requestId = -1; |
364 | 181 | model.onItemsFetched.connect( function(id,fetchedItems){ | 200 | model.onItemsFetched.connect( function(id,fetchedItems){ |
365 | @@ -187,24 +206,10 @@ | |||
366 | 187 | }); | 206 | }); |
367 | 188 | requestId = model.fetchItems([e.parentId]); | 207 | requestId = model.fetchItems([e.parentId]); |
368 | 189 | } | 208 | } |
369 | 190 | // This is the event title | ||
370 | 191 | if( e.displayLabel) { | ||
371 | 192 | titleLabel.text = e.displayLabel; | ||
372 | 193 | } | ||
373 | 194 | |||
374 | 195 | if( e.description ) { | ||
375 | 196 | descLabel.text = e.description; | ||
376 | 197 | } | ||
377 | 198 | |||
378 | 199 | updateCollection(e); | ||
379 | 200 | 209 | ||
380 | 201 | updateContacts(e); | 210 | updateContacts(e); |
381 | 202 | |||
382 | 203 | updateRecurrence(e); | 211 | updateRecurrence(e); |
383 | 204 | |||
384 | 205 | updateReminder(e); | 212 | updateReminder(e); |
385 | 206 | |||
386 | 207 | updateLocation(e); | ||
387 | 208 | } | 213 | } |
388 | 209 | 214 | ||
389 | 210 | function showEditEventPage(event, model) { | 215 | function showEditEventPage(event, model) { |
390 | @@ -223,37 +228,13 @@ | |||
391 | 223 | }) | 228 | }) |
392 | 224 | } | 229 | } |
393 | 225 | 230 | ||
425 | 226 | Keys.onEscapePressed: { | 231 | RemindersModel { |
426 | 227 | pageStack.pop(); | 232 | id: reminderModel |
427 | 228 | } | 233 | } |
428 | 229 | 234 | ||
429 | 230 | Keys.onPressed: { | 235 | ListModel { |
430 | 231 | if ((event.key === Qt.Key_E) && ( event.modifiers & Qt.ControlModifier)) { | 236 | id: contactModel |
431 | 232 | showEditEventPage(event, model); | 237 | } |
401 | 233 | } | ||
402 | 234 | } | ||
403 | 235 | |||
404 | 236 | head.actions: [ | ||
405 | 237 | Action { | ||
406 | 238 | text: i18n.tr("Edit"); | ||
407 | 239 | objectName: "edit" | ||
408 | 240 | iconName: "edit"; | ||
409 | 241 | onTriggered: { | ||
410 | 242 | if( event.itemType === Type.EventOccurrence ) { | ||
411 | 243 | var dialog = PopupUtils.open(Qt.resolvedUrl("EditEventConfirmationDialog.qml"),root,{"event": event}); | ||
412 | 244 | dialog.editEvent.connect( function(eventId){ | ||
413 | 245 | if( eventId === event.parentId ) { | ||
414 | 246 | showEditEventPage(internal.parentEvent, model) | ||
415 | 247 | } else { | ||
416 | 248 | showEditEventPage(event, model) | ||
417 | 249 | } | ||
418 | 250 | }); | ||
419 | 251 | } else { | ||
420 | 252 | showEditEventPage(event, model) | ||
421 | 253 | } | ||
422 | 254 | } | ||
423 | 255 | } | ||
424 | 256 | ] | ||
432 | 257 | 238 | ||
433 | 258 | EventUtils{ | 239 | EventUtils{ |
434 | 259 | id:eventUtils | 240 | id:eventUtils |
435 | @@ -264,12 +245,6 @@ | |||
436 | 264 | property var parentEvent; | 245 | property var parentEvent; |
437 | 265 | } | 246 | } |
438 | 266 | 247 | ||
439 | 267 | Rectangle { | ||
440 | 268 | id: bg | ||
441 | 269 | color: "white" | ||
442 | 270 | anchors.fill: parent | ||
443 | 271 | } | ||
444 | 272 | |||
445 | 273 | Scrollbar { | 248 | Scrollbar { |
446 | 274 | flickableItem: flicable | 249 | flickableItem: flicable |
447 | 275 | align: Qt.AlignTrailing | 250 | align: Qt.AlignTrailing |
448 | @@ -280,65 +255,53 @@ | |||
449 | 280 | 255 | ||
450 | 281 | clip: interactive | 256 | clip: interactive |
451 | 282 | anchors.fill: parent | 257 | anchors.fill: parent |
452 | 283 | interactive: contentHeight > height | ||
453 | 284 | |||
454 | 285 | contentWidth: parent.width | 258 | contentWidth: parent.width |
456 | 286 | contentHeight: column.height + eventInfo.height + units.gu(3) /*top margin + spacing */ | 259 | contentHeight: column.height + titleContainer.height |
457 | 287 | 260 | ||
458 | 288 | Rectangle{ | 261 | Rectangle{ |
460 | 289 | id: eventInfo | 262 | id: titleContainer |
461 | 290 | 263 | ||
462 | 264 | color: collection.color | ||
463 | 291 | width: parent.width | 265 | width: parent.width |
475 | 292 | height: eventInfoList.height + units.gu(5) | 266 | height: mainEventDetails.height + units.gu(4) |
476 | 293 | 267 | ||
477 | 294 | Column{ | 268 | Column { |
478 | 295 | id:eventInfoList | 269 | id: mainEventDetails |
468 | 296 | |||
469 | 297 | anchors { | ||
470 | 298 | left: parent.left | ||
471 | 299 | right: parent.right | ||
472 | 300 | top: parent.top | ||
473 | 301 | margins: units.gu(2) | ||
474 | 302 | } | ||
479 | 303 | 270 | ||
480 | 304 | spacing: units.gu(0.5) | 271 | spacing: units.gu(0.5) |
518 | 305 | 272 | anchors { verticalCenter: parent.verticalCenter; left: parent.left; right: parent.right; margins: units.gu(2) } | |
519 | 306 | Label{ | 273 | |
520 | 307 | id: titleLabel | 274 | Label { |
521 | 308 | objectName: "titleLabel" | 275 | text: event.displayLabel |
522 | 309 | fontSize: "large" | 276 | color: "White" |
523 | 310 | width: parent.width | 277 | textSize: Label.Large |
524 | 311 | wrapMode: Text.WordWrap | 278 | width: parent.width |
525 | 312 | color: "white" | 279 | wrapMode: Text.wrapMode |
526 | 313 | } | 280 | } |
527 | 314 | 281 | ||
528 | 315 | Label{ | 282 | Label { |
529 | 316 | id: dateLabel | 283 | text: getDate(event) |
530 | 317 | objectName: "dateLabel" | 284 | color: "White" |
531 | 318 | color: "white" | 285 | visible: text != "" |
532 | 319 | fontSize: "medium" | 286 | width: parent.width |
533 | 320 | width: parent.width | 287 | wrapMode: Text.wrapMode |
534 | 321 | wrapMode: Text.WordWrap | 288 | } |
535 | 322 | } | 289 | |
536 | 323 | 290 | Label { | |
537 | 324 | Label{ | 291 | text: event.location |
538 | 325 | id: repeatLabel | 292 | color: "White" |
539 | 326 | objectName: "repeatLabel" | 293 | visible: text != "" |
540 | 327 | color: "white" | 294 | width: parent.width |
541 | 328 | fontSize: "small" | 295 | wrapMode: Text.wrapMode |
542 | 329 | width: parent.width | 296 | } |
543 | 330 | wrapMode: Text.WordWrap | 297 | |
544 | 331 | visible: repeatLabel.text !== "" | 298 | Label { |
545 | 332 | } | 299 | id: recurrenceLabel |
546 | 333 | 300 | textSize: Label.Small | |
547 | 334 | Label{ | 301 | color: "White" |
548 | 335 | id: locationLabel | 302 | visible: text != "" |
549 | 336 | objectName: "locationLabel" | 303 | width: parent.width |
550 | 337 | color: "white" | 304 | wrapMode: Text.wrapMode |
514 | 338 | fontSize: "small" | ||
515 | 339 | width: parent.width | ||
516 | 340 | wrapMode: Text.WordWrap | ||
517 | 341 | visible: locationLabel.text !== "" | ||
551 | 342 | } | 305 | } |
552 | 343 | } | 306 | } |
553 | 344 | } | 307 | } |
554 | @@ -346,90 +309,101 @@ | |||
555 | 346 | Column{ | 309 | Column{ |
556 | 347 | id: column | 310 | id: column |
557 | 348 | 311 | ||
564 | 349 | spacing: units.gu(1) | 312 | width: parent.width |
565 | 350 | anchors{ | 313 | anchors.top: titleContainer.bottom |
566 | 351 | top: eventInfo.bottom | 314 | |
567 | 352 | right: parent.right | 315 | ListItem { |
568 | 353 | left:parent.left | 316 | height: units.gu(6) |
569 | 354 | margins: units.gu(2) | 317 | Row{ |
570 | 318 | id: calendarNameRow | ||
571 | 319 | |||
572 | 320 | spacing: units.gu(1) | ||
573 | 321 | anchors { verticalCenter: parent.verticalCenter; left: parent.left; right: parent.right; margins: units.gu(2) } | ||
574 | 322 | |||
575 | 323 | Label { | ||
576 | 324 | text: i18n.tr("Calendar") | ||
577 | 325 | } | ||
578 | 326 | |||
579 | 327 | UbuntuShape{ | ||
580 | 328 | id: calendarIndicator | ||
581 | 329 | width: parent.height | ||
582 | 330 | height: width | ||
583 | 331 | color: collection.color | ||
584 | 332 | anchors.verticalCenter: parent.verticalCenter | ||
585 | 333 | } | ||
586 | 334 | |||
587 | 335 | Label{ | ||
588 | 336 | id:calendarName | ||
589 | 337 | objectName: "calendarName" | ||
590 | 338 | text: collection.name | ||
591 | 339 | } | ||
592 | 340 | } | ||
593 | 355 | } | 341 | } |
594 | 356 | 342 | ||
596 | 357 | Row{ | 343 | ListView{ |
597 | 344 | model: contactModel | ||
598 | 358 | width: parent.width | 345 | width: parent.width |
605 | 359 | spacing: units.gu(1) | 346 | height: count !== 0 ? (count+1) * units.gu(7): 0 |
606 | 360 | UbuntuShape{ | 347 | interactive: false |
607 | 361 | id: calendarIndicator | 348 | |
608 | 362 | width: parent.height | 349 | section.property: "participationStatus" |
609 | 363 | height: width | 350 | section.labelPositioning: ViewSection.InlineLabels |
610 | 364 | anchors.verticalCenter: parent.verticalCenter | 351 | section.delegate: ListItem { |
611 | 352 | height: headerText.height + divider.height | ||
612 | 353 | ListItemLayout { | ||
613 | 354 | id: headerText | ||
614 | 355 | title.text: { | ||
615 | 356 | if (section === "0") { | ||
616 | 357 | return i18n.tr("Not Attending") | ||
617 | 358 | } | ||
618 | 359 | |||
619 | 360 | else if (section === "1") { | ||
620 | 361 | return i18n.tr("Attending") | ||
621 | 362 | } | ||
622 | 363 | |||
623 | 364 | else if (section === "2") { | ||
624 | 365 | return i18n.tr("No Reply") | ||
625 | 366 | } | ||
626 | 367 | } | ||
627 | 368 | title.font.weight: Font.DemiBold | ||
628 | 369 | } | ||
629 | 365 | } | 370 | } |
634 | 366 | Label{ | 371 | |
635 | 367 | id:calendarName | 372 | delegate: ListItem { |
636 | 368 | objectName: "calendarName" | 373 | height: contactListItemLayout.height + divider.height |
637 | 369 | anchors.verticalCenter: parent.verticalCenter | 374 | ListItemLayout { |
638 | 375 | id: contactListItemLayout | ||
639 | 376 | title.text: name | ||
640 | 377 | } | ||
641 | 370 | } | 378 | } |
642 | 371 | } | 379 | } |
643 | 372 | 380 | ||
645 | 373 | Label{ | 381 | ListItem { |
646 | 374 | id: descLabel | 382 | id: descLabel |
651 | 375 | objectName: "descriptionLabel" | 383 | height: descTitle.height + desc.implicitHeight + divider.height + units.gu(4) |
652 | 376 | visible: text != "" | 384 | visible: desc.text !== "" |
653 | 377 | width: parent.width | 385 | |
654 | 378 | wrapMode: Text.WordWrap | 386 | Label { |
655 | 387 | id: descTitle | ||
656 | 388 | text: i18n.tr("Description") | ||
657 | 389 | anchors { left: parent.left; right: parent.right; top: parent.top; margins: units.gu(2); topMargin: units.gu(1.5) } | ||
658 | 390 | } | ||
659 | 391 | |||
660 | 392 | Label { | ||
661 | 393 | id: desc | ||
662 | 394 | text: event.description | ||
663 | 395 | textSize: Label.Small | ||
664 | 396 | color: UbuntuColors.graphite | ||
665 | 397 | wrapMode: Text.WordWrap | ||
666 | 398 | anchors { left: parent.left; right: parent.right; top: descTitle.bottom; margins: units.gu(2); topMargin: units.gu(0.5) } | ||
667 | 399 | } | ||
668 | 379 | } | 400 | } |
669 | 380 | 401 | ||
722 | 381 | Column { | 402 | ListItem { |
723 | 382 | anchors{ | 403 | height: reminderLayout.height + divider.height |
724 | 383 | right: parent.right | 404 | ListItemLayout { |
725 | 384 | left:parent.left | 405 | id: reminderLayout |
726 | 385 | margins: units.gu(-2) | 406 | title.text: i18n.tr("Reminder") |
675 | 386 | } | ||
676 | 387 | |||
677 | 388 | ListItem.Header { | ||
678 | 389 | text: i18n.tr("Guests") | ||
679 | 390 | visible: contactModel.count !== 0 | ||
680 | 391 | } | ||
681 | 392 | |||
682 | 393 | //Guest Entery Model starts | ||
683 | 394 | Column{ | ||
684 | 395 | id: contactList | ||
685 | 396 | objectName: 'contactList' | ||
686 | 397 | |||
687 | 398 | anchors { | ||
688 | 399 | left: parent.left | ||
689 | 400 | right: parent.right | ||
690 | 401 | } | ||
691 | 402 | |||
692 | 403 | ListModel { | ||
693 | 404 | id: contactModel | ||
694 | 405 | } | ||
695 | 406 | |||
696 | 407 | Repeater{ | ||
697 | 408 | model: contactModel | ||
698 | 409 | delegate: ListItem.Standard { | ||
699 | 410 | Label { | ||
700 | 411 | text: name | ||
701 | 412 | objectName: "eventGuest%1".arg(index) | ||
702 | 413 | color: UbuntuColors.midAubergine | ||
703 | 414 | anchors { | ||
704 | 415 | left: parent.left | ||
705 | 416 | leftMargin: units.gu(2) | ||
706 | 417 | verticalCenter: parent.verticalCenter | ||
707 | 418 | } | ||
708 | 419 | } | ||
709 | 420 | |||
710 | 421 | control: CheckBox { | ||
711 | 422 | enabled: false | ||
712 | 423 | checked: participationStatus | ||
713 | 424 | } | ||
714 | 425 | } | ||
715 | 426 | } | ||
716 | 427 | } | ||
717 | 428 | //Guest Entries ends | ||
718 | 429 | |||
719 | 430 | ListItem.Subtitled { | ||
720 | 431 | id: reminderHeader | ||
721 | 432 | text: i18n.tr("Reminder") | ||
727 | 433 | } | 407 | } |
728 | 434 | } | 408 | } |
729 | 435 | } | 409 | } |
730 | 436 | 410 | ||
731 | === modified file 'HeaderDateComponent.qml' | |||
732 | --- HeaderDateComponent.qml 2016-03-02 19:55:52 +0000 | |||
733 | +++ HeaderDateComponent.qml 2016-03-16 16:44:44 +0000 | |||
734 | @@ -87,7 +87,7 @@ | |||
735 | 87 | var lunarDate = Lunar.calendar.solar2lunar(date.getFullYear(), | 87 | var lunarDate = Lunar.calendar.solar2lunar(date.getFullYear(), |
736 | 88 | date.getMonth() + 1, | 88 | date.getMonth() + 1, |
737 | 89 | date.getDate()) | 89 | date.getDate()) |
739 | 90 | return i18n.tr("%1 %2 %3").arg(lunarDate.IDayCn).arg(lunarDate.gzDay).arg(lunarDate.isTerm ? lunarDate.Term : "") | 90 | return ("%1 %2 %3").arg(lunarDate.IDayCn).arg(lunarDate.gzDay).arg(lunarDate.isTerm ? lunarDate.Term : "") |
740 | 91 | } else { | 91 | } else { |
741 | 92 | return date.getDate(); | 92 | return date.getDate(); |
742 | 93 | } | 93 | } |
743 | 94 | 94 | ||
744 | === modified file 'MonthComponent.qml' | |||
745 | --- MonthComponent.qml 2016-03-02 19:55:52 +0000 | |||
746 | +++ MonthComponent.qml 2016-03-16 16:44:44 +0000 | |||
747 | @@ -312,6 +312,8 @@ | |||
748 | 312 | id: weekNumLabel; | 312 | id: weekNumLabel; |
749 | 313 | objectName: "weekNumLabel"; | 313 | objectName: "weekNumLabel"; |
750 | 314 | width: parent.width; | 314 | width: parent.width; |
751 | 315 | // TRANSLATORS: This is shown in the month view as "Wk" as a title | ||
752 | 316 | // to indicate the week numbers. It should be a max of up to 3 characters. | ||
753 | 315 | text: i18n.tr("Wk"); | 317 | text: i18n.tr("Wk"); |
754 | 316 | horizontalAlignment: Text.AlignHCenter; | 318 | horizontalAlignment: Text.AlignHCenter; |
755 | 317 | verticalAlignment: Text.AlignVCenter; | 319 | verticalAlignment: Text.AlignVCenter; |
756 | 318 | 320 | ||
757 | === modified file 'po/com.ubuntu.calendar.pot' | |||
758 | --- po/com.ubuntu.calendar.pot 2016-03-03 22:32:56 +0000 | |||
759 | +++ po/com.ubuntu.calendar.pot 2016-03-16 16:44:44 +0000 | |||
760 | @@ -8,7 +8,7 @@ | |||
761 | 8 | msgstr "" | 8 | msgstr "" |
762 | 9 | "Project-Id-Version: \n" | 9 | "Project-Id-Version: \n" |
763 | 10 | "Report-Msgid-Bugs-To: \n" | 10 | "Report-Msgid-Bugs-To: \n" |
765 | 11 | "POT-Creation-Date: 2016-03-04 04:02+0530\n" | 11 | "POT-Creation-Date: 2016-03-16 22:10+0530\n" |
766 | 12 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" | 12 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" |
767 | 13 | "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" | 13 | "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" |
768 | 14 | "Language-Team: LANGUAGE <LL@li.org>\n" | 14 | "Language-Team: LANGUAGE <LL@li.org>\n" |
769 | @@ -18,7 +18,7 @@ | |||
770 | 18 | "Content-Transfer-Encoding: 8bit\n" | 18 | "Content-Transfer-Encoding: 8bit\n" |
771 | 19 | "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" | 19 | "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" |
772 | 20 | 20 | ||
774 | 21 | #: ../AgendaView.qml:50 ../calendar.qml:292 ../calendar.qml:518 | 21 | #: ../AgendaView.qml:50 ../calendar.qml:321 ../calendar.qml:547 |
775 | 22 | msgid "Agenda" | 22 | msgid "Agenda" |
776 | 23 | msgstr "" | 23 | msgstr "" |
777 | 24 | 24 | ||
778 | @@ -34,11 +34,6 @@ | |||
779 | 34 | msgid "Enable calendars" | 34 | msgid "Enable calendars" |
780 | 35 | msgstr "" | 35 | msgstr "" |
781 | 36 | 36 | ||
782 | 37 | #: ../AgendaView.qml:164 | ||
783 | 38 | #, qt-format | ||
784 | 39 | msgid "%1 %2 %3 %4 %5" | ||
785 | 40 | msgstr "" | ||
786 | 41 | |||
787 | 42 | #: ../AgendaView.qml:191 | 37 | #: ../AgendaView.qml:191 |
788 | 43 | msgid "no event name set" | 38 | msgid "no event name set" |
789 | 44 | msgstr "" | 39 | msgstr "" |
790 | @@ -51,24 +46,24 @@ | |||
791 | 51 | msgid "New event" | 46 | msgid "New event" |
792 | 52 | msgstr "" | 47 | msgstr "" |
793 | 53 | 48 | ||
799 | 54 | #. TRANSLATORS: the first parameter refers to the number of all-day events | 49 | #. TRANSLATORS: Please keep the translation of this string to a max of |
800 | 55 | #. on a given day. "Ev." is short form for "Events". | 50 | #. 5 characters as the week view where it is shown has limited space. |
801 | 56 | #. Please keep the translation of "Ev." to 3 characters only, as the week view | 51 | #: ../AllDayEventComponent.qml:148 |
797 | 57 | #. where it's shown has limited space | ||
798 | 58 | #: ../AllDayEventComponent.qml:150 | ||
802 | 59 | #, qt-format | 52 | #, qt-format |
805 | 60 | msgid "%1 ev." | 53 | msgid "%1 event" |
806 | 61 | msgstr "" | 54 | msgid_plural "%1 events" |
807 | 55 | msgstr[0] "" | ||
808 | 56 | msgstr[1] "" | ||
809 | 62 | 57 | ||
810 | 63 | #. TRANSLATORS: the argument refers to the number of all day events | 58 | #. TRANSLATORS: the argument refers to the number of all day events |
812 | 64 | #: ../AllDayEventComponent.qml:154 | 59 | #: ../AllDayEventComponent.qml:152 |
813 | 65 | #, qt-format | 60 | #, qt-format |
814 | 66 | msgid "%1 all day event" | 61 | msgid "%1 all day event" |
815 | 67 | msgid_plural "%1 all day events" | 62 | msgid_plural "%1 all day events" |
816 | 68 | msgstr[0] "" | 63 | msgstr[0] "" |
817 | 69 | msgstr[1] "" | 64 | msgstr[1] "" |
818 | 70 | 65 | ||
820 | 71 | #: ../CalendarChoicePopup.qml:34 ../EventActions.qml:51 | 66 | #: ../CalendarChoicePopup.qml:34 ../EventActions.qml:52 |
821 | 72 | msgid "Calendars" | 67 | msgid "Calendars" |
822 | 73 | msgstr "" | 68 | msgstr "" |
823 | 74 | 69 | ||
824 | @@ -78,11 +73,11 @@ | |||
825 | 78 | 73 | ||
826 | 79 | #. TRANSLATORS: Please translate this string to 15 characters only. | 74 | #. TRANSLATORS: Please translate this string to 15 characters only. |
827 | 80 | #. Currently ,there is no way we can increase width of action menu currently. | 75 | #. Currently ,there is no way we can increase width of action menu currently. |
829 | 81 | #: ../CalendarChoicePopup.qml:48 ../EventActions.qml:36 | 76 | #: ../CalendarChoicePopup.qml:48 ../EventActions.qml:37 |
830 | 82 | msgid "Sync" | 77 | msgid "Sync" |
831 | 83 | msgstr "" | 78 | msgstr "" |
832 | 84 | 79 | ||
834 | 85 | #: ../CalendarChoicePopup.qml:48 ../EventActions.qml:36 | 80 | #: ../CalendarChoicePopup.qml:48 ../EventActions.qml:37 |
835 | 86 | msgid "Syncing" | 81 | msgid "Syncing" |
836 | 87 | msgstr "" | 82 | msgstr "" |
837 | 88 | 83 | ||
838 | @@ -95,7 +90,7 @@ | |||
839 | 95 | msgstr "" | 90 | msgstr "" |
840 | 96 | 91 | ||
841 | 97 | #: ../ColorPickerDialog.qml:55 ../DeleteConfirmationDialog.qml:60 | 92 | #: ../ColorPickerDialog.qml:55 ../DeleteConfirmationDialog.qml:60 |
843 | 98 | #: ../EditEventConfirmationDialog.qml:53 ../NewEvent.qml:340 | 93 | #: ../EditEventConfirmationDialog.qml:53 ../NewEvent.qml:343 |
844 | 99 | msgid "Cancel" | 94 | msgid "Cancel" |
845 | 100 | msgstr "" | 95 | msgstr "" |
846 | 101 | 96 | ||
847 | @@ -107,23 +102,17 @@ | |||
848 | 107 | msgid "Search contact" | 102 | msgid "Search contact" |
849 | 108 | msgstr "" | 103 | msgstr "" |
850 | 109 | 104 | ||
852 | 110 | #: ../DayView.qml:71 ../MonthView.qml:50 ../WeekView.qml:54 ../YearView.qml:57 | 105 | #: ../DayView.qml:72 ../MonthView.qml:50 ../WeekView.qml:55 ../YearView.qml:57 |
853 | 111 | msgid "Today" | 106 | msgid "Today" |
854 | 112 | msgstr "" | 107 | msgstr "" |
855 | 113 | 108 | ||
856 | 114 | #. TRANSLATORS: this is a time formatting string, | 109 | #. TRANSLATORS: this is a time formatting string, |
857 | 115 | #. see http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions. | 110 | #. see http://qt-project.org/doc/qt-5/qml-qtqml-date.html#details for valid expressions. |
858 | 116 | #. It's used in the header of the month and week views | 111 | #. It's used in the header of the month and week views |
861 | 117 | #: ../DayView.qml:115 ../DayView.qml:203 ../MonthView.qml:78 | 112 | #: ../DayView.qml:122 ../MonthView.qml:78 ../WeekView.qml:144 |
860 | 118 | #: ../WeekView.qml:137 ../WeekView.qml:256 | ||
862 | 119 | msgid "MMMM yyyy" | 113 | msgid "MMMM yyyy" |
863 | 120 | msgstr "" | 114 | msgstr "" |
864 | 121 | 115 | ||
865 | 122 | #: ../DayView.qml:201 ../MonthView.qml:73 ../WeekView.qml:254 | ||
866 | 123 | #, qt-format | ||
867 | 124 | msgid "%1 %2" | ||
868 | 125 | msgstr "" | ||
869 | 126 | |||
870 | 127 | #: ../DeleteConfirmationDialog.qml:31 | 116 | #: ../DeleteConfirmationDialog.qml:31 |
871 | 128 | msgid "Delete Recurring Event" | 117 | msgid "Delete Recurring Event" |
872 | 129 | msgstr "" | 118 | msgstr "" |
873 | @@ -151,11 +140,11 @@ | |||
874 | 151 | msgid "Delete this" | 140 | msgid "Delete this" |
875 | 152 | msgstr "" | 141 | msgstr "" |
876 | 153 | 142 | ||
878 | 154 | #: ../DeleteConfirmationDialog.qml:51 ../NewEvent.qml:347 | 143 | #: ../DeleteConfirmationDialog.qml:51 ../NewEvent.qml:350 |
879 | 155 | msgid "Delete" | 144 | msgid "Delete" |
880 | 156 | msgstr "" | 145 | msgstr "" |
881 | 157 | 146 | ||
883 | 158 | #: ../EditEventConfirmationDialog.qml:29 ../NewEvent.qml:335 | 147 | #: ../EditEventConfirmationDialog.qml:29 ../NewEvent.qml:338 |
884 | 159 | msgid "Edit Event" | 148 | msgid "Edit Event" |
885 | 160 | msgstr "" | 149 | msgstr "" |
886 | 161 | 150 | ||
887 | @@ -173,73 +162,51 @@ | |||
888 | 173 | msgid "Edit this" | 162 | msgid "Edit this" |
889 | 174 | msgstr "" | 163 | msgstr "" |
890 | 175 | 164 | ||
892 | 176 | #: ../EventActions.qml:63 ../Settings.qml:29 | 165 | #: ../EventActions.qml:64 ../Settings.qml:29 |
893 | 177 | msgid "Settings" | 166 | msgid "Settings" |
894 | 178 | msgstr "" | 167 | msgstr "" |
895 | 179 | 168 | ||
896 | 180 | #. TRANSLATORS: the first argument (%1) refers to a start time for an event, | 169 | #. TRANSLATORS: the first argument (%1) refers to a start time for an event, |
897 | 181 | #. while the second one (%2) refers to the end time | 170 | #. while the second one (%2) refers to the end time |
899 | 182 | #: ../EventBubble.qml:97 | 171 | #: ../EventBubble.qml:100 |
900 | 183 | #, qt-format | 172 | #, qt-format |
901 | 184 | msgid "%1 - %2" | 173 | msgid "%1 - %2" |
902 | 185 | msgstr "" | 174 | msgstr "" |
903 | 186 | 175 | ||
912 | 187 | #. TRANSLATORS: the first argument (%1) refers to a time for an event, | 176 | #: ../EventDetails.qml:37 ../NewEvent.qml:486 |
905 | 188 | #. while the second one (%2) refers to title of event | ||
906 | 189 | #: ../EventBubble.qml:108 ../EventBubble.qml:113 | ||
907 | 190 | #, qt-format | ||
908 | 191 | msgid "%1 <b>%2</b>" | ||
909 | 192 | msgstr "" | ||
910 | 193 | |||
911 | 194 | #: ../EventDetails.qml:44 ../NewEvent.qml:483 | ||
913 | 195 | msgid "Event Details" | 177 | msgid "Event Details" |
914 | 196 | msgstr "" | 178 | msgstr "" |
915 | 197 | 179 | ||
953 | 198 | #. TRANSLATORS: the first parameter refers to the name of event calendar. | 180 | #: ../EventDetails.qml:40 |
917 | 199 | #: ../EventDetails.qml:69 | ||
918 | 200 | #, qt-format | ||
919 | 201 | msgid "%1 Calendar" | ||
920 | 202 | msgstr "" | ||
921 | 203 | |||
922 | 204 | #: ../EventDetails.qml:143 | ||
923 | 205 | #, qt-format | ||
924 | 206 | msgid "%1 %2 %3 - %4 %5 %6 (All Day)" | ||
925 | 207 | msgstr "" | ||
926 | 208 | |||
927 | 209 | #: ../EventDetails.qml:147 | ||
928 | 210 | #, qt-format | ||
929 | 211 | msgid "%1 - %2 (All Day)" | ||
930 | 212 | msgstr "" | ||
931 | 213 | |||
932 | 214 | #: ../EventDetails.qml:153 | ||
933 | 215 | #, qt-format | ||
934 | 216 | msgid "%1 %2 %3 (All Day)" | ||
935 | 217 | msgstr "" | ||
936 | 218 | |||
937 | 219 | #: ../EventDetails.qml:156 | ||
938 | 220 | #, qt-format | ||
939 | 221 | msgid "%1 (All Day)" | ||
940 | 222 | msgstr "" | ||
941 | 223 | |||
942 | 224 | #: ../EventDetails.qml:162 | ||
943 | 225 | #, qt-format | ||
944 | 226 | msgid "%1 %2 %3, %4 - %5 %6 %7, %8" | ||
945 | 227 | msgstr "" | ||
946 | 228 | |||
947 | 229 | #: ../EventDetails.qml:171 | ||
948 | 230 | #, qt-format | ||
949 | 231 | msgid "%1 %2 %3, %4 - %5" | ||
950 | 232 | msgstr "" | ||
951 | 233 | |||
952 | 234 | #: ../EventDetails.qml:238 | ||
954 | 235 | msgid "Edit" | 181 | msgid "Edit" |
955 | 236 | msgstr "" | 182 | msgstr "" |
956 | 237 | 183 | ||
962 | 238 | #: ../EventDetails.qml:389 ../NewEvent.qml:589 | 184 | #: ../EventDetails.qml:145 ../TimeLineHeader.qml:66 |
963 | 239 | msgid "Guests" | 185 | msgid "All Day" |
964 | 240 | msgstr "" | 186 | msgstr "" |
965 | 241 | 187 | ||
966 | 242 | #: ../EventDetails.qml:432 ../EventReminder.qml:35 ../NewEvent.qml:701 | 188 | #: ../EventDetails.qml:324 ../NewEvent.qml:552 |
967 | 189 | #: com.ubuntu.calendar_calendar.desktop.in.in.h:1 | ||
968 | 190 | msgid "Calendar" | ||
969 | 191 | msgstr "" | ||
970 | 192 | |||
971 | 193 | #: ../EventDetails.qml:357 | ||
972 | 194 | msgid "Not Attending" | ||
973 | 195 | msgstr "" | ||
974 | 196 | |||
975 | 197 | #: ../EventDetails.qml:361 | ||
976 | 198 | msgid "Attending" | ||
977 | 199 | msgstr "" | ||
978 | 200 | |||
979 | 201 | #: ../EventDetails.qml:365 | ||
980 | 202 | msgid "No Reply" | ||
981 | 203 | msgstr "" | ||
982 | 204 | |||
983 | 205 | #: ../EventDetails.qml:388 ../NewEvent.qml:518 | ||
984 | 206 | msgid "Description" | ||
985 | 207 | msgstr "" | ||
986 | 208 | |||
987 | 209 | #: ../EventDetails.qml:406 ../EventReminder.qml:35 ../NewEvent.qml:710 | ||
988 | 243 | msgid "Reminder" | 210 | msgid "Reminder" |
989 | 244 | msgstr "" | 211 | msgstr "" |
990 | 245 | 212 | ||
991 | @@ -262,7 +229,7 @@ | |||
992 | 262 | #. TRANSLATORS: this refers to how often a recurrent event repeats | 229 | #. TRANSLATORS: this refers to how often a recurrent event repeats |
993 | 263 | #. and it is shown as the header of the option selector to choose | 230 | #. and it is shown as the header of the option selector to choose |
994 | 264 | #. its repetition | 231 | #. its repetition |
996 | 265 | #: ../EventRepetition.qml:242 ../NewEvent.qml:685 | 232 | #: ../EventRepetition.qml:242 ../NewEvent.qml:688 |
997 | 266 | msgid "Repeats" | 233 | msgid "Repeats" |
998 | 267 | msgstr "" | 234 | msgstr "" |
999 | 268 | 235 | ||
1000 | @@ -293,11 +260,6 @@ | |||
1001 | 293 | msgid "Weekly on %1" | 260 | msgid "Weekly on %1" |
1002 | 294 | msgstr "" | 261 | msgstr "" |
1003 | 295 | 262 | ||
1004 | 296 | #: ../HeaderDateComponent.qml:90 | ||
1005 | 297 | #, qt-format | ||
1006 | 298 | msgid "%1 %2 %3" | ||
1007 | 299 | msgstr "" | ||
1008 | 300 | |||
1009 | 301 | #: ../LimitLabelModel.qml:25 | 263 | #: ../LimitLabelModel.qml:25 |
1010 | 302 | msgid "Never" | 264 | msgid "Never" |
1011 | 303 | msgstr "" | 265 | msgstr "" |
1012 | @@ -310,59 +272,62 @@ | |||
1013 | 310 | msgid "After Date" | 272 | msgid "After Date" |
1014 | 311 | msgstr "" | 273 | msgstr "" |
1015 | 312 | 274 | ||
1017 | 313 | #: ../MonthComponent.qml:315 | 275 | #. TRANSLATORS: This is shown in the month view as "Wk" as a title |
1018 | 276 | #. to indicate the week numbers. It should be a max of up to 3 characters. | ||
1019 | 277 | #: ../MonthComponent.qml:317 | ||
1020 | 314 | msgid "Wk" | 278 | msgid "Wk" |
1021 | 315 | msgstr "" | 279 | msgstr "" |
1022 | 316 | 280 | ||
1024 | 317 | #: ../NewEvent.qml:171 | 281 | #: ../MonthView.qml:73 ../WeekView.qml:131 |
1025 | 282 | #, qt-format | ||
1026 | 283 | msgid "%1 %2" | ||
1027 | 284 | msgstr "" | ||
1028 | 285 | |||
1029 | 286 | #: ../NewEvent.qml:174 | ||
1030 | 318 | msgid "End time can't be before start time" | 287 | msgid "End time can't be before start time" |
1031 | 319 | msgstr "" | 288 | msgstr "" |
1032 | 320 | 289 | ||
1034 | 321 | #: ../NewEvent.qml:335 ../NewEventBottomEdge.qml:52 | 290 | #: ../NewEvent.qml:338 ../NewEventBottomEdge.qml:52 |
1035 | 322 | msgid "New Event" | 291 | msgid "New Event" |
1036 | 323 | msgstr "" | 292 | msgstr "" |
1037 | 324 | 293 | ||
1039 | 325 | #: ../NewEvent.qml:364 | 294 | #: ../NewEvent.qml:367 |
1040 | 326 | msgid "Save" | 295 | msgid "Save" |
1041 | 327 | msgstr "" | 296 | msgstr "" |
1042 | 328 | 297 | ||
1044 | 329 | #: ../NewEvent.qml:375 | 298 | #: ../NewEvent.qml:378 |
1045 | 330 | msgid "Error" | 299 | msgid "Error" |
1046 | 331 | msgstr "" | 300 | msgstr "" |
1047 | 332 | 301 | ||
1049 | 333 | #: ../NewEvent.qml:377 | 302 | #: ../NewEvent.qml:380 |
1050 | 334 | msgid "OK" | 303 | msgid "OK" |
1051 | 335 | msgstr "" | 304 | msgstr "" |
1052 | 336 | 305 | ||
1054 | 337 | #: ../NewEvent.qml:437 | 306 | #: ../NewEvent.qml:440 |
1055 | 338 | msgid "From" | 307 | msgid "From" |
1056 | 339 | msgstr "" | 308 | msgstr "" |
1057 | 340 | 309 | ||
1059 | 341 | #: ../NewEvent.qml:450 | 310 | #: ../NewEvent.qml:453 |
1060 | 342 | msgid "To" | 311 | msgid "To" |
1061 | 343 | msgstr "" | 312 | msgstr "" |
1062 | 344 | 313 | ||
1064 | 345 | #: ../NewEvent.qml:467 | 314 | #: ../NewEvent.qml:470 |
1065 | 346 | msgid "All day event" | 315 | msgid "All day event" |
1066 | 347 | msgstr "" | 316 | msgstr "" |
1067 | 348 | 317 | ||
1069 | 349 | #: ../NewEvent.qml:497 | 318 | #: ../NewEvent.qml:500 |
1070 | 350 | msgid "Event Name" | 319 | msgid "Event Name" |
1071 | 351 | msgstr "" | 320 | msgstr "" |
1072 | 352 | 321 | ||
1078 | 353 | #: ../NewEvent.qml:515 | 322 | #: ../NewEvent.qml:537 |
1074 | 354 | msgid "Description" | ||
1075 | 355 | msgstr "" | ||
1076 | 356 | |||
1077 | 357 | #: ../NewEvent.qml:534 | ||
1079 | 358 | msgid "Location" | 323 | msgid "Location" |
1080 | 359 | msgstr "" | 324 | msgstr "" |
1081 | 360 | 325 | ||
1084 | 361 | #: ../NewEvent.qml:549 com.ubuntu.calendar_calendar.desktop.in.in.h:1 | 326 | #: ../NewEvent.qml:592 |
1085 | 362 | msgid "Calendar" | 327 | msgid "Guests" |
1086 | 363 | msgstr "" | 328 | msgstr "" |
1087 | 364 | 329 | ||
1089 | 365 | #: ../NewEvent.qml:598 | 330 | #: ../NewEvent.qml:601 |
1090 | 366 | msgid "Add Guest" | 331 | msgid "Add Guest" |
1091 | 367 | msgstr "" | 332 | msgstr "" |
1092 | 368 | 333 | ||
1093 | @@ -463,11 +428,7 @@ | |||
1094 | 463 | msgid "W%1" | 428 | msgid "W%1" |
1095 | 464 | msgstr "" | 429 | msgstr "" |
1096 | 465 | 430 | ||
1102 | 466 | #: ../TimeLineHeader.qml:66 | 431 | #: ../WeekView.qml:138 ../WeekView.qml:139 |
1098 | 467 | msgid "All Day" | ||
1099 | 468 | msgstr "" | ||
1100 | 469 | |||
1101 | 470 | #: ../WeekView.qml:131 ../WeekView.qml:132 | ||
1103 | 471 | msgid "MMM" | 432 | msgid "MMM" |
1104 | 472 | msgstr "" | 433 | msgstr "" |
1105 | 473 | 434 | ||
1106 | @@ -476,26 +437,26 @@ | |||
1107 | 476 | msgid "Year %1" | 437 | msgid "Year %1" |
1108 | 477 | msgstr "" | 438 | msgstr "" |
1109 | 478 | 439 | ||
1111 | 479 | #: ../calendar.qml:46 | 440 | #: ../calendar.qml:48 |
1112 | 480 | msgid "" | 441 | msgid "" |
1113 | 481 | "Calendar app accept four arguments: --starttime, --endtime, --newevent and --" | 442 | "Calendar app accept four arguments: --starttime, --endtime, --newevent and --" |
1114 | 482 | "eventid. They will be managed by system. See the source for a full comment " | 443 | "eventid. They will be managed by system. See the source for a full comment " |
1115 | 483 | "about them" | 444 | "about them" |
1116 | 484 | msgstr "" | 445 | msgstr "" |
1117 | 485 | 446 | ||
1119 | 486 | #: ../calendar.qml:260 ../calendar.qml:434 | 447 | #: ../calendar.qml:289 ../calendar.qml:463 |
1120 | 487 | msgid "Year" | 448 | msgid "Year" |
1121 | 488 | msgstr "" | 449 | msgstr "" |
1122 | 489 | 450 | ||
1124 | 490 | #: ../calendar.qml:268 ../calendar.qml:455 | 451 | #: ../calendar.qml:297 ../calendar.qml:484 |
1125 | 491 | msgid "Month" | 452 | msgid "Month" |
1126 | 492 | msgstr "" | 453 | msgstr "" |
1127 | 493 | 454 | ||
1129 | 494 | #: ../calendar.qml:276 ../calendar.qml:476 | 455 | #: ../calendar.qml:305 ../calendar.qml:505 |
1130 | 495 | msgid "Week" | 456 | msgid "Week" |
1131 | 496 | msgstr "" | 457 | msgstr "" |
1132 | 497 | 458 | ||
1134 | 498 | #: ../calendar.qml:284 ../calendar.qml:497 | 459 | #: ../calendar.qml:313 ../calendar.qml:526 |
1135 | 499 | msgid "Day" | 460 | msgid "Day" |
1136 | 500 | msgstr "" | 461 | msgstr "" |
1137 | 501 | 462 |
PASSED: Continuous integration, rev:783 /core-apps- jenkins. ubuntu. com/job/ calendar- app-ci/ 785/ /core-apps- jenkins. ubuntu. com/job/ generic- update- mp/726/ console
https:/
Executed test runs:
None: https:/
Click here to trigger a rebuild: /core-apps- jenkins. ubuntu. com/job/ calendar- app-ci/ 785/rebuild
https:/