- Update the calendar sidebar to include an "agenda" view, currently

filled with temporary sample data.

- Replace "new calendar" context entry (indeed, whole menu) with buttons
  for new, edit, delete.

- Wire up new, edit, delete of calendars.

- Make sure that we register our calendarManager listeners early, so that
  we see new calendars being created, if that's the first thing that happens.
This commit is contained in:
shaver%mozilla.org 2005-04-27 15:56:18 +00:00
parent 748c3496e3
commit ea186dd056
4 changed files with 132 additions and 17 deletions

View File

@ -80,6 +80,9 @@ var ltnCalendarViewController = {
},
createNewEvent: function (aCalendar, aStartTime, aEndTime) {
// XXX If we're adding an item from the view, let's make sure that
// XXX the calendar in question is visible!
// if we're given both times, skip the dialog
if (aStartTime && aEndTime && !aStartTime.isDate && !aEndTime.isDate) {
var event = createEvent();
@ -161,6 +164,18 @@ function ltnNewCalendar()
openCalendarWizard(ltnSetTreeView);
}
function ltnRemoveCalendar(cal)
{
// XXX in the future, we should ask the user if they want to delete the
// XXX files associated with this calendar or not!
getCalendarManager().unregisterCalendar(cal);
}
function ltnEditCalendarProperties(cal)
{
return openCalendarProperties(cal, function() { });
}
var ltnCalendarTreeView = {
get rowCount()
{
@ -257,3 +272,5 @@ function ltnSetTreeView()
}
window.addEventListener("load", ltnSetTreeView, false);
// Wire up the calendar observers.
window.addEventListener("load", getCalendarManager, false);

View File

@ -1,3 +1,26 @@
function ltnSidebarCalendarSelected(tree)
{
var disabled = tree.view.selection.count == 0;
document.getElementById("cal-sidebar-edit-calendar").disabled = disabled;
document.getElementById("cal-sidebar-delete-calendar").disabled = disabled;
}
function ltnSelectedCalendar()
{
var index = document.getElementById("calendarTree").currentIndex;
return getCalendars()[index];
}
function ltnDeleteSelectedCalendar()
{
ltnRemoveCalendar(ltnSelectedCalendar());
}
function ltnEditSelectedCalendar()
{
ltnEditCalendarProperties(ltnSelectedCalendar());
}
function selectedCalendarPane(event)
{
dump("selecting calendar pane\n");

View File

@ -19,23 +19,96 @@
<vbox id="folderPaneBox">
<splitter id="folderpaneCalendarSplitter" collapse="after" persist="state"/>
<popupset>
<popup id="ltnCalendarTreeContext" onpopupshowing="return true;">
<menuitem id="ltnCalendarTreeContext-newCalendar"
label="New Calendar"
oncommand="ltnNewCalendar();"/>
</popup>
</popupset>
<tree id="calendarTree" onfocus="selectedCalendarPane(event)" flex="1"
context="ltnCalendarTreeContext">
<treecols>
<treecol id="col-calendar-Checkbox" cycler="true" fixed="true" />
<treecol id="col-calendar-Calendar" label="Calendar" flex="1"/>
</treecols>
<treechildren>
</treechildren>
</tree>
<tabbox flex="1">
<tabs>
<tab label="Agenda"/>
<tab label="Calendars"/>
</tabs>
<tabpanels flex="1">
<vbox>
<hbox>
<spacer flex="1"/>
<label value="View:"/>
<menulist label="View" oncommand="updateAgendaView(this);">
<menupopup>
<menuitem label="All"/>
<menuitem label="Events"/>
<menuitem label="Tasks"/>
<menuitem label="Reminders"/>
<menuseparator/>
<menuitem label="Home"/>
<menuitem label="Work"/>
<menuseparator/>
<menuitem value="customize" label="Customize..."/>
</menupopup>
</menulist>
<spacer/>
</hbox>
<deck id="agenda-viewcustomize-deck" selectedIndex="0" flex="1">
<tree id="agendaTree" hidecolumnpicker="true" flex="1">
<treecols>
<treecol id="col-agenda-item" primary="true" label="Item" flex="3"/>
<treecol id="col-agenda-when" label="" flex="1"/>
</treecols>
<treechildren>
<!-- sample tree content temporary -->
<treeitem container="true" open="false">
<treerow><treecell label="Recent (1)"/></treerow>
<treechildren>
<treeitem><treerow><treecell label="File expenses"/><treecell label="Sun"/></treerow></treeitem>
</treechildren>
</treeitem>
<treeitem container="true" open="true">
<treerow><treecell label="Today (2)"/></treerow>
<treechildren>
<treeitem><treerow><treecell label="Meeting"/><treecell label="11am"/></treerow></treeitem>
<treeitem><treerow><treecell label="Lunch"/><treecell label="12:30am"/></treerow></treeitem>
</treechildren>
</treeitem>
<treeitem container="true" open="false">
<treerow><treecell label="Tomorrow (2)"/></treerow>
<treechildren>
<treeitem><treerow><treecell label="Lunch with Dad"/><treecell label="11:30am"/></treerow></treeitem>
<treeitem><treerow><treecell label="Accountant"/><treecell label="2pm"/></treerow></treeitem>
</treechildren>
</treeitem>
<treeitem container="true" open="false">
<treerow><treecell label="Upcoming (3)"/></treerow>
<treechildren>
<treeitem><treerow><treecell label="OC Night"/><treecell label="Thu 7:30pm"/></treerow></treeitem>
<treeitem><treerow><treecell label="ZISC presentation"/><treecell label="May 24"/></treerow></treeitem>
<treeitem><treerow><treecell label="Retirement"/><treecell label="2025"/></treerow></treeitem>
</treechildren>
</treeitem>
<!-- end sample tree content. temporary -->
</treechildren>
</tree>
<label value="Customize yer views!"/>
</deck>
</vbox> <!-- end of agenda tab panel -->
<vbox flex="1">
<hbox>
<button label="New..." oncommand="ltnNewCalendar();"/>
<button id="cal-sidebar-edit-calendar" label="Edit..." disabled="true" oncommand="ltnEditSelectedCalendar();"/>
<spacer orient="horizontal" flex="5"/>
<button id="cal-sidebar-delete-calendar" label="Delete" disabled="true" oncommand="ltnDeleteSelectedCalendar();"/>
</hbox>
<tree id="calendarTree" hidecolumnpicker="true" seltype="single" onfocus="selectedCalendarPane(event)" flex="1" onselect="ltnSidebarCalendarSelected(this);">
<treecols>
<treecol id="col-calendar-Checkbox" cycler="true" fixed="true" />
<treecol id="col-calendar-Calendar" label="Calendar" flex="1"/>
</treecols>
<treechildren>
</treechildren>
</tree>
</vbox>
</tabpanels>
</tabbox>
</vbox>
<deck id="displayDeck">

View File

@ -9,6 +9,8 @@ en-US.jar:
locale/en-US/lightning/lightning.dtd (locale/lightning.dtd)
calendar.jar:
content/calendar/calendarProperties.xul (/calendar/resources/content/calendarProperties.xul)
content/calendar/calendarProperties.js (/calendar/resources/content/calendarProperties.js)
content/calendar/calendarCreation.xul (/calendar/resources/content/calendarCreation.xul)
content/calendar/calendarCreation.js (/calendar/resources/content/calendarCreation.js)
content/calendar/calendarUtils.js (/calendar/resources/content/calendarUtils.js)