зеркало из https://github.com/mozilla/gecko-dev.git
update.
This commit is contained in:
Родитель
de4d385819
Коммит
5177ec9d6d
|
@ -43,7 +43,7 @@
|
|||
url("chrome://communicator/skin/sidebar/sidebar-bottomright-cap.gif");
|
||||
}
|
||||
|
||||
splitter#sidebar-splitter > grippy {
|
||||
#sidebar-splitter > grippy {
|
||||
margin: 0px;
|
||||
padding: 0px;
|
||||
border: 2px solid #003366;
|
||||
|
@ -54,46 +54,46 @@ splitter#sidebar-splitter > grippy {
|
|||
background-position: 50% 50%;
|
||||
}
|
||||
|
||||
splitter#sidebar-splitter > grippy:hover,
|
||||
splitter#sidebar-splitter > grippy:active {
|
||||
#sidebar-splitter > grippy:hover,
|
||||
#sidebar-splitter > grippy:active {
|
||||
background-color: #99CCFF;
|
||||
background-image:
|
||||
url("chrome://communicator/skin/sidebar/sbgrippy-left-hover.gif");
|
||||
}
|
||||
|
||||
splitter#sidebar-splitter[collapsed="true"] > grippy {
|
||||
#sidebar-splitter[collapsed="true"] > grippy {
|
||||
background-image:
|
||||
url("chrome://communicator/skin/sidebar/sbgrippy-right.gif");
|
||||
}
|
||||
|
||||
splitter#sidebar-splitter[collapsed="true"] > grippy:hover,
|
||||
splitter#sidebar-splitter[collapsed="true"] > grippy:active {
|
||||
#sidebar-splitter[collapsed="true"] > grippy:hover,
|
||||
#sidebar-splitter[collapsed="true"] > grippy:active {
|
||||
background-image:
|
||||
url("chrome://communicator/skin/sidebar/sbgrippy-right-hover.gif");
|
||||
}
|
||||
|
||||
image#sidebar-status-grippy {
|
||||
#sidebar-status-grippy {
|
||||
padding: 2px 2px 2px 0px;
|
||||
background-color: #003366;
|
||||
background-image:
|
||||
url("chrome://communicator/skin/sidebar/sidebar-open.gif");
|
||||
}
|
||||
image#sidebar-status-grippy:hover {
|
||||
#sidebar-status-grippy:hover {
|
||||
background-image:
|
||||
url("chrome://communicator/skin/sidebar/sidebar-open-hover.gif");
|
||||
}
|
||||
image#sidebar-status-grippy[open="true"] {
|
||||
#sidebar-status-grippy[open="true"] {
|
||||
background-image:
|
||||
url("chrome://communicator/skin/sidebar/sidebar-close.gif");
|
||||
}
|
||||
image#sidebar-status-grippy[open="true"]:hover {
|
||||
#sidebar-status-grippy[open="true"]:hover {
|
||||
background-image:
|
||||
url("chrome://communicator/skin/sidebar/sidebar-close-hover.gif");
|
||||
}
|
||||
|
||||
/**/
|
||||
|
||||
box#sidebar-box {
|
||||
#sidebar-box {
|
||||
margin-top: 1px;
|
||||
width: 162px;
|
||||
min-height: 1px;
|
||||
|
@ -103,94 +103,81 @@ box#sidebar-box {
|
|||
border-bottom: 8px solid #003366;
|
||||
}
|
||||
|
||||
box#sidebar-panels {
|
||||
#sidebar-panels {
|
||||
min-width: 1px;
|
||||
min-height: 1px;
|
||||
min-height: 10px;
|
||||
margin-top: 1px;
|
||||
}
|
||||
|
||||
text.loading-image {
|
||||
.text-panel-loading {
|
||||
margin: 5px 0px;
|
||||
}
|
||||
|
||||
image.loading-image {
|
||||
.image-panel-loading {
|
||||
margin: 5px;
|
||||
list-style-image: url("resource:/res/rdf/loading.gif");
|
||||
}
|
||||
|
||||
iframe.panel-frame {
|
||||
.iframe-panel {
|
||||
min-width: 1px;
|
||||
min-height: 1px;
|
||||
}
|
||||
|
||||
/*
|
||||
* Sidebar and Panel title buttons
|
||||
*/
|
||||
.sidebar-main-header {
|
||||
color: #CCFFFF;
|
||||
background-color: #003366;
|
||||
border: 0px !important;
|
||||
padding-left: 4px;
|
||||
min-width: 1px;
|
||||
}
|
||||
.sidebar-main-header > text {
|
||||
font-weight: bold;
|
||||
margin: 2px;
|
||||
}
|
||||
|
||||
menu#sidebar-panel-picker:hover {
|
||||
background-color: #336699;
|
||||
}
|
||||
menu#sidebar-panel-picker:hover {
|
||||
background-color: #336699;
|
||||
}
|
||||
menu#sidebar-panel-picker > .menu-right {
|
||||
list-style-image: url("chrome://global/skin/toolbar-menu-arrow.gif");
|
||||
padding-right: 2px;
|
||||
}
|
||||
menu#sidebar-panel-picker > .menu-text {
|
||||
color: #CCFFFF;
|
||||
padding-left: 4px;
|
||||
}
|
||||
menu#sidebar-panel-picker > .menu-accel {
|
||||
display: none;
|
||||
}
|
||||
|
||||
sidebarheader[type="box"] {
|
||||
behavior: url(chrome://global/content/globalBindings.xml#sidebar-header-box);
|
||||
}
|
||||
|
||||
sidebarheader[type="splitter"] {
|
||||
behavior: url(chrome://global/content/globalBindings.xml#sidebar-header-splitter);
|
||||
/* a vertical splitter */
|
||||
cursor: n-resize;
|
||||
}
|
||||
|
||||
box.texttab.sidebar-tab {
|
||||
.sidebarheader-main {
|
||||
color: #CCFFFF;
|
||||
background-color: #003366;
|
||||
border: 0px !important;
|
||||
padding-left: 4px;
|
||||
min-width: 1px;
|
||||
min-height: 1px;
|
||||
}
|
||||
.sidebarheader-main > text {
|
||||
font-weight: bold;
|
||||
margin: 2px;
|
||||
}
|
||||
|
||||
#sidebar-panel-picker:hover {
|
||||
background-color: #336699;
|
||||
}
|
||||
#sidebar-panel-picker > .menu-right {
|
||||
list-style-image: url("chrome://global/skin/toolbar-menu-arrow.gif");
|
||||
padding-right: 2px;
|
||||
}
|
||||
#sidebar-panel-picker > .menu-text {
|
||||
color: #CCFFFF;
|
||||
padding-left: 4px;
|
||||
}
|
||||
#sidebar-panel-picker > .menu-accel {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.texttab.texttab-sidebar {
|
||||
background-color: #CCCCCC;
|
||||
padding: 0px;
|
||||
margin: 0px;
|
||||
}
|
||||
box.texttab.sidebar-tab[top-panel="true"],
|
||||
box.texttab.sidebar-tab[first-panel-after-selected="true"] {
|
||||
.texttab.texttab-sidebar[top-panel="true"],
|
||||
.texttab.texttab-sidebar[first-panel-after-selected="true"] {
|
||||
background-color: white;
|
||||
}
|
||||
|
||||
box.texttab.sidebar-tab > .remain-space {
|
||||
.texttab.texttab-sidebar > .remain-space {
|
||||
width: 30px;
|
||||
min-width: 1px;
|
||||
}
|
||||
box.texttab.sidebar-tab[last-panel="true"] > .remain-space {
|
||||
.texttab.texttab-sidebar[last-panel="true"] > .remain-space {
|
||||
border-bottom: none;
|
||||
}
|
||||
box.texttab.sidebar-tab[last-panel="true"][selected="true"] > .remain-space {
|
||||
.texttab.texttab-sidebar[last-panel="true"][selected="true"] > .remain-space {
|
||||
border-bottom: 1px solid black;
|
||||
}
|
||||
|
||||
*[hidden="true"] {
|
||||
display: none;
|
||||
}
|
||||
|
||||
*[collapsed="true"] {
|
||||
visibility: collapse;
|
||||
}
|
||||
|
||||
|
|
|
@ -8,6 +8,9 @@
|
|||
|
||||
/* import the widget style sheets */
|
||||
|
||||
/* all localizable skin settings shall live here */
|
||||
@import url(chrome://global/locale/intl.css);
|
||||
|
||||
@import url(chrome://global/skin/box.css);
|
||||
@import url(chrome://global/skin/button.css);
|
||||
@import url(chrome://global/skin/checkbox.css);
|
||||
|
@ -44,10 +47,11 @@ titledbutton {
|
|||
/**
|
||||
* The is the outer most tag in a xul document all xul
|
||||
* content will be inside it.
|
||||
*
|
||||
* - font: 3mm tahoma,arial,helvetica,sans-serif; moved to intl.css
|
||||
*/
|
||||
window {
|
||||
background-color: white;
|
||||
font: 3mm tahoma,arial,helvetica,sans-serif;
|
||||
padding: 0px;
|
||||
}
|
||||
|
||||
|
|
|
@ -73,19 +73,16 @@
|
|||
<property name="value" onget="return this.anonymousContent[0].selectedItem.data">
|
||||
<setter>
|
||||
<![CDATA[
|
||||
dump("(" + this.tagName + "): preselecting " + val + "\n");
|
||||
var menulist = this.anonymousContent[0];
|
||||
var dataItems = menulist.getElementsByAttribute("data", val);
|
||||
dump("Found " + dataItems.length + " items\n");
|
||||
menulist.selectedItem = dataItems[0];
|
||||
dump("done.\n");
|
||||
if (dataItems.length > 0)
|
||||
menulist.selectedItem = dataItems[0];
|
||||
]]>
|
||||
</setter>
|
||||
</property>
|
||||
<method name="refreshList">
|
||||
<body>
|
||||
<![CDATA[
|
||||
dump("Refreshing " + this.tagName + " id=" + this.id + "\n");
|
||||
var menuItemIds = this.valueIds;
|
||||
var menuItemStrings = this.valueStrings;
|
||||
|
||||
|
@ -244,21 +241,34 @@
|
|||
this.internalValue = val;
|
||||
var attrib = val.attrib;
|
||||
this.searchAttribute = attrib;
|
||||
if (type == Components.interfaces.nsMsgSearchAttrib.Priority)
|
||||
if (attrib == Components.interfaces.nsMsgSearchAttrib.Priority)
|
||||
this.anonymousContent[1].data=val.priority;
|
||||
else if (type == Components.interfaces.nsMsgSearchAttrib.MsgStatus)
|
||||
else if (attrib == Components.interfaces.nsMsgSearchAttrib.MsgStatus)
|
||||
this.anonymousContent[2].data=val.status;
|
||||
else
|
||||
this.anonymousContent[0].value = val.str;
|
||||
]]>
|
||||
</setter>
|
||||
</property>
|
||||
<method name="save">
|
||||
<body>
|
||||
<![CDATA[
|
||||
dump("Saving searchvalue\n");
|
||||
var searchValue = this.value;
|
||||
var searchAttribute = this.searchAttribute;
|
||||
var nsMsgSearchAttrib = Components.interfaces.nsMsgSearchAttrib;
|
||||
if (searchAttribute == nsMsgSearchAttrib.Priority)
|
||||
searchValue.priority = this.anonymousContent[1].selectedItem.data;
|
||||
else if (searchAttribute == nsMsgSearchAttrib.MsgStatus)
|
||||
searchValue.status = this.anonymousContent[2].selectedItem.data;
|
||||
else
|
||||
searchValue.str = this.anonymousContent[0].value;
|
||||
]]>
|
||||
</body>
|
||||
</method>
|
||||
</interface>
|
||||
</binding>
|
||||
<binding id="searchterm" extends="xul:box">
|
||||
<content>
|
||||
<xul:text value="searchterm"/>
|
||||
</content>
|
||||
<interface>
|
||||
<!-- the three tags that make up a term - to use, set the
|
||||
attribute in the XUL to the ID of the term.
|
||||
|
@ -274,12 +284,12 @@
|
|||
var searchOperator=this.searchoperator;
|
||||
var searchValue=this.searchvalue;
|
||||
|
||||
dump("Setting searchAttribute.value\n");
|
||||
// now reflect all attributes of the searchterm into the widgets
|
||||
if (searchAttribute) searchAttribute.value = term.attrib;
|
||||
dump("Setting searchOperator.value\n");
|
||||
if (searchOperator) searchOperator.value = val.op;
|
||||
dump("Setting searchValue.value\n");
|
||||
if (searchValue) searchValue.value = term.value;
|
||||
|
||||
this.booleanAnd = val.booleanAnd;
|
||||
]]>
|
||||
</setter>
|
||||
</property>
|
||||
|
@ -287,15 +297,15 @@
|
|||
<property name="searchScope">
|
||||
<getter>
|
||||
<![CDATA[
|
||||
var searchAttribute = this.searchAttribute;
|
||||
var searchAttribute = this.searchattribute;
|
||||
if (searchAttribute)
|
||||
return this.searchAttribute.searchScope;
|
||||
return searchAttribute.searchScope;
|
||||
return undefined;
|
||||
]]>
|
||||
</getter>
|
||||
<setter>
|
||||
<![CDATA[
|
||||
var searchAttribute = this.searchAttribute;
|
||||
var searchAttribute = this.searchattribute;
|
||||
if (searchAttribute) searchAttribute.searchScope=val;
|
||||
]]>
|
||||
</setter>
|
||||
|
@ -311,17 +321,55 @@
|
|||
<property name="searchvalue"
|
||||
onget="return document.getElementById(this.getAttribute('searchvalue'));"
|
||||
onset="this.setAttribute('searchvalue',val.id)"/>
|
||||
<property name="booleanNodes">
|
||||
<![CDATA[
|
||||
null;
|
||||
]]>
|
||||
</property>
|
||||
<property name="stringBundle">
|
||||
<![CDATA[
|
||||
srGetStrBundle("chrome://messenger/locale/search.properties");
|
||||
]]>
|
||||
</property>
|
||||
<property name="booleanAnd" onget="return this.internalBooleanAnd">
|
||||
<setter>
|
||||
<![CDATA[
|
||||
// whenever you set this, all nodes in booleanNodes
|
||||
// are updated to reflect the string
|
||||
|
||||
<!-- takes an nsIMsgSearchValue and initializes the appropriate widget
|
||||
with the right value
|
||||
-->
|
||||
<!-- right now only handles filters - need to abstract termlist -->
|
||||
<method name="initialize">
|
||||
<argument name="filter"/>
|
||||
<argument name="termIndex"/>
|
||||
<argument name="scope"/>
|
||||
if (this.internalBooleanAnd == val) return;
|
||||
this.internalBooleanAnd = val;
|
||||
|
||||
var booleanNodes = this.booleanNodes;
|
||||
if (!booleanNodes) return;
|
||||
|
||||
var stringBundle = this.stringBundle;
|
||||
var andString = booleanAnd ? "And" : "Or";
|
||||
for (var i=0; i<booleanNodes.length; i++) {
|
||||
try {
|
||||
var staticString =
|
||||
stringBundle.GetStringFromName("search" + andString + i);
|
||||
if (staticString && staticString.length>0)
|
||||
booleanNodes[i].setAttribute("value", staticString);
|
||||
} catch (ex) { /* no error, means string not found */}
|
||||
}
|
||||
]]>
|
||||
</setter>
|
||||
</property>
|
||||
<method name="save">
|
||||
<body>
|
||||
<![CDATA[
|
||||
var searchTerm = this.searchTerm;
|
||||
|
||||
dump("Saving searchterm = " + searchTerm + "\n");
|
||||
dump("Saving (" + this.searchattribute.value + "," +
|
||||
this.searchoperator.value + "," +
|
||||
this.searchvalue.value + "," +
|
||||
this.booleanAnd + ")\n");
|
||||
searchTerm.attrib = this.searchattribute.value;
|
||||
searchTerm.op = this.searchoperator.value;
|
||||
this.searchvalue.save();
|
||||
searchTerm.booleanAnd = this.booleanAnd;
|
||||
]]>
|
||||
</body>
|
||||
</method>
|
||||
|
|
Загрузка…
Ссылка в новой задаче