/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ /* ***** BEGIN LICENSE BLOCK ***** * Version: MPL 1.1/GPL 2.0/LGPL 2.1 * * The contents of this file are subject to the Mozilla Public License Version * 1.1 (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License * for the specific language governing rights and limitations under the * License. * * The Original Code is calendar views. * * The Initial Developer of the Original Code is * Oracle Corporation * Portions created by the Initial Developer are Copyright (C) 2005 * the Initial Developer. All Rights Reserved. * * Contributor(s): * Vladimir Vukicevic * Dan Mosedale * * Alternatively, the contents of this file may be used under the terms of * either the GNU General Public License Version 2 or later (the "GPL"), or * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), * in which case the provisions of the GPL or the LGPL are applicable instead * of those above. If you wish to allow use of your version of this file only * under the terms of either the GPL or the LGPL, and not to allow others to * use your version of this file under the terms of the MPL, indicate your * decision by deleting the provisions above and replace them with the notice * and other provisions required by the GPL or the LGPL. If you do not delete * the provisions above, a recipient may use your version of this file under * the terms of any one of the MPL, the GPL or the LGPL. * * ***** END LICENSE BLOCK ***** */ #include "nsISupports.idl" interface calICalendar; interface calIDateTime; interface calICalendarViewController; interface calIItemBase; /** * An interface for view widgets containing calendaring data. * * @note Code that implements this interface is intended to be pure * widgetry and thus not have any preference dependencies. * Preferences and pref observers should live in the decorated views. */ [scriptable, uuid(3e567ccb-2ecf-4f59-b7ca-bf42b0fbf24a)] interface calICalendarView : nsISupports { /** * the calendar that this view is displaying */ attribute calICalendar displayCalender; /** * the controller for this view */ attribute calICalendarViewController controller; /** * Ensure that the given date is visible; the view is free * to show more dates than the given date (e.g. week view * would show the entire week). */ void showDate(in calIDateTime aDate); /** * Set a date range for the view to display, from aStartDate * to aEndDate, inclusive. * * Some views may decide to utilize the time portion of these * calIDateTimes; pass in calIDateTimes that are dates if you * want to make sure this doesn't happen. */ void setDateRange(in calIDateTime aStartDate, in calIDateTime aEndDate); /** * The start date of the view's display. If the view is displaying * disjoint dates, this will be the earliest date that's displayed. */ readonly attribute calIDateTime startDate; /** * The end date of the view's display. If the view is displaying * disjoint dates, this will be the latest date that's displayed. * * Note that this won't be equivalent to the aEndDate passed to * setDateRange, because that date isn't actually displayed! */ readonly attribute calIDateTime endDate; /** * True if this view supports disjoint dates */ readonly attribute boolean supportsDisjointDates; /** * True if this view currently has a disjoint date set. */ readonly attribute boolean hasDisjointDates; /** * Set a disjoint date list for this view to show. Throws * if supportsDisjointDates is false for this view. */ void setDateList(in unsigned long aCount, [array,size_is(aCount)] in calIDateTime aDates); /** * Returns the list of dates being shown by this calendar. * If a date range is set, it will expand out the date range by * day and return the full set. */ void getDateList(out unsigned long aCount, [array,size_is(aCount),retval] out calIDateTime aDates); /** * Get the items currently selected in this view. * * @param aCount a variable to hold the number of items in this array * * @return the array of items currently selected in this. */ void getSelectedItems(out unsigned long aCount, [array,size_is(aCount),retval] out calIItemBase aItems); /** * Select an array of items in the view. Items outside the view's current * display range will be ignored. * * @param aCount the number of items to select * @param aItems an array of items to select * @param aSuppressEvent if true, the 'itemselect' event will not be fired. */ void setSelectedItems(in unsigned long aCount, [array,size_is(aCount)] in calIItemBase aItems, in boolean aSuppressEvent); /** * Get or set the selected day. */ attribute calIDateTime selectedDay; /** * Get or set the timezone that the view's elements should be displayed in. * Setting this does not refresh the view. */ attribute AUTF8String timezone; };