Gary.Wang has proposed merging lp:~gary-wzl77/ubuntu-calendar-app/fix_1440583 
into lp:ubuntu-calendar-app.

Commit message:
Remove recurrence rule for non-repeating event.

Requested reviews:
  Alan Pope  (popey)
Related bugs:
  Bug #1440583 in Ubuntu Calendar App: "calendar-app is generating invalid 
RECUR values in RRULE property"
  https://bugs.launchpad.net/ubuntu-calendar-app/+bug/1440583

For more details, see:
https://code.launchpad.net/~gary-wzl77/ubuntu-calendar-app/fix_1440583/+merge/264487

Remove recurrence rule for non-repeating event.
-- 
Your team Ubuntu Calendar Developers is subscribed to branch 
lp:ubuntu-calendar-app.
=== modified file 'EventDetails.qml'
--- EventDetails.qml	2015-06-27 17:52:44 +0000
+++ EventDetails.qml	2015-07-12 03:29:02 +0000
@@ -72,6 +72,9 @@
             if(event.recurrence.recurrenceRules[0] !== undefined){
                 var rule =  event.recurrence.recurrenceRules[0];
                 repeatLabel.text = eventUtils.getRecurrenceString(rule)
+            } else {
+                //For event occurs once, event.recurrence.recurrenceRules == []
+                repeatLabel.text = Defines.recurrenceLabel[0];
             }
         }
     }

=== modified file 'EventRepetition.qml'
--- EventRepetition.qml	2015-04-05 09:46:59 +0000
+++ EventRepetition.qml	2015-07-12 03:29:02 +0000
@@ -29,8 +29,7 @@
     id: repetition
 
     property var weekDays : [];
-    property var rule
-    property var date
+    property var eventRoot;
     property var isEdit
 
     visible: false
@@ -51,6 +50,7 @@
     Component.onCompleted: {
         //Fill Date & limitcount if any
         var index = 0;
+        var rule = eventRoot.rule;
         if(rule !== null && rule !== undefined){
             index =  rule.frequency ;
             if(index > 0 )
@@ -87,7 +87,6 @@
                     index = Recurrence.Yearly
                     break;
                 }
-
             }
         }
         recurrenceOption.selectedIndex = index;
@@ -98,7 +97,13 @@
         iconName: "back"
         onTriggered: {
             var recurrenceRule = Defines.recurrenceValue[ recurrenceOption.selectedIndex ];
+
             if (recurrenceRule !== RecurrenceRule.Invalid) {
+                if (eventRoot.rule === null || eventRoot.rule === undefined ){
+                    eventRoot.rule = Qt.createQmlObject("import QtOrganizer 5.0; RecurrenceRule {}", eventRoot.event.recurrence,"EventRepetition.qml");
+                }
+
+                var rule = eventRoot.rule;
                 rule.frequency = recurrenceRule;
                 switch(recurrenceOption.selectedIndex){
                 case 1: //daily
@@ -109,11 +114,11 @@
                     rule.daysOfWeek = eventUtils.getDaysOfWeek(recurrenceOption.selectedIndex, weekDays );
                     break;
                 case 6: //monthly
-                    rule.daysOfMonth = [date.getDate()];
+                    rule.daysOfMonth = [eventRoot.date.getDate()];
                     break;
                 case 7: //yearly
-                    rule.monthsOfYear = [date.getMonth()];
-                    rule.daysOfMonth = [date.getDate()];
+                    rule.monthsOfYear = [eventRoot.date.getMonth()];
+                    rule.daysOfMonth = [eventRoot.date.getDate()];
                     break;
                 case 0: //once
                 default:
@@ -134,7 +139,7 @@
                 }
             }
             else {
-                rule.frequency = 0
+                eventRoot.rule = null;
             }
             pop()
         }
@@ -202,7 +207,7 @@
                                 (checked) ? weekDays.push(index) : weekDays.splice(weekDays.indexOf(index),1);
                         }
                         checked:{
-                            (weekDays.length === 0 && index === date.getDay() && isEdit === false) ? true : false;
+                            (weekDays.length === 0 && index === eventRoot.date.getDay() && isEdit === false) ? true : false;
                         }
 
                     }

=== modified file 'MonthComponent.qml'
--- MonthComponent.qml	2015-06-11 14:07:51 +0000
+++ MonthComponent.qml	2015-07-12 03:29:02 +0000
@@ -30,6 +30,7 @@
 
     property var currentMonth;
     property var isYearView;
+    property bool showWeekNumber:true;
 
     property string dayLabelFontSize: "medium"
     property string dateLabelFontSize: "large"
@@ -123,7 +124,10 @@
         id: column
 
         anchors {
-            fill: parent
+            left: weekNumLoader.right;
+            right: parent.right;
+            top: parent.top;
+            bottom: parent.bottom;
             topMargin: units.gu(1.5)
             bottomMargin: units.gu(1)
         }
@@ -191,6 +195,60 @@
         }
     }
 
+    Loader {
+        id: weekNumLoader;
+        anchors.left: parent.left;
+        width: showWeekNumber ? parent.width / 8:0;
+        height: parent.height;
+        visible: showWeekNumber;
+        sourceComponent: showWeekNumber ? weekNumComp : undefined;
+    }
+
+    Component {
+        id: weekNumComp
+
+        Column {
+            id: weekNumColumn;
+
+            anchors {
+                fill: parent
+                topMargin: monthGrid.y + units.gu(1.5)
+                bottomMargin: units.gu(1)
+            }
+
+            Repeater {
+                id: weekNumrepeater;
+                model: 6;
+
+                Label{
+                    id: weekNum
+                    objectName: "weekNum" + index
+                    width: height;
+                    height: weekNumColumn.height / 6;
+                    text: isYearView ? i18n.tr("W") + intern.monthStart.addDays(index * 7).weekNumber(Qt.locale().firstDayOfWeek) :
+                                       i18n.tr("Wk") + intern.monthStart.addDays(index * 7).weekNumber(Qt.locale().firstDayOfWeek)
+                    horizontalAlignment: Text.AlignLeft;
+                    verticalAlignment: Text.AlignVCenter;
+                    font.pixelSize: intern.dayFontSize - 3;
+                    font.bold: true
+                    color: "black"
+
+                    MouseArea {
+                        anchors.fill: parent
+                        onClicked: {
+                            var selectedDate = new Date(intern.monthStart.addDays(index * 7))
+                            if( isYearView ) {
+                                root.monthSelected(selectedDate);
+                            } else {
+                                root.dateSelected(selectedDate);
+                            }
+                        }
+                    }
+                }
+            }
+        }
+    }
+
     Component{
         id: defaultDateLabelComponent
         MonthComponentDateDelegate{

=== modified file 'NewEvent.qml'
--- NewEvent.qml	2015-06-27 17:52:44 +0000
+++ NewEvent.qml	2015-07-12 03:29:02 +0000
@@ -135,18 +135,17 @@
     function addEvent() {
         event = Qt.createQmlObject("import QtOrganizer 5.0; Event { }", Qt.application,"NewEvent.qml");
         //Create fresh Recurrence Object.
-        rule = Qt.createQmlObject("import QtOrganizer 5.0; RecurrenceRule {}", event.recurrence,"EventRepetition.qml");
         selectCalendar(model.defaultCollection().collectionId);
     }
 
     //Editing Event
     function editEvent(e) {
         //If there is a ReccruenceRule use that , else create fresh Recurrence Object.
-        if(e.itemType === Type.Event){
-            rule = (e.recurrence.recurrenceRules[0] === undefined || e.recurrence.recurrenceRules[0] === null) ?
-                        Qt.createQmlObject("import QtOrganizer 5.0; RecurrenceRule {}", event.recurrence,"EventRepetition.qml")
-                      : e.recurrence.recurrenceRules[0];
+        if(e.itemType === Type.Event && e.recurrence.recurrenceRules[0] !== undefined
+                && e.recurrence.recurrenceRules[0] !== null){
+            rule =  e.recurrence.recurrenceRules[0];
         }
+
         startDate =new Date(e.startDateTime);
         endDate = new Date(e.endDateTime);
 
@@ -225,6 +224,8 @@
             //Set the Rule object to an event
             if(rule !== null && rule !== undefined) {
                 event.recurrence.recurrenceRules = [rule]
+            } else {
+                event.recurrence.recurrenceRules = [];
             }
 
             //remove old reminder value
@@ -611,8 +612,8 @@
                 progression: true
                 visible: event.itemType === Type.Event
                 text: i18n.tr("Repeats")
-                subText: event.itemType === Type.Event ? eventUtils.getRecurrenceString(rule) : ""
-                onClicked: pageStack.push(Qt.resolvedUrl("EventRepetition.qml"),{"rule": rule,"date":date,"isEdit":isEdit});
+                subText: event.itemType === Type.Event ? rule === null ? Defines.recurrenceLabel[0] : eventUtils.getRecurrenceString(rule) : ""
+                onClicked: pageStack.push(Qt.resolvedUrl("EventRepetition.qml"),{"eventRoot": root,"isEdit":isEdit});
             }
 
             ListItem.ThinDivider {

=== modified file 'po/com.ubuntu.calendar.pot'
--- po/com.ubuntu.calendar.pot	2015-06-23 15:59:08 +0000
+++ po/com.ubuntu.calendar.pot	2015-07-12 03:29:02 +0000
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: \n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-06-23 23:57+0800\n"
+"POT-Creation-Date: 2015-07-11 19:28+0800\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <l...@li.org>\n"
@@ -132,11 +132,11 @@
 msgid "Delete this"
 msgstr ""
 
-#: ../DeleteConfirmationDialog.qml:51 ../EventDetails.qml:188
+#: ../DeleteConfirmationDialog.qml:51 ../NewEvent.qml:68
 msgid "Delete"
 msgstr ""
 
-#: ../EditEventConfirmationDialog.qml:29 ../NewEvent.qml:304
+#: ../EditEventConfirmationDialog.qml:29 ../NewEvent.qml:320
 msgid "Edit Event"
 msgstr ""
 
@@ -154,7 +154,7 @@
 msgid "Edit this"
 msgstr ""
 
-#: ../EventActions.qml:50 ../NewEvent.qml:304
+#: ../EventActions.qml:50 ../NewEvent.qml:320
 msgid "New Event"
 msgstr ""
 
@@ -165,7 +165,7 @@
 msgid "%1 <b>%2</b>"
 msgstr ""
 
-#: ../EventDetails.qml:42 ../NewEvent.qml:415
+#: ../EventDetails.qml:42 ../NewEvent.qml:431
 msgid "Event Details"
 msgstr ""
 
@@ -175,25 +175,25 @@
 msgid "%1 Calendar"
 msgstr ""
 
-#: ../EventDetails.qml:118
+#: ../EventDetails.qml:121
 #, qt-format
 msgid "%1 - %2 (All Day)"
 msgstr ""
 
-#: ../EventDetails.qml:122
+#: ../EventDetails.qml:125
 #, qt-format
 msgid "%1 (All Day)"
 msgstr ""
 
-#: ../EventDetails.qml:201
+#: ../EventDetails.qml:195
 msgid "Edit"
 msgstr ""
 
-#: ../EventDetails.qml:352 ../NewEvent.qml:517
+#: ../EventDetails.qml:346 ../NewEvent.qml:533
 msgid "Guests"
 msgstr ""
 
-#: ../EventDetails.qml:395 ../EventReminder.qml:35 ../NewEvent.qml:614
+#: ../EventDetails.qml:389 ../EventReminder.qml:35 ../NewEvent.qml:630
 msgid "Reminder"
 msgstr ""
 
@@ -201,26 +201,26 @@
 #. and it is shown as the header of the page to choose repetition
 #. and as the header of the list item that shows the repetition
 #. summary in the page that displays the event details
-#: ../EventRepetition.qml:41 ../EventRepetition.qml:150
+#: ../EventRepetition.qml:40 ../EventRepetition.qml:155
 msgid "Repeat"
 msgstr ""
 
-#: ../EventRepetition.qml:169
+#: ../EventRepetition.qml:174
 msgid "Repeats On:"
 msgstr ""
 
-#: ../EventRepetition.qml:214
+#: ../EventRepetition.qml:219
 msgid "Recurring event ends"
 msgstr ""
 
 #. TRANSLATORS: this refers to how often a recurrent event repeats
 #. and it is shown as the header of the option selector to choose
 #. its repetition
-#: ../EventRepetition.qml:237 ../NewEvent.qml:598
+#: ../EventRepetition.qml:242 ../NewEvent.qml:614
 msgid "Repeats"
 msgstr ""
 
-#: ../EventRepetition.qml:262
+#: ../EventRepetition.qml:267
 msgid "Date"
 msgstr ""
 
@@ -259,51 +259,59 @@
 msgid "After Date"
 msgstr ""
 
-#: ../NewEvent.qml:68
+#: ../MonthComponent.qml:228
+msgid "W"
+msgstr ""
+
+#: ../MonthComponent.qml:229
+msgid "Wk"
+msgstr ""
+
+#: ../NewEvent.qml:84
 msgid "Save"
 msgstr ""
 
-#: ../NewEvent.qml:177
+#: ../NewEvent.qml:191
 msgid "End time can't be before start time"
 msgstr ""
 
-#: ../NewEvent.qml:314
+#: ../NewEvent.qml:330
 msgid "Error"
 msgstr ""
 
-#: ../NewEvent.qml:316
+#: ../NewEvent.qml:332
 msgid "OK"
 msgstr ""
 
-#: ../NewEvent.qml:369
+#: ../NewEvent.qml:385
 msgid "From"
 msgstr ""
 
-#: ../NewEvent.qml:382
+#: ../NewEvent.qml:398
 msgid "To"
 msgstr ""
 
-#: ../NewEvent.qml:399
+#: ../NewEvent.qml:415
 msgid "All day event"
 msgstr ""
 
-#: ../NewEvent.qml:428
+#: ../NewEvent.qml:444
 msgid "Event Name"
 msgstr ""
 
-#: ../NewEvent.qml:446
+#: ../NewEvent.qml:462
 msgid "Description"
 msgstr ""
 
-#: ../NewEvent.qml:464
+#: ../NewEvent.qml:480
 msgid "Location"
 msgstr ""
 
-#: ../NewEvent.qml:479 com.ubuntu.calendar_calendar.desktop.in.in.h:1
+#: ../NewEvent.qml:495 com.ubuntu.calendar_calendar.desktop.in.in.h:1
 msgid "Calendar"
 msgstr ""
 
-#: ../NewEvent.qml:521
+#: ../NewEvent.qml:537
 msgid "Add Guest"
 msgstr ""
 

-- 
Mailing list: https://launchpad.net/~ubuntu-touch-coreapps-reviewers
Post to     : ubuntu-touch-coreapps-reviewers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~ubuntu-touch-coreapps-reviewers
More help   : https://help.launchpad.net/ListHelp

Reply via email to