summaryrefslogtreecommitdiffstats
path: root/comm/calendar/base/public/calICalendarView.idl
blob: d9024d21e9737ce917459b390a566811d60d4056 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
/* 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/. */


#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.
 */

[scriptable, uuid(0e392744-4b2e-4b64-8862-2fb707d900a7)]
interface calICalendarView : nsISupports
{

  /**
   * Oftentimes other elements in the DOM in which a calIDecoratedView is
   * used want to be aware of whether or not the view is selected.  An element
   * whose ID is observerID can be included in that DOM, and will be set to be
   * enabled or disabled depending on whether the view is selected.
   */
  readonly attribute AUTF8String observerID;

  /**
   * the controller for this view
   */
  attribute calICalendarViewController controller;

  /**
   * If true, the view supports workdays only
   */
  readonly attribute boolean supportsWorkdaysOnly;

  /**
   * If this is set to 'true', the view should not display days specified to be
   * non-workdays.  The implementor is responsible for obtaining what those
   * days are on its own.
   */
  attribute boolean workdaysOnly;

  /**
   * Whether or not tasks are to be displayed in the calICalendarView
   */
  attribute boolean tasksInView;

  /**
   * If true, the view is rotatable
   */
  readonly attribute boolean supportsRotation;

  /**
   * If set, the view will be rotated (i.e time on top, date at left)
   */
  attribute boolean rotated;

  /**
   * If true, the view is zoomable
   */
  readonly attribute boolean supportsZoom;

  /**
   * Zoom view in one level. Defaults to one level.
   */
  void zoomIn([optional] in uint32_t level);

  /**
   * Zoom view out one level. Defaults to one level.
   */
  void zoomOut([optional] in uint32_t level);

  /**
   * Reset view zoom.
   */
  void zoomReset();

  /**
   * Whether or not completed tasks are shown in the calICalendarView
   */
  attribute boolean showCompleted;

  /**
   * 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;

  /**
   * The first day shown in the embedded view
   */
  readonly attribute calIDateTime startDay;

  /**
   * The last day shown in the embedded view
   */
  readonly attribute calIDateTime endDay;

  /**
   * 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;

  /**
   * 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.
   */
  Array<calIDateTime> getDateList();

  /**
   * Get the items currently selected in this view.
   *
   * @return the array of items currently selected in this.
   */
  Array<calIItemBase> getSelectedItems();

   /**
    * 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 Array<calIItemBase> aItems, [optional] in boolean aSuppressEvent);

  /**
   * Make as many of the selected items as possible are visible in the view.
   */
  void centerSelectedItems();

  /**
   * 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;

  /**
   * Ensures that the given date is visible, and that the view is centered
   * around this date.  aDate becomes the selectedDay of the view.  Calling
   * this function with the current selectedDay effectively refreshes the view
   *
   * @param aDate       the date that must be shown in the view and becomes
   *                    the selected day
   */
  void goToDay(in calIDateTime aDate);

  /**
   * Moves the view a specific number of pages.  Negative numbers correspond to
   * moving the view backwards.  Note that it is up to the view to determine
   * how the selected day ought to move as well.
   *
   * @param aNumber       the number of pages to move the view
   */
  void moveView(in long aNumber);

  /**
   * gets the description of the range displayed by the view
   */
  AString getRangeDescription();

  /**
   * The type of the view e.g "day", "week", "multiweek" or "month" that refers
   * to the displayed time period.
   */
  readonly attribute string type;
  /**
   * removes the dropshadows that are inserted into childelements during a
   * drag and drop session
   */

  void removeDropShadows();
};