1 /* ***** BEGIN LICENSE BLOCK *****
  2  * Version: MPL 1.1/GPL 2.0/LGPL 2.1
  3  *
  4  * The contents of this file are subject to the Mozilla Public License Version
  5  * 1.1 (the "License"); you may not use this file except in compliance with
  6  * the License. You may obtain a copy of the License at
  7  * http://www.mozilla.org/MPL/
  8  *
  9  * Software distributed under the License is distributed on an "AS IS" basis,
 10  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
 11  * for the specific language governing rights and limitations under the
 12  * License.
 13  *
 14  * The Original Code is gContactSync.
 15  *
 16  * The Initial Developer of the Original Code is
 17  * Josh Geenen <gcontactsync@pirules.org>.
 18  * Portions created by the Initial Developer are Copyright (C) 2008-2009
 19  * the Initial Developer. All Rights Reserved.
 20  *
 21  * Contributor(s):
 22  *
 23  * Alternatively, the contents of this file may be used under the terms of
 24  * either the GNU General Public License Version 2 or later (the "GPL"), or
 25  * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
 26  * in which case the provisions of the GPL or the LGPL are applicable instead
 27  * of those above. If you wish to allow use of your version of this file only
 28  * under the terms of either the GPL or the LGPL, and not to allow others to
 29  * use your version of this file under the terms of the MPL, indicate your
 30  * decision by deleting the provisions above and replace them with the notice
 31  * and other provisions required by the GPL or the LGPL. If you do not delete
 32  * the provisions above, a recipient may use your version of this file under
 33  * the terms of any one of the MPL, the GPL or the LGPL.
 34  *
 35  * ***** END LICENSE BLOCK ***** */
 36 
 37 if (!com) var com = {}; // A generic wrapper variable
 38 // A wrapper for all GCS functions and variables
 39 if (!com.gContactSync) com.gContactSync = {};
 40 
 41 /**
 42  * GMailList is an abstraction of a mailing list that facilitates getting the
 43  * cards contained within the actual list as well as accessing and modifying the
 44  * list and its properties.
 45  *
 46  * @param aList {Ci.nsIAbDirectory}       The actual nsIAbDirectory
 47  *                                        representation of a mailing list.
 48  * @param aParentDirectory {GAddressBook} The parent directory (as an
 49  *                                        AddressBook object) containing this
 50  *                                        mailing list.
 51  * @param aNew             {boolean}      Set as true for new mailing lists where
 52  *                                        no attempt should be made to fetch the
 53  *                                        contacts contained in the list.
 54  * @extends com.gContactSync.MailList
 55  * @constructor
 56  * @class
 57  */
 58 com.gContactSync.GMailList = function gCS_GMailList(aList, aParentDirectory, aNew) {
 59   // Make a new MailList object and copy everything over
 60   var list = new com.gContactSync.MailList(aList, aParentDirectory, aNew),
 61       i;
 62   for (i in list) {
 63     if (!this[i]) {
 64       this[i] = list[i];
 65     }
 66   }
 67   this.mListObj = list;
 68 };
 69 
 70 com.gContactSync.GMailList.prototype = {
 71   /**
 72    * Gets and returns the ID of the group in Google with which this Mail List
 73    * is synchronized, if any.  If not found, returns "no id found" with a space
 74    * and the current time in microseconds since the epoch.
 75    * @returns The ID of the group with which this directory is synchronized.
 76    */
 77   getGroupID: function GMailList_getGroupID() {
 78     // first see if the nickname is the group id
 79     var id = this.getNickName();
 80     if (id.indexOf("www.google.com/m8/feeds/groups") === -1) {
 81       id = this.getDescription(); // if it isn't, get the description
 82     }
 83     // finally, set it as "no id found" with the current time
 84     if (id.indexOf("www.google.com/m8/feeds/groups") === -1) {
 85       id = "no id found " + (new Date()).getTime();
 86     }
 87     return com.gContactSync.fixURL(id);
 88   },
 89   /**
 90    * Sets the ID of the group in Google with which this Mail List is
 91    * synchronized.
 92    * @returns The ID of the group with which this directory is synchronized.
 93    */
 94   setGroupID: function GMailList_setGroupID(aGroupID) {
 95     this.setNickName(aGroupID);
 96   }
 97 };
 98