basic view event selection

This commit is contained in:
vladimir%pobox.com 2005-04-24 04:45:57 +00:00
parent 599dfa411c
commit c8dff7c48f
3 changed files with 83 additions and 0 deletions

View File

@ -82,6 +82,10 @@ textbox.editable-label {
-moz-appearance: none;
}
calendar-event-box.selected .calendar-event-box-container {
background: #ffdb67 !important;
}
/*== calendar-event-gripbar ==*/
calendar-event-gripbar {

View File

@ -373,6 +373,51 @@
<!-- methods -->
<method name="selectOccurrence">
<parameter name="aOccurrence"/>
<body><![CDATA[
// if we're being asked to unselect, and we
// don't have a selection, return.
if (aOccurrence == null && !this.mCurrentSelection)
return;
if (this.mCurrentSelection) {
// XXX FIXME don't unconditionally removeAttribute("class"), instead
// just remove the "selected" class.
this.mCurrentSelection.eventbox.removeAttribute("class");
this.mCurrentSelection = null;
}
if (aOccurrence) {
var chunk = this.findChunkForOccurrence(aOccurrence);
if (!chunk) {
dump ("++ Couldn't find chunk to select!!!\n");
return;
}
chunk.eventbox.setAttribute("class", "selected");
this.mCurrentSelection = chunk;
}
]]></body>
</method>
<method name="findChunkForOccurrence">
<parameter name="aOccurrence"/>
<body><![CDATA[
for each (chunk in this.mEvents) {
if (chunk.event.item == aOccurrence.item &&
chunk.event.occurrenceStartDate.compare(aOccurrence.occurrenceStartDate) == 0 &&
chunk.event.occurrenceEndDate.compare(aOccurrence.occurrenceEndDate) == 0)
{
return chunk;
}
}
return null;
]]></body>
</method>
<method name="setAttribute">
<parameter name="aAttr"/>
<parameter name="aVal"/>
@ -572,6 +617,8 @@
chunkBox.calendarView = this.calendarView;
chunkBox.occurrence = chunk.event.event;
chunk.event.eventbox = chunkBox;
} else {
var chunkBox = createXULElement("spacer");
chunkBox.setAttribute("orient", orient);
@ -1041,6 +1088,7 @@
<handlers>
<handler event="mousedown">
dump ("event select\n");
this.calendarView.selectedOccurrence = this.mOccurrence;
event.preventBubble();
</handler>
@ -1094,6 +1142,7 @@
<field name="mDateColumns">null</field>
<field name="mBatchCount">0</field>
<field name="mPixPerMin">0.6</field>
<field name="mSelectedOccurrence">null</field>
<field name="mObserver"><![CDATA[
// the calIObserver, and calICompositeObserver
@ -1316,6 +1365,30 @@
]]></body>
</method>
<property name="selectedOccurrence">
<getter><![CDATA[
return this.mSelectedOccurrence;
]]></getter>
<setter><![CDATA[
if (this.mSelectedOccurrence != val) {
if (this.mSelectedOccurrence) {
var col = this.findColumnForEvent(this.mSelectedOccurrence);
col.column.selectOccurrence(null);
}
if (val) {
var col = this.findColumnForEvent(val);
if (col)
col.column.selectOccurrence(val);
else
val = null;
}
return (this.mSelectedOccurrence = val);
}
]]></setter>
</property>
<property name="pixelsPerMinute">
<getter>return this.mPixPerMin</getter>
<setter>this.setPixelsPerMin(val); return val;</setter>

View File

@ -42,6 +42,7 @@
interface calICalendar;
interface calIDateTime;
interface calICalendarViewController;
interface calIItemOccurrence;
[scriptable, uuid(be9b4f26-2475-4aeb-9b46-e165fc0809fb)]
interface calICalendarView : nsISupports
@ -100,4 +101,9 @@ interface calICalendarView : nsISupports
* day and return the full set.
*/
void getDateList(out unsigned long aCount, [array,size_is(aCount),retval] out calIDateTime aDates);
/**
* Get or set the selected occurrence. Only one occurrence may be selected.
*/
attribute calIItemOccurrence selectedOccurrence;
};