Bug 1554648 - [de-xbl] convert the calendar-subscriptions-richlistitem binding to custom element. r=philipp
--HG-- rename : calendar/base/content/widgets/calendar-subscriptions-list.xml => calendar/base/content/widgets/calendar-subscriptions-list.js
This commit is contained in:
Родитель
761d4c7547
Коммит
5a28192d7e
|
@ -2,7 +2,6 @@
|
||||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
* 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/. */
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||||
|
|
||||||
calendar-subscriptions-richlistitem {
|
richlistitem[is="calendar-subscriptions-richlistitem"] {
|
||||||
-moz-binding: url("chrome://calendar/content/calendar-subscriptions-list.xml#calendar-subscriptions-richlistitem");
|
|
||||||
-moz-user-focus: normal;
|
-moz-user-focus: normal;
|
||||||
}
|
}
|
||||||
|
|
|
@ -103,7 +103,8 @@ function onSearch() {
|
||||||
onResult: function(operation, result) {
|
onResult: function(operation, result) {
|
||||||
if (result) {
|
if (result) {
|
||||||
for (let calendar of result) {
|
for (let calendar of result) {
|
||||||
let newNode = document.createXULElement("calendar-subscriptions-richlistitem");
|
let newNode = document.createXULElement("richlistitem",
|
||||||
|
{ is: "calendar-subscriptions-richlistitem" });
|
||||||
newNode.calendar = calendar;
|
newNode.calendar = calendar;
|
||||||
newNode.subscribed = registeredCals[calendar.id];
|
newNode.subscribed = registeredCals[calendar.id];
|
||||||
richListBox.appendChild(newNode);
|
richListBox.appendChild(newNode);
|
||||||
|
|
|
@ -27,6 +27,7 @@
|
||||||
<!-- Javascript includes -->
|
<!-- Javascript includes -->
|
||||||
<script src="chrome://calendar/content/calendar-subscriptions-dialog.js"/>
|
<script src="chrome://calendar/content/calendar-subscriptions-dialog.js"/>
|
||||||
<script src="chrome://calendar/content/calendar-ui-utils.js"/>
|
<script src="chrome://calendar/content/calendar-ui-utils.js"/>
|
||||||
|
<script src="chrome://calendar/content/calendar-subscriptions-list.js"/>
|
||||||
|
|
||||||
<vbox flex="1">
|
<vbox flex="1">
|
||||||
<grid flex="1">
|
<grid flex="1">
|
||||||
|
|
|
@ -0,0 +1,96 @@
|
||||||
|
/* 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/. */
|
||||||
|
|
||||||
|
"use strict";
|
||||||
|
|
||||||
|
/* global MozXULElement, MozElements */
|
||||||
|
|
||||||
|
// This is loaded into all XUL windows. Wrap in a block to prevent
|
||||||
|
// leaking to window scope.
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* The MozCalendarSubscriptionsRichlistitem widget is used to display the
|
||||||
|
* calendar details: i.e. checkbox and label as a richlistitem in the calendar
|
||||||
|
* subscriptions richlistbox.
|
||||||
|
*
|
||||||
|
* @extends {MozElements.MozRichlistitem}
|
||||||
|
*/
|
||||||
|
class MozCalendarSubscriptionsRichlistitem extends MozElements.MozRichlistitem {
|
||||||
|
connectedCallback() {
|
||||||
|
if (this.delayConnectedCallback() || this.hasChildNodes()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.setAttribute("is", "calendar-subscriptions-richlistitem");
|
||||||
|
|
||||||
|
this.appendChild(MozXULElement.parseXULToFragment(`
|
||||||
|
<hbox flex="1" align="center">
|
||||||
|
<checkbox class="calendar-subscriptions-richlistitem-checkbox"></checkbox>
|
||||||
|
<label class="subscription-name" flex="1" crop="end"></label>
|
||||||
|
</hbox>
|
||||||
|
`));
|
||||||
|
|
||||||
|
this.mCalendar = null;
|
||||||
|
this.mSubscribed = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
set calendar(val) {
|
||||||
|
this.setCalendar(val);
|
||||||
|
return val;
|
||||||
|
}
|
||||||
|
|
||||||
|
get calendar() {
|
||||||
|
return this.mCalendar;
|
||||||
|
}
|
||||||
|
|
||||||
|
set subscribed(val) {
|
||||||
|
this.mSubscribed = val;
|
||||||
|
this.checked = val;
|
||||||
|
return val;
|
||||||
|
}
|
||||||
|
|
||||||
|
get subscribed() {
|
||||||
|
return this.mSubscribed;
|
||||||
|
}
|
||||||
|
|
||||||
|
set checked(val) {
|
||||||
|
let checkbox = this.querySelector(".calendar-subscriptions-richlistitem-checkbox");
|
||||||
|
if (val) {
|
||||||
|
checkbox.setAttribute("checked", "true");
|
||||||
|
} else {
|
||||||
|
checkbox.removeAttribute("checked");
|
||||||
|
}
|
||||||
|
return val;
|
||||||
|
}
|
||||||
|
|
||||||
|
get checked() {
|
||||||
|
let checkbox = this.querySelector(".calendar-subscriptions-richlistitem-checkbox");
|
||||||
|
return checkbox.getAttribute("disabled") == "true";
|
||||||
|
}
|
||||||
|
|
||||||
|
set disabled(val) {
|
||||||
|
let checkbox = this.querySelector(".calendar-subscriptions-richlistitem-checkbox");
|
||||||
|
if (val) {
|
||||||
|
checkbox.setAttribute("disabled", "true");
|
||||||
|
} else {
|
||||||
|
checkbox.removeAttribute("disabled");
|
||||||
|
}
|
||||||
|
return val;
|
||||||
|
}
|
||||||
|
|
||||||
|
get disabled() {
|
||||||
|
let checkbox = this.querySelector(".calendar-subscriptions-richlistitem-checkbox");
|
||||||
|
return checkbox.getAttribute("disabled") == "true";
|
||||||
|
}
|
||||||
|
|
||||||
|
setCalendar(aCalendar) {
|
||||||
|
this.mCalendar = aCalendar;
|
||||||
|
let label = this.querySelector(".subscription-name");
|
||||||
|
label.setAttribute("value", aCalendar.name);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
customElements.define("calendar-subscriptions-richlistitem", MozCalendarSubscriptionsRichlistitem,
|
||||||
|
{ extends: "richlistitem" });
|
||||||
|
}
|
|
@ -1,102 +0,0 @@
|
||||||
<?xml version="1.0"?>
|
|
||||||
<!-- 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/.
|
|
||||||
-->
|
|
||||||
|
|
||||||
<bindings id="calendar-subscriptions-list-bindings"
|
|
||||||
xmlns="http://www.mozilla.org/xbl"
|
|
||||||
xmlns:html="http://www.w3.org/1999/xhtml"
|
|
||||||
xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
|
|
||||||
xmlns:xbl="http://www.mozilla.org/xbl">
|
|
||||||
|
|
||||||
<binding id="calendar-subscriptions-richlistitem"
|
|
||||||
extends="chrome://global/content/bindings/richlistbox.xml#richlistitem">
|
|
||||||
<content>
|
|
||||||
<xul:hbox flex="1">
|
|
||||||
<xul:checkbox anonid="subscription-checkbox" class="calendar-subscriptions-richlistitem-checkbox"/>
|
|
||||||
<xul:label anonid="subscription-name" flex="1" crop="end"/>
|
|
||||||
</xul:hbox>
|
|
||||||
</content>
|
|
||||||
|
|
||||||
<implementation>
|
|
||||||
<field name="mCalendar">null</field>
|
|
||||||
<field name="mSubscribed">false</field>
|
|
||||||
|
|
||||||
<property name="calendar">
|
|
||||||
<getter><![CDATA[
|
|
||||||
return this.mCalendar;
|
|
||||||
]]></getter>
|
|
||||||
<setter><![CDATA[
|
|
||||||
this.setCalendar(val);
|
|
||||||
return val;
|
|
||||||
]]></setter>
|
|
||||||
</property>
|
|
||||||
|
|
||||||
<property name="subscribed">
|
|
||||||
<getter><![CDATA[
|
|
||||||
return this.mSubscribed;
|
|
||||||
]]></getter>
|
|
||||||
<setter><![CDATA[
|
|
||||||
this.mSubscribed = val;
|
|
||||||
this.checked = val;
|
|
||||||
return val;
|
|
||||||
]]></setter>
|
|
||||||
</property>
|
|
||||||
|
|
||||||
<property name="checked">
|
|
||||||
<getter><![CDATA[
|
|
||||||
let checkbox = document.getAnonymousElementByAttribute(
|
|
||||||
this, "anonid", "subscription-checkbox");
|
|
||||||
if (checkbox.getAttribute("checked") == "true") {
|
|
||||||
return true;
|
|
||||||
} else {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
]]></getter>
|
|
||||||
<setter><![CDATA[
|
|
||||||
let checkbox = document.getAnonymousElementByAttribute(
|
|
||||||
this, "anonid", "subscription-checkbox");
|
|
||||||
if (val) {
|
|
||||||
checkbox.setAttribute("checked", "true");
|
|
||||||
} else {
|
|
||||||
checkbox.removeAttribute("checked");
|
|
||||||
}
|
|
||||||
return val;
|
|
||||||
]]></setter>
|
|
||||||
</property>
|
|
||||||
|
|
||||||
<property name="disabled">
|
|
||||||
<getter><![CDATA[
|
|
||||||
let checkbox = document.getAnonymousElementByAttribute(
|
|
||||||
this, "anonid", "subscription-checkbox");
|
|
||||||
if (checkbox.getAttribute("disabled") == "true") {
|
|
||||||
return true;
|
|
||||||
} else {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
]]></getter>
|
|
||||||
<setter><![CDATA[
|
|
||||||
let checkbox = document.getAnonymousElementByAttribute(
|
|
||||||
this, "anonid", "subscription-checkbox");
|
|
||||||
if (val) {
|
|
||||||
checkbox.setAttribute("disabled", "true");
|
|
||||||
} else {
|
|
||||||
checkbox.removeAttribute("disabled");
|
|
||||||
}
|
|
||||||
return val;
|
|
||||||
]]></setter>
|
|
||||||
</property>
|
|
||||||
|
|
||||||
<method name="setCalendar">
|
|
||||||
<parameter name="aCalendar"/>
|
|
||||||
<body><![CDATA[
|
|
||||||
this.mCalendar = aCalendar;
|
|
||||||
let label = document.getAnonymousElementByAttribute(
|
|
||||||
this, "anonid", "subscription-name");
|
|
||||||
label.setAttribute("value", aCalendar.name);
|
|
||||||
]]></body>
|
|
||||||
</method>
|
|
||||||
</implementation>
|
|
||||||
</binding>
|
|
||||||
</bindings>
|
|
|
@ -95,7 +95,7 @@ calendar.jar:
|
||||||
content/calendar/widgets/calendar-alarm-widget.js (content/widgets/calendar-alarm-widget.js)
|
content/calendar/widgets/calendar-alarm-widget.js (content/widgets/calendar-alarm-widget.js)
|
||||||
content/calendar/widgets/calendar-widgets.xml (content/widgets/calendar-widgets.xml)
|
content/calendar/widgets/calendar-widgets.xml (content/widgets/calendar-widgets.xml)
|
||||||
content/calendar/widgets/calendar-list-tree.js (content/widgets/calendar-list-tree.js)
|
content/calendar/widgets/calendar-list-tree.js (content/widgets/calendar-list-tree.js)
|
||||||
content/calendar/calendar-subscriptions-list.xml (content/widgets/calendar-subscriptions-list.xml)
|
content/calendar/calendar-subscriptions-list.js (content/widgets/calendar-subscriptions-list.js)
|
||||||
content/calendar/widgets/calendar-widget-bindings.css (content/widgets/calendar-widget-bindings.css)
|
content/calendar/widgets/calendar-widget-bindings.css (content/widgets/calendar-widget-bindings.css)
|
||||||
content/calendar/calApplicationUtils.js (src/calApplicationUtils.js)
|
content/calendar/calApplicationUtils.js (src/calApplicationUtils.js)
|
||||||
content/calendar/calFilter.js (src/calFilter.js)
|
content/calendar/calFilter.js (src/calFilter.js)
|
||||||
|
|
|
@ -23,7 +23,7 @@
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
}
|
}
|
||||||
|
|
||||||
calendar-subscriptions-richlistitem[selected="true"] {
|
richlistitem[is="calendar-subscriptions-richlistitem"][selected="true"] {
|
||||||
background-color: Highlight;
|
background-color: Highlight;
|
||||||
color: HighlightText;
|
color: HighlightText;
|
||||||
}
|
}
|
||||||
|
|
Загрузка…
Ссылка в новой задаче