diff -u8pdNr 1.5/chrome/content/ccd-overlay.xul 1.6/chrome/content/ccd-overlay.xul
--- 1.5/chrome/content/ccd-overlay.xul	2012-08-25 16:04:14 +0000
+++ 1.6/chrome/content/ccd-overlay.xul	2015-08-04 10:28:29 +0000
@@ -3,10 +3,12 @@
    - License, v. 2.0. If a copy of the MPL was not distributed with this
    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
 <?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
 
 <overlay id="customcalendardefaults-overlay"
          xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
   <script type="application/javascript"
           src="chrome://customcalendardefaults/content/customcalendardefaults.js"/>
-
+  <script language="JavaScript">
+    initCcd();
+  </script>
 </overlay>
diff -u8pdNr 1.5/chrome/content/ccd-prefs.js 1.6/chrome/content/ccd-prefs.js
--- 1.5/chrome/content/ccd-prefs.js	2015-04-30 20:36:44 +0000
+++ 1.6/chrome/content/ccd-prefs.js	2015-08-04 17:20:44 +0000
@@ -1,108 +1,241 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 let gPrefBranch = Components.classes["@mozilla.org/preferences-service;1"]
                             .getService(Components.interfaces.nsIPrefBranch);
 
-var bundle = srGetStrBundle("chrome://customcalendardefaults/locale/ccd-prefs.properties");
+var ccd_bundle = srGetStrBundle("chrome://customcalendardefaults/locale/ccd-prefs.properties");
+
+function toggleEventUI() {
+  let ccdCheckEventPrivacy = document.getElementById("ccdCheckEventPrivacy");
+  let ccdSetEventPrivacy = document.getElementById("ccdSetEventPrivacy");
+  let hideableItems = new Array();
+  hideableItems = ccdSetEventPrivacy.getElementsByAttribute("hideable", true);
+  if (ccdCheckEventPrivacy.hasAttribute("checked", true)) {
+    for (let i = 0; i < hideableItems.length; ++i) {
+      let item = hideableItems[i];
+	  if (item.hasAttribute("disabled", true)) {
+  	    item.removeAttribute("disabled");
+	  }
+    }
+  } else {
+    for (let i = 0; i < hideableItems.length; ++i) {
+      let item = hideableItems[i];
+	  if (!item.hasAttribute("disabled", true)) {
+  	    item.setAttribute("disabled", true);
+	  }
+    }
+  }
+}
+
+function toggleTaskUI() {
+  let ccdCheckTaskPrivacy = document.getElementById("ccdCheckTaskPrivacy");
+  let ccdSetTaskPrivacy = document.getElementById("ccdSetTaskPrivacy");
+  let hideableItems = new Array();
+  hideableItems = ccdSetTaskPrivacy.getElementsByAttribute("hideable", true);
+  if (ccdCheckTaskPrivacy.hasAttribute("checked", true)) {
+    for (let i = 0; i < hideableItems.length; ++i) {
+      let item = hideableItems[i];
+	  if (item.hasAttribute("disabled", true)) {
+  	    item.removeAttribute("disabled");
+	  }
+    }
+  } else {
+    for (let i = 0; i < hideableItems.length; ++i) {
+      let item = hideableItems[i];
+	  if (!item.hasAttribute("disabled", true)) {
+  	    item.setAttribute("disabled", true);
+	  }
+    }
+  }
+}
 
 function ccdResetCalendarDefaults() {
   if (gPrefBranch.prefHasUserValue("extensions.customcalendardefaults.event.status")) {
     void gPrefBranch.clearUserPref("extensions.customcalendardefaults.event.status");
   }
+  if (gPrefBranch.prefHasUserValue("extensions.customcalendardefaults.event.privacy")) {
+    void gPrefBranch.clearUserPref("extensions.customcalendardefaults.event.privacy");
+  }
+  if (gPrefBranch.prefHasUserValue("extensions.customcalendardefaults.event.privacy.state")) {
+    void gPrefBranch.clearUserPref("extensions.customcalendardefaults.event.privacy.state");
+  }
   if (gPrefBranch.prefHasUserValue("extensions.customcalendardefaults.event.priority")) {
     void gPrefBranch.clearUserPref("extensions.customcalendardefaults.event.priority");
   }
   if (gPrefBranch.prefHasUserValue("extensions.customcalendardefaults.event.showTimeAs")) {
     void gPrefBranch.clearUserPref("extensions.customcalendardefaults.event.showTimeAs");
   }
   if (gPrefBranch.prefHasUserValue("calendar.events.defaultTransparency.standard.transparent")) {
     void gPrefBranch.clearUserPref("calendar.events.defaultTransparency.standard.transparent");
   }
   if (gPrefBranch.prefHasUserValue("calendar.events.defaultTransparency.allday.transparent")) {
     void gPrefBranch.clearUserPref("calendar.events.defaultTransparency.allday.transparent");
   }
   if (gPrefBranch.prefHasUserValue("extensions.customcalendardefaults.task.status")) {
     void gPrefBranch.clearUserPref("extensions.customcalendardefaults.task.status");
   }
-  if (gPrefBranch.prefHasUserValue("extensions.customcalendardefaults.task.priority")) {
-    void gPrefBranch.clearUserPref("extensions.customcalendardefaults.task.priority");
+  if (gPrefBranch.prefHasUserValue("extensions.customcalendardefaults.task.privacy")) {
+    void gPrefBranch.clearUserPref("extensions.customcalendardefaults.task.privacy");
   }
-  if (gPrefBranch.prefHasUserValue("extensions.customcalendardefaults.task.showTimeAs")) {
-    void gPrefBranch.clearUserPref("extensions.customcalendardefaults.task.showTimeAs");
+  if (gPrefBranch.prefHasUserValue("extensions.customcalendardefaults.task.privacy.state")) {
+    void gPrefBranch.clearUserPref("extensions.customcalendardefaults.task.privacy.state");
   }
-  if (gPrefBranch.prefHasUserValue("extensions.customcalendardefaults.task.showTimeAs.state")) {
-    void gPrefBranch.clearUserPref("extensions.customcalendardefaults.task.showTimeAs.state");
+  if (gPrefBranch.prefHasUserValue("extensions.customcalendardefaults.task.priority")) {
+    void gPrefBranch.clearUserPref("extensions.customcalendardefaults.task.priority");
   }
   onLoadCcdPrefsPane();
 }
 
 function onLoadCcdPrefsPane() {
-  var ccdEventPriority = document.getElementById("ccdEventPriority");
-  var defaultEventPriority = gPrefBranch.getCharPref("extensions.customcalendardefaults.event.priority");
-  var eventPriorityNone = bundle.GetStringFromName( "eventPriorityNone.label" );
-  var eventPriorityLow = bundle.GetStringFromName( "eventPriorityLow.label" );
-  var eventPriorityHigh = bundle.GetStringFromName( "eventPriorityHigh.label" );
-  var eventPriorityNormal = bundle.GetStringFromName( "eventPriorityNormal.label" );
+  let ccdEventPriority = document.getElementById("ccdEventPriority");
+  let defaultEventPriority = gPrefBranch.getCharPref("extensions.customcalendardefaults.event.priority");
+  let eventPriorityNone = ccd_bundle.GetStringFromName( "eventPriorityNone.label" );
+  let eventPriorityLow = ccd_bundle.GetStringFromName( "eventPriorityLow.label" );
+  let eventPriorityHigh = ccd_bundle.GetStringFromName( "eventPriorityHigh.label" );
+  let eventPriorityNormal = ccd_bundle.GetStringFromName( "eventPriorityNormal.label" );
   if (defaultEventPriority == "0") {
     ccdEventPriority.setAttribute("label", eventPriorityNone);
   } else if (defaultEventPriority == "1") {
     ccdEventPriority.setAttribute("label", eventPriorityHigh);
   } else if (defaultEventPriority == "5") {
     ccdEventPriority.setAttribute("label", eventPriorityNormal);
   } else if (defaultEventPriority == "9") {
     ccdEventPriority.setAttribute("label", eventPriorityLow);
   }
   
-  var ccdEventStatus = document.getElementById("ccdEventStatus");
-  var defaultEventStatus = gPrefBranch.getCharPref("extensions.customcalendardefaults.event.status");
-  var eventStatusNone = bundle.GetStringFromName( "eventStatusNone.label" );
-  var eventStatusTentative = bundle.GetStringFromName( "eventStatusTentative.label" );
-  var eventStatusConfirmed = bundle.GetStringFromName( "eventStatusConfirmed.label" );
-  var eventStatusCancelled = bundle.GetStringFromName( "eventStatusCancelled.label" );
+  let ccdEventStatus = document.getElementById("ccdEventStatus");
+  let defaultEventStatus = gPrefBranch.getCharPref("extensions.customcalendardefaults.event.status");
+  let eventStatusNone = ccd_bundle.GetStringFromName( "eventStatusNone.label" );
+  let eventStatusTentative = ccd_bundle.GetStringFromName( "eventStatusTentative.label" );
+  let eventStatusConfirmed = ccd_bundle.GetStringFromName( "eventStatusConfirmed.label" );
+  let eventStatusCancelled = ccd_bundle.GetStringFromName( "eventStatusCancelled.label" );
   if (defaultEventStatus == "") {
     ccdEventStatus.setAttribute("label", eventStatusNone);
   } else if (defaultEventStatus == "TENTATIVE") {
     ccdEventStatus.setAttribute("label", eventStatusTentative);
   } else if (defaultEventStatus == "CONFIRMED") {
     ccdEventStatus.setAttribute("label", eventStatusConfirmed);
   } else if (defaultEventStatus == "CANCELLED") {
     ccdEventStatus.setAttribute("label", eventStatusCancelled);
   }
+
+  let ccdSogoConflict = gPrefBranch.getBoolPref("extensions.customcalendardefaults.sogoconflict");
+  if (ccdSogoConflict) {
+    let ccdCheckEventPrivacyRow = document.getElementById("ccdCheckEventPrivacyRow");
+    ccdCheckEventPrivacyRow.setAttribute("hidden", true);
+    ccdSetEventPrivacy = document.getElementById("ccdSetEventPrivacy");
+    ccdSetEventPrivacy.setAttribute("hidden", true);
+    if (gPrefBranch.prefHasUserValue("extensions.customcalendardefaults.event.privacy")) {
+      void gPrefBranch.clearUserPref("extensions.customcalendardefaults.event.privacy");
+    }
+    if (gPrefBranch.prefHasUserValue("extensions.customcalendardefaults.event.privacy.state")) {
+      void gPrefBranch.clearUserPref("extensions.customcalendardefaults.event.privacy.state");
+    }
+  } else {
+    let ccdEventPrivacyPref = gPrefBranch.getBoolPref("extensions.customcalendardefaults.event.privacy");
+    let ccdSetEventPrivacy = document.getElementById("ccdSetEventPrivacy");
+    if (ccdEventPrivacyPref == false) {
+      let hideableItems = new Array();
+      hideableItems = ccdSetEventPrivacy.getElementsByAttribute("hideable", true);
+      for (let i = 0; i < hideableItems.length; ++i) {
+        let item = hideableItems[i];
+	    if (!item.hasAttribute("disabled", true)) {
+  	      item.setAttribute("disabled", true);
+	    }
+      }
+    }
   
-  var ccdTaskPriority = document.getElementById("ccdTaskPriority");
-  var defaultTaskPriority = gPrefBranch.getCharPref("extensions.customcalendardefaults.task.priority");
-  var taskPriorityNone = bundle.GetStringFromName( "taskPriorityNone.label" );
-  var taskPriorityLow = bundle.GetStringFromName( "taskPriorityLow.label" );
-  var taskPriorityHigh = bundle.GetStringFromName( "taskPriorityHigh.label" );
-  var taskPriorityNormal = bundle.GetStringFromName( "taskPriorityNormal.label" );
+    let ccdEventPrivacy = document.getElementById("ccdEventPrivacy");
+    let defaultEventPrivacy = gPrefBranch.getCharPref("extensions.customcalendardefaults.event.privacy.state");
+    let eventPrivacyPrivate = ccd_bundle.GetStringFromName( "eventPrivacyPrivate.label" );
+    let eventPrivacyConfidential = ccd_bundle.GetStringFromName( "eventPrivacyConfidential.label" );
+    let eventPrivacyPublic = ccd_bundle.GetStringFromName( "eventPrivacyPublic.label" );
+    if (defaultEventPrivacy == "PRIVATE") {
+      ccdEventPrivacy.setAttribute("label", eventPrivacyPrivate);
+    } else if (defaultEventPrivacy == "CONFIDENTIAL") {
+      ccdEventPrivacy.setAttribute("label", eventPrivacyConfidential);
+    } else if (defaultEventPrivacy == "PUBLIC") {
+      ccdEventPrivacy.setAttribute("label", eventPrivacyPublic);
+    } else {
+      ccdEventPrivacy.setAttribute("label", "");
+    }
+  }
+
+  let ccdTaskPriority = document.getElementById("ccdTaskPriority");
+  let defaultTaskPriority = gPrefBranch.getCharPref("extensions.customcalendardefaults.task.priority");
+  let taskPriorityNone = ccd_bundle.GetStringFromName( "taskPriorityNone.label" );
+  let taskPriorityLow = ccd_bundle.GetStringFromName( "taskPriorityLow.label" );
+  let taskPriorityHigh = ccd_bundle.GetStringFromName( "taskPriorityHigh.label" );
+  let taskPriorityNormal = ccd_bundle.GetStringFromName( "taskPriorityNormal.label" );
   if (defaultTaskPriority == "0") {
     ccdTaskPriority.setAttribute("label", taskPriorityNone);
   } else if (defaultTaskPriority == "1") {
     ccdTaskPriority.setAttribute("label", taskPriorityHigh);
   } else if (defaultTaskPriority == "5") {
     ccdTaskPriority.setAttribute("label", taskPriorityNormal);
   } else if (defaultTaskPriority == "9") {
     ccdTaskPriority.setAttribute("label", taskPriorityLow);
   }
   
-  var ccdTaskStatus = document.getElementById("ccdTaskStatus");
-  var defaultTaskStatus = gPrefBranch.getCharPref("extensions.customcalendardefaults.task.status");
-  var taskStatusNone = bundle.GetStringFromName( "taskStatusNone.label" );
-  var taskStatusAction = bundle.GetStringFromName( "taskStatusAction.label" );
-  var taskStatusProcess = bundle.GetStringFromName( "taskStatusProcess.label" );
-  var taskStatusCompleted = bundle.GetStringFromName( "taskStatusCompleted.label" );
-  var taskStatusCancelled = bundle.GetStringFromName( "taskStatusCancelled.label" );
+  let ccdTaskStatus = document.getElementById("ccdTaskStatus");
+  let defaultTaskStatus = gPrefBranch.getCharPref("extensions.customcalendardefaults.task.status");
+  let taskStatusNone = ccd_bundle.GetStringFromName( "taskStatusNone.label" );
+  let taskStatusAction = ccd_bundle.GetStringFromName( "taskStatusAction.label" );
+  let taskStatusProcess = ccd_bundle.GetStringFromName( "taskStatusProcess.label" );
+  let taskStatusCompleted = ccd_bundle.GetStringFromName( "taskStatusCompleted.label" );
+  let taskStatusCancelled = ccd_bundle.GetStringFromName( "taskStatusCancelled.label" );
   if (defaultTaskStatus == "") {
     ccdTaskStatus.setAttribute("label", taskStatusNone);
   } else if (defaultTaskStatus == "NEEDS-ACTION") {
     ccdTaskStatus.setAttribute("label", taskStatusAction);
   } else if (defaultTaskStatus == "IN-PROCESS") {
     ccdTaskStatus.setAttribute("label", taskStatusProcess);
   } else if (defaultTaskStatus == "COMPLETED") {
     ccdTaskStatus.setAttribute("label", taskStatusCompleted);
   } else if (defaultTaskStatus == "CANCELLED") {
     ccdTaskStatus.setAttribute("label", taskStatusCancelled);
   }
+
+  if (ccdSogoConflict) {
+    let ccdCheckTaskPrivacyRow = document.getElementById("ccdCheckTaskPrivacyRow");
+    ccdCheckTaskPrivacyRow.setAttribute("hidden", true);
+    ccdSetTaskPrivacy = document.getElementById("ccdSetTaskPrivacy");
+    ccdSetTaskPrivacy.setAttribute("hidden", true);
+    if (gPrefBranch.prefHasUserValue("extensions.customcalendardefaults.task.privacy")) {
+      void gPrefBranch.clearUserPref("extensions.customcalendardefaults.task.privacy");
+    }
+    if (gPrefBranch.prefHasUserValue("extensions.customcalendardefaults.task.privacy.state")) {
+      void gPrefBranch.clearUserPref("extensions.customcalendardefaults.task.privacy.state");
+    }
+  } else {
+    let ccdTaskPrivacy = document.getElementById("ccdTaskPrivacy");
+    let defaultTaskPrivacy = gPrefBranch.getCharPref("extensions.customcalendardefaults.task.privacy.state");
+    let taskPrivacyPrivate = ccd_bundle.GetStringFromName( "taskPrivacyPrivate.label" );
+    let taskPrivacyConfidential = ccd_bundle.GetStringFromName( "taskPrivacyConfidential.label" );
+    let taskPrivacyPublic = ccd_bundle.GetStringFromName( "taskPrivacyPublic.label" );
+    if (defaultTaskPrivacy == "PRIVATE") {
+      ccdTaskPrivacy.setAttribute("label", taskPrivacyPrivate);
+    } else if (defaultTaskPrivacy == "CONFIDENTIAL") {
+      ccdTaskPrivacy.setAttribute("label", taskPrivacyConfidential);
+    } else if (defaultTaskPrivacy == "PUBLIC") {
+      ccdTaskPrivacy.setAttribute("label", taskPrivacyPublic);
+    } else {
+      ccdTaskPrivacy.setAttribute("label", "");
+    }
+  
+    let ccdTaskPrivacyPref = gPrefBranch.getBoolPref("extensions.customcalendardefaults.task.privacy");
+    let ccdSetTaskPrivacy = document.getElementById("ccdSetTaskPrivacy");
+    if (ccdTaskPrivacyPref == false) {
+      let hideableItems = new Array();
+      hideableItems = ccdSetTaskPrivacy.getElementsByAttribute("hideable", true);
+      for (let i = 0; i < hideableItems.length; ++i) {
+        let item = hideableItems[i];
+	    if (!item.hasAttribute("disabled", true)) {
+  	      item.setAttribute("disabled", true);
+	    }
+      }
+    }
+  }
 }
diff -u8pdNr 1.5/chrome/content/ccd-prefs.xul 1.6/chrome/content/ccd-prefs.xul
--- 1.5/chrome/content/ccd-prefs.xul	2015-04-30 19:51:24 +0000
+++ 1.6/chrome/content/ccd-prefs.xul	2015-08-04 13:42:43 +0000
@@ -34,20 +34,16 @@
     <preference id="extensions.customcalendardefaults.task.status"
                 name="extensions.customcalendardefaults.task.status" type="string"/>
     <preference id="extensions.customcalendardefaults.task.privacy"
                 name="extensions.customcalendardefaults.task.privacy" type="bool"/>
     <preference id="extensions.customcalendardefaults.task.privacy.state"
                 name="extensions.customcalendardefaults.task.privacy.state" type="string"/>
     <preference id="extensions.customcalendardefaults.task.priority"
                 name="extensions.customcalendardefaults.task.priority" type="string"/>
-    <preference id="extensions.customcalendardefaults.task.showTimeAs"
-                name="extensions.customcalendardefaults.task.showTimeAs" type="bool"/>
-    <preference id="extensions.customcalendardefaults.task.showTimeAs.state"
-                name="extensions.customcalendardefaults.task.showTimeAs.state" type="string"/>
   </preferences>
 
   <vbox>
     <groupbox>
       <caption label="&customcalendardefaults.preferences.events.title;" />
       <grid>
       <columns>
         <column/>
@@ -79,16 +75,37 @@
             <menupopup id="ccdEventPriorityPopup">
               <menuitem label="&customcalendardefaults.preferences.ccdEventPriorityNone;" value="0"/>
               <menuitem label="&customcalendardefaults.preferences.ccdEventPriorityLow;" value="9"/>
               <menuitem label="&customcalendardefaults.preferences.ccdEventPriorityNormal;" value="5"/>
               <menuitem label="&customcalendardefaults.preferences.ccdEventPriorityHigh;" value="1"/>
             </menupopup>
           </menulist>
         </row>
+        <row id="ccdCheckEventPrivacyRow">
+          <checkbox id="ccdCheckEventPrivacy"
+                    label="&customcalendardefaults.preferences.setEventPrivacy.label;"
+                    preference="extensions.customcalendardefaults.event.privacy"
+                    oncommand="toggleEventUI();"/>
+        </row>
+        <row id="ccdSetEventPrivacy">
+          <label control="ccdEventPrivacy"
+                 accesskey="&customcalendardefaults.preferences.ccdEventPrivacy.accesskey;"
+                 value="&customcalendardefaults.preferences.ccdEventPrivacy;"/>
+          <menulist id="ccdEventPrivacy"
+                    preference="extensions.customcalendardefaults.event.privacy.state"
+                    flex="0"
+                    hideable="true">
+            <menupopup id="ccdEventPrivacyPopup" hideable="true">
+              <menuitem label="&customcalendardefaults.preferences.ccdEventPrivacyPublic;" value="PUBLIC"/>
+              <menuitem label="&customcalendardefaults.preferences.ccdEventPrivacyConfidential;" value="CONFIDENTIAL"/>
+              <menuitem label="&customcalendardefaults.preferences.ccdEventPrivacyPrivate;" value="PRIVATE"/>
+            </menupopup>
+          </menulist>
+        </row>
         <row id="ccdSetEventShowTimeAs">
           <label control="ccdEventShowTimeAs"
                  accesskey="&customcalendardefaults.preferences.ccdEventShowTimeAs.accesskey;"
                  value="&customcalendardefaults.preferences.ccdEventShowTimeAs;"/>
           <menulist id="ccdEventShowTimeAs"
                     preference="calendar.events.defaultTransparency.standard.transparent"
                     flex="0">
             <menupopup id="ccdEventShowTimeAsPopup">
@@ -147,16 +164,37 @@
             <menupopup id="ccdTaskPriorityPopup">
               <menuitem label="&customcalendardefaults.preferences.ccdTaskPriorityNone;" value="0"/>
               <menuitem label="&customcalendardefaults.preferences.ccdTaskPriorityLow;" value="9"/>
               <menuitem label="&customcalendardefaults.preferences.ccdTaskPriorityNormal;" value="5"/>
               <menuitem label="&customcalendardefaults.preferences.ccdTaskPriorityHigh;" value="1"/>
             </menupopup>
           </menulist>
         </row>
+        <row id="ccdCheckTaskPrivacyRow">
+          <checkbox id="ccdCheckTaskPrivacy"
+                    label="&customcalendardefaults.preferences.setTaskPrivacy.label;"
+                    preference="extensions.customcalendardefaults.task.privacy"
+                    oncommand="toggleTaskUI();"/>
+        </row>
+        <row id="ccdSetTaskPrivacy">
+          <label control="ccdTaskPrivacy"
+                 accesskey="&customcalendardefaults.preferences.ccdTaskPrivacy.accesskey;"
+                 value="&customcalendardefaults.preferences.ccdTaskPrivacy;"/>
+          <menulist id="ccdTaskPrivacy"
+                    preference="extensions.customcalendardefaults.task.privacy.state"
+                    flex="0"
+                    hideable="true">
+            <menupopup id="ccdTaskPrivacyPopup" hideable="true">
+              <menuitem label="&customcalendardefaults.preferences.ccdTaskPrivacyPublic;" value="PUBLIC"/>
+              <menuitem label="&customcalendardefaults.preferences.ccdTaskPrivacyConfidential;" value="CONFIDENTIAL"/>
+              <menuitem label="&customcalendardefaults.preferences.ccdTaskPrivacyPrivate;" value="PRIVATE"/>
+            </menupopup>
+          </menulist>
+        </row>
       </rows>
     </grid>
     </groupbox>
 
     <hbox>
       <button id="ccdResetDefaultsButton" label="&customcalendardefaults.preferences.resetButton;"
               accesskey=""
               oncommand="ccdResetCalendarDefaults();"/>
diff -u8pdNr 1.5/chrome/content/customcalendardefaults.js 1.6/chrome/content/customcalendardefaults.js
--- 1.5/chrome/content/customcalendardefaults.js	2015-05-02 20:45:47 +0000
+++ 1.6/chrome/content/customcalendardefaults.js	2015-08-04 17:14:23 +0000
@@ -1,60 +1,92 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
-Components.utils.import("resource://gre/modules/XPCOMUtils.jsm");
+Components.utils.import("resource://calendar/modules/calUtils.jsm");
+Components.utils.import("resource://gre/modules/AddonManager.jsm");
+
+function initCcd() {
+  AddonManager.getAddonByID("sogo-connector@inverse.ca", function(addon) {
+    if (addon && addon.isActive) {
+      Services.prefs.setBoolPref("extensions.customcalendardefaults.sogoconflict",true);
+    } else {
+      Services.prefs.setBoolPref("extensions.customcalendardefaults.sogoconflict",false);
+    }
+  });
+}
 
 /*******************************
 * Get custom default settings  *
 *******************************/
 
 function setCustomCalendarDefaults(aItem) {
-    var prefService = Components.classes["@mozilla.org/preferences-service;1"]
-                       .getService(Components.interfaces.nsIPrefService);
-    var prefBranch = prefService.getBranch("extensions.customcalendardefaults.");
+    let prefBranch = Services.prefs.getBranch("extensions.customcalendardefaults.");
+    let ccdSogoConflict = prefBranch.getBoolPref("sogoconflict");
     let type = cal.isEvent(aItem) ? "event" : "todo";
     if (type == "event") {
         // apply default event status
         let ccdStatus = prefBranch.getCharPref("event.status");
         aItem.setProperty("STATUS", ccdStatus);
+        // apply default event privacy
+        let ccdPrivacy = prefBranch.getBoolPref("event.privacy");
+        if (ccdPrivacy && !ccdSogoConflict) {
+            let ccdPrivacyState = prefBranch.getCharPref("event.privacy.state");
+            aItem.setProperty("CLASS", ccdPrivacyState);
+        }
         // apply default event priority
         let ccdPriority = prefBranch.getCharPref("event.priority");
         aItem.setProperty("PRIORITY", ccdPriority);
     }
     else if (type == "todo") {
         // apply default task status
         let ccdStatus = prefBranch.getCharPref("task.status");
         aItem.setProperty("STATUS", ccdStatus);
+        // apply default task privacy
+        let ccdPrivacy = prefBranch.getBoolPref("task.privacy");
+        if (ccdPrivacy && !ccdSogoConflict) {
+            let ccdPrivacyState = prefBranch.getCharPref("task.privacy.state");
+            aItem.setProperty("CLASS", ccdPrivacyState);
+        }
         // apply default task priority
         let ccdPriority = prefBranch.getCharPref("task.priority");
         aItem.setProperty("PRIORITY", ccdPriority);
     }
 }
 
 function setCustomCalendarDefaultsTaskQuickadd(item) {
-    var prefService = Components.classes["@mozilla.org/preferences-service;1"]
-                       .getService(Components.interfaces.nsIPrefService);
-    var prefBranch = prefService.getBranch("extensions.customcalendardefaults.");
+    let prefBranch = Services.prefs.getBranch("extensions.customcalendardefaults.");
+    let ccdSogoConflict = prefBranch.getBoolPref("sogoconflict");
     // apply default task status
     let ccdStatus = prefBranch.getCharPref("task.status");
     item.setProperty("STATUS", ccdStatus);
+    // apply default task privacy
+    let ccdPrivacy = prefBranch.getBoolPref("task.privacy");
+    if (ccdPrivacy && !ccdSogoConflict) {
+        let ccdPrivacyState = prefBranch.getCharPref("task.privacy.state");
+        item.setProperty("CLASS", ccdPrivacyState);
+    }
     // apply default task priority
     let ccdPriority = prefBranch.getCharPref("task.priority");
     item.setProperty("PRIORITY", ccdPriority);
 }
 
 function setCustomCalendarDefaultsEventDrag(item) {
-    var prefService = Components.classes["@mozilla.org/preferences-service;1"]
-                       .getService(Components.interfaces.nsIPrefService);
-    var prefBranch = prefService.getBranch("extensions.customcalendardefaults.");
+    let prefBranch = Services.prefs.getBranch("extensions.customcalendardefaults.");
+    let ccdSogoConflict = prefBranch.getBoolPref("sogoconflict");
     // apply default event status
     let ccdStatus = prefBranch.getCharPref("event.status");
     item.setProperty("STATUS", ccdStatus);
+    // apply default event privacy
+    let ccdPrivacy = prefBranch.getBoolPref("event.privacy");
+    if (ccdPrivacy && !ccdSogoConflict) {
+        let ccdPrivacyState = prefBranch.getCharPref("event.privacy.state");
+        item.setProperty("CLASS", ccdPrivacyState);
+    }
     // apply default event priority
     let ccdPriority = prefBranch.getCharPref("event.priority");
     item.setProperty("PRIORITY", ccdPriority);
 }
 
 /*******************************
 * Modified Lightning functions *
 *******************************/
@@ -227,25 +259,29 @@ var ccdTaskEdit = {
     },
 
     /**
      * Handler function to call when the quick-add textbox loses focus.
      *
      * @param aEvent    The DOM blur event
      */
     onBlur: function tE_onBlur(aEvent) {
-        var edit = aEvent.target;
+        let edit = aEvent.target;
         if (edit.localName == "input") {
             // For some reason, we only receive the blur event for the input
             // element. There are no targets that point to the textbox. Go up
             // the parent chain until we reach the textbox.
             edit = edit.parentNode.parentNode;
         }
 
-        var calendar = getSelectedCalendar();
+        let calendar = getSelectedCalendar();
+        if (!calendar) {
+            // this must be a first run, we don't have a calendar yet
+            return;
+        }
 
         if (calendar.getProperty("capabilities.tasks.supported") === false){
             taskEdit.setupTaskField(edit,
                                     true,
                                     calGetString("calendar", "taskEditInstructionsCapability"));
         } else if (!isCalendarWritable(calendar)) {
             taskEdit.setupTaskField(edit,
                                     true,
@@ -416,94 +452,21 @@ var ccdCalendarViewController = {
             item.title = calGetString("calendar", "newEvent");
             setCustomCalendarDefaultsEventDrag(item);
             doTransaction('add', item, item.calendar, null, null);
         } else {
             createEventWithDialog(aCalendar, aStartTime, null, null, null, aForceAllday);
         }
     },
 
-    pendingJobs: [],
-
-    /**
-     * In order to initiate a modification for the occurrence passed as argument
-     * we create an object that records the necessary details and store it in an
-     * internal array ('pendingJobs'). this way we're in a position to terminate
-     * any pending modification if need should be.
-     *
-     * @param aOccurrence       The occurrence to create the pending
-     *                            modification for.
-     */
-    createPendingModification: function (aOccurrence) {
-        // finalize a (possibly) pending modification. this will notify
-        // an open dialog to save any outstanding modifications.
-        aOccurrence = this.finalizePendingModification(aOccurrence);
-
-        // XXX TODO logic to ask for which occurrence to modify is currently in
-        // modifyEventWithDialog, since the type of transactions done depend on
-        // this. This in turn makes the aOccurrence here be potentially wrong, I
-        // haven't seen it used anywhere though.
-        var pendingModification = {
-            controller: this,
-            item: aOccurrence,
-            finalize: null,
-            dispose: function() {
-                var array = this.controller.pendingJobs;
-                for (var i=0; i<array.length; i++) {
-                    if (array[i] == this) {
-                        array.splice(i,1);
-                        break;
-                    }
-                }
-            }
-        }
-
-        this.pendingJobs.push(pendingModification);
-
-        modifyEventWithDialog(aOccurrence, pendingModification, true);
-    },
-
-    /**
-     * Iterate the list of pending modifications and see if the occurrence
-     * passed as argument is currently about to be modified (event dialog is
-     * open with the item in question). If this should be the case we call
-     * finalize() in order to bring the dialog down and avoid dataloss.
-     *
-     * @param aOccurrence       The occurrence to finalize the modification for.
-     */
-    finalizePendingModification: function (aOccurrence) {
-
-      for each (var job in this.pendingJobs) {
-          var item = job.item;
-          var parent = item.parent;
-          if ((item.hashId == aOccurrence.hashId) ||
-              (item.parentItem.hashId == aOccurrence.hashId) ||
-              (item.hashId == aOccurrence.parentItem.hashId)) {
-              // terminate() will most probably create a modified item instance.
-              aOccurrence = job.finalize();
-              break;
-        }
-      }
-
-      return aOccurrence;
-    },
-
     /**
      * Modifies the given occurrence
      * @see calICalendarViewController
      */
     modifyOccurrence: function (aOccurrence, aNewStartTime, aNewEndTime, aNewTitle) {
-        let dlg = cal.findItemWindow(aOccurrence);
-        if (dlg) {
-            dlg.focus();
-            return;
-        }
-
-        aOccurrence = this.finalizePendingModification(aOccurrence);
-
         // if modifying this item directly (e.g. just dragged to new time),
         // then do so; otherwise pop up the dialog
         if (aNewStartTime || aNewEndTime || aNewTitle) {
             let instance = aOccurrence.clone();
 
             if (aNewTitle) {
                 instance.title = aNewTitle;
             }
@@ -530,17 +493,17 @@ var ccdCalendarViewController = {
                     if (aNewEndTime && instance.dueDate) {
                         instance.dueDate = aNewEndTime;
                     }
                 }
             }
 
             doTransaction('modify', instance, instance.calendar, aOccurrence, null);
         } else {
-            this.createPendingModification(aOccurrence);
+            modifyEventWithDialog(aOccurrence, null, true);
         }
     },
 
     /**
      * Deletes the given occurrences
      * @see calICalendarViewController
      */
     deleteOccurrences: function (aCount,
@@ -587,17 +550,16 @@ var ccdCalendarViewController = {
                     break;
                 }
             }
 
             // Now some dirty work: Make sure more than one occurrence can be
             // deleted by saving the recurring items and removing occurrences as
             // they come in. If this is not an occurrence, we can go ahead and
             // delete the whole item.
-            itemToDelete = this.finalizePendingModification(itemToDelete);
             if (itemToDelete.parentItem.hashId != itemToDelete.hashId) {
                 var savedItem = getSavedItem(itemToDelete);
                 savedItem.newItem.recurrenceInfo
                          .removeOccurrenceAt(itemToDelete.recurrenceId);
                 // Dont start the transaction yet. Do so later, in case the
                 // parent item gets modified more than once.
             } else {
                 doTransaction('delete', itemToDelete, itemToDelete.calendar, null, null);
diff -u8pdNr 1.5/chrome/locale/de/ccd-prefs.dtd 1.6/chrome/locale/de/ccd-prefs.dtd
--- 1.5/chrome/locale/de/ccd-prefs.dtd	2015-04-30 19:54:39 +0000
+++ 1.6/chrome/locale/de/ccd-prefs.dtd	2015-08-04 11:41:43 +0000
@@ -6,16 +6,22 @@
 <!ENTITY customcalendardefaults.preferences.prefspane.label "Custom Calendar Defaults - Einstellungen">
 <!ENTITY customcalendardefaults.preferences.events.title "Standardeinstellungen für neue Termine">
 <!ENTITY customcalendardefaults.preferences.ccdEventStatus.accesskey "">
 <!ENTITY customcalendardefaults.preferences.ccdEventStatus "Status">
 <!ENTITY customcalendardefaults.preferences.ccdEventStatusNone "Nicht angegeben">
 <!ENTITY customcalendardefaults.preferences.ccdEventStatusTentative "Vorläufig">
 <!ENTITY customcalendardefaults.preferences.ccdEventStatusConfirmed "Bestätigt">
 <!ENTITY customcalendardefaults.preferences.ccdEventStatusCancelled "Abgesagt">
+<!ENTITY customcalendardefaults.preferences.setEventPrivacy.label "Privatsphäre angeben">
+<!ENTITY customcalendardefaults.preferences.ccdEventPrivacy.accesskey "">
+<!ENTITY customcalendardefaults.preferences.ccdEventPrivacy "Privatsphäre">
+<!ENTITY customcalendardefaults.preferences.ccdEventPrivacyPrivate "Privater Termin">
+<!ENTITY customcalendardefaults.preferences.ccdEventPrivacyConfidential "Nur Zeit und Datum anzeigen">
+<!ENTITY customcalendardefaults.preferences.ccdEventPrivacyPublic "Öffentlicher Termin">
 <!ENTITY customcalendardefaults.preferences.ccdEventPriority.accesskey "">
 <!ENTITY customcalendardefaults.preferences.ccdEventPriority "Priorität">
 <!ENTITY customcalendardefaults.preferences.ccdEventPriorityNone "Nicht angegeben">
 <!ENTITY customcalendardefaults.preferences.ccdEventPriorityLow "Niedrig">
 <!ENTITY customcalendardefaults.preferences.ccdEventPriorityNormal "Normal">
 <!ENTITY customcalendardefaults.preferences.ccdEventPriorityHigh "Hoch">
 <!ENTITY customcalendardefaults.preferences.ccdEventShowTimeAs.accesskey "">
 <!ENTITY customcalendardefaults.preferences.setEventShowTimeAs.label "&quot;Zeit anzeigen als&quot; angeben">
@@ -24,25 +30,26 @@
 <!ENTITY customcalendardefaults.preferences.ccdEventShowTimeAsBusy "Beschäftigt">
 <!ENTITY customcalendardefaults.preferences.ccdAlldayEventShowTimeAs.label "Ganztägige Termine - Zeit anzeigen als">
 <!ENTITY customcalendardefaults.preferences.ccdAlldayEventShowTimeAs.accesskey "">
 <!ENTITY customcalendardefaults.preferences.ccdAlldayEventShowTimeAsFree "Verfügbar">
 <!ENTITY customcalendardefaults.preferences.ccdAlldayEventShowTimeAsBusy "Beschäftigt">
 <!ENTITY customcalendardefaults.preferences.tasks.title "Standardeinstellungen für neue Aufgaben">
 <!ENTITY customcalendardefaults.preferences.ccdTaskStatus.accesskey "">
 <!ENTITY customcalendardefaults.preferences.ccdTaskStatus "Status">
+<!ENTITY customcalendardefaults.preferences.setTaskPrivacy.label "Privatsphäre angeben">
+<!ENTITY customcalendardefaults.preferences.ccdTaskPrivacy.accesskey "">
+<!ENTITY customcalendardefaults.preferences.ccdTaskPrivacy "Privatsphäre">
+<!ENTITY customcalendardefaults.preferences.ccdTaskPrivacyPrivate "Privater Termin">
+<!ENTITY customcalendardefaults.preferences.ccdTaskPrivacyConfidential "Nur Zeit und Datum anzeigen">
+<!ENTITY customcalendardefaults.preferences.ccdTaskPrivacyPublic "Öffentlicher Termin">
 <!ENTITY customcalendardefaults.preferences.ccdTaskPriority.accesskey "">
 <!ENTITY customcalendardefaults.preferences.ccdTaskPriority "Priorität">
 <!ENTITY customcalendardefaults.preferences.ccdTaskPriorityNone "Nicht angegeben">
 <!ENTITY customcalendardefaults.preferences.ccdTaskPriorityLow "Niedrig">
 <!ENTITY customcalendardefaults.preferences.ccdTaskPriorityNormal "Normal">
 <!ENTITY customcalendardefaults.preferences.ccdTaskPriorityHigh "Hoch">
 <!ENTITY customcalendardefaults.preferences.ccdTaskStatusNone "Nicht angegeben">
 <!ENTITY customcalendardefaults.preferences.ccdTaskStatusAction "Benötigt Eingriff">
 <!ENTITY customcalendardefaults.preferences.ccdTaskStatusProcess "In Arbeit">
 <!ENTITY customcalendardefaults.preferences.ccdTaskStatusCompleted "Abgeschlossen am">
 <!ENTITY customcalendardefaults.preferences.ccdTaskStatusCancelled "Abgebrochen">
 <!ENTITY customcalendardefaults.preferences.resetButton "Zurücksetzen">
-<!ENTITY customcalendardefaults.preferences.ccdTaskShowTimeAs.accesskey "">
-<!ENTITY customcalendardefaults.preferences.setTaskShowTimeAs.label "&quot;Zeit anzeigen als&quot; angeben">
-<!ENTITY customcalendardefaults.preferences.ccdTaskShowTimeAs "Zeit anzeigen als">
-<!ENTITY customcalendardefaults.preferences.ccdTaskShowTimeAsFree "Verfügbar">
-<!ENTITY customcalendardefaults.preferences.ccdTaskShowTimeAsBusy "Beschäftigt">
diff -u8pdNr 1.5/chrome/locale/de/ccd-prefs.properties 1.6/chrome/locale/de/ccd-prefs.properties
--- 1.5/chrome/locale/de/ccd-prefs.properties	2015-04-30 19:55:00 +0000
+++ 1.6/chrome/locale/de/ccd-prefs.properties	2015-08-04 11:41:52 +0000
@@ -7,21 +7,27 @@ preferencesLabel=Einstellungen…
 eventPriorityNone.label=Nicht angegeben
 eventPriorityLow.label=Niedrig
 eventPriorityHigh.label=Hoch
 eventPriorityNormal.label=Normal
 eventStatusNone.label=Nicht angegeben
 eventStatusTentative.label=Vorläufig
 eventStatusConfirmed.label=Bestätigt
 eventStatusCancelled.label=Abgesagt
+eventPrivacyNone.label=Nicht angegeben
+eventPrivacyPrivate.label=Privater Termin
+eventPrivacyConfidential.label=Nur Zeit und Datum anzeigen
+eventPrivacyPublic.label=Öffentlicher Termin
 eventShowTimeAsFree.label=Verfügbar
 eventShowTimeAsBusy.label=Beschäftigt
 taskPriorityNone.label=Nicht angegeben
 taskPriorityLow.label=Niedrig
 taskPriorityHigh.label=Hoch
 taskPriorityNormal.label=Normal
 taskStatusNone.label=Nicht angegeben
 taskStatusAction.label=Benötigt Eingriff
 taskStatusProcess.label=In Arbeit
 taskStatusCompleted.label=Abgeschlossen am
 taskStatusCancelled.label=Abgebrochen
-taskShowTimeAsFree.label=Verfügbar
-taskShowTimeAsBusy.label=Beschäftigt
+taskPrivacyNone.label=Nicht angegeben
+taskPrivacyPrivate.label=Private Aufgabe
+taskPrivacyConfidential.label=Nur Zeit und Datum anzeigen
+taskPrivacyPublic.label=Öffentlicher Termin
diff -u8pdNr 1.5/chrome/locale/en-US/ccd-prefs.dtd 1.6/chrome/locale/en-US/ccd-prefs.dtd
--- 1.5/chrome/locale/en-US/ccd-prefs.dtd	2015-04-30 19:53:52 +0000
+++ 1.6/chrome/locale/en-US/ccd-prefs.dtd	2015-08-04 11:42:07 +0000
@@ -6,16 +6,22 @@
 <!ENTITY customcalendardefaults.preferences.prefspane.label "Custom Calendar Defaults - Preferences">
 <!ENTITY customcalendardefaults.preferences.events.title "Default Values for New Events">
 <!ENTITY customcalendardefaults.preferences.ccdEventStatus.accesskey "">
 <!ENTITY customcalendardefaults.preferences.ccdEventStatus "Status">
 <!ENTITY customcalendardefaults.preferences.ccdEventStatusNone "Not specified">
 <!ENTITY customcalendardefaults.preferences.ccdEventStatusTentative "Tentative">
 <!ENTITY customcalendardefaults.preferences.ccdEventStatusConfirmed "Confirmed">
 <!ENTITY customcalendardefaults.preferences.ccdEventStatusCancelled "Cancelled">
+<!ENTITY customcalendardefaults.preferences.ccdEventPrivacy.accesskey "">
+<!ENTITY customcalendardefaults.preferences.setEventPrivacy.label "Set privacy">
+<!ENTITY customcalendardefaults.preferences.ccdEventPrivacy "Privacy">
+<!ENTITY customcalendardefaults.preferences.ccdEventPrivacyPrivate "Private">
+<!ENTITY customcalendardefaults.preferences.ccdEventPrivacyConfidential "Confidential">
+<!ENTITY customcalendardefaults.preferences.ccdEventPrivacyPublic "Public">
 <!ENTITY customcalendardefaults.preferences.ccdEventPriority.accesskey "">
 <!ENTITY customcalendardefaults.preferences.ccdEventPriority "Priority">
 <!ENTITY customcalendardefaults.preferences.ccdEventPriorityNone "Not specified">
 <!ENTITY customcalendardefaults.preferences.ccdEventPriorityLow "Low">
 <!ENTITY customcalendardefaults.preferences.ccdEventPriorityNormal "Normal">
 <!ENTITY customcalendardefaults.preferences.ccdEventPriorityHigh "High">
 <!ENTITY customcalendardefaults.preferences.ccdEventShowTimeAs.accesskey "">
 <!ENTITY customcalendardefaults.preferences.setEventShowTimeAs.label "Set &quot;Show Time as&quot;">
@@ -24,25 +30,26 @@
 <!ENTITY customcalendardefaults.preferences.ccdEventShowTimeAsBusy "Busy">
 <!ENTITY customcalendardefaults.preferences.ccdAlldayEventShowTimeAs.label "Allday Events - Show Time as">
 <!ENTITY customcalendardefaults.preferences.ccdAlldayEventShowTimeAs.accesskey "">
 <!ENTITY customcalendardefaults.preferences.ccdAlldayEventShowTimeAsFree "Free">
 <!ENTITY customcalendardefaults.preferences.ccdAlldayEventShowTimeAsBusy "Busy">
 <!ENTITY customcalendardefaults.preferences.tasks.title "Default Values for New Tasks">
 <!ENTITY customcalendardefaults.preferences.ccdTaskStatus.accesskey "">
 <!ENTITY customcalendardefaults.preferences.ccdTaskStatus "Status">
+<!ENTITY customcalendardefaults.preferences.ccdTaskPrivacy.accesskey "">
+<!ENTITY customcalendardefaults.preferences.setTaskPrivacy.label "Set privacy">
+<!ENTITY customcalendardefaults.preferences.ccdTaskPrivacy "Privacy">
+<!ENTITY customcalendardefaults.preferences.ccdTaskPrivacyPrivate "Private">
+<!ENTITY customcalendardefaults.preferences.ccdTaskPrivacyConfidential "Confidential">
+<!ENTITY customcalendardefaults.preferences.ccdTaskPrivacyPublic "Public">
 <!ENTITY customcalendardefaults.preferences.ccdTaskPriority.accesskey "">
 <!ENTITY customcalendardefaults.preferences.ccdTaskPriority "Priority">
 <!ENTITY customcalendardefaults.preferences.ccdTaskPriorityNone "Not specified">
 <!ENTITY customcalendardefaults.preferences.ccdTaskPriorityLow "Low">
 <!ENTITY customcalendardefaults.preferences.ccdTaskPriorityNormal "Normal">
 <!ENTITY customcalendardefaults.preferences.ccdTaskPriorityHigh "High">
 <!ENTITY customcalendardefaults.preferences.ccdTaskStatusNone "Not specified">
 <!ENTITY customcalendardefaults.preferences.ccdTaskStatusAction "Needs Action">
 <!ENTITY customcalendardefaults.preferences.ccdTaskStatusProcess "In Process">
 <!ENTITY customcalendardefaults.preferences.ccdTaskStatusCompleted "Completed on">
 <!ENTITY customcalendardefaults.preferences.ccdTaskStatusCancelled "Cancelled">
 <!ENTITY customcalendardefaults.preferences.resetButton "Reset">
-<!ENTITY customcalendardefaults.preferences.ccdTaskShowTimeAs.accesskey "">
-<!ENTITY customcalendardefaults.preferences.setTaskShowTimeAs.label "Set &quot;Show Time as&quot;">
-<!ENTITY customcalendardefaults.preferences.ccdTaskShowTimeAs "Show Time as">
-<!ENTITY customcalendardefaults.preferences.ccdTaskShowTimeAsFree "Free">
-<!ENTITY customcalendardefaults.preferences.ccdTaskShowTimeAsBusy "Busy">
diff -u8pdNr 1.5/chrome/locale/en-US/ccd-prefs.properties 1.6/chrome/locale/en-US/ccd-prefs.properties
--- 1.5/chrome/locale/en-US/ccd-prefs.properties	2015-04-30 19:54:12 +0000
+++ 1.6/chrome/locale/en-US/ccd-prefs.properties	2015-08-04 11:42:15 +0000
@@ -7,21 +7,27 @@ preferencesLabel=Einstellungen…
 eventPriorityNone.label=Not specified
 eventPriorityLow.label=Low
 eventPriorityHigh.label=High
 eventPriorityNormal.label=Normal
 eventStatusNone.label=Not specified
 eventStatusTentative.label=Tentative
 eventStatusConfirmed.label=Confirmed
 eventStatusCancelled.label=Cancelled
+eventPrivacyNone.label=None
+eventPrivacyPrivate.label=Private
+eventPrivacyConfidential.label=Confidential
+eventPrivacyPublic.label=Public
 eventShowTimeAsFree.label=Free
 eventShowTimeAsBusy.label=Busy
 taskPriorityNone.label=Not specified
 taskPriorityLow.label=Low
 taskPriorityHigh.label=High
 taskPriorityNormal.label=Normal
 taskStatusNone.label=Not specified
 taskStatusAction.label=Needs Action
 taskStatusProcess.label=In Process
 taskStatusCompleted.label=Completed on
 taskStatusCancelled.label=Cancelled
-taskShowTimeAsFree.label=Free
-taskShowTimeAsBusy.label=Busy
+taskPrivacyNone.label=None
+taskPrivacyPrivate.label=Private
+taskPrivacyConfidential.label=Confidential
+taskPrivacyPublic.label=Public
diff -u8pdNr 1.5/defaults/preferences/customcalendardefaults.js 1.6/defaults/preferences/customcalendardefaults.js
--- 1.5/defaults/preferences/customcalendardefaults.js	2015-04-30 19:55:30 +0000
+++ 1.6/defaults/preferences/customcalendardefaults.js	2015-08-04 11:39:51 +0000
@@ -1,10 +1,13 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 pref("extensions.customcalendardefaults.event.status", "");
+pref("extensions.customcalendardefaults.event.privacy", false);
+pref("extensions.customcalendardefaults.event.privacy.state", "");
 pref("extensions.customcalendardefaults.event.priority", "0");
 pref("extensions.customcalendardefaults.task.status", "");
+pref("extensions.customcalendardefaults.task.privacy", false);
+pref("extensions.customcalendardefaults.task.privacy.state", "");
 pref("extensions.customcalendardefaults.task.priority", "0");
-pref("extensions.customcalendardefaults.task.showTimeAs", false);
-pref("extensions.customcalendardefaults.task.showTimeAs.state", "");
+pref("extensions.customcalendardefaults.sogoconflict", false);
diff -u8pdNr 1.5/install.rdf 1.6/install.rdf
--- 1.5/install.rdf	2015-04-29 20:52:30 +0000
+++ 1.6/install.rdf	2015-08-04 17:35:27 +0000
@@ -4,17 +4,17 @@
    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
 
 <RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
      xmlns:em="http://www.mozilla.org/2004/em-rdf#">
 
   <Description about="urn:mozilla:install-manifest">
     <em:name>Custom Calendar Defaults</em:name>
     <em:id>customcalendardefaults@nadelundhirn.de</em:id>
-    <em:version>1.5</em:version>
+    <em:version>1.6</em:version>
 
     <em:localized>
       <Description>
         <em:locale>de-DE</em:locale>
         <em:name>Custom Calendar Defaults</em:name>
         <em:creator>Robert Brand</em:creator>
         <em:description>Voreinstellungen für Termine und Aufgaben anpassen</em:description>
         <em:homepageURL>http://www.nadelundhirn.de/wp/tag/custom-calendar-defaults/</em:homepageURL>
