← Back to team overview

ubuntu-touch-coreapps-reviewers team mailing list archive

[Merge] lp:~artmello/ubuntu-calendar-app/ubuntu-calendar-app-fix_1373945 into lp:ubuntu-calendar-app

 

Arthur Mello has proposed merging lp:~artmello/ubuntu-calendar-app/ubuntu-calendar-app-fix_1373945 into lp:ubuntu-calendar-app.

Commit message:
Add option to Settings page to set the default calendar

Requested reviews:
  Ubuntu Calendar Developers (ubuntu-calendar-dev)
Related bugs:
  Bug #1373945 in Ubuntu Calendar App: "There is no way to set default calendar, it always takes Personal"
  https://bugs.launchpad.net/ubuntu-calendar-app/+bug/1373945

For more details, see:
https://code.launchpad.net/~artmello/ubuntu-calendar-app/ubuntu-calendar-app-fix_1373945/+merge/288988

Add option to Settings page to set the default calendar
-- 
Your team Ubuntu Calendar Developers is requested to review the proposed merge of lp:~artmello/ubuntu-calendar-app/ubuntu-calendar-app-fix_1373945 into lp:ubuntu-calendar-app.
=== modified file 'EventActions.qml'
--- EventActions.qml	2016-03-04 16:10:56 +0000
+++ EventActions.qml	2016-03-14 22:21:27 +0000
@@ -63,7 +63,7 @@
         iconName: "settings"
         text: i18n.tr("Settings")
         onTriggered: {
-            pageStack.push(Qt.resolvedUrl("Settings.qml"));
+            pageStack.push(Qt.resolvedUrl("Settings.qml"), {"eventModel": eventModel});
         }
     }
 }

=== modified file 'EventListModel.qml'
--- EventListModel.qml	2016-03-04 16:10:56 +0000
+++ EventListModel.qml	2016-03-14 22:21:27 +0000
@@ -75,6 +75,20 @@
         return cals;
     }
 
+    function getWritableAndSelectedCollections(){
+        var cals = [];
+        var collections = eventModel.collections;
+        for(var i = 0 ; i < collections.length ; ++i) {
+            var cal = collections[i];
+            if( cal.extendedMetaData("collection-type") === "Calendar" &&
+                    cal.extendedMetaData("collection-selected") === true &&
+                    cal.extendedMetaData("collection-readonly") === false) {
+                cals.push(cal);
+            }
+        }
+        return cals;
+    }
+
     function getWritableCollections(){
         var cals = [];
         var collections = eventModel.collections;
@@ -110,9 +124,9 @@
         var cals = getCollections();
          for(var i = 0 ; i < cals.length ; ++i) {
              var cal = cals[i]
-             cal.setExtendedMetaData("X-CAL-DEFAULT-CALENDAR", false);
              if( cal.collectionId === collectionId) {
-                cal.setExtendedMetaData("X-CAL-DEFAULT-CALENDAR", true);
+                 cal.setExtendedMetaData("collection-default", true);
+                 eventModel.saveCollection(cal);
              }
         }
     }

=== modified file 'NewEvent.qml'
--- NewEvent.qml	2016-03-07 17:57:04 +0000
+++ NewEvent.qml	2016-03-14 22:21:27 +0000
@@ -71,6 +71,11 @@
         root.canceled()
     }
 
+    function updateEventInfo(date, allDay) {
+        selectCalendar(model.getDefaultCollection().collectionId);
+        updateEventDate(date, allDay)
+    }
+
     function updateEventDate(date, allDay) {
         root.startDate = undefined
         root.endDate = undefined
@@ -117,7 +122,6 @@
     //Data for Add events
     function addEvent() {
         event = Qt.createQmlObject("import QtOrganizer 5.0; Event { }", Qt.application,"NewEvent.qml");
-        selectCalendar(model.getDefaultCollection().collectionId);
     }
 
     //Editing Event

=== modified file 'NewEventBottomEdge.qml'
--- NewEventBottomEdge.qml	2016-03-07 17:57:04 +0000
+++ NewEventBottomEdge.qml	2016-03-14 22:21:27 +0000
@@ -36,9 +36,9 @@
     signal opened()
     signal eventCreated(var event)
 
-    function updateNewEventDate(date, allDay)
+    function updateNewEventInfo(date, allDay)
     {
-        _realPage.updateEventDate(date, allDay)
+        _realPage.updateEventInfo(date, allDay)
     }
 
     hint {
@@ -73,7 +73,7 @@
 
     onCommitStarted: {
         bottomEdge.opened()
-        updateNewEventDate(bottomEdge.date ? bottomEdge.date : new Date(), false)
+        updateNewEventInfo(bottomEdge.date ? bottomEdge.date : new Date(), false)
     }
 
     Component.onCompleted:  {

=== modified file 'Settings.qml'
--- Settings.qml	2016-03-02 19:55:52 +0000
+++ Settings.qml	2016-03-14 22:21:27 +0000
@@ -23,6 +23,7 @@
     id: settingsPage
     objectName: "settings"
 
+    property EventListModel eventModel
     visible: false
 
     header: PageHeader {
@@ -79,5 +80,61 @@
                 }
             }
         }
+
+        ListItem {
+            visible: defaultCalendarOptionSelector.model && defaultCalendarOptionSelector.model.length > 0
+            height: visible ? defaultCalendarLayout.height + divider.height : 0
+
+            Component.onCompleted: {
+                if (!eventModel || !defaultCalendarOptionSelector.model) {
+                    return
+                }
+
+                var defaultCollectionId = eventModel.getDefaultCollection().collectionId
+                for (var i=0; i<defaultCalendarOptionSelector.model.length; ++i) {
+                    if (defaultCalendarOptionSelector.model[i].collectionId === defaultCollectionId) {
+                        defaultCalendarOptionSelector.selectedIndex = i
+                        return
+                    }
+                }
+
+                defaultCalendarOptionSelector.selectedIndex = 0
+            }
+
+            SlotsLayout {
+                id: defaultCalendarLayout
+
+                mainSlot: Item {
+                    height: defaultCalendarOptionSelector.height
+
+                    OptionSelector {
+                        id: defaultCalendarOptionSelector
+
+                        text: i18n.tr("Default calendar")
+                        model: settingsPage.eventModel ? settingsPage.eventModel.getWritableAndSelectedCollections() : null
+                        containerHeight: itemHeight * 4 
+
+                        delegate: OptionSelectorDelegate {
+                            text: modelData.name
+                            height: units.gu(4)
+
+                            UbuntuShape{
+                                anchors {
+                                    right: parent.right
+                                    rightMargin: units.gu(4)
+                                    verticalCenter: parent.verticalCenter
+                                }
+
+                                 width: height
+                                 height: parent.height - units.gu(2)
+                                 color: modelData.color
+                            }
+                        }
+
+                        onDelegateClicked: settingsPage.eventModel.setDefaultCollection(model[index].collectionId)
+                    }
+                }
+            }
+        }
     }
 }


Follow ups